SMART 算法
SMART 是 IBKR 的智能路由方式。对股票等产品来说,订单可以不是固定发到某一个交易所,而是让 IBKR 按路由规则选择执行路径。
官方位置:
Global Configuration / 全局配置 -> Orders / 订单 -> Smart Routing和 API 的关系
Section titled “和 API 的关系”在 TWS API 里,合约常见写法会使用:
exchange = "SMART"这表示订单或行情请求使用智能路由相关逻辑。但 SMART 的具体行为也会受到 TWS 中 Smart Routing 设置、账户权限、产品类型和交易所规则影响。
新手怎么理解
Section titled “新手怎么理解”| 概念 | 中文解释 |
|---|---|
SMART | 让 IBKR 智能选择路由。 |
primaryExchange | 主要交易所,用来消除合约歧义,常见如 NASDAQ。 |
routing / algorithm | 路由算法或偏好,决定订单如何在多个目的地之间选择。 |
exchange | 合约或订单使用的交易所字段;写 SMART 时不是某个单一交易所。 |
例如美股 AAPL 常见合约会同时出现:
symbol = "AAPL"secType = "STK"exchange = "SMART"currency = "USD"primaryExchange = "NASDAQ"这里的 primaryExchange 不是下单路由目的地,而是帮助 IBKR 准确识别“你说的是哪一个 AAPL 股票合约”。缺少它时,部分 symbol 可能出现合约歧义。
SMART 不代表一定拿到最优结果,也不代表可以忽略订单类型、限价、交易时段和行情权限。程序下单时仍然要明确:
- 买卖方向。
- 数量。
- 订单类型。
- 限价或触发价。
- 是否允许盘前盘后。
- 是否使用
whatIf预览。
写代码时怎么处理
Section titled “写代码时怎么处理”| 场景 | 写法建议 |
|---|---|
| 查询美股合约 | exchange="SMART",同时尽量填写 primaryExchange。 |
| 下限价单 | 不要因为使用 SMART 就省略限价。 |
| 做成交后复盘 | 记录实际成交交易所、成交价和订单状态。 |
| 多市场产品 | 先用 reqContractDetails() 确认合约唯一,再写行情或订单请求。 |
官方文档提示,SMART 路由设置位于 Global Configuration -> Orders -> Smart Routing,可用的 SMART Routing 细节需要结合合约章节说明。