跳转到内容

重新路由 CFD

CFD 行情在 TWS API 中可能与其标的资产有关。某些情况下,请求 CFD 一档行情时,系统可能使用或参考标的行情来源。

这和普通股票 STK 不同。开发时应明确你请求的是 CFD 合约,还是股票、指数、外汇等基础合约。

字段股票示例CFD 示例
secTypeSTKCFD
exchangeSMART取决于合约定义
primaryExchangeNASDAQ通常应通过合约详情确认

处理 CFD 前,建议先做三步:

  1. reqContractDetails() 确认 CFD 合约详情。
  2. 检查返回的交易所、币种、conIdlocalSymbol
  3. 再调用 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 合约详情确认后再判断。

如果你的系统支持多资产类型,建议在行情请求前显示或记录:

  • symbol
  • secType
  • exchange
  • primaryExchange
  • currency
  • conId
  • localSymbol

这样当 CFD 行情和标的行情表现不一致时,才能快速确认程序到底请求了哪一个合约。