在外汇量化策略研发与实盘运行过程中,实时汇率数据的有效性直接影响信号生成、风险控制与回测可信度。一个高频且易被忽视的问题是:非交易时段,行情接口仍持续推送历史收盘数据,造成策略误触发、告警失效、回测曲线失真。
本文以实战视角,给出一套轻量、稳定、可直接集成到量化框架的数据过滤逻辑,解决非交易日无效数据污染问题。
一、问题背景:无效数据对量化系统的实际影响
外汇市场常规交易时段为周一至周五,周末及法定节假日休市。但多数实时汇率接口(含免费与商用)未内置交易日校验,在非交易时段持续推送最近一条有效行情,表现为:
- 价格长期不变,时间戳持续更新,形成 “伪实时行情”;
- 触发波动阈值、均线突破等条件类信号,导致实盘误下单;
- 回测阶段引入无效数据,使得收益曲线、回撤指标偏离真实水平;
- 数据存储与计算资源被无效占用,降低策略执行效率。
该问题并非接口故障,而是数据传输机制与量化业务逻辑不匹配,必须在策略层做有效性校验。
二、核心思路:三层数据有效性校验
为保证策略输入纯净,我在行情数据解析入口处加入前置过滤,不侵入主策略逻辑,不引入额外依赖,仅通过交易日判断 + 价格校验 + 时间戳校验实现精准过滤。
- 交易日历过滤:非交易日直接丢弃全量数据;
- 价格变动校验:连续数据价格无变化判定为过期数据;
- 时间戳合法性校验:时间不递增则判定为无效推送。
三、代码实现:可直接嵌入量化策略的过滤逻辑
以下代码基于 Python 实现,兼容主流量化框架与 WebSocket 行情接入,以 AllTick API 为例提供完整可运行示例。
1. 数据有效性判断函数
def is_valid_trading_data(price, timestamp, last_price, last_timestamp):
# 价格无变动,判定为旧数据
if price == last_price:
return False
# 时间戳未递增,无效数据
if timestamp <= last_timestamp:
return False
# 非交易日直接过滤
if not is_trading_day():
return False
return True
2. WebSocket 行情接收与过滤实战
import websocket
import json
from datetime import datetime
# 全局记录上一笔有效数据
last_price = None
last_ts = None
def on_message(ws, message):
global last_price, last_ts
data = json.loads(message)
current_price = data.get('price')
current_ts = data.get('timestamp')
# 第一层:非交易日直接跳过
if not is_trading_day():
return
# 第二层:价格无变动,过滤旧数据
if current_price == last_price:
return
# 有效数据进入策略逻辑
print(f"有效汇率数据: {current_price}")
last_price = current_price
last_ts = current_ts
# 交易日判断(可扩展为年度交易日历)
def is_trading_day():
return datetime.now().weekday() < 5
# WebSocket接口地址
WS_DOMAIN = "wss://apis.alltick.co"
WS_PATH = "/websocket-api/stock-websocket-interface-api/transaction-quote-subscription"
ws_url = WS_DOMAIN + WS_PATH
# 启动行情订阅
ws = websocket.WebSocketApp(ws_url, on_message=on_message)
ws.run_forever()
四、量化场景优化建议
为适配回测与实盘双场景,建议在上述基础上做三点强化:
- 预加载年度交易日历
本地缓存全年交易日清单,替代简单星期判断,提高节假日识别精度。 - 数据时延阈值过滤
增加数据生成时间与当前时间差判断,过滤延迟过高的历史数据。 - 过滤日志记录
统计无效数据占比,用于接口质量评估与策略稳定性分析。
该方案可显著提升:
- 实盘信号准确率,降低非交易时段误操作风险;
- 回测数据纯度,提升策略评估可信度;
- 系统运行效率,减少无效计算与存储开销。
五、总结
实时行情接口仅负责数据传输,数据有效性必须由量化策略自主保障。非交易日旧数据推送是外汇量化中的典型问题,通过前置轻量过滤逻辑,可在不增加系统复杂度的前提下,彻底解决数据污染问题。
该方案已在多套外汇趋势与震荡策略中验证稳定,适合各类实时汇率数据接入场景,欢迎同行交流优化。

