CHAPTER 8 변동성 돌파 전략과 자동매매

이번 장은 크레온 플러스 API를 사용하기 위하여 계좌를 개설하고 pywin32를 라이브러리를 이용하여 크레온 API에서 제공하는 COM 오브젝트를 사용하는 방법에 목적을 두고 진행했다. 개인적으로 etf는...... 관심이 없다.

 

파이썬 64bit 개발환경이라 COM 오브젝트를 이용하기 위해서 파이썬 32bit를 사용해야 한다. 예전에 파이썬 32bit 가상환경을 설정해 놨는데, 뭔가 잘못되어 idle도 vscode도 32bit를 사용할 수 없게 되었다. 거기에 powerShell에서 conda 명령어도 사용할 수 없다. 그래서 이것부터 해결했다.

 

anaconda를 이용하여 파이썬 32bit 설치하기

set CONDA_FORCE_32BIT=1
conda create -n py38_32 python=3.8 anaconda

간단하게 파이썬 32비트 설치 했다.

 

powerShell에서 conda 명령어 사용하기

conda init powershell
conda config --set auto_activate_base false

이렇게 하면 간단하게 해결! vscode에서도 편안하게 파이썬 32bit 인터프렌터로 설정만 하면 끝이다.

 

youtu.be/A1Zu4oHLtgk

8 변동성 돌파 전략과 자동매매 370 ~ 406p

 

8.1 래리 윌리엄스의 변동성 돌파 전략
8.1.1 변동성 돌파 전략

8.2 크레온 플러스 API
8.2.1 크레온 로그인 ....
8.2.2 크레온 플러스 자동 접속
8.2.3 크레온 시스템 접속 체크
8.2.4 크레온 데이터 조회
8.2.5 로그 메시지 출력

8.3 주가 및 계좌 정보 조회
8.3.1 현재가 조회
8.3.2 OHLC 조회
8.3.3 주식 잔고 조회
8.3.4 주문 가능 금액 조회

8.4 ETF 매수/매도
8.4.1 네이버 ETF 정보 스크레이핑
8.4.2 매수 목표가 계산
8.4.3 이동평균값 조회
8.4.4 주식 매매 주문 방식
8.4.5 최유리 FOK 매주 주문
8.4.6 최유리 IOC 매도 주문

8.5 메인 로직과 작업 스케줄러 등록
8.5.1 메인 로직과 시간대별 처리
8.5.2 작업 스케줄러 등록
8.5.3 전체 코드 및 실행 결과

8.6 핵심 요약

 

이전글 - 2021.03.24 - [책들] - [파이썬 증권 데이터 분석] 7 장고 웹 서버 구축 및 자동화 320 ~ 367p

 

[파이썬 증권 데이터 분석] 7 장고 웹 서버 구축 및 자동화 320 ~ 367p

7 장고 웹 서버 구축 및 자동화 패키지 업데이트로 사용방법이 조금씩 달라져서 이번 장은 따라만 하면 안된다. 예전에 플라스크로 웹페이지에 'Hello World'만 출력해 본 기억이 난다. 그래서 M

bonghanwith.tistory.com

- 마지막 -

728x90
반응형
블로그 이미지

두리뭉실 두리뭉실:해피파인더그룹

컴퓨터 코치 두리뭉실

댓글을 달아 주세요

주가가 20일 이동평균선을 기준으로 볼린저 밴드의 어느 위치에 있는지(%b)와
밴드폭(Band Width)에 대한 내용이다. 

 

어렵지 않게 내용을 보고, 코딩하여 결과를 그래프로 확인 하면
어렵지 않게 이해 했다.

 

'삼성전자'와 '삼성전자우' 그래프를 봤는데, 예전 지인에게
삼성전자의 주가가 꺽이기 전에 차익 실현과 이벤트가 없어 주가가
떨어진다고 얘기 했던 기억이 있다. 시기가 결과로 나타난 비슷했다 --.--

코딩하면서 코드를 조금 수정해야 할 부분이 생겼다. '삼성전자' 종목은 잇는데,
'삼성전자우'로 했을 때 문제가 생겼다. krx에서 받아온 데이터가 회사에 대한
종목코드만 있어, 주식 거래가 되는 종목들 전부는 아니였다.
이 부분만 개선하면 될거 같다.

 

youtu.be/XtZ74Cfpkwg

 

 

6.3 볼린저 밴드 지표
.

.

.

6.3.2 볼린저 밴드 지표 | :%b
6.3.3 볼린저 밴드 지표 II : 밴드폭

.

.

.

 

이전글 - 2021/02/25 - [책들] - [파이썬 증권 데이터 분석] 6.1.2 효율적 투자선 267P

다음글 - 2021.03.16 - [책들] - [파이썬 증권 데이터 분석] 6.4 볼린저 밴드 매매기법 275 ~ 281p

728x90
반응형
블로그 이미지

두리뭉실 두리뭉실:해피파인더그룹

컴퓨터 코치 두리뭉실

댓글을 달아 주세요

Mean-Variance Optimization는 예상 수익률과 리스크의 상관관계를 활용해
포트폴리오를 최적화 하는 기법이다.

 

책에서는 시총 상위 4종목 비중을 다르게 해 포트폴리오 20,000개를 생성해
수익률, 리스크, 샤프 지수를 이용하여 위험에 대한 보상이 큰(샤프 지수가 큰)
포트폴리오와 리스크가 작은 포트폴리오를 구한다.

 

역시나 이번에도 오타와 복사 붙여 넣기로 인해 오류가
났지만, 한번 더 다시 보는(?) 시간이 됐다.

 

youtu.be/3FIj9eqtuyU

 

CHAPTER 6 트레이딩 전략과 구현
6.1 현대 포트폴리오 이론
6.1.1 수익률의 표준편차
6.1.2 효율적 투자선
6.2 샤프 지수와 포트폴리오 최적화 
6.2.1 샤프 지수
6.2.2 포트폴리오 최적화 

 

이전글 - 2021/02/17 - [책들] - [파이썬 증권 데이터 분석] 5. 시세 DB 구축 및 시세 조회 API 개발 251p

다음글 - 2021/02/25 - [책들] - [파이썬 증권 데이터 분석] 6.1.2 효율적 투자선 267P

728x90
반응형
블로그 이미지

두리뭉실 두리뭉실:해피파인더그룹

컴퓨터 코치 두리뭉실

댓글을 달아 주세요

mplfinance 라이브러리를 이용하면 쉽게 OHLC 관련 차트를 그릴 수 있다. 

mplfinance에 맞게 data들을 가공해 주면 된다.

 

책에 있는 소스

import pandas as pd
from urllib.request import urlopen
from bs4 import BeautifulSoup
import mplfinance as mpf

url = 'https://finance.naver.com/item/sise_day.nhn?code=068270&page=1'
with urlopen(url) as doc:
    html = BeautifulSoup(doc, 'lxml') 
    pgrr = html.find('td', class_='pgRR')
    s = str(pgrr.a['href']).split('=')
    last_page = s[-1]  

df = pd.DataFrame()
sise_url = 'https://finance.naver.com/item/sise_day.nhn?code=068270'  
for page in range(1, int(last_page)+1): 
    page_url = '{}&page={}'.format(sise_url, page)  
    df = df.append(pd.read_html(page_url, header=0)[0])

df = df.dropna()
df = df.iloc[0:30]
df = df.rename(columns={'날짜':'Date', '시가':'Open', '고가':'High', '저가':'Low', '종가':'Close', '거래량':'Volume'})
df = df.sort_values(by='Date')
df.index = pd.to_datetime(df.Date)
df = df[['Open', 'High', 'Low', 'Close', 'Volume']]

mpf.plot(df, title='Celltrion candle chart', type='candle')

mpf.plot(df, title='Celltrion ohlc chart', type='ohlc')

kwargs = dict(title='Celltrion customized chart', type='candle',
    mav=(2, 4, 6), volume=True, ylabel='ohlc candles')
mc = mpf.make_marketcolors(up='r', down='b', inherit=True)
s  = mpf.make_mpf_style(marketcolors=mc)
mpf.plot(df, **kwargs, style=s)

'User Agent' 추가한 코드

'''
셀트리온 캔들 차트 신버전
'''

import pandas as pd
import urllib.request as urllib
from bs4 import BeautifulSoup
import mplfinance as mpf

opener = urllib.build_opener()
opener.addheaders = [("User-Agent" , "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36")]

# 4.4.3 맨 뒤 페이지 숫자 구하기
sise_url = 'https://finance.naver.com/item/sise_day.nhn?code=068270'
with opener.open(sise_url) as doc:
    html = BeautifulSoup(doc, 'lxml')
    pgrr = html.find('td', class_ = 'pgRR')
    s = str(pgrr.a['href']).split('=')
    last_page = s[-1]

# 4.4.4 전체 페이지 읽어오기
df = pd.DataFrame()
for page in range(1, int(last_page) + 1):
    print('.', end = '')
    page_url = '{}&page={}'.format(sise_url, page)
    df = df.append(pd.read_html(opener.open(page_url), header = 0)[0])

# 차트 출력을 위해 데이터프레임 가공하기
df = df.dropna()
df = df.iloc[0:30]
df = df.rename(columns = {'날짜' : 'Date', '시가' : 'Open', '고가' : 'High', '저가' : 'Low', '종가' : 'Close', '거래량' : 'Volume'})
df = df.sort_values(by = 'Date')
df.index = pd.to_datetime(df.Date)
df = df[['Open', 'High', 'Low', 'Close', 'Volume']]

# 엠피엘_파이낸스로 캔들 차트 그리기
mpf.plot(df, title = 'Celltrion candle chart', type = 'candle')


 

'User Agent'가 추가된 url 객체를 돌려주는 함수를 하나
만들어서 앞으로 편안하게 써야 겠다.

 

실습 동영상

 

 

 

 

matplotlib/mplfinance

New mplfinance package (replacement for mpl-finance). - matplotlib/mplfinance

github.com

 

CHAPTER 4 웹 스크레이핑을 사용한 데이터 분석

4.5 OHLC와 캔들 차트
4.5.1 OHLC 차트와 캔들 차트의 비교
4.5.2 셀트리온 종가 차트
4.4.3 셀트리온 캔들 차트
4.6 핵심 요약 

 

이전글 - 2021/02/07 - [책들] - [파이썬 증권 데이터 분석] 4. 웹 스크레이핑을 사용한 데이터 분석 191p

다음글 -

728x90
반응형
블로그 이미지

두리뭉실 두리뭉실:해피파인더그룹

컴퓨터 코치 두리뭉실

댓글을 달아 주세요

  • 안녕하세요 2021.06.19 15:59  댓글주소  수정/삭제  댓글쓰기

    안녕하세요, 공부중인 학생입니다 !!
    궁금한게 있어서요..구현하다가 에러가 발생했는데.

    예외가 발생했습니다. AttributeError
    'NoneType' object has no attribute 'a'

    인데..무슨 이유일지 짐작 가시는게 있으신가요?

    • 두리뭉실 두리뭉실:해피파인더그룹 2021.06.20 19:34 신고  댓글주소  수정/삭제

      유저 에이전트 정보 없이 특정 웹페이지를 읽을 경우 원하는 데이터를 얻을 수 없어요.

      일단 html의 값과 prgg의 type을 출력해 보면 알 수 있구요. pgrr = html.find('td', class_ = 'pgRR') -> 이 부분에서 html.find(x)에서 해상 값을 얻지 못해 prgg의 값이 None이 되어 해당 에러메세지가 출력되요.

녹화한 실습 동영상을 보니 꽤 플레이 타임이 길다.
오래 걸린 이유는 고질병인 '오타'!
그리고 그리고 '유저 에이전트'

 

'유저 에이전트' 정보 없이 웹페이지를 읽을 경우
원하는 데이터를 얻을 수 없다.

import pandas as pd
import urllib.request as urllib

sise_url = 'https://finance.naver.com/item/sise_day.nhn?code=068270'

opener = urllib.build_opener()
opener.addheaders = [("User-Agent" , "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36")]

df = pd.DataFrame()
last_page = 385

print('wait......')
for page in range(1, int(last_page) + 1):
    print('.', end = '')
    page_url = '{}&page={}'.format(sise_url, page)
    df = df.append(pd.read_html(opener.open(page_url), header = 0)[0])

df = df.dropna()

셀트리온 데이터를 읽어 오는 코드다. 책에 있는 내용에
'유저 에이전트' 부분을 추가한 코드.

크롬 개발자 모드 콘솔에서 'navigator.userAgent'로 확인

 

실습 동영상

 

Web Scraping 관련 동영상 자료 - 한 번쯤 보면 좋은 동영상

 

CHAPTER 4 웹 스크레이핑을 사용한 데이터 분석
4.1 팬더스로 상장법인 목록 읽기
4.1.1 엑셀 파일 내용 확인하기
4.1.2 read_html() 함수로 파일 읽기 

4.2 HTML 익히기 ....
4.2.1 HTML 기본 구조
4.2.2 HTML 주요 태그
4.2.3 HTML 예시 ...

4.3 웹에서 일별 시세 구하기
4.3.1 네이버 금융 일별 시세 분석하기
4.3.2 소스 코드에서 링크 주소 검색하기

4.4 뷰티풀 수프로 일별 시세 읽어오기
4.4.1 파서별 장단점
4.4.2 find_al() 함수와 find() 함수 비교
4.4.3 맨 뒤 페이지 숫자 구하기
4.4.4 전체 페이지 읽어오기 

 

이전글 - 2021/02/02 - [책들] - 파이썬 증권 데이터 분석 3.6 회귀 분석과 상관관계 ~ 171p

이후글 - 2021/02/07 - [책들] - [파이썬 증권 데이터 분석] 4.5 OHLC 캔들 차트 203p

 

728x90
반응형
블로그 이미지

두리뭉실 두리뭉실:해피파인더그룹

컴퓨터 코치 두리뭉실

댓글을 달아 주세요

이번에 볼 책들

 

며칠 전에 '워드프레스' 책 체험단 신청했는데 안됐다.
인터넷 검색해서 하면 그래도 어느 정도는
할 수 있지만, 조금 빠르게 체계적으로 입문하려고
책을 구매했다. 

 

홍마리오의 워드프레스 입문 + 실전(종합편) 유형별 4가지 웹사이트 만들기 + SEO·웹사이트 수정

홍마리오의 워드프레스 입문+실전(종합편) 책은 4가지 유형의 웹사이트를 직접 제작한 후 그 웹사이트가 잘 검색되도록 SEO(검색엔진최적화) 실습과 사이트 튜닝 실습을 친절하게 설명했다.이 책

www.yes24.com

 

또 다른 책을 구입을 했다. 파이썬을 배웠는데 딱히 뭔가 없다.
그래서 그 뭔가를 해보려고 '파이썬 증권 데이터 분석' 책을
구매했다. 분석 책이기 때문에 단지 파이썬을 배우고자
이 책을 선택을 한다면 안된다. 데이터 분선을 위한 툴로
파이썬을 사용한 것뿐이기 때문이다.

 

파이썬 증권 데이터 분석

투자 기법과 프로그래밍 기술로 자신만의 퀀트 투자 시스템을 완성하라『파이썬 증권 데이터 분석』은 웹 스크레이핑으로 증권 데이터를 주기적으로 자동 수집, 분석, 자동 매매, 예측하는 전

www.yes24.com

 

두 책으로 얼마 동안은 정신없이 보낼 듯.

728x90
반응형
블로그 이미지

두리뭉실 두리뭉실:해피파인더그룹

컴퓨터 코치 두리뭉실

댓글을 달아 주세요