프로그램/Python Project

[Python Project] 비트코인 자동거래 -사전준비-

으흠; 다른 Python Project처럼 이것도 만들고 결과만 올리려고 했습니다만.... 만드는 건 끝났는데, 한번 따라 할 수 있는 글을 쓰고 싶어서 이렇게 STEP을 나누게 되었습니다. 이번에 만드는 프로그램은 사람마다 Trading Algorithm을 다르게 프리셋으로 다르게 설정할 수 있는 프로그램이라 이렇게 됐네요.

 

이번 시간에는 사용할 모듈 설치와 사전 준비를 합니다.. Autotrading API는 다른 곳도 전부 제공하나, 필자는 잘 알려진 upbit에서 진행하니 따라와 주시면 됩니다.


업비트 준비하기

1. https://upbit.com/

들어와서 메뉴 우측의 고객센터에 들어가면 하부 메뉴에 Open API가 있습니다. 클릭해서 Open API를 발급받으시면 됩니다.

* 사용기능은 어떻게 사용할 지에 따라 다르지만, 필자의 프로그램에서는 [입금하기] / [출금하기]를 제외한 모든 기능을 쓴다.

* 특정 IP에서만 실행하되, IP는 NAT를 쓰는 곳이 많으니 구글에 [what is my ip?]를 검색하고 그 IP를 쓰면 된다.

 

2. 키를 발급받고 access_key랑 secret_key를 보여주는데, 이를 복사해서 메모장에 다음과 같이 저장하시면 됩니다.(설마 아직 아무 폴더도 안 만든 사람은 작업 폴더 하나를 만들고./config/key.dat으로 저장 부탁드립니다.)

access_key : [자신의 access_key]
secret_key : [자신의 secret key]


## 파일이름은 대충 key.dat로 해주세요. 이 줄은 주석이니 적지않으셔도 됩니다.

 

현재 우리의 폴더는 위와 같이 되어 있으면 됩니다.


모듈 준비

1. 우리가 사용할 모듈은 pyupbit라는 사전에 upbit API를 쓰기 편하게 정의된 모듈인데 아래와 같이 다운로드하여주세요

pip3 install pyupbit

 

pyupbit의 간단한 기능들을 설명하겠습니다. 사용할 함수들만 설명합니다.

  • quotation_api.py
    • get_tickers(fiat="ALL") : 거래 가능한 종목을 가져옵니다.
    • get_ohlcv(ticker="KRW-BTC", interval="day", count=200) : 지정한 종목의 ohlcv차트를 가져옵니다.
    • get_current_price(ticker="KRW-BTC") : 지정한 종목의 현재가를 가져옵니다.
    • get_orderbook(tickers="KRW-BTC") : 지정한 종목의 호가 차트를 가져옵니다.
  • exchange_api.py
    • Upbit(access, secret) : class, UPBIT와 상호작용을 위한 객체입니다
      • get_balances(contain_req=False) : 전체 잔고를 가져옵니다.
      • get_balance(ticker="KRW", contain_req) : 지정한 종목의 잔고를 가져옵니다.
      • get_avg_buy_price(ticker="KRW") : 지정한 종목의 매수 평균가를 가져옵니다.
      • get_amount(ticker) : 특정 종목의 매수금액을 가져옵니다.
      • buy_limit_order(ticker,price,volume,contain_req = False) : 지정한 종목을 지정가 매수합니다
      • buy_market_order(ticker,price) : 지정한 종목을 시장가 매수합니다.
      • sell_limit_order(ticker,price,volume,contain_req = False) : 지정한 종목을 지정가 매도합니다.
      • sell_market_order(ticker,volume) : 지정한 종목을 시장가 매도합니다.
      • cancel_order(uuid) : 주문을 취소합니다.
      • get_order(ticker, state='wait',kind='normal',contain_req=False) : 주문 리스트를 조회합니다.

이정도 사용합니다.


잘들 따라오고 계신지요.. 어쩌면 재미삼아서 읽으시는 분도 계시겠지만, 끝까지 따라와 주시면, 유의미한 프로그램과, Python 지식을 얻으실 수 있으실 겁니다.