无法使用Binance Python API设置止损限制顺序
我正在尝试使用无法使用Binance Python API设置止损限制顺序,python,python-asyncio,binance,ccxt,Python,Python Asyncio,Binance,Ccxt,我正在尝试使用Python asyncio,ccxt-API(为二进制加密交换调用Binance-API)创建一个LONG-TRADE,其中将包含一个BUY-ORDER和一个STOP-LOSS 首先,我创建购买订单。之后,我将等待订单完成。 在它被填满后,我试图创建一个止损单,以配合所创建的多头(原因:如果交易对我不利,我不想损失很多钱) 根据日志,正在创建采购订单。 我在限价单上得到“资金不足” 我不明白为什么我会在止损单上获得“资金不足”的情况,而买入单却很好地通过了(它甚至具有“已填充”的
Python asyncio
,ccxt-API
(为二进制加密交换调用Binance-API
)创建一个LONG-TRADE
,其中将包含一个BUY-ORDER
和一个STOP-LOSS
首先,我创建购买订单。之后,我将等待订单完成。
在它被填满后,我试图创建一个止损单,以配合所创建的多头(原因:如果交易对我不利,我不想损失很多钱)
根据日志,正在创建采购订单。
我在限价单上得到“资金不足”
我不明白为什么我会在止损单上获得“资金不足”的情况,而买入单却很好地通过了(它甚至具有“已填充”的状态)
如果我以9000美元的价格购买.0015 BTC(并且订单已经完成),我应该能够以8875美元的价格止损.0015 BTC(同样,为了在交易对我不利的情况下保留资金)
为什么这不起作用?为什么我不能为我的交易创造止损
ETA:在另一个线程中看到了这一点:
获取利润与停止亏损相反。一人在法庭上执行死刑
向下,另一个在向上执行
问题:我如何构建API,以便可以为订单设置获利和止损
[…剪断…]
logging.info(f'Opened long trade: {amount} of {symbol}. Target buy {stop_loss}, sell price {sell_price}')
await self._wait_order_complete(order["data"][0]["id"], symbol)
# set up a stop loss order
order = self.exchange.ccxt_create_sell_order(symbol, amount, sell_price, stop_loss )
logging.info(f'Completed long trade: {amount} of {symbol}. Bought at {buy_price} and sold at {sell_price}')
except ExchangeError as e:
raise
except Exception as e:
print (" unexpected exception ")
exit()
return (results)
except ccxt.InsufficientFunds as e:
print ("insufficient funds)
return
except Exception as e:
print (" unexpected error ")
exit()
[…剪断…]
logging.info(f'Opened long trade: {amount} of {symbol}. Target buy {stop_loss}, sell price {sell_price}')
await self._wait_order_complete(order["data"][0]["id"], symbol)
# set up a stop loss order
order = self.exchange.ccxt_create_sell_order(symbol, amount, sell_price, stop_loss )
logging.info(f'Completed long trade: {amount} of {symbol}. Bought at {buy_price} and sold at {sell_price}')
except ExchangeError as e:
raise
except Exception as e:
print (" unexpected exception ")
exit()
return (results)
except ccxt.InsufficientFunds as e:
print ("insufficient funds)
return
except Exception as e:
print (" unexpected error ")
exit()
调用BINANCE(对于BUY部件-工作正常):
调用BINANCE(对于销售部分-获取“资金不足”错误):
购买部分的日志
销售部分的日志:
def ccxt_创建_销售_订单(self,符号:str,金额:浮动,价格:浮动,停止_价格:浮动):
尝试:
结果={}
if ( stop_price > 0 ):
params = { 'stopPrice': stop_price + 10 }
output = self.ccxt_binance.createOrder(symbol, 'STOP_LOSS_LIMIT', amount=amount, \
side="sell", price = stop_price, params=params)
print(output)
else:
output = self.ccxt_binance.create_order(symbol=symbol, \
type="limit", side="sell",amount=amount )
[…剪断…]
logging.info(f'Opened long trade: {amount} of {symbol}. Target buy {stop_loss}, sell price {sell_price}')
await self._wait_order_complete(order["data"][0]["id"], symbol)
# set up a stop loss order
order = self.exchange.ccxt_create_sell_order(symbol, amount, sell_price, stop_loss )
logging.info(f'Completed long trade: {amount} of {symbol}. Bought at {buy_price} and sold at {sell_price}')
except ExchangeError as e:
raise
except Exception as e:
print (" unexpected exception ")
exit()
return (results)
except ccxt.InsufficientFunds as e:
print ("insufficient funds)
return
except Exception as e:
print (" unexpected error ")
exit()
您的限价单api post中没有价格,代码太多了,但从最后几行来看,您的问题似乎不是技术性的,因为服务器返回状态为400的正确响应,表明您发送的请求是错误的。通常这意味着它的格式不正确,或者引用了一些不存在的值。由于余额不足,它可能会向您发送400,但您是否尝试在止损请求之前请求您的余额?这表明你有足够的平衡吗?是不是太快了?服务器是事务性的吗?您是否需要在提交止损之前提交购买?感谢您的回复。>>这是很多代码>可能是因为不平衡,它给你发了400。试着解释一下你答案的不同部分,不清楚不同的代码部分是做什么的。
return (results)
except ccxt.InsufficientFunds as e:
print ("insufficient funds)
return
except Exception as e:
print (" unexpected error ")
exit()