一、目标:用 AAPL 把“快照 + 实时 + 补洞 + 对账”一次跑通
美股行情接入看起来只是订阅一个 symbol,但真正的难点在于长期运行:断线重连会不会丢数据、补洞后能不能与实时流对上、字段口径是否稳定、以及在高峰期是否会出现延迟堆积。本文用 AAPL 做示例,不是为了讨论标的,而是为了把链路跑成可复用模块。
当你能把 AAPL 的链路跑通并对账,你就拥有了扩展到任意 watchlist 的“模板”:换 symbol 而不换架构。
二、先定内部协议:让所有下游只认识一种 tick
建议把行情统一成内部协议:symbol、ts(UTC 毫秒)、bid、ask、last、chp、source、ingest_ts、quality。这样无论数据来自 REST 快照还是 WS 推送,下游模块(告警、指标、策略、面板)都只面对同一种数据结构。
质量标记很关键:当字段缺失、时间戳倒退、价差为负或延迟异常时,quality 让你能快速隔离坏数据,而不是让坏数据悄悄污染窗口统计。
三、REST 的角色:快照、历史与补洞的权威来源
REST 不适合承担“高频实时”,但非常适合承担三件事:在启动时拿快照对齐状态,在断线后补洞恢复连续性,在回测与对账时提供权威历史。你需要把 REST 做成可验收模块:明确 timeout、重试与退避,明确错误码分类,明确限流下的降级策略。
最重要的是补洞逻辑:补洞的输入应当是“最后确认处理到的时间戳/序号”,输出应当是严格递增且幂等的序列。补洞不幂等,系统会在重连后产生幽灵信号。
四、WebSocket 的角色:实时流与延迟可观测
WS 的价值是实时,但风险也在实时:延迟抖动、乱序与重复、断线后的恢复。建议你把 WS 客户端当作长期服务:心跳、自动重连、指数退避、消息去重、短窗口乱序缓冲都要默认具备,并输出延迟分位数与断线指标。
只要你能持续观测延迟与缺口,你就能在高波动时及时降级,而不是等到策略“突然失效”才发现链路早就不可靠了。
五、对账闭环:WS 与 REST 必须能拼成同一条时间序列
对账是生产系统的底线。你需要能回答:某一段时间内 WS 是否丢包、丢了多少、补洞是否补齐、补齐后的序列是否与快照一致。实现上建议把每个 symbol 的“最后确认点”写入状态(例如 last_seen_ts),并把对账结果写入日志与指标。
当对账失败时,正确的动作不是“继续交易”,而是进入降级:停止开仓或只保留监控,直到对账恢复。对账失败意味着你不知道自己看到的行情是不是事实。
六、订阅分层与成本:核心标的实时,长尾标的按需
把订阅分层能显著降低成本与风险。核心标的(用于策略与风控)保持高频订阅与严格对账;长尾标的(用于看板)可以降频、聚合或按需订阅。下游拥塞时优先降频与聚合,而不是盲目扩容。
这种分层还能提升稳定性:当压力态到来,你至少能保证核心链路健康,避免“全部一起掉线”。
七、监控与告警:先监控链路健康,再监控价格波动
建议告警分级:链路告警(断线、延迟分位数、缺口长度、重连频率)优先级最高;数据质量告警(字段缺失、价差异常、时间戳倒退)次之;价格波动告警最后。很多线上事故不是市场波动,而是链路在波动中变得不可用。
把告警与动作绑定:延迟异常自动降级,缺口扩大自动暂停开仓,重复/乱序异常自动提高确认门槛或切换到快照模式。
八、从示例到可复用模块:把配置与口径固化
AAPL 示例的最终产物应该是模块而不是脚本:配置层包含 token、订阅列表、重连参数、降级策略;数据层负责标准化与对账;业务层只消费统一 tick。只要模块边界清晰,你就能把“写教程”变成“写系统能力”的积累。
建议把关键口径(时区、字段含义、交易时段)写成可读配置并版本化。供应商字段变更、时区规则调整、或内部需求变化时,你才能快速定位变更影响。
九、上线验收:一致性与可对账优先于任何指标表现
上线时先验收一致性:同一段数据回放是否产生同一序列,同一段断线是否能补洞并对账,监控是否能看到延迟与缺口,降级是否能自动触发。通过一致性验收后再谈策略表现,否则你的收益曲线可能只是数据幻觉。
十、结语:把行情接入做成资产,你会越来越省心
美股行情接入的核心不是“能拿到价格”,而是“能长期拿到可对账的价格”。当你把内部协议、补洞对账、监控告警与降级策略做成标准模块,AAPL 只是一次验证;真正的收益是你拥有了一条可复用的行情底座,后续任何策略、告警与面板都能站在同一套可靠输入之上。
十一、最小验收脚本:三项对账通过才算“接入完成”
为了避免“看起来连上了,其实不可靠”,建议把接入完成的门槛写成三项验收。第一项是重复运行一致:同一段时间内的快照拉取重复执行,字段与口径保持一致,异常与限流能被明确分类。第二项是断线恢复一致:模拟断线后重连,能用补洞把缺口补齐,并保证最终序列严格递增、无重复、可幂等落库。第三项是实时与快照对账:在随机抽样时刻,WS 最新值与 REST 快照在可接受误差范围内一致(考虑到延迟与撮合差异),偏差超阈值会触发降级或告警。
把这三项验收固定下来,你后续接入更多标的或更换运行环境时,都能快速复测并定位问题来源,避免在策略开发阶段反复被数据与链路问题打断。



