Binance API限价单被立即以市价成交,求可行解决办法
限价单被立即以市价成交的排查与解决办法
限价价格与当前市场价重叠
你设置的买单限价1680,如果当前市场的卖一价≤1680,限价单会直接和市场上的卖单成交,这是正常的限价单逻辑——只要有符合你价格的对手单存在,订单就会立即成交,而非挂起。
解决:先查询当前标的的实时买卖盘价格,把买单限价设为低于当前卖一价,这样订单才会挂在买单队列里等待成交。订单类型未选对
有些交易所的LIMIT订单允许立即成交(成为taker),如果你需要的是只挂单不成交的maker单,应该用LIMIT_MAKER类型。这类订单会强制要求订单只能作为挂单存在,如果价格不符合maker条件(比如买单价≥卖一价),订单会直接被拒绝,不会成交。
修改代码示例:limit_order_long = client.futures_create_order( symbol=symbol, side='BUY', positionSide='LONG', type='LIMIT_MAKER', # 替换为LIMIT_MAKER quantity=0.01, timeInForce='GTC', price=1680 )检查API提交的实际订单参数
偶尔会出现API客户端参数解析错误,导致实际提交的订单类型不是你设置的LIMIT。可以打印API返回的订单详情,查看type字段是否正确,同时确认price等参数是否和你设置的一致。使用POST_ONLY条件(如果交易所支持)
部分交易所支持postOnly参数(通常是布尔值),设置为True后,订单只会作为挂单提交,一旦会触发即时成交就会被拒绝。可以尝试在订单参数中添加postOnly=True(具体参数名以API文档为准)。
内容的提问来源于stack exchange,提问作者Salman
相关产品推荐
相关产品推荐

