Binance现货OCO订单参数冲突问题技术求助
解决Binance测试网现货OCO订单参数矛盾问题
问题核心原因
你混淆了现货OCO订单和期货合约OCO订单的参数要求:
aboveType/belowType是Binance U本位期货合约OCO的专属参数,现货API完全不识别这些参数,添加后会被判定为无效参数,触发-1104错误(参数数量不符)。- 移除这两个参数后触发-1102错误,是因为遗漏了现货OCO订单的必填参数,而非需要这两个期货参数。
现货OCO订单必填参数(测试网/现货通用)
现货OCO订单本质是「限价单 + 止损限价单」的组合,必填参数(除API认证信息外)包括:
symbol:交易对(如BNBFDUSD)side:交易方向(BUY/SELL)quantity:下单数量price:限价单的成交价格stopPrice:止损触发价格stopLimitPrice:止损触发后执行的限价价格stopLimitTimeInForce:止损限价单的时效规则(如GTC)
修正后的完整代码示例
使用官方python-binance库的现货专属create_oco_order方法,避免参数混淆:
from binance.client import Client from binance.enums import * # 替换为你的测试网API密钥 API_KEY = "your_testnet_api_key" API_SECRET = "your_testnet_api_secret" # 初始化现货客户端并指定测试网地址 client = Client(API_KEY, API_SECRET) client.API_URL = "https://testnet.binance.vision/api" try: # 创建BNBFDUSD现货OCO买单 oco_order = client.create_oco_order( symbol="BNBFDUSD", side=SIDE_BUY, quantity=0.01, # 根据测试网余额调整合理数量 price="320", # 限价买入价格 stop_price="310", # 止损触发价格 stop_limit_price="309.8", # 止损触发后的限价价格 stop_limit_time_inforce=TIME_IN_FORCE_GTC ) print("OCO订单创建成功:\n", oco_order) except Exception as e: print("错误详情:", e)
额外注意事项
- 确保使用的是现货Client,而非期货
FuturesClient,避免调用错误的API端点。 - 测试网余额不足会触发额外错误,可先通过测试网 faucet 领取测试币。
- 若手动构造HTTP请求,需调用现货OCO端点:
https://testnet.binance.vision/api/v3/order/oco,而非期货的fapi/dapi端点。
内容的提问来源于stack exchange,提问作者mojito
相关产品推荐
相关产品推荐

