历史行情 whatToShow
whatToShow 决定历史 K 线到底取哪一种数据。它不是简单的“价格类型”下拉框,而是会影响 open、high、low、close、volume、wap、barCount 等字段的含义。
官方参考:
先按用途选择
Section titled “先按用途选择”| 用途 | 常见 whatToShow | 说明 |
|---|---|---|
| 股票成交 K 线 | TRADES | 最常见,基于成交数据 |
| 买卖价中点 | MIDPOINT | 常用于外汇、价差观察 |
| 买价 / 卖价 | BID、ASK | 查看报价侧变化 |
| 买卖价组合 | BID_ASK | 报价类请求,限频上通常更敏感 |
| 复权股票价格 | ADJUSTED_LAST | 用于长期股票回测 |
| 波动率 | HISTORICAL_VOLATILITY、OPTION_IMPLIED_VOLATILITY | 返回波动率数值,不是普通价格 |
| 交易时间表 | SCHEDULE | 返回交易日程,不是 OHLC K 线 |
| 债券收益率 | YIELD_BID、YIELD_ASK、YIELD_BID_ASK、YIELD_LAST | 字段表示收益率口径 |
如果你是新手,先从 TRADES 开始,因为它最接近常见图表里的成交 K 线。只有当策略明确依赖报价、中点、波动率、收益率或交易时间表时,再换成对应的 whatToShow。
AAPL 股票参考样本中,TRADES、MIDPOINT、BID、ASK、BID_ASK、ADJUSTED_LAST、HISTORICAL_VOLATILITY、OPTION_IMPLIED_VOLATILITY、FEE_RATE 和 SCHEDULE 都能返回对应数据。区别是:TRADES 有成交量、加权平均价和 bar 数量;报价类数据通常返回 volume=-1、wap=-1、barCount=-1,这些字段不能当成交量使用。
最小请求模板
Section titled “最小请求模板”app.reqHistoricalData( 4201, contract, "", "1 D", "5 mins", "TRADES", # 改这里:不同页面讲的就是这个值 1, 1, False, [],)参考摘要:
TRADES -> count=78; volume=1472090; wap=295.893; barCount=10645MIDPOINT -> count=78; volume=-1; wap=-1; barCount=-1BID -> count=78; volume=-1; wap=-1; barCount=-1ASK -> count=78; volume=-1; wap=-1; barCount=-1BID_ASK -> count=78; volume=-1; wap=-1; barCount=-1ADJUSTED_LAST -> count=21; daily adjusted stock barsHISTORICAL_VOLATILITY -> count=21; volatility valuesOPTION_IMPLIED_VOLATILITY -> count=21; implied volatility valuesFEE_RATE -> count=19; stock borrow fee-rate valuesSCHEDULE -> sessions=21; returned by historicalSchedule()YIELD_BID、YIELD_ASK、YIELD_BID_ASK、YIELD_LAST 用 AAPL 股票请求会返回 162,原因是普通股票没有对应的收益率历史数据。选择 whatToShow 时,先决定策略需要的是成交价、报价中点、买价、卖价、复权价格、波动率、交易日程还是收益率。不要把不同口径的数据混在同一条回测曲线里。