把波动率当作方向
高波动率说的是价格在大幅移动,而不是在向上移动。趋势和波动率是两个独立的度量——一段剧烈的震荡区间既是高波动率,又同时没有趋势。
波动率是价格随时间变化的程度——衡量的是价格走了多远,而不是往哪个方向走。统计上它是收益率的标准差;在 MT5 EA 内部它以平均真实波幅 (ATR) 读取,并决定上个月的止损距离放到今天是否仍然合适。
亦称:market volatility, price volatility
更新于 · 审阅于
价格通常会走多远,而不是往哪个方向走。一个平静的市场和一个剧烈的市场可以在同一个价格上收完这一周;波动率就是这两段旅程之间的差别。
EA 内部的每一个止损距离、目标和手数,都是按照“价格在一个交易时段里会走多远”的某种假设校准的。波动率就是把这个假设摆到明面上。当它在部署之后发生变化时,一只原本正确的 EA 会在逻辑一行未改的情况下变成错的。
σ = 各周期收益率的标准差 · 年化 σ = σ_daily × √252 统计定义是收益率的标准差,夏普比率、风险价值和每一个风险模型用的都是它。EA 内部的实用定义则是平均真实波幅,它以价格单位度量同一个概念,且无需收益率序列即可计算。两个都叫“波动率”的数字,往往其实是这两样不同的东西。
单一数字无法描述一套策略。下列指标会改变这个数字的读法。
一个演算示例:同一只 EA 带着 30 点固定止损穿过两种状态。变化的只有一根普通小时线的幅度。
基于 ATR 的版本会随市场一起放宽——但手数也必须随之缩小。
计算 30 ÷ 12 = 2.5 个波幅 · 30 ÷ 34 = 0.88 个波幅
结果 固定止损的含义变化了将近三倍;基于 ATR 的止损则没有
mt5depot 的 EA 页面为每个商品注明了测试窗口和数据来源,所以一个结果是否跨越了不止一种状态,可以从日期上读出来。本页上每一个实测数字都来自这些商品公开的交易账本 (EXP-VOL-REGIME-001),按已平仓交易基准。
高波动率说的是价格在大幅移动,而不是在向上移动。趋势和波动率是两个独立的度量——一段剧烈的震荡区间既是高波动率,又同时没有趋势。
在公开账本上,EA 日度盈亏最剧烈的那个季度在 22 只中有 13 只是盈利的,而最差的单日在 22 只中有 15 只落在那个季度之外。一个在高波动率时关闭 EA 的过滤器,会错过那个季度,却仍然躲不掉大多数最差的日子。
一个在剧烈状态下扩大到三倍的 ATR 止损,会把承担风险的资金也扩大到三倍,除非仓位大小随之下降。自适应止损只有在与自适应仓位配对时才有帮助。
测试器从不打印波动率数字。它的三项设置决定了有多少波动率能到达报告。
建模。 Every tick based on real ticks(基于真实 Tick 的每笔 Tick)重放每根 K 线内部记录下来的路径,所以一个落在普通 K 线之内的止损会在它本该被打到的地方被打到。由 M1 K 线生成的 Every tick(每笔 Tick)对这条路径做插值,而 Open prices only(仅开盘价)则把它丢弃。止损比 K 线幅度更窄的策略,用这两种模式都无法判断——参见 Tick 数据和建模质量。
点差。 策略测试器 → Settings → Spread 提供 Current(当前值)或一个固定的点数。两者都把一个数值固定在数年之上,所以随波动率飙升而来的点差扩大在生成 Tick 的测试中是缺失的。在真实 Tick 上,点差就是 Tick 文件所携带的那个值。
输入参数。 一个按 ATR 设定的止损会在 Inputs 选项卡上暴露两个输入项:周期和倍数。一个在 2.0 有效、在 1.8 或 2.2 却无效的倍数,是被拟合到了某一个窗口的回调上,而不是拟合到了波动率上。在 MQL5 中,句柄在 OnInit 里用 iATR(_Symbol, PERIOD_CURRENT, 14) 创建一次。数值从最后一根已完成的 K 线(索引 1)读取,这样止损距离就不取决于信号触发的时刻。平均真实波幅 (ATR) 词条里有相关设置。
每个商品页面都附有其已平仓交易列表,所以可以按日历季度测量 EA 自身日度盈亏的 σ,并与整个窗口比较。24 个商品中有 2 个在任何一个季度都没有达到 10 个活跃日,被跳过而没有填补。
| 指标(已平仓交易基准,活跃日 10 天以上的季度) | 22 只 EA 的中位数 | 范围或数量 |
|---|---|---|
| 每只 EA 符合条件的季度数 | 15.5 | 合计 375 个 |
| 状态跨度:最剧烈季度 σ ÷ 最平静季度 σ | 2.29× | 1.25× 至 5.33× |
| 状态跨度超过 2× 的 EA | — | 22 只中 15 只 |
| 落在整个窗口 σ 的 ±25% 以内的季度 | 78.76% | 375 个中 282 个 |
| 最差单日落在最剧烈季度之内 | — | 22 只中 7 只 |
| 最剧烈季度亏损 | — | 22 只中 9 只 |
| 最后一个符合条件的季度 σ ÷ 整个窗口 σ | 0.91× | 22 只中 17 只低于 1 |
有两行与波动率过滤器的假设相矛盾。最差的一天在 22 只 EA 中有 15 只落在最剧烈季度之外,而那个季度在 22 只中有 13 只是赚钱的。一个坏日子不是一种状态,而滚动测量也看不见它的到来。
最宽的跨度属于 Murmuration:2026-Q1 的季度 σ 为 4.591%,下一个季度则为 0.862%,设置完全相同却相差 5.33 倍。它最差的一天是 2020-03-18 的 9.579%,落在六年前一个更平静的季度里。
读状态,而不是读水平:在 EA 交易的时间周期上,把今天的 ATR 与测试窗口内的 ATR 作比较。
CopyBuffer(handle, 0, 1, bars, array) 在测试日期范围内读取同一指标,并对数组求平均。在 MT5 中运行回测涵盖上面这些设置,参数优化则涵盖 ATR 倍数的相邻取值检查。一次飙升如何变成钱,是仓位管理、滑点和最大回撤的主题。