实操:用 iTick 外汇数据构建日内趋势跟踪策略(EMA + 风险预算)

实操:用 iTick 外汇数据构建日内趋势跟踪策略(EMA + 风险预算)

2026年3月22日8 分钟阅读29,264 次阅读
#外汇策略#日内#EMA#iTick#风控

一、这篇文章要解决的不是“信号”,而是“可落地的策略链路”

EMA 日内趋势策略的难点从来不在公式本身,而在于你能否把“数据口径—信号—交易执行—风险预算—复盘”串成闭环。多数文章只写到“交叉买入、死叉卖出”,结果实盘会遇到三个现实问题:报价抖动导致频繁反复、滑点与点差吞噬优势、以及高波动时仓位不自觉地变成“赌方向”。

本文按工程落地顺序讲清楚:用什么数据、如何定义信号、如何限制交易频率、如何用风险预算把波动变成可控变量,并说明用 iTick 的 REST/WS 把这条链路做成长期可运行、可回放的系统。

二、策略框架(TL;DR)

  • 信号:用两条 EMA 构造方向与动量,但只在“趋势强度足够、噪声可控”的窗口内交易。
  • 过滤:用波动与点差过滤掉“看起来趋势、实际是抖动”的区间;用冷却时间限制连环交易。
  • 执行:用“市价 + 保护性滑点上限”或“被动挂单 + 超时撤单”两种执行模板,不把成交当成理所当然。
  • 风控:目标不是“赢更多”,而是“输得更可控”。用风险预算把仓位规模与波动绑定,把最大回撤写进规则。
  • 复盘:每一笔交易都必须能回答三件事:当时信号是什么、当时波动/点差如何、成交/滑点如何。

三、数据与口径:日内策略最怕“混用时间戳”

日内策略的时间尺度很短,任何口径不一致都会被放大。建议你在开始之前先写一份内部协议,至少固定下面四个要点:

  • 时间戳口径:统一使用 UTC 毫秒或统一时区的秒级时间戳,禁止混用本地时间与交易所时间。
  • 价格口径:明确使用 bid/ask/mid/last 中哪一个。若你只用 last,在外汇上容易被点差与瞬时跳价误导。
  • 采样口径:EMA 用的是 bar close 还是 tick mid 的聚合?不同采样会导致信号相位差。
  • 缺口口径:断线补洞要补到什么粒度?你是补 tick 还是补 1m bar?补洞策略决定复盘一致性。

实操建议:趋势策略建议用 1m 或 5m bar 作为信号基础,用 tick 或 quote 做执行与风控(点差、滑点、止损触发)。把“信号”和“执行”分开,系统会稳定得多。

四、信号定义:EMA 交叉只是起点

我们用一组快慢 EMA 作为核心信号,但要把“趋势”与“抖动”分开。一个更可用的定义是:

  • 方向:EMA_fast > EMA_slow 视为多头状态,反之为空头状态。
  • 强度:|EMA_fast - EMA_slow| 相对于近期波动必须超过阈值,否则视为噪声区间。
  • 触发:只在方向从反转到顺势的那一刻开仓,避免在同一方向上频繁加减仓。

阈值怎么定?你不需要拍脑袋,直接把它与波动绑定:例如用过去 N 根 bar 的 ATR(或近似波动)做归一化,要求差值超过 k * ATR。

五、交易频率控制:日内趋势策略往往“死在太勤快”

日内趋势策略常见的亏损来源不是方向错,而是“交易过多”。你可以用三个简单但有效的约束把频率压下来:

  • 冷却时间:开仓或平仓后,至少等待 X 分钟才允许下一次开仓。
  • 最小变动:信号反转必须伴随价格/波动的实质变化,否则忽略。
  • 时间窗:把策略限定在更有趋势的时段(例如欧盘/美盘活跃时段),在低流动性时段自动降频或停机。

这一步的价值在于:你用规则把“冲动交易”从系统里剔除,避免把点差当成“固定税”越交越多。

六、风控与风险预算:把仓位与波动绑定

趋势策略不是预测策略,真正的优势来自“让小亏变得更小,让大趋势有空间跑”。风险预算的落地方法可以很简单:

  • 先定每笔最大风险:例如每笔最多亏损账户净值的 r%。
  • 再定止损距离:用波动度量(如 ATR)给出“合理的噪声空间”,例如止损 = m * ATR。
  • 最后算仓位:仓位 = (账户净值 * r%) / 止损点数(再根据合约/点值换算)。

当波动上升时,止损距离变大,仓位自然变小;当波动下降时,仓位自然变大。你不需要主观判断“今天该不该重仓”,系统会替你做。

七、用 iTick 做实时化与补洞:把策略变成“可长期运行的服务”

日内策略对稳定性要求非常高。你需要两条链路协同:

  • WebSocket:负责实时流(报价/成交相关数据),用于触发信号与执行决策。
  • REST:负责快照与历史,用于启动时对齐状态、断线后补洞、以及事后对账。

建议你把状态分成两层:

  • 交易状态:当前持仓方向、开仓价、止损/止盈、冷却计时器。
  • 数据状态:最后一个已处理的时间戳、已确认写入的 bar 序号、断线窗口。

如果你能在重启后用 REST 拉到缺失区间,并把“最后处理到哪里”恢复出来,那么这个策略才算真正具备上线条件。

八、复盘模板:让每一次交易都能被解释

复盘不是写“今天赚了/亏了”,而是写“为什么会这样”。建议你为每一笔交易记录最小字段集:

  • 信号:触发时的 EMA_fast、EMA_slow、趋势强度值、过滤器是否通过。
  • 市况:触发时点差、最近 30 分钟波动、是否处于低流动性时段。
  • 成交:成交价、滑点、委托类型(主动/被动)、成交耗时。
  • 风险:仓位大小、止损距离、当时账户风险占用。

当这些字段齐全,你会很快发现亏损集中在哪些条件组合上:是点差扩大时交易过多,还是波动骤升时止损太紧,或者是执行模式与市场结构不匹配。

九、常见坑(你可以直接用来做自检)

  • 用 last 做信号但用 mid 做回测,结果回测与实盘不一致。
  • 未设置冷却时间,EMA 在横盘来回穿越导致“碎亏”累积。
  • 止损用固定点数,忽略波动变化,导致高波动时被噪声扫掉。
  • 只看胜率不看盈亏比,趋势策略常常胜率不高但依赖长尾盈利。
  • 断线不补洞,导致策略状态与市场状态脱节,复盘无法复现。

十、结语:把“策略”当成产品,而不是一段公式

日内 EMA 趋势策略要想跑得久,必须从第一天就把它当成“产品”:有稳定的数据口径、有可控的交易频率、有明确的风险预算、有可复现的复盘数据。做到这些之后,EMA 才有意义;否则你只是把随机波动包装成信号。