[암호화폐] 업비트에서 실거래를 해 봅시다.

그동안 개발한 시뮬레이터를 기반으로 업비트 실거래를 해봅시다.
업비트에서는 websocket을 이용하여 실시간 체결 내역을 얻을 수 있습니다.
websocket을 이용하여 실시간 시세를 받는 방법은 아래 글에 기술해 놓았습니다.

https://money-expert.tistory.com/32?category=757693

그리고 그동안 개발한 시뮬레이터를 기반으로 실거래를 하는 프로그램을 만들어보겠습니다.

우선 upbit에서 API키를 받아야 거래가 가능합니다. API키를 받는 방법은 업빗거래소에서 고객센터/Open API안내로 간 후 Open API 사용하기를 누르면 됩니다.

이렇게 받은 API 키를 upbit.txt 파일에 아래와 같은 형태로 저장하면 됩니다.

acess key

secret key

옆에 있는 업비트 개발자 센터를 누르면 API관련 문서가 나옵니다. API에 대하여 궁금한 사항이 있을 때 확인하시면 됩니다.

github에서 찾아보면 upbit api를 사용하기 쉽게 class로 만든 소스가 많이 있습니다. 이중 많이 사용하는 pyupbit을 fork하여 사용하도록 하겠습니다.

pyupbit에는 대부분의 API가 구현되어 있지만 몇가지 함수도 추가하고, return 값을 변경하기도 하였습니다.

이렇게 변경한 소스는 아래 위치에서 다운받을 수 있습니다.

github.com/multizone-quant/pyupbit

다만 위 링크에 접속한 후 아래 그림과 같이 브렌치인 my_upbit-0.2를 선택한 후 오른쪽에 있는 code download를 누릅니다. 소스 zip 파일이 다운되면 개발할 곳에 압축해제하시면 됩니다.

pyupbit을 바로 사용할 수 있겠지만 앞으로 다양한 거래소 자동매매를 개발할 예정이기 때문에 거래소에 독립적인 나만의 API가 필요합니다. 그래서 여러 거래소의 특성을 무시하고, 매매에 필요한 정보를 얻을 수 있는 wrapper class를 별도로 개발합니다.

pyupbit class를 기반으로 class MyUpbit를 만들었습니다. 따라서 pyupbit을 직접 사용하지 않기 때문에 pyupbit에 있는 readme.txt는 무시하셔도 됩니다.

앞으로 개발할 upbit 거래소 자동 매매 프로그램은 아래 링크에서 다운받으시면 됩니다.

github.com/multizone-quant/system-trading-crypto

거래소 관련 class를 먼저 올렸습니다.

jpy_basic_ex.py : 거래소 base class
jpy_dummy_ex.py : simulation을 위한 dummy class
jpy_upbit.py : pyupbit wrapper class
jpy_upbit.py가 앞으로 사용할 upbit 거래소에서 자동매매를 위한 class입니다. jpy_upbit.py 단독으로 실행을 하면 제공하는 API test를 하는 함수들이 동작을 합니다.

jpy_upbit에서 제공하는 함수들의 return 값은 list의 array로 구성되어 있습니다. 만약 오류가 생기면 [0]번째 항목에 'error'라는 key word가 있습니다. 오류 message는 ret[0]['error']['message']에 포함되어 있습니다.

실제 매매하는 함수는 아래 5가지입니다. 이중 시장가 주문의 경우에는 buy의 경우에는 매수할 금액을 입력하고, sell의 경우에는 매도할 수량을 입력하면 됩니다.

buy_limit_order(ticker, price, qty)
buy_market_order(ticker, amount)
sell_limit_order(ticker, price, qty)
sell_market_order(ticker, qty)
cancel_order(uuid)

아직 체결되지 않은 주문은 아래 함수를 사용합니다. 특정 코인에 대한 미체결 주문을 알 수 있을 뿐 아니라, 'ALL'을 입력하면 현재 체결되지 않은 모든 코인 정보를 얻어올 수 있습니다.

pending_orders(ticker)  # or 'ALL'

잔고를 확인하는 방법입니다. 'KRW'를 인자로 넣으면 현재 원화 잔고가 특정 암호화폐 (예, 'BTC')를 넣으면 해당 암호화폐가, 'ALL'을 인자로 넣으면 모든 잔고를 얻을 수 있습니다.

return값은 list의 array로 [0]번째 값에 하나 혹은 복수 코인의 잔고가 들어있습니다. 또한 오류인 경우에는 'error' keyword가 포함되어 있습니다. 사용예는 jpy_upbit.py에 밑 부분에 있습니다.

잔고는 ['total']과 ['orderable'] 항목이 있는데, 'orderable'은 잔고 중 신규 주문이 가능한 수량입니다.

다음에는 이전에 기술한 전략 시뮬레이터와 거래소 API를 합쳐서 upbit에서 특정 전략으로 자동매매를 하는 방법을 기술하도록 하겠습니다.

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

[US$49.00](▼14%)[Nespresso]스타벅스 네스프레소 호환 캡슐 7종 / 120 캡슐 골라담기 / 20개씩 총 6종류 교차 선택 가능 / 중복 선택 가능 / 재고 확보 / 무료배송 / 개당 약 486원 최저가★

WWW.QOO10.COM

nice idea !

@tradingideas transfered 10 KRWP to @krwp.burn. voting percent : 91.82%, voting power : 60.46%, steem power : 1986659.70, STU KRW : 1200.
@tradingideas staking status : 7500 KRWP
@tradingideas limit for KRWP voting service : 15 KRWP (rate : 0.002)
What you sent : 10 KRWP [49358459 - 2ecdea80274759de61867b6f4e6f691d756fa6ac]

흥미롭군요