바이낸스 차트 데이터 가져오기

게으른직장인·2022년 2월 19일
0
post-thumbnail
post-custom-banner

개요

시중에 기술적 분석과 관련하여 수많은 책들이 있다. 하지만 주로 과거 주식데이터 일봉을 활용하여 서술한것이 대부분이다. 하지만 최근에는 코인 단기투자자들이 늘어남에 따라 코인으로, 그것도 단기 분봉 차트를 활용한 서적은 많이 없다. 하지만 최근 실제 수익을 창출중인 트레이더들은 주로 코인 롱숏 단타 전략을 많이 사용한다. 그래서 이 포스팅에서는 코인을 활용한 단타 추세전략에 대해 알아본다.

준비

기술적 분석을 하기에 앞서 필요한 데이터를 먼저 구해야 한다.
우리는 바이낸스에서 기술적분석을 토대로 자동거래 시스템을 만드는것이 목표기에
바이낸스 API를 활용하여 데이터를 수집한다.

바이낸스 API 커넥터

여러가지 서드파티 라이브러리 있지만 바이낸스 문서에 나와있는 공식 커넥터를 사용하자.

기존 바이낸스 API는 Restful 웹 호출 또는 Websocket 을 활용하여 직접 받을 수 있지만, 해당 글에서는 좀더 직관적이고 Pythonic 하게 코딩하기 위해서 공식 지원하는 커넥터를 활용한다.

이후 CMD창에 아래와 같이 명령어를 입력하여 모듈을 설치하자.

pip install binance-connector

바이낸스 API 생성 및 키 받기

바이낸스에서 프로필을 클릭 후

API Management를 클릭 후 API 명을 본인이 원하는데로 입력 한 후
Create API를 누른다.

API로 바이낸스 데이터 받기

바이낸스 접속

from binance.spot import Spot 
import datetime
import pandas as pd

client = Spot()
print(client.time())

client = Spot(key='바이낸스 퍼블릭 키', secret='부여받은 시크릿 키')

차트 데이터 받기

# 3분봉 차트 1000틱
data = client.klines(symbol='BTCUSDT', interval='3m', limit=1000)

# 문자열을 float 타입으로 변환
for i in range(len(data)):
    for j in range(len(data[i])):
        if isinstance(data[i][j], str):
            data[i][j] = float(data[i][j])

# pandas DataFrame 객체 생성
df = pd.DataFrame(data, columns=
             [
                'datetime', 
                'open', 
                'high', 
                'low', 
                'close', 
                'volume', 
                'closeTime', 
                'QuoteAssetVolume', 
                'NumTrades',
                'TakerBuyBaseAssetVolume',
                'TakerBuyQuoteAssetVolume'  ,
                 'Ignore'
                ]
) 

# Timestamp를 Datetime(날짜-시간)형태로 변환
df['datetime'] = pd.to_datetime(df['datetime'], unit='ms')
df.set_index('datetime', inplace=True)

# 필요한 차트 데이터만 가져오기
df = df[['open', 'high', 'low', 'close', 'volume]]
df

차트 그리기

차트를 캔들스틱 형태로 쉽게 그려주기 위한 모듈을 설치한다.

pip install --upgrade mplfinance

받은 데이터의 최근 100틱을 차트로 그린다.

import mplfinance as mpf

df_100 = df.iloc[-100:]
mpf.plot(df_100,type='candle',mav=(3, 5),volume=True, title='BTC/USDT')

이제 기술적 분석을 하기 위한 기본 준비는 끝났다.
데이터를 활용해서 이제 기초적인 기술적 분석 기법들을 공부해 보자.

profile
취미로 퀀트 투자를 도전하는 직장인
post-custom-banner

1개의 댓글

comment-user-thumbnail
2022년 9월 9일

혹시 모든 코인의 kline 자료를 가져오려면 어떻게 해야할까요? 단순히 반복문으로 모든 티커를 돌리기에는 시간이나 api 요청의 한계가 있어서요

답글 달기