[英]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.