기술/기타

유용한 사이트 추천 : Coinalyze (선물 데이터)

금붕맨 2023. 7. 11. 17:17
반응형

 

coinalyze

 

유용한 사이트 추천 : Coinalyze.net (선물 데이터)

 

바이낸스 선물 데이터 제한

바이낸스 선물 데이터

바이낸스 API를 이용하면 캔들차트의 데이터인 Kline을 요청 한 번에 1000개 캔들정보를 불러올 수 있습니다. 이 Kline에는 시간, OHLCV(시가, 고가, 저가, 종가, 거래량)이 포함되어 있어 필수적인 데이터인 만큼 시간 변수만 잘 조정하면 모든 날짜의 정보를 받아 올 수 있습니다. 하지만 선물에 있는 미체결약정, 롱숏 비율과 같은 지표들은 위 차트처럼 모든 날짜의 데이터를 요청할 수 없었습니다.

 

바이낸스 API

아래 설명에 공식적으로 최근 30일까지의 데이터만을 이용할 수 있다고 못을 박아버렸습니다. 저도 이것을 보고 MYSQL에 미리미리 저장해 둘 걸 후회를 했고, 그렇게 구글링을 한 결과 찾은 유용한 사이트가 바로 Coinalyze.net이라는 사이트입니다.

 

 

Coinalyze 장단점

Coinalyze의 BTC/USDT Perp Binance 종목의 링크입니다.

 

BTC/USDT Perpetual Binance Live Price Chart

BTC/USDT Perpetual Binance price chart in real-time. Stats on multiple timeframes, order book, news and trollbox.

coinalyze.net

 

 

해당 링크로 들어가시면 아래의 그림과 같은 차트를 확인할 수 있습니다.

coinalyze

위 차트는 Coinalyze의  BTC/USDT Perp Binance 1일 봉이며 20년도 선물 데이터까지 확인할 수 있었습니다. 이 사이트를 이용하기도 하는 이유로는 충분하였고, 추가로 미체결약정은 선물 상장된 거래소들을 통합한 값을 나타내는 것이 또 다른 장점입니다. 선물시장의 자본출입을 확인하는 지표인 OI로서 다른 거래소들까지 모두 가져와 합하여 정리해 주니 편리하다고 생각했습니다. 펀딩비도 지원하니 필요하신 분들에게는 도움이 되실 겁니다. 

 

물론 단점도 있습니다.

coinalyze

위 차트는 Coinalyze의 BTC/USDT Perp Binance 1시간 봉이며 23년 5월 초까지의 데이터만을 조회할 수 있었습니다. 즉 1600~1700개의 캔들만을 조회할 수 있다는 것입니다. 그러므로 5분 봉이나 15분 봉 같은 짧은 간격의 캔들데이터를 조회하는 데 있어서는 부적합한 사이트가 되어 버립니다.

 

또한 밑에서도 설명할 내용이지만 API를 이용하여 데이터를 요청할 때 TOP20% 롱숏 포지션 비율은 지원하지를 않기 때문에 이 지표를 중요하게 생각하시는 분들은 난감하실 수 있습니다.

 

 

API 이용법

우선 API키를 발급받아야 합니다. 우측상단 sign up 클릭하여 구글메일 같은 이메일아이디 하나만 있으면 바로 가입하실 수 있습니다.

 

coinalyze API

가입 후 우측상단 닉네임을 클릭하고 API키를 클릭하시면 발급받을 수 있습니다.

 

coinalyze API

Generate버튼을 누르면 위와 같이 API키가 생성되므로 복사해서 메모장 같은 곳에 잘 간직하시다가 파이썬 코드 작성할 때 붙여 넣으시면 됩니다.

 

사이트 상단 more - API를 클릭하시면 docs를 확인할 수 있고 위 사진은 그중 OI(미체결약정)을 요청 양식을 설명하는 부분입니다. 필수적으로 입력해야 하는 parameters는 symbols, interval, from, to 총 4가지네요. 저처럼 선물데이터를 얻고 싶으시다면 symbols를 입력할 때는 "BTCUSDT_PERP.A"가 기본 티커 양식이라고 생각하시면 됩니다.

 

coinalyze response

요청 결과인 response입니다. 그런데 history 키의 값이 json형식으로 되어 있어 한번 풀어줄 필요가 있어 보입니다. tohic는 각각 OI캔들의 시간, 시가, 고가, 저가, 종가를 뜻합니다.

 

 

파이썬 코드

import pandas as pd
import requests

def get_oi(symbol, interval, start_time, end_time):
	url = "https://api.coinalyze.net/v1/open-interest-history"
    headers = {'api_key': '본인의 API키'}
    params = {
        "symbols": symbol,
        "interval": interval,
        "from": start_time,
        "to": end_time
    }
    res = requests.get(url, headers=headers, params=params)
    value = res.json()
    df = pd.DataFrame(value)['history'].iloc[-1]
    oi = pd.DataFrame(df)
    #2중 JSON형식이므로 데이터프레임으로 두번 풀어주어야 합니다.
    oi.columns = ['t', 'open', 'high', 'low', 'close']
    
    return oi

OI를 요청하는 함수로 만들었습니다. headers값으로 위와 같이 API키를 넣어주시면 됩니다. 

 

import pandas as pd
import requests

def get_ratio(symbol, interval, start_time, end_time):
    url = "https://api.coinalyze.net/v1/long-short-ratio-history"
    headers = {'api_key': '본인의 API키'}
    params = {
        "symbols": symbol,
        "interval": interval,
        "from": start_time,
        "to": end_time
    }
    res = requests.get(url, headers=headers, params=params)
    value = res.json()
    df = pd.DataFrame(value)['history'].iloc[-1]
    ratio = pd.DataFrame(df)
    ratio.columns = ['t', 'ratio', 'Long', 'Short']
    
    return ratio

계정수 비율을 요청하는 함수로 만들었습니다. oi처럼 2중 JSON의 response이므로 데이터프레임으로 두 번 풀어주었습니다.

 

timestamp의 경우에는 바이낸스에서 ms가 기준이지만 여기서는 s가 기준인 점 참고하시길 바랍니다.

 

더 좋은 사이트를 댓글로 공유해 주신다면 감사하겠습니다.

반응형