poloniex trading bot을 만들어 보려고 한다. 내가 자고 있을 때에도 원 코인의 손실없이 코인의 양을 늘려주는 봇을 만드는 것이 최종 목표이다.
trading bot 개발은 첫 시도라 agile, lean 하게 진행해 보려한다.
현재 버전은 Kleinn Mark1로 부른다.
Kleinn Mark1
로직 요구사항
- BTC는 손실이 나지 않아야 한다.
- 하락한 알트 코인을 설정된 amount로 매수한다.
- 설정된 이익이 발생하면 매도한다.
- 매입한 가격에서 입력된 이익이 발생하지 않으면, 이익이 발생할 때 까지 매수한 코인을 보유한다.
- Target Coin : 전체 코인
접속 정보
- URL : https://poloniex.com/tradingApi
- HTTP METHOD : POST
API 제한 조건
- 초당 6회 호출이 가능하고 초과하면 IP 차단을 당한다.
- API Key와 Secret Key가 필요하고, nonce는 모든 호출에 포함되어야 한다.
COMMAND
현재(2017/07/03) 기준의 Poloniex API를 참고하여 작성했고, 여기서는 Kelinn Mark1에서 필요한 기능만 사용한다.
returnTicker
모든 시장의 시세표를 반환한다.
percentChange
가 입력된 하락률 이하인 Target Coin을lowestAsk
보다 0.00001609% 높은 가격으로 매수한다.- 매수한 Target Coin 매수시점의 가격과
last
의 차이가 입력된 이익 이상이라면highestBid
보다 0.00001609% 낮은 가격으로 매도한다. 0.00001609
% 는 매수/매도시에 taker가 되면 0.25%의 수수료가 발생하기 때문에, maker가 되기 위해 설정하는 값이다. maker는 수수료 0.15%이다.
returnBalances
사용 가능한 모든 잔액을 반환한다.
- 매수를 하기 위해 현재 BTC 잔고를 조회하여 저장한다.
- 매수 하기전에 항상 호출하여 저장하여 매수할 가격을 결정한다.
buy
특정 시장에 한도를 설정하여 매수 요청을 한다. 파라미터는
currencyPair
,rate
,amount
이다. 성공하면orderNumber
를 반환한다.- 바로 매수가 되지 않는 경우가 있다. 분할 매도 되거나
openOrder
로 들어가는 경우가 발생한다. orderNumber
를 저장해 두고,returnOrderTrades
를 통해 매수한 가격을 저장한다.
sell
주어진 시장에 매도 요청을 한다. 파라미터는
buy
와 동일하다.- 매수한 amount로 매도해도
Not Enough XXX
가 발생할 경우가 있다. 그래서 0.000001를 차감해서 매도했다.
returnOrderTrades
orderNumber
파라미터로 지전된 주문과 관련된 모든 거래를 반환한다.- 매수한 amount를 알기 위해서 조회하여야 한다.
buy
를 통해 매수를 한다고 바로 매수가 되지 않는다.openOrder
로 들어가거나 자동으로 분할되어 매수되기 때문에 조회를 해서 매수가격을 알아야 매도할 수 있다.
DATABASE
- firebase를 사용하여 매수/매도를 저장한다. firebase에 관해서는 여기서는 다루지 않겠다.
Examples
- PHP wrapper by compcentral: http://pastebin.com/iuezwGRZ
- Python wrapper by oipminer: http://pastebin.com/fbkheaRb
- Node.js example of how to connect to the push API (requires autobahn): http://pastebin.com/dMX7mZE0
Great article!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit