Python
퀀트 프로젝트 1. Python 미국 주식 이동 평균선 만들기 / 매수 매도 시점 확인
미국 주식하는 회사원
2023. 8. 15. 11:14
야후 파이낸스로 부터 종목정보 받아와서 이동 평균선 만들기.
1. 필요 패키지 import
import numpy as np
import pandas as pd
from pandas_datareader import data as pdr
from pylab import mpl, plt
plt.style.use('seaborn')
mpl.rcParams['font.family'] = 'serif'
import yfinance as yf
%matplotlib inline
2. yahoo finance 로 부터 종목 정보 불러오기
yf.pdr_override()
ticker = 'msft'
now_day = '2022-08-14'
befor_day = '2012-01-01'
data = pdr.get_data_yahoo( ticker, start=befor_day, end=now_day)
3. 블로온 Data 확인
data.info()
data.head()
4. 종가만 추줄..
data = pd.DataFrame(data['Close']).dropna()
5. 20일 이동 평균선을 만들기 위한 Data min ,mean, std,median,max,ewma 작성
window = 20
data['Min'] = data['Close'].rolling(window=window).min()
data['Mean'] = data['Close'].rolling(window=window).mean()
data['Std'] = data['Close'].rolling(window=window).std()
data['Median'] = data['Close'].rolling(window=window).median()
data['Max'] = data['Close'].rolling(window=window).max()
data['Ewma'] = data['Close'].ewm(halflife=0.5,min_periods=window).mean()
6. 이동평균선 그리기
ax = data[['Min','Mean','Max']].iloc[-200:].plot(figsize=(10,6),style=['g--','r--','g--'], lw=0.8)
data['Close'].iloc[-200:].plot(ax=ax, lw=2.0);
7. 장단기 이평선 그리기
data['SMA1']=data['Close'].rolling(window=42).mean()
data['SMA2']=data['Close'].rolling(window=252).mean()
data[['Close','SMA1','SMA2']].plot(figsize=(10,6));
8. 매수 (1),매도(-1) 표시
data.dropna(inplace=True)
data['positions'] = np.where(data['SMA1'] > data['SMA2'],1,-1)
data[['Close','SMA1','SMA2','positions']].plot(figsize=(10,6),secondary_y='positions')
ax.get_legend().set_bbox_to_anchor((0.25,0.85));