poloniex trading bot 만들기 - 01

in #cryptocurrency7 years ago (edited)

poloniex trading bot을 만들어 보려고 한다. 내가 자고 있을 때에도 원 코인의 손실없이 코인의 양을 늘려주는 봇을 만드는 것이 최종 목표이다.
trading bot 개발은 첫 시도라 agile, lean 하게 진행해 보려한다.

현재 버전은 Kleinn Mark1로 부른다.

Kleinn Mark1

로직 요구사항

  1. BTC는 손실이 나지 않아야 한다.
  2. 하락한 알트 코인을 설정된 amount로 매수한다.
  3. 설정된 이익이 발생하면 매도한다.
  4. 매입한 가격에서 입력된 이익이 발생하지 않으면, 이익이 발생할 때 까지 매수한 코인을 보유한다.
  5. Target Coin : 전체 코인

접속 정보

API 제한 조건

  • 초당 6회 호출이 가능하고 초과하면 IP 차단을 당한다.
  • API Key와 Secret Key가 필요하고, nonce는 모든 호출에 포함되어야 한다.

COMMAND

  • 현재(2017/07/03) 기준의 Poloniex API를 참고하여 작성했고, 여기서는 Kelinn Mark1에서 필요한 기능만 사용한다.

    returnTicker

    모든 시장의 시세표를 반환한다.

    1. percentChange가 입력된 하락률 이하인 Target Coin을 lowestAsk보다 0.00001609% 높은 가격으로 매수한다.
    2. 매수한 Target Coin 매수시점의 가격과 last의 차이가 입력된 이익 이상이라면 highestBid보다 0.00001609% 낮은 가격으로 매도한다.
    3. 0.00001609% 는 매수/매도시에 taker가 되면 0.25%의 수수료가 발생하기 때문에, maker가 되기 위해 설정하는 값이다. maker는 수수료 0.15%이다.

    returnBalances

    사용 가능한 모든 잔액을 반환한다.

    1. 매수를 하기 위해 현재 BTC 잔고를 조회하여 저장한다.
    2. 매수 하기전에 항상 호출하여 저장하여 매수할 가격을 결정한다.

    buy

    특정 시장에 한도를 설정하여 매수 요청을 한다. 파라미터는 currencyPair, rate, amount이다. 성공하면 orderNumber를 반환한다.

    1. 바로 매수가 되지 않는 경우가 있다. 분할 매도 되거나 openOrder로 들어가는 경우가 발생한다.
    2. orderNumber를 저장해 두고, returnOrderTrades를 통해 매수한 가격을 저장한다.

    sell

    주어진 시장에 매도 요청을 한다. 파라미터는 buy와 동일하다.

    1. 매수한 amount로 매도해도 Not Enough XXX가 발생할 경우가 있다. 그래서 0.000001를 차감해서 매도했다.

    returnOrderTrades

    orderNumber 파라미터로 지전된 주문과 관련된 모든 거래를 반환한다.

    1. 매수한 amount를 알기 위해서 조회하여야 한다. buy를 통해 매수를 한다고 바로 매수가 되지 않는다. openOrder로 들어가거나 자동으로 분할되어 매수되기 때문에 조회를 해서 매수가격을 알아야 매도할 수 있다.

DATABASE

  • firebase를 사용하여 매수/매도를 저장한다. firebase에 관해서는 여기서는 다루지 않겠다.

Examples

Coin Marketplace

STEEM 0.20
TRX 0.13
JST 0.029
BTC 66263.69
ETH 3419.88
USDT 1.00
SBD 2.63