币安Python提交OCO卖单报错APIError(code=-2010)价格关系错误如何解决
币安OCO卖单APIError(code=-2010)报错解决方案
该报错核心原因是OCO卖单的价格规则不符合币安接口要求,通常为参数传参顺序错误、价格精度不匹配导致,可按以下步骤排查解决:
先明确币安现货OCO卖单的价格规则
OCO卖单本质是同时挂载两个卖单:高于当前价的限价卖单、低于当前价的止损卖单,三个价格参数必须严格满足如下顺序:
price(限价卖单价,即你设置的1.5174) >stopPrice(止损触发价,即你提到的1.5084) >stopLimitPrice(止损触发后实际挂出的成交限价,即你设置的1.4933)
注意:你之前了解的「卖单价格>限价且>止损限价」规则不完整,止损触发价必须高于止损限价是高频遗漏要求
具体排查解决步骤
- 第一步:核对参数传参顺序,不要把
stopPrice和stopLimitPrice搞反
90%以上的该类报错都是传参顺序错误导致,以Python常用的python-binance库为例,正确传参写法参考:from binance.client import Client client = Client(api_key, api_secret) oco_order = client.create_oco_order( symbol="FTMUSDT", side=Client.SIDE_SELL, quantity=100, # 替换为你的实际卖出数量 price="1.5174", # 高价限价卖单价格 stopPrice="1.5084", # 止损触发价,价格跌到该值时触发止损 stopLimitPrice="1.4933", # 止损触发后挂出的限价卖单价 stopLimitTimeInForce=Client.TIME_IN_FORCE_GTC ) - 第二步:核对FTMUSDT交易对的价格精度要求
币安每个交易对都有固定的最小价格变动单位(tickSize),可通过client.get_exchange_info()接口查询FTMUSDT的tickSize,所有价格参数的小数位数不能超过tickSize的精度要求,比如FTMUSDT的tickSize为0.0001时,价格仅能保留4位小数,多余位数会触发报错。 - 第三步:确认止损触发价符合实时盘口要求
提交OCO卖单时,stopPrice必须低于当前最新成交价,若提交时市场价格已经跌破你设置的stopPrice,也会触发价格关系错误的报错。
内容的提问来源于stack exchange,提问作者Carlos
相关产品推荐
相关产品推荐

