-
[Python] 이동평균선(Moving Average)Python/파이썬과 주식, 코인 2025. 4. 27. 13:11반응형
주식의 기술적 지표(Technical Indicators) 중 가장 유명한 이동평균선에 대해 알아보자.
출처: 네이버 증권
먼저 봉차트 보는 법부터...
봉차트 보는 법
봉차트라고 부르는
전형적인 기본 차트이다.빨간 봉은 양봉이라고 하는데, 주가가 올랐음을 의미한다.
파란 봉은 음봉이라고 하는데, 주가가 내렸음을 의미한다.봉에서 몸통의 상하 끝은 시가와 종가를 의미한다.
파란 봉에서 몸통의 위 끝은 시가, 몸통의 아래 끝은 종가이다.
빨간 봉에서 몸통의 위 끝은 종가, 몸통의 아래 끝은 시가이다.봉에서 꼬리의 상하는 고가와 저가를 의미한다.
봉의 색과 무관하게, 위 끝은 고가, 아래 끝은 저가이다.아래꼬리가 긴 것은
장중에 매수세가 강하게 유입되었기 때문이고,
위꼬리가 긴 것은
장중에 매도세가 강하게 유입되었기 때문이다.이동평균이란
이동평균(移動平均, moving average, rolling average, running average)은
전체 데이터 집합의 여러 하위 집합에 대한 일련의 평균을 만들어 데이터 요소를 분석하는 계산이다.코딩을 한다면 영어표현에도 친숙해지자.
moving, rolling, running이동평균선(이평선)이란?
매일의 주가를 그려보면, 변화가 심한 불규칙적인 곡선으로 나타난다.
이러한 불규칙적인 변화를 줄여 추세를 보기 위해 만든 선이다.
위 일봉 차트에서
5, 20, 60, 120이라고 표기된 것이
5, 20, 60, 120일 이동평균선이다.5일 이동평균선은
5일 동안의 종가를 산술 평균하면 된다.빗썸에서 일봉 20개의 데이터를 가져와, 5일 이동평균을 계산해보자.
pandas를 이용하면 간편하게 계산할 수 있다.pip install pandas, requests
# from pprint import pprint import pandas as pd import requests url = "https://api.bithumb.com/v1/candles/days?market=KRW-BTC&count=200" headers = {"accept": "application/json"} response = requests.get(url, headers=headers) if response.status_code != 200: print(response.status_code) # pprint(response.json()) df = pd.DataFrame(response.json()) df["candle_date_time_kst"] = pd.to_datetime(df["candle_date_time_kst"]) df = df.sort_values(by="candle_date_time_kst").reset_index(drop=True) ma5 = df["trade_price"].rolling(5).mean() print(ma5)
결과는 다음과 같다.
데이터가 부족한 앞에 4개의 값은 NaN으로 출력된다.0 NaN 1 NaN 2 NaN 3 NaN 4 84679200.0 ... 195 127039800.0 196 129176400.0 197 132195400.0 198 134100200.0 199 135336600.0 Name: trade_price, Length: 200, dtype: float64
그래프로 출력할 수도 있다.
df_4_plot = pd.DataFrame() df_4_plot["close"] = df["trade_price"] df_4_plot["ma5"] = ma5 df_4_plot["ma20"] = df["trade_price"].rolling(20).mean() df_4_plot["ma60"] = df["trade_price"].rolling(60).mean() df_4_plot["ma120"] = df["trade_price"].rolling(120).mean() df_4_plot["date_time"] = df["candle_date_time_kst"] df_4_plot.set_index("date_time", inplace=True) df_4_plot.plot()
데드크로스, 골든크로스
단기 이평선이 장기 이평선을 뚫고 올라가는 것은
상승 추세를 의미하는 것이므로 골든 크로스,
반대로 단기 이평선이 장기 이평선을 뚫고 내려가는 것은
하락 추세를 의미하므로 데드 크로스라한다.반응형