[비트코인 자동매매] 바이낸스 테스트넷에서 API로 Spot 거래하기steemCreated with Sketch.

in kr-dev 커뮤니티4 years ago (edited)

Binance Spot Test Network

바이낸스는 Spot 거래를 테스트할 수 있는 Spot Test Network 환경을 제공한다. 그리고 테스트넷은 예금/출금은 할 수 없고 매매만 가능하다. 그리고 한 달 주기로 모든 데이터가 초기화된다.

https://testnet.binance.vision/
바이낸스 테스트넷 페이지는 Github 로그인만 가능하므로 사용하려면 Github 계정이 필요하다. Github 로그인을 하고 나면 HMAC_SHA256 키를 생성할 수 있는 링크가 나타난다.

발급받은 2개의 키 API KeySecret Key는 다시 볼 수 없기 때문에 반드시 메모장에 기록해놓는다.


Google Colaboratory

https://colab.research.google.com/
Google Colaboratory를 사용하면 내 컴퓨터에 파이썬 개발 환경을 세팅하지 않아도 파이썬 데이터 분석을 바로 시작해 볼 수 있다.


새 노트를 클릭하여 새로운 노트를 생성한다.


python-binance 파이썬 래퍼 패키지

바이낸스의 REST API v3를 사용하기 위해서 바이낸스 API 파이썬 래퍼인 python-binance 패키지를 사용한다. python-binance는 비공식 파이썬 래퍼이기 때문에 이 패키지를 사용하면서 발생하는 모든 위험은 본인이 감수해야 한다.
!pip install python-binance==1.0.15 명령을 실행하여 python-binance v1.0.15 버전을 설치한다.

참고로 python-binance 최신 버전은 v1.0.16 이지만 Websocket 이슈가 있기 때문에 v1.0.15 버전을 사용하는 것을 추천한다.


바이낸스 테스트넷 API 사용하기

바이낸스 테스트넷 연결하기

import pandas as pd
from binance.client import Client

client = Client(api_key=api_key, api_secret=secret_Key, testnet=True) 
  • testnet=True 옵션을 사용하여 테스트넷에 연결한다.

바이낸스 계정 정보 가져오기

get_account 함수를 사용하면 내 지갑 정보를 가져올 수 있다.

client.get_account()

  • balances 항목에 지갑 잔액(balance) 데이터가 담겨 있다.

매수 주문하기

create_order 함수를 사용하여 매수 주문을 등록할 수 있다. symbol에는 coin pair를 입력하고, side에는 BUY(매수), type에는 MARKET(시장가격), quantity에는 매수하려는 BTC 수량을 입력한다.

  • 매수 주문이 체결되면 statusFILLED로 응답이 내려온다.
  • 위 사례에서는 0.1 BTC를 1,7007.96 USDT 가격으로 매수했다.
  • 참고로 테스트넷에서는 수수료(commission)가 발생하지 않는다.

get_account 함수를 호출하여 잔액을 다시 조회해 보면 BTC가 0.1 늘어났고, USDT가 줄어든 것을 알 수 있다.

매도 주문하기

create_order 함수의 side에 SELL(매도)를 입력하면 매도 주문을 등록할 수 있다. quantity에는 매도하려는 BTC 수량을 입력한다.

  • 0.1 BTC를 1,6993.02 USDT 가격에 매도하였다.
  • 위 사례에서는 1,7007.96 USDT 가격에 사서 1,6993.02 USDT에 매도했기 때문에 손해가 발생했다. 테스트넷은 유동성 풀의 크기가 작아서 슬리피지가 높다.

BTCUSDT 마켓의 모든 거래 내역을 가져오기

get_my_trades함수를 사용하면 특정 coin pair의 거래 내역을 가져올 수 있다.

JSON 형태의 데이터는 분석이 어렵기 때문에 pandas를 사용하여 DataFrame로 변환한다.

그리고 바이낸스는 유닉스 타임을 사용하기 때문에 일반적인 시간 표기법으로 변환해야 한다.

df.time = pd.to_datetime(df.time, unit='ms', errors='coerce') df



END.

Sort:  
 4 years ago 

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.

Upvoted! Thank you for supporting witness @jswit.

스팀 앱 개발기 #83 - 포스트의 보팅 리스트에서 각 보팅의 가치 계산 방법 정리
https://www.steemit.com/@dorian-mobileapp/83

@dorian-mobileapp님이 당신을 멘션하였습니다.
멘션을 받고 싶거나 받지 않으시려면 댓글을 남겨주세요. 빠른 시일내에 반영하도록 하겠습니다.

스팀 앱 개발기 #91 - 태그 화면이 포스트 리스트 로딩 중에 다른 탭 클릭하면 앱이 죽는 문제 (1) 오류 내용, 원인
https://www.steemit.com/@dorian-mobileapp/91-1

@dorian-mobileapp님이 당신을 멘션하였습니다.
멘션을 받고 싶거나 받지 않으시려면 댓글을 남겨주세요. 빠른 시일내에 반영하도록 하겠습니다.

스팀 앱 개발기 #92 - 태그 화면이 포스트 리스트 로딩 중에 다른 탭 클릭하면 앱이 죽는 문제 (2) 해결 방법
https://www.steemit.com/@dorian-mobileapp/92-2

@dorian-mobileapp님이 당신을 멘션하였습니다.
멘션을 받고 싶거나 받지 않으시려면 댓글을 남겨주세요. 빠른 시일내에 반영하도록 하겠습니다.

Coin Marketplace

STEEM 0.04
TRX 0.31
JST 0.077
BTC 63608.51
ETH 1667.04
USDT 1.00
SBD 0.42