스팀엔진에 관련한 개발을 시작한 이유가 LP를 해 보기 위함이었습니다. 그런데 SCT 거래 내용을 보면 매매가 활발하지 않고 호가 공백이 커서 LP 역할을 하기 힘이 들 것 같습니다. 또한 매수하고 싶은 분이 많은데, LP가 자꾸만 호가를 올리면 관종이 될 것 같은 불길한 예감이 들기도 합니다. 이런 관점에서 아직은 LP 역할을 할 시점은 아닌 것 같습니다.
그렇다고 손 놓고 놀 수는 없으니 일단 관련 개발은 시작해 봅니다.
매매가 가장 활발한 곳이 업비트죠. 그래서 업비트에서 LP에서 필요한 기본적인 자동 매매를 개발하는 작업을 시작합니다. 여기에서 자동매매란 정해진 가격에 매수 주문을 낸 후 매수가 되면 정해진 가격에 매도를 하는 방식입니다.
upbit API에 대해서는 제가 몇 번 글을 썼었는데요. 관련 내용을 모두 찾을 수가 없군요. 일단 찾은 것만 공유합니다[1][2]
처음부터 다시 시작해 봅니다.
[2] 글을 보시면 개략적인 내용이 정리가 되어 있지만 다시 한번 정리해 봅니다.
우선 upbit api를 사용하기 위해서는 upbit에 계정이 있어야 합니다. 지금은 신규 가입이 안 되니 기존 가입자만 api 주문이 가능합니다. 기존 upbit 가입자라면 upbit/mypage에가서 api용 kery를 받아야 합니다.
그리고 api관련 내용은 아래 사이트에서 확인이 가능합니다. 개발 언어별로 사용 예를 잘 정리가 되어 있습니다.
https://docs.upbit.com/v1.0.6/reference
github에 올라와 있는 아래 패키지를 이용했습니다.
https://github.com/sharebook-kr/pyupbit
지정가 자동매매를 위하여 필요한 기능은 지정가 매수/ 지정가 매도/체결결과 확인입니다.
우선 매수 및 주문입니다.
방법은 아주 간단합니다. upbit에서 받은 access, secret 키를 입력한 후 Upbit라는 클래스를 만든 후 매수/매도 주문 함수를 부르면 됩니다.
access = ''
secret = ''
upbit = Upbit(access, secret)
result = upbit.buy_limit_order("KRW-STEEM", 200, 10) # (ticker, price, volume):
print(result)
result = upbit.sell_limit_order("KRW-STEEM", 1000, 10) # (ticker, price, volume):
print(result)
미체결 주문 내역을 확인하는 방법은 아래와 같습니다.
orders = upbit.pending_orders("KRW-STEEM")
for order in orders[0] :
print(order['side'], "%8s"%order['price'], "%8s"%order['remaining_volume'], "%8s"%order['executed_volume'])
order의 구조는 아래와 같습니다. remaining_volume과 executed_volume 값을 보면서 얼마나 매수가 되고, 매도가 되었는지 판단이 가능할 것 같습니다.
방금 주문한 내용이 보입니다.
지정가 자동 매매를 위한 API는 모두 확인하였습니다. 매수 주문한 수량이 얼마나 매수가 되었는지, 매도한 수량이 얼마나 매도가 되었는지에 대한 정보를 바탕으로 방법을 고민해 보아야 할 것 같습니다.
스팀 가격이 연일 큰 폭으로 왔다 갔다 하고 있죠. 큰 변동성을 보이는 지금이야말로 지정가 매매하기 딱 좋은 시기로 보입니다.
[1] https://steemit.com/kr/@tradingideas/api
[2] https://steemit.com/sct/@tradingideas/upbit