跳转到内容

订单

订单接口是 Web API 里风险最高的一组接口。即使使用模拟账户,也应该先做合约确认、账户确认、订单预检查,再提交订单。

本页示例默认用于模拟账户。正式账户使用前,必须把风控、权限、日志、重复提交保护和人工确认补齐。

官方参考:Client Portal API

接口方法用途
/iserver/account/{accountId}/orders/whatifPOST订单预检查,不真正提交。
/iserver/account/{accountId}/ordersPOST提交订单。
/iserver/reply/{replyId}POST回复风险提示或确认问题。
/iserver/account/{accountId}/order/{orderId}POST修改订单。
/iserver/account/{accountId}/order/{orderId}DELETE撤销订单。
{
"orders": [
{
"conid": 265598,
"side": "BUY",
"orderType": "LMT",
"price": 1.00,
"quantity": 1,
"tif": "DAY"
}
]
}

字段解释:

字段中文说明
conid合约编号。不能只填 symbol。
side买卖方向,常见为 BUYSELL
orderType订单类型,例如 MKTLMTSTP
price限价单价格。市价单通常不填。
quantity数量。股票通常是股数,期权/期货是合约数。
tif有效期,例如 DAYGTC

不同产品、账户和地区可能支持不同字段。下面这些字段不一定每笔订单都要填,但写交易系统时应理解它们的含义:

字段中文说明
acctId账户编号。路径中已有 {accountId} 时,仍可在订单体里明确账户,避免多账户系统混淆。
cOID客户端自定义订单 ID,可用于幂等、日志关联和防止重复提交。
conidex组合、价差或部分复杂产品可能使用的合约表达方式。普通股票示例通常用 conid
listingExchange上市交易所或主要交易所,用于减少同名合约歧义。
outsideRTH是否允许常规交易时段外成交。开启前要确认产品支持和风险。
auxPrice辅助价格,常见于止损单、追踪止损等订单类型。
trailingAmt追踪止损的追踪金额。
trailingType追踪方式,例如金额或百分比,取值以官方返回和账户支持为准。
referrer请求来源或自定义标记,可用于审计和区分系统模块。
useAdaptive是否使用 Adaptive 相关路由能力,需确认账户、产品和路由支持。
isCcyConv是否为货币转换类订单。不要把普通股票订单误标成货币转换。
import requests
BASE_URL = "https://localhost:5000/v1/api"
ACCOUNT_ID = "DU1234567" # 换成自己的模拟账户
payload = {
"orders": [
{
"conid": 265598,
"side": "BUY",
"orderType": "LMT",
"price": 1.00,
"quantity": 1,
"tif": "DAY",
}
]
}
response = requests.post(
f"{BASE_URL}/iserver/account/{ACCOUNT_ID}/orders/whatif",
json=payload,
verify=False, # 仅限开发调试;正式环境请配置受信任证书
timeout=15,
)
response.raise_for_status()
print(response.json())

whatif 用于预估保证金、手续费和订单可接受性。它不能代替真正的风控,但很适合教学和调试。

提交订单后,IBKR 可能不会立刻接受订单,而是返回需要确认的提示,例如价格偏离、合约风险、交易权限或订单属性警告。

典型流程:

POST /iserver/account/{accountId}/orders
-> 如果返回 replyId
POST /iserver/reply/{replyId}
-> 发送确认

程序不要自动无脑确认所有 replyId。比较稳妥的做法是:

  1. 把提示内容展示给用户。
  2. 只允许用户在模拟账户或明确授权策略下确认。
  3. 记录每一次确认的请求和返回。

模拟账户可以大胆用于测试流程,但仍然要避免把坏习惯带到正式账户:

风险建议
重复点击导致重复下单每个请求生成本地幂等编号,前端按钮提交后立即锁定。
合约选错下单前展示 symbol、交易所、币种、合约类型和 conid
市价单价格不可控新手示例优先使用远离成交价的小数量限价单。
自动确认风险提示先记录和展示,不要默认全部确认。