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

- 마지막 -

반응형
블로그 이미지

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

컴퓨터 코치 두리뭉실

,

주가가 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

반응형
블로그 이미지

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

컴퓨터 코치 두리뭉실

,

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

반응형
블로그 이미지

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

컴퓨터 코치 두리뭉실

,

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

다음글 -

반응형
블로그 이미지

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

컴퓨터 코치 두리뭉실

,

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

 

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

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

 

반응형
블로그 이미지

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

컴퓨터 코치 두리뭉실

,

포트폴리오의 전반적인 위험을 줄일 수 있는 방법으로 상관관계가
낮은 자산으로 포트폴리오를 구성한다. 회귀 분석을 통하여
상관관계를 분석하여 상관계수를 구한다.

 

이번 예제 실습 중 미국 국채와(TLT) KOSPI(^KS11)의 회귀 분석이
있는데 TLT의 자료가 책에 그려진 그래프와는 다른 거 같다.
그렇지만 상관 계수는 얼추 비슷하게 나왔다.

 

해당 자산을 지수화 ->
사이파이를 이용하여 선형 회귀 분석 ->
상관 계수 구하기(데이터프레임, 시리즈로)->

결정 계수 구하기

 

코드로 작성하는 건 어렵지 않다.
단어에 대한 이해가 필요한 부분이다.
앞으로도 더욱 더 이해가 많이 필요할 거 같다.

3.6 회귀 분석과 상관관계
3.6.1 KOSPI와 다우존스 지수 비교 
3.6.2 지수화 비교
3.6.3 산점도 분석
3.6.4 사이파이 선형 회귀 분석 .....
3.6.5 선형 회귀 분석

3.7 상관계수에 따른 리스크 완화
3.7.1 데이터프레임으로 상관계수 구하기
3.7.2 시리즈로 상관계수 구하기
3.7.3 결정계수 구하기
3.7.4 다우존스 자수와 KOSPI의 회귀 분석
3.7.5 상관계수에 따른 리스크 완화

 

이전글 - 2021/02/01 - [책들] - 파이썬 증권 데이터 분석 3.4 주식비교하기 ~ 153p

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

반응형
블로그 이미지

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

컴퓨터 코치 두리뭉실

,

일정 기간의 시세를 기본으로 일간 변동률과 누적 수익률을 구한다.
야후 파이낸스(yfinance) 라이브러리를 이용하여 해당 종목의
시세를 구할 수 있다.

 

책에서는 누적 수익률을 인간 변동률의 누적합으로 되어 있으나, 누적곱으로
구해야 한다. 관련 오류는 해당 책 오탈자 부분에 자세하게 나와 있다.

 

아래는 '삼성전자'와 '마이크로소프트'의
2018년부터 지금까지 누적수익률 그래프다.

 

마소가 대단하긴 대단한가 보다!

 

 

파이썬 증권 데이터 분석

이 책은 웹 스크레이핑으로 증권 데이터를 주기적으로 자동 수집, 분석, 자동 매매, 예측하는 전 과정을 파이썬으로 직접 구현한다. 그 과정에서 금융 데이터 처리 기본 라이브러리(팬더스)부터

www.hanbit.co.kr

 

Learning pandas - Second Edition

Calculating simple daily cumulative returns of a stock The simple cumulative daily return is calculated by taking the cumulative product of the daily percentage change. This calculation is represented by … - Selection from Learning pandas - Second Editio

www.oreilly.com

 

실습 동영상

이전글 - 2021/01/31 - [책들] - [파이썬 증권 데이터 분석] Numpy, Pandas, Matplotlib ~ 142p

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

반응형
블로그 이미지

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

컴퓨터 코치 두리뭉실

,
개발 환경
윈도우 10,  크롬, 마리아디비, 파이썬 및 IDLE 64bit & 32Bit, 팬더스, 뷰티플 수프, 장고, 텐서플로

파이썬 32bit를 사용하는 이유가 증권사 COM방식의 API를 사용하기 위해서 32bit를 사용한다. 더불어 가상 환경(venv) 를 이용하여 각각의 버전을 설치하여 사용한다. 아나콘다와 주피터 노트북을 이용해도 될 듯.

 

책에 클래스에 대한 설명이 있다. '틀'에 빗대어 설명을 했는데, 책에도 설명한 설계도(blueprint)로 생각하면 좋겠다.

 

cmd vs powershell

powershell이 나온지도 꽤 오래 됐다. 그 동안 cmd만 사용했는데, 이 책은 powershell을 이용해야 겠다. 참고로 관리자 권한으로 powershell를 실행하고, 실행권한을 Unrestricted로 변경해야 권한에러를 해결 할 수 있다.

 

Set-ExecutionPolicy Unrestricted

 

아래 동영상은 책에 나온 예제 실습 동영상이다.
파이썬 언어의 기본적인 것들은 빼고 121p까지의 예제 중에
필요한 부분만 동영상으로 만들었다.

예제 실습 동영상

이전글 -

이후글 - 2021/01/31 - [책들] - [파이썬 증권 데이터 분석] Numpy, Pandas, Matplotlib ~ 142p

 

반응형
블로그 이미지

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

컴퓨터 코치 두리뭉실

,

이번에 볼 책들

 

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

 

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

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

www.yes24.com

 

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

 

파이썬 증권 데이터 분석

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

www.yes24.com

 

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

반응형
블로그 이미지

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

컴퓨터 코치 두리뭉실

,