어제는 steem-engine의 order 북을 보는 방법에 대하여 글을 썼었습니다[2]. 오늘은 steem-engine에 있는 임의의 토큰에 대하여 주문을 하는 방법에 대하여 기술합니다.
이렇게 되면 order 북 내용을 참고하여 매수가 보다 더 비싸게 매도가 보다는 더 싸게 자동으로 주문을 낼 수 있습니다.
우선 매도부터 보겠습니다.
일전에는 api라는 class를 사용하였는데[1], 이번에는 Market이라는 클래스를 사용합니다. 함수 명은 sell이고 인자는 계정명, 수량, 심블, 가격입니다.
def sell(self, account, amount, symbol, price):
"""Sell token for given price.
:param str account: account name
:param float amount: Amount to withdraw
:param str symbol: symbol
:param float price: price
매수도 비슷한 방식입니다. 함수 명은 buy이고 인자는 계정명, 수량, 심블, 가격입니다.
def buy(self, account, amount, symbol, price):
"""Buy token for given price.
:param str account: account name
:param float amount: Amount to withdraw
:param str symbol: symbol
:param float price: price
이 함수를 사용한 예제입니다.
from beem import Steem
from steemengine.market import Market
import json
symbol = "SSC"
stm = Steem(keys=mykeys)
m = Market(steem_instance=stm)
# 매도
ret = m.sell(account, 1, symbol, 1.00)
done = json.loads(ret['operations'][0][1]['json'])
print(done['contractPayload']['symbol'], done['contractAction'], done['contractPayload']['price'], done['contractPayload']['quantity'])
# 매수
ret = m.buy(account, 1, "SSC", 0.0001)
done = json.loads(ret['operations'][0][1]['json'])
print(done['contractPayload']['symbol'], done['contractAction'], done['contractPayload']['price'], done['contractPayload']['quantity'])
주문이 성공적으로 마켓에 나가면 ret 부분에 관련 정보가 들어옵니다.
json 부분에 있는 내용이 주문에 대한 정보입니다.
아래와 같이 주문이 잘 등록이 되었습니다.
가끔 주문을 취소해야 하는 경우도 있겠죠. 매수 매도 주문과는 달리 이미 들어간 주문에 대한 id를 입력해야 합니다.
def cancel(self, account, order_type, order_id):
"""Cancel buy/sell order.
:param str account: account name
:param str order_type: sell or buy
:param int order_id: order id
간단하게 스팀엔진 상에서 특정 토큰을 사고/팔고/주문 취소하는 방법을 살펴보았습니다.
궁극적으로 해볼 LP에 대한 절차에 대한 공부를 한 후 전체적인 개발을 진행하여 sct에 대한 LP 역할을 해 볼 예정입니다.
오늘 SCT가격이 너무 올라서 LP 하기가 조금 겁나기는 합니다.
[1] https://github.com/holgern/steemengine
[2] [암호화폐] 그것이 알고싶다!! steem-engine order book 보기