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));