본문 바로가기

Python

[python pandas] 주식 이동평균선 구하기

반응형

 

 

주식 데이터 분석시 가장 흔하고 직관적으로 사용할 수 있는 지표중 하나는 바로 이동 평균선이다.

자동매매 분석시 이동 평균선 값을 구하는 공식은 아래와 같이 간단하다.

 

만약 아래와 같이 데이터 프레임이 있다고 하자.

                      open   high    low  close         volume         value
2021-10-11 14:00:00  804.0  808.0  803.0  803.0  299713.198437  2.412913e+08
2021-10-11 14:30:00  803.0  806.0  802.0  803.0  228441.392254  1.836110e+08
2021-10-11 15:00:00  803.0  806.0  801.0  805.0  237611.502845  1.907923e+08
2021-10-11 15:30:00  805.0  814.0  805.0  805.0  338286.944634  2.733087e+08
2021-10-11 16:00:00  805.0  805.0  802.0  802.0  283318.145616  2.275650e+08
...                    ...    ...    ...    ...            ...           ...
2021-10-17 10:30:00  738.0  744.0  736.0  737.0  529386.335211  3.918480e+08
2021-10-17 11:00:00  737.0  741.0  735.0  740.0  150248.058193  1.107480e+08
2021-10-17 11:30:00  740.0  742.0  737.0  737.0  108912.881792  8.060209e+07
2021-10-17 12:00:00  737.0  741.0  737.0  737.0  146533.055925  1.082419e+08
2021-10-17 12:30:00  739.0  740.0  737.0  737.0   30572.749494  2.257030e+07

 

만약 close를 기준으로 이동 평균선을 구하고 싶다면 아래와 같이 구할 수 있다.

아래는 5개 이동평균선의 예시이다. 

df['MA5'] = df['close'].rolling(window=5).mean()

출력값

                      open   high    low  close         volume         value    MA5
2021-10-11 14:00:00  804.0  808.0  803.0  803.0  299713.198437  2.412913e+08    NaN
2021-10-11 14:30:00  803.0  806.0  802.0  803.0  228441.392254  1.836110e+08    NaN
2021-10-11 15:00:00  803.0  806.0  801.0  805.0  237611.502845  1.907923e+08    NaN
2021-10-11 15:30:00  805.0  814.0  805.0  805.0  338286.944634  2.733087e+08    NaN
2021-10-11 16:00:00  805.0  805.0  802.0  802.0  283318.145616  2.275650e+08  803.6
...                    ...    ...    ...    ...            ...           ...    ...
2021-10-17 10:30:00  738.0  744.0  736.0  737.0  529386.335211  3.918480e+08  738.6
2021-10-17 11:00:00  737.0  741.0  735.0  740.0  150248.058193  1.107480e+08  738.6
2021-10-17 11:30:00  740.0  742.0  737.0  737.0  108912.881792  8.060209e+07  737.6
2021-10-17 12:00:00  737.0  741.0  737.0  737.0  146533.055925  1.082419e+08  737.8
2021-10-17 12:30:00  739.0  740.0  737.0  737.0   32647.651780  2.410142e+07  737.6

 

위와 같이 window 값을 10, 20, 60, 120으로 변경하면 각각에 대한 이동평균선의 값을 구할수 있다. 

 

df['MA5'] = df['close'].rolling(window=5).mean()
df['MA10'] = df['close'].rolling(window=10).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()

 

반응형