MQL5 向导技巧须知(第27部分):移动平均线与攻击角度(基础篇)
◍ 用均线攻击角度过滤假突破
在 MT5 里直接套用向导生成的移动平均线信号,经常会踩进横盘假突破的坑。一个简单有效的补充维度,是看均线本身的“攻击角度”——也就是它相对水平轴的倾斜程度,角度越陡,趋势动能越实。 原文给出的参考阈值是:当 MA(14) 对价格的攻击角度绝对值小于 8 度时,视为动能不足,系统不发车;大于 15 度才判定为有效趋势攻击。这个 8 与 15 的区间是作者基于 2024 年 XAUUSD 一小时图回测得到的经验分割线,并非绝对标准。 外汇与贵金属杠杆高、滑点猛,单纯靠角度过滤仍可能连续止损,实盘前务必用策略测试器跑一遍自己的品种。打开 MT5 的 MQL5 向导,选 Moving Averages 模板后手动加一行角度判断,比裸用交叉信号稳半个身位。
「用衰减均线量攻击角度」
攻击角度在交易圈常被等同于趋势轨迹的陡峭程度,主流看法认为角度越陡趋势越强。但裸价格噪声大,直接量角度会被毛刺带偏,所以我们用指标缓冲区代替原始价格来做角度测算。 我们选了衰减移动平均线(Decay MA)而非常见的 SMA/EMA 来跟踪攻击角度。任何均线都能干这事,衰减均线只是相对新颖、多数交易者不熟,拿来当测量基底能减少原始价格波动干扰。 后续会用自定义信号类实例在 MT5 里回测这套假设,不靠肉眼读图,而是把角度转成可编码的数值信号。你可以现在开 MT5 挂一条 Decay MA 观察其斜率变化,对比裸 K 线斜率,体会缓冲区的平滑差异。
从均线两点差算攻击角度的老路子
传统做法先挑缓冲区的两个价格点测角度。直接用原始收盘价也行,但毛刺太多,实战里更常用平滑过的移动平均缓冲区。比如在日线图上,取今天的 MA 和 N 天前的 MA 两点。 斜率 m 的算法很直白:m = (MA(today) - MA(N days ago)) / N。这个值跟攻击角度成正比,本身就能当陡峭度和动量的粗尺用;不过多数人脑子里‘角度’是 0–90 度的东西,所以常再转一道。 用反正切把斜率变弧度:θ = atan(m),再乘 180/π 得角度值。举个可验算的例子:10 天前 MA=100,今天 MA=110,N=10,则 m=0.1,θ≈5.71 度;若同样涨幅压缩到 1 天(N=1),m=0.1 不变但此处举例改为一天涨 10 点即 m=10,θ≈84.29 度,接近垂直。 外汇贵金属波动大,日元对上 45 度可能还像回事,但个股一天走出这种幅度就夸张了。这套算法的核心价值,是把均线斜率读成趋势强度与方向的代理:角度越大,趋势倾向越明确,但高风险品种里需警惕假突破。
◍ 攻击角度测量里的尺度陷阱
用攻击角度去量价格运动,第一个坑是对价格尺度的过度敏感。拿非日元直盘 GBPUSD 举例,10 天变动约 ±0.10,算出来 m 值 0.01,乘 180 除 π 只有 0.57 度;而同样 10000 点变动的日元交叉盘却能给出 45 度。两者角度差了 90 倍,但没人会认为日元波动是 GBPUSD 的 90 倍——根子在于没把 tick value(最小计价单位)纳入计算。 forex.com 的 2023 年波动率榜单上,AUDUSD、NZDUSD 排前二,且都是 5 位小数报价。AUDUSD 日均动 1.04%,10 天累计约 0.070876,m 值 0.0070876,角度仅 0.406 度;而排第 7 的 GBPJPY 日均动 0.81%,以 147.679 为基准,10 天算出来角度是 50.1 度。攻击角度本不是波动率指标,但多数交易者会默认角度幅度能反映价格变动规模,这里显然对不上,外汇和贵金属这类高杠杆品种据此下单风险偏高。 第二个坑是时间框架一换,角度就乱跳。上面 45 度的例子切到 4 小时图,不改价格尺度,角度直接掉到 0.95 度。表面理由是底边(时间长度)被拉长,相同高度下斜率变平;但底边是用时间单位而非固定单位量的,这种扭曲本不该出现。做 MT5 验证时,把同一段行情分别拖到日线和 4 小时线画攻击线,角度差可能超 40 度,参数没动结论却完全反过来。