回测模式下取不到是正常的:`quote.upper_limit` 和 `quote.lower_limit` 在回测中会是 `nan`。这两个字段依赖行情侧提供的合约状态数据,回测数据里目前不包含这部分字段;同样,`pre_settlement`、`pre_open_interest`、`pre_close` 等字段在回测里也不可用。
实盘/实时行情中可以通过 `get_quote()` 获取,订阅后需要先让 `wait_update()` 收到数据。基本流程是:先创建 `api = TqApi(auth=TqAuth(“快期账户”, “账户密码”))`,再用 `quote = api.get_quote(“SHFE.rb2610”)` 订阅合约,然后在循环中持续调用 `api.wait_update()`,读取 `quote.upper_limit` 和 `quote.lower_limit`。
需要注意两点:
1. 回测中没有可靠的接口直接还原当日涨跌停价,建议不要在回测里把这两个字段作为必需条件。
2. 中金所合约本身不提供涨停价、跌停价,因此即使在实时行情里也可能取不到。
如果策略逻辑必须依赖涨跌停价,实盘可以用实时 `quote.upper_limit` / `quote.lower_limit`;回测里只能自己准备外部涨跌停数据源,再按交易日和合约合并到策略中使用。
有其他问题欢迎加入官方Q群748265037一起交流