pub async fn pull_all_market_status(
backend: &BackendConn,
) -> Result<Vec<MarketStatus>>Expand description
v1.4.48 修:CMD 6823 返回全市场子交易所列表(~100+ 条),一次查询即可拿所有市场
状态。旧版 (v1.4.47) 8 次查询 + 盲取 statuses[0] 导致误读市场状态。
参考 C++ market_tradingDay.proto::MarketID enum:
- 1-4: HK 股票 (主板/创业板/纳斯达克/扩展板)
- 5-6: HK Future (old / new)
- 7-8: HK Option
- 10-29: US 股票 (NYSE, NASDAQ, AMEX, …)
- 30-40: CN A 股 (SH / SZ)
- 41-45: US Option
- 60-109: US Future (NYMEX=60, COMEX=70, CBOT 80-84, CME 90-99, CBOE 100-109)
- 110-119: HK Future 扩展
- 120-123: Forex
- 130-159: Bonds
- 50-51: Stock Connect (港股通 / A股通) — v1.4.49 加
- 60-109: US Future (NYMEX, COMEX, CBOT, CME, CBOE)
- 110-119: HK Future 扩展
- 120-123: Forex
- 130-159: Bonds — v1.4.49 加
- 160-179: SGX Future
- 180-184: SGX Market (新加坡股票) — v1.4.49 加
- 185-194: JPX Future
- 260-359: Global Index — v1.4.49 加
- 360-459: Digital Currency — v1.4.49 加
- 460-559: Treasury Yield — v1.4.49 加
- 560-569: Fund — v1.4.50 加(
NN_QuoteMktID_FUND_*) - 570-579: HK Index Option 扩展 — v1.4.50 加入 HKOption
- 830-849: JP TSE 股票 — v1.4.111 加(C++
NN_QuoteMktID_JP_TSE_*) - 1000-1049: HK HSI Index — v1.4.50 加入 HK(C++ 源码确认归 HK 市场)
- 1200-1249: US New VIX — v1.4.50 加入 US(C++ 源码确认归 US 市场)
- 1350-1399: MY 股票 — v1.4.111 加(C++
NN_QuoteMktID_MY_Security_*)
v1.4.48 新:一次 CMD 6823 query 拿全市场状态 snapshot,避免重复 8 次查询。
v1.4.55 修正(同事反馈 market_hkfuture: NONE 即使夜盘交易中):
backend 对 CMD 6823 在 reserved=HK 时返的 snapshot 不含期货市场
(HK 主板 / 港股通 / US / CN / Bond 等都在,但 HK/US/SG/JP 期货 market_id 缺席)。
真机实测 v1.4.48 一次 snapshot 里 market_hk/us/sh/sz 都能填,但
market_hk_future / market_us_future / market_sg_future / market_jp_future 全是
NONE。
修法:并发发 5 个 CMD 6823(HK / HKFuture / USFuture / SGFuture /
JPFuture),合并结果按 market_id 去重。backend 对 reserved=HKFuture 等
期货 market type 会下发对应 market_id ∈ {5, 6, 110-119} (HK) / 60-109 (US) /
160-179 (SG) 的状态条目,合并后 pick_market_state(HKFuture) 就能命中。
代价:5 个并发请求而非 1 个(~5x backend load),但 CMD 6823 是轻量 snapshot, 实测每次 ~10-20ms,合计 <100ms 仍在可接受范围(global_state 不是高频 API)。