728x90
반응형
주식 데이터 확인 중 골든크로스/데드크로스를 찾는 코드입니다.
기본적인 코드로 코드를 통해서 기본적인 로직을 알 수 있습니다.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from pykrx import stock
code = '069500'
name = 'KODEX200'
start = '2019-07-01'
end = '2022-04-30'
# 골든크로스(Golden cross) 및 데드크로스(Death cross) 확인(20일, 60일 이동편균선)
def chkCross(df):
chk = 0
for i in range(len(df)):
if df['ma60'][i] < df['ma20'][i] and chk == 0:
print('Golden cross ', str(df.index[i])[:10])
chk = 1
elif df['ma60'][i] > df['ma20'][i] and chk == 1:
print('Death cross ', str(df.index[i])[:10])
chk = 0
# 주식 데이터 받기
df = stock.get_market_ohlcv(start, end, code)
# 컬럼명 변경
df.columns = ['Open', 'High', 'Low', 'Close', 'Volume']
# 이동편균선 데이터 만든기
df['ma5'] = df['Close'].rolling(window=5).mean()
df['ma20'] = df['Close'].rolling(window=20).mean()
df['ma60'] = df['Close'].rolling(window=60).mean()
df['ma120'] = df['Close'].rolling(window=120).mean()
# Null 데이터 삭제
df = df.dropna()
# 골든코로스/데드코로스 함수 실행
chkCross(df)
# Data Plot
# plot popup
%matplotlib Qt5
fig = plt.figure(figsize=(15, 8))
plt.plot(df['Close'],label='Close')
plt.plot(df['ma20'],label='ma20')
plt.plot(df['ma60'],label='ma60')
plt.legend()
plt.grid()
plt.tight_layout()
plt.show()
Golden cross 2019-12-20
Death cross 2020-03-04
Golden cross 2020-05-14
Death cross 2021-03-24
Golden cross 2021-04-13
Death cross 2021-08-10
Golden cross 2021-12-21
Death cross 2022-01-25
728x90
반응형
'프로그램' 카테고리의 다른 글
[파이썬] 주식 매수/매도 테스트 (백테스트) (0) | 2022.08.11 |
---|---|
[파이썬] 주식 매수,매도 시점 표시 (0) | 2022.08.11 |
[파이썬] pandas, DataFrame에서 max, min 찾기 (0) | 2022.08.11 |
[파이썬] 로또 번호 발생기 실행파일 만들기 (pyinstall) (0) | 2022.08.08 |
[파이썬] 로또 번호 자동 생성(random, sample) (0) | 2022.08.08 |
댓글