Python
[python pandas] 주식 이동평균선 구하기
lim
2021. 10. 17. 12:45
반응형
주식 데이터 분석시 가장 흔하고 직관적으로 사용할 수 있는 지표중 하나는 바로 이동 평균선이다.
자동매매 분석시 이동 평균선 값을 구하는 공식은 아래와 같이 간단하다.
만약 아래와 같이 데이터 프레임이 있다고 하자.
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()
반응형