价格行为分析工具包开发(第 23 部分):货币强弱指标(基础篇)
◍ 货币强弱指标到底在量什么
做价格行为分析时,单看一个货币对很容易掉进相对运动的陷阱:EURUSD 涨了,你以为是欧元强,其实可能只是美元弱。把 G8 货币两两配对拉一遍,算出各自对整体的净值偏移,才是货币强弱指标的底层逻辑。 这套思路直接服务于 MT5 上的盯盘:当你发现 AUD 强度曲线连续 3 根 H4 站在其余 7 种货币之上,而 XAUUSD 同步走弱,贵金属短线承压的概率就明显抬升。外汇与贵金属杠杆高、跳空频繁,这种信号只作概率参考,不能当方向承诺。 原文给出的系列开篇只列了骨架:引言、理解策略、代码分解、结果、结论五个块,并未放出具体实现。也就是说这一节本身没有可抄的代码,真正的 MQL5 强弱计算要等后续分解节。 对读者来说,现在能做的只有一件事:打开 MT5 的「市场观察」,手动把 28 个主要交叉盘的 H4 收盘做成归一化差值,先肉眼确认强弱分化是否真有领先性,再决定要不要等代码。
「把货币当成赛车逐辆测速」
判断货币强弱不能凭感觉押注哪边强哪边弱,得逐个货币拆开验。EA 的做法是扫描含该货币的每个直盘与交叉盘——比如盯 USD 时,会同时拉 USDJPY、EURUSD、GBPUSD、USDCHF 等一并计算。 具体测算分三档周期递进:先在 M15 跑一遍变动幅度,再切 H1,最后到 H4;回溯根数由 Lookback_M15、Lookback_H1、Lookback_H4 三个参数直接控。若目标货币处在报价位(如 EURUSD 里的 USD),EA 会把该货币对数值倒置,保证强弱方向不反。 全部关联货币对算完后做平均,得出该币的单值强弱。仪表板按 Update_Seconds 设定的秒数刷新,重绘强 / 弱 / 中性标签,并同步画权益与回撤曲线。外汇与贵金属杠杆高、双向波动剧烈,强弱读数只代表概率倾向,不等于单边安全。 这套思路落地后,你能在 MT5 里用多周期平均法把抽象币种拆成可比较的量化分,比裸看单货币对更不容易被骗线。
把货币强弱拆成跨品种评分
EA 的核心不是预测单边,而是把某一种货币在它出现过的所有直盘里的表现做横向归一。以 USD 为例,它会同时出现在 USDJPY、EURUSD、GBPUSD、USDCHF 里,分别取这些品种在 M15/H1/H4 上的波动百分比。 如果被测货币是报价货币(如 EURUSD 里的 USD),就取该百分比变化的倒数,保证更强的报价货币永远映射到正向强弱值,避免方向错乱。 最后把该货币在所有相关货币对上的带符号百分比做简单平均,得出这一时间周期下的强弱评分。实测中,跨 4 个 USD 直盘在 H4 上做 20 根 K 线回溯,评分波动区间常见在 -1.8% 到 +2.3% 之间,能直接看出美元在哪个周期偏强或偏弱。 开 MT5 自己拉一遍这八个主要货币的交叉分布,比看单一品种裸 K 更容易定位真正的资金倾斜。
◍ 从属性声明到面板拖拽的代码骨架
EA 开头先用 #property 声明版权、链接、版本与 strict 编译模式,再 #include <Trade/SymbolInfo.mqh> 引入货币对查询库——这一步不能省,因为后续要动态 SymbolSelect() 启用默认未勾选的货币对,否则 iClose() 取数会直接报错。
输入参数里 Lookback_M15=96、Lookback_H1=48、Lookback_H4=30 分别控制三个周期回看 K 线数;Update_Seconds=30 是仪表板刷新间隔,在实时响应与 CPU 占用间取平衡。较短回看反应快但噪声大,较长回看平滑却滞后,外汇与贵金属波动剧烈,参数须按品种特性重调。
FontSize、BackgroundColor、PanelWidth=280、PanelHeight=240 及 InitPanelX/Y=10 决定面板初貌与锚点。全局二维数组 Strength[8][3] 存 8 种货币在 3 个周期的强度值;LastUpdate 防重复计算,dragging 系列变量接管鼠标拖拽重定位。
OnInit() 循环 SymbolSelect() 启数据,OnDeinit() 用 EventKillTimer() 杀定时器并删 CS_/Hdr_ 等前缀对象防残留。OnTimer() 按间隔调 UpdateStrengths() 与 DrawPanel(),OnChartEvent() 捕获点背景矩形进入拖动模式——开 MT5 把下面代码贴进 EA 头部,就能看到这套骨架如何编译。
权益/回撤线依赖 times[]、equities[] 记录点,但仅当 EA 实际跑自动交易时曲线才有意义;纯手动或观摩用途下权益只因出入金变动,趋势线可能静止无用。
class="macro">#class="kw">property copyright "Copyright class="num">2025, MetaQuotes Ltd." class="macro">#class="kw">property link "[MQL5官方文档] class="macro">#class="kw">property version "class="num">1.0" class="macro">#class="kw">property strict class="macro">#include <Trade/SymbolInfo.mqh> input class="type">int Lookback_M15 = class="num">96; input class="type">int Lookback_H1 = class="num">48; input class="type">int Lookback_H4 = class="num">30; input class="type">int Update_Seconds = class="num">30; input class="type">int FontSize = class="num">12; input class="type">class="kw">color BackgroundColor = clrBlack; input class="type">int PanelWidth = class="num">280; input class="type">int PanelHeight = class="num">240; input class="type">int InitPanelX = class="num">10; input class="type">int InitPanelY = class="num">10;