[英]How to make sure a trade is executed with binance python
當算法做出決定時,我需要出售我的硬幣。 但是,如果我創建一個賣出訂單,然后價格下跌,顯然沒有人會以該價格購買。 因此,我需要檢查訂單是否已填寫,如果未填寫,我需要重做訂單。 (也許有更好的解決方案,我願意接受各種答案)
這是我的嘗試:(它有時會執行上面的場景並在這部分之后執行代碼,但尚未執行的命令會使程序崩潰)。
#sellOrder
sellOrder = client.create_order(symbol = hparams['MARKET_STRING'], side = 'SELL', type = 'MARKET', quantity = hparams['TRADE_TOKEN_AMOUNT'])
print("Selling ...")
print(sellOrder)
sellOrderID = sellOrder['orderId']
time.sleep(30)
soldCheck = True
while soldCheck:
currentOrder = client.get_order(symbol = hparams['MARKET_STRING'], orderId = sellOrderID)
if currentOrder['status'] == 'FILLED':
soldCheck = False
else:
#cancel orber
client.cancel_order(symbol = hparams['MARKET_STRING'], orderId = sellOrderID)
time.sleep(1)
sellOrder = client.create_order(symbol = hparams['MARKET_STRING'], side = 'SELL', type = 'MARKET', quantity = hparams['TRADE_TOKEN_AMOUNT'])
sellOrderID = sellOrder['orderId']
time.sleep(5)
在我看來,您在 while 循環中使用了矛盾的邏輯。
如果我理解正確,您是否在執行循環內的代碼時遇到了問題?
語法while SoldCheck:
將在布爾變量 SoldCheck 為 True 時運行循環 - 您已將其靜態設置為 False,因此循環將不會運行。
嘗試這個:
#sellingorder
sellOrder = client.create_order(symbol = "DOGEEUR", side = 'SELL', type = 'MARKET', quantity = float(50.0))
print("Selling ...")
print(sellOrder)
sellOrderID = sellOrder['orderId']
time.sleep(5) #sleeping while it sells
#Check order was sold TODO
soldCheck = True #true = not sold TODO
while soldCheck:
currentOrder = client.get_order(symbol = "DOGEEUR", orderId = sellOrderID)
if currentOrder['status'] == "FILLED":
soldCheck = False #sold
else:
#cancel order
client.cancel_order(symbol = "DOGEEUR", orderId = sellOrderID)
time.sleep(1)
sellOrder = client.create_order(symbol = "DOGEEUR", side = 'SELL', type = 'MARKET', quantity = float(50.0))
sellOrderID = sellOrder['orderId']
time.sleep(5)
然后,當滿足 if 條件(即狀態已填充)時,您將 SoldCheck 標志恢復為 False 以停止循環,因為您不再需要取消訂單。
如果以上解決了您的問題,請您接受答案嗎? 如果我想到了更好的方法,我會在這里添加,但以上應該可以解決您的問題。
編輯:您正在嘗試下一個 MARKET 訂單,根據定義,該訂單與 LIMIT 一樣不受價格波動的影響。 市價單意味着您以市場願意給您的最佳價格成交——該交易應立即成交。
如果錯誤在給定的函數內(很難說沒有關於如何調用這個函數的細節)我相信它是以下之一:
為了幫助理解這個問題,您能否提供原始 create_order 調用、get_order 調用和 cancel_order 的輸出?
謝謝
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.