跳转到内容

历史行情 whatToShow

whatToShow 决定历史 K 线到底取哪一种数据。它不是简单的“价格类型”下拉框,而是会影响 openhighlowclosevolumewapbarCount 等字段的含义。

官方参考:

用途常见 whatToShow说明
股票成交 K 线TRADES最常见,基于成交数据
买卖价中点MIDPOINT常用于外汇、价差观察
买价 / 卖价BIDASK查看报价侧变化
买卖价组合BID_ASK报价类请求,限频上通常更敏感
复权股票价格ADJUSTED_LAST用于长期股票回测
波动率HISTORICAL_VOLATILITYOPTION_IMPLIED_VOLATILITY返回波动率数值,不是普通价格
交易时间表SCHEDULE返回交易日程,不是 OHLC K 线
债券收益率YIELD_BIDYIELD_ASKYIELD_BID_ASKYIELD_LAST字段表示收益率口径

如果你是新手,先从 TRADES 开始,因为它最接近常见图表里的成交 K 线。只有当策略明确依赖报价、中点、波动率、收益率或交易时间表时,再换成对应的 whatToShow

AAPL 股票参考样本中,TRADESMIDPOINTBIDASKBID_ASKADJUSTED_LASTHISTORICAL_VOLATILITYOPTION_IMPLIED_VOLATILITYFEE_RATESCHEDULE 都能返回对应数据。区别是:TRADES 有成交量、加权平均价和 bar 数量;报价类数据通常返回 volume=-1wap=-1barCount=-1,这些字段不能当成交量使用。

app.reqHistoricalData(
4201,
contract,
"",
"1 D",
"5 mins",
"TRADES", # 改这里:不同页面讲的就是这个值
1,
1,
False,
[],
)

参考摘要:

TRADES -> count=78; volume=1472090; wap=295.893; barCount=10645
MIDPOINT -> count=78; volume=-1; wap=-1; barCount=-1
BID -> count=78; volume=-1; wap=-1; barCount=-1
ASK -> count=78; volume=-1; wap=-1; barCount=-1
BID_ASK -> count=78; volume=-1; wap=-1; barCount=-1
ADJUSTED_LAST -> count=21; daily adjusted stock bars
HISTORICAL_VOLATILITY -> count=21; volatility values
OPTION_IMPLIED_VOLATILITY -> count=21; implied volatility values
FEE_RATE -> count=19; stock borrow fee-rate values
SCHEDULE -> sessions=21; returned by historicalSchedule()

YIELD_BIDYIELD_ASKYIELD_BID_ASKYIELD_LAST 用 AAPL 股票请求会返回 162,原因是普通股票没有对应的收益率历史数据。选择 whatToShow 时,先决定策略需要的是成交价、报价中点、买价、卖价、复权价格、波动率、交易日程还是收益率。不要把不同口径的数据混在同一条回测曲线里。