重新路由 CFD
CFD 行情在 TWS API 中可能与其标的资产有关。某些情况下,请求 CFD 一档行情时,系统可能使用或参考标的行情来源。
这和普通股票 STK 不同。开发时应明确你请求的是 CFD 合约,还是股票、指数、外汇等基础合约。
合约类型区别
Section titled “合约类型区别”| 字段 | 股票示例 | CFD 示例 |
|---|---|---|
secType | STK | CFD |
exchange | SMART | 取决于合约定义 |
primaryExchange | NASDAQ | 通常应通过合约详情确认 |
处理 CFD 前,建议先做三步:
- 用
reqContractDetails()确认 CFD 合约详情。 - 检查返回的交易所、币种、
conId和localSymbol。 - 再调用
reqMktData()请求一档行情。
不要把股票合约和 CFD 合约混用。例如 AAPL 股票:
contract.secType = "STK"contract.exchange = "SMART"contract.primaryExchange = "NASDAQ"如果要请求 CFD,应使用对应 CFD 合约详情,而不是只把 secType 改成 CFD。
本页前面的示例使用的是 AAPL 股票一档行情:
CONTRACT=AAPL STK SMART NASDAQ USD它不等同于 CFD 合约结果。CFD 的实际可用性、路由和行情权限,应在具体 CFD 合约详情确认后再判断。
如果你的系统支持多资产类型,建议在行情请求前显示或记录:
symbolsecTypeexchangeprimaryExchangecurrencyconIdlocalSymbol
这样当 CFD 行情和标的行情表现不一致时,才能快速确认程序到底请求了哪一个合约。