IBeam/Gateway API调用/orders端点下单失败:缺少订单参数
解决方案
1. 修正请求数据结构
IBKR该接口要求请求体是包含orders字段的JSON对象,而非直接传订单数组。你的Python代码直接将数组传给json=orders,不符合接口要求:
修改请求部分代码:
# 将订单数组包装到orders字段中 payload = {"orders": orders} response = requests.post(ibkr_base_url + order_endpoint, json=payload, headers=headers, verify=False)
2. 修复conid和secType格式错误
你的代码中conid和secType的格式完全不符合要求:
conid只需传入合约ID字符串,不需要前缀conidex =secType格式应为{conid}:STK,不需要前缀secType =
修正后的字段:
"conid": contract_con_id, "secType": f"{contract_con_id}:STK",
3. 补全必传参数
- 如果是限价单(
order_type="LMT"),必须启用price参数,你代码中注释掉了这一行,需要恢复:"price": limit_price, - 确保
quantity是数字类型(int/float),若传入的是字符串需先转换。
4. 确认端点一致性
你代码中调用的是模拟下单端点/orders/whatif,而问题描述的是实际下单端点/orders,两者参数要求一致,但需确认你调用的是目标端点。
内容的提问来源于stack exchange,提问作者Harshyt Goel
相关产品推荐
相关产品推荐

