반응형
이동평균선
이동평균선은 주가의 기술적 분석에 가장 많이 사용되는 지표이며, 일정 기간 동안의 주가를 산술 평균한 값인 주가이동평균을 차례로 연결해 만든 선이다. 단기 이동평균선은 보통 5, 20일 선을 사용하고, 장기 이동평균선은 120일 선을 사용한다.
바이낸스에서 비트코인 일별 캔들 데이터 가져오기
python-binance 모듈의 get_klines 함수를 사용하여 비트코인 일봉 데이터를 가져온다.
from binance import Client
client = Client()
candles = client.get_klines(symbol='BTCUSDT', interval=Client.KLINE_INTERVAL_1DAY)
candles
바이낸스에서 조회한 캔들 데이터는 바이낸스 API 문서를 참고한다.
이동평균선 계산하기
바이낸스 일봉 데이터에는 많은 필드가 있다. 하지만 우리는 여기서 필요한 데이터만 뽑아서 사용할 것이다. Kline open time와 Close 데이터만 추출한다. numpy를 사용하면 2차원 배열도 쉽게 slice할수 있다.
import numpy as np
candles = np.array(candles)[:,(0,4)]
candles
그다음 candles 배열을 DataFrame로 변환한다.
import pandas as pd
df = pd.DataFrame(candles.astype(np.float64), columns = ("Time", "Price"))
df['Time'] = pd.to_datetime(df['Time'], unit='ms')
df.set_index('Time', inplace=True)
df
이동평균선은 pandas의 rolling 함수를 사용하면 쉽게 계산할 수 있다.
df.Price.loc['2022':].rolling(20).mean()
이동평균선 그리기
matplotlib을 사용하여 이동평균선을 그려보자. 아래 코드를 작성하여 실행하면 이동평균선 그래프가 출려될 것이다.
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'AppleGothic' # 한글 폰트 지정
df.Price.loc['2022':].plot(figsize=(12, 4), fontsize = 13) # 가격
df.Price.loc['2022':].rolling(20).mean().plot(label="MA20") # 20일
df.Price.loc['2022':].rolling(60).mean().plot(label="MA60") # 60일
df.Price.loc['2022':].rolling(120).mean().plot(label="MA120") # 120일
plt.title("비트코인 이동평균선")
plt.legend(fontsize = 13) # 범례 표시
plt.show()
전체 코드는 여기에서 볼 수 있다.
References
- 파이썬으로 배우는 알고리즘 트레이딩, 조대표, 위키독스, 2023
반응형
'개발 > 파이썬 자동매매' 카테고리의 다른 글
(파이썬 자동매매) 볼린저 밴드(Bollinger Bands) (0) | 2023.02.10 |
---|---|
(파이썬) 바이낸스 비트코인 이동평균선 돌파 전략 백테스팅 (2) | 2023.02.07 |
[비트코인 자동매매] 상승장 알리미 스케쥴러 적용하기 (1) | 2023.01.12 |
[비트코인 자동매매] 상승장 알리미 슬랙으로 발송하기 (0) | 2023.01.12 |
[비트코인 자동매매] 바이낸스 BTC 상승장 알리미 (0) | 2023.01.12 |