반응형
주식 데이터 분석시 가장 흔하고 직관적으로 사용할 수 있는 지표중 하나는 바로 이동 평균선이다.
자동매매 분석시 이동 평균선 값을 구하는 공식은 아래와 같이 간단하다.
만약 아래와 같이 데이터 프레임이 있다고 하자.
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()
반응형
'Python' 카테고리의 다른 글
[pandas] SettingWithCopyWarning 경고 끄기 (0) | 2021.10.17 |
---|---|
[python pandas] 주식 이격도(disparity) 구하기 (0) | 2021.10.17 |
[python pandas] matplotlib.pyplot으로 주식 차트에 buy sell 표시하기 (0) | 2021.10.11 |
python 판다스(pandas) - 중복 index 제거 하기 (2) | 2021.10.11 |
[python3] sys.stderr.write(f"ERROR: {exc}") 에러 해결법 (0) | 2021.08.13 |