IT/컴퓨터프로그램

[Python] FinanceDataReader 를 통한 주가 읽기 - 이동 평균선

chn1002 2022. 5. 16. 09:04

[Python] FinanceDataReader 를 통한 주가 읽기 - 이동 평균선

 

이동평균선은 매일 산정되는 가격을 기준으로 이동평균치를 표시하는 것을 말한다. 연장선으로 일정 기간의 주가 평균가격을 그어놓은 선이다. 이동편균선 은 주가의 평규치 진행 방량을 확인하고 대략적인 상승과 하락을 예측하고 판단하는데 사용하는 지표이다. 

 

이동편평선 계산 공식

이동평균선 = 설정 기간의 종가의 합 / 설정기간

5일 평균선은 5일간의 종가평균, 10일 평균선은 10일간의 종가평균으로 진행된다.

 

FinanceDataReader 에서 이동 평균선

s_df 는 이전 stockMain 함수를 통해 만들어지는 Data Frame 이다.

def stockMain(val, strFromDay, strToDay):
  • 5일 평균선: stockM_df['MA5'] = stockM_df['Close'].rolling(window=5).mean()      #5MA
  • 10일 평균선: stockM_df['MA10'] = stockM_df['Close'].rolling(window=10).mean()    #10MA
  • 20일 평균선: stockM_df['MA20'] = stockM_df['Close'].rolling(window=20).mean()    #20MA
  • 60일 평균선: stockM_df['MA60'] = stockM_df['Close'].rolling(window=60).mean()    #60MA
  • 120일 평균선: stockM_df['MA120'] = stockM_df['Close'].rolling(window=120).mean()  #120MA
def scalePlt(axes_t, s_df, labelName):
    scaled_stock=pd.DataFrame(s_df)
    scaledT=preprocessing.MinMaxScaler().fit_transform(scaled_stock)

    axes_t.plot(s_df.index, scaledT, linewidth=1, label=labelName)

        
    
def pltStocknMoveAvg(stockName, s_df):
    stockM_df = s_df[['Close']]
    stockM_df['MA5'] = stockM_df['Close'].rolling(window=5).mean()      #5MA
    stockM_df['MA10'] = stockM_df['Close'].rolling(window=10).mean()    #10MA
    stockM_df['MA20'] = stockM_df['Close'].rolling(window=20).mean()    #20MA
    stockM_df['MA60'] = stockM_df['Close'].rolling(window=60).mean()    #60MA
    stockM_df['MA120'] = stockM_df['Close'].rolling(window=120).mean()  #120MA
    
    print(stockM_df)
    fig = plt.figure(figsize=(16,14))
    axes = plt.subplot2grid((4,4),(0,0), rowspan=3,colspan=4)
    
    scalePlt(axes, stockM_df['Close'], stockName)
    scalePlt(axes, stockM_df['MA5'], "MA5")
    scalePlt(axes, stockM_df['MA10'], "MA10")
    scalePlt(axes, stockM_df['MA20'], "MA20")
    scalePlt(axes, stockM_df['MA60'], "MA60")
    scalePlt(axes, stockM_df['MA120'], "MA120")
    
    axes.legend()
    plt.show()

 

삼성전자의 이동평균선 

위 코드를 이용하여 이용하여 이동평균선을 계산하였다.

삼성전자 이동평균선