작업전 준비해야 할 사항들
먼저 거래소 API를 활성화 시키고 API 관련 키를 발급 받아야 한다.
자세한 방법은 아래 링크를 참고하길 바랍니다.
위와 같이 거래소 API 설정을 마치면, 각 거래소 API 코드를 작성해야 한다.
자세한 방법은 아래 링크를 참고하길 바랍니다.
- 빗썸 API 프로그래밍: 빗썸 API 프로그래밍 - 1, 빗썸 API 프로그래밍 - 2
-> 파일명 " bithumb_API.py" - 코인원 API 프로그래밍: 코인원 API 프로그래밍 - 1, 코인원 API 프로그래밍 - 2-> 파일명 " coinone_API.py"
재정거래 함수(tradeCurrency)
소스코드 소개
import bithumb_API
import coinone_API
def tradeCurrency(bit_currency, coin_currency, qty, margin):
bithumbBalnace = bithumb_API.bithumbBalance(bit_currency)
coinoneBalnace = coinone_API.coin_balance()
bithumbAvailableKRW = bithumbBalnace["data"]["available_krw"]
bithumbAvailableCur = float(bithumbBalnace["data"]["available_" + bit_currency.lower()])
coinoneAvailableKRW = int(coinoneBalnace["krw"]["avail"])
coinoneAvailableCur = float(coinoneBalnace[coin_currency]["avail"])
coinoneOrderBook = coinone_API.coin_order_book(coin_currency)
coin_bid = int(coinoneOrderBook["bid"][0]["price"])
coin_ask = int(coinoneOrderBook["ask"][0]["price"])
coin_bid_qty = float(coinoneOrderBook["bid"][0]["qty"])
coin_ask_qty = float(coinoneOrderBook["ask"][0]["qty"])
bithumbOrderbook = bithumb_API.bithumbOrderbook(bit_currency)
bit_bid = int(bithumbOrderbook["data"]["bids"][0]["price"])
bit_ask = int(bithumbOrderbook["data"]["asks"][0]["price"])
bit_bid_qty = float(bithumbOrderbook["data"]["bids"][0]["quantity"])
bit_ask_qty = float(bithumbOrderbook["data"]["asks"][0]["quantity"])
# bithumb 매도/coinone 매수
if bit_bid - coin_ask >= coin_ask * margin:
market_bid = bit_bid
market_ask = coin_ask
if coin_ask_qty < qty or bit_bid_qty < qty:
return False
if coinoneAvailableKRW > market_ask * qty and bithumbAvailableCur > qty:
result = False
bithumbSellBuyError= bithumb_API.bithumbSell(market_bid, qty, bit_currency)
if bithumbSellBuyError != "0000":
return result
coinSellBuyError = coinone_API.coin_limit_buy(market_ask, qty, coin_currency)
if coinSellBuyError != "0":
bithumb_API.bithumbBuy(market_ask, qty, bit_currency)
# bithumb 매수/coinone 매도
if coin_bid - bit_ask >= bit_ask * margin:
market_bid = coin_bid
market_ask = bit_ask
if coin_bid_qty < qty or bit_ask_qty < qty:
print(bit_currency + "[Normal Mode] Coin=>Bit Qty Low")
return False
if bithumbAvailableKRW > market_ask * qty and coinoneAvailableCur > qty:
result = False
bithumbSellBuyError = bithumb_API.bithumbBuy(market_ask, qty, bit_currency)
if bithumbSellBuyError != "0000":
return result
coinSellBuyError = coinone_API.coin_limit_sell(market_bid, qty, coin_currency)
if coinSellBuyError != "0":
bithumb_API.bithumbSell(market_bid, qty, bit_currency)
return True
import 파일에 대한 설명
import bithumb_API
import coinone_API
위에서 설명한 빗썸과 코인원 API 파일을 import 하는 것이다. 거래소 API를 만들때 반듯이 파일명을 일치시켜야 한다.
함수 호출 방법
tradeCurrency("BTC", "btc", 7, 0.015)
- "BTC": 빗썸에서 거래할 코인 명
- "btc": 코인원에서 거래할 코인 명
- 7: 재정거래할 코인 수량
- 0.015: 두 거래소에서 매수 매도 가격 차이의 마진 설정(0.015 = 1.5%)
위와 같이 함수를 호출하면, 두 거래소의 비트코인 매수/매도 가격차이 호가의 1.5%이상 차이가 나면 거래를 하게 된다.
사실 필자의 원래 코드는 무척 길다. 위 코드의 1000배는 넘는다.
엄청나게 많은 대응을 해야 할 것이다.
하지만 시작이 반이라고 하지 않는가. 필자도 저 코드를 시작으로 한 것 같다.
오늘은 간략히 소스코드와 함수 호출법으로 마치고 소스코드에 대한 상세한 설명은 다음 글에서 하도록 하겠다.