价格行为分析工具包开发(第 23 部分):货币强弱指标(基础篇)
📘

价格行为分析工具包开发(第 23 部分):货币强弱指标(基础篇)

第 1/2 篇

◍ 货币强弱指标到底在量什么

做价格行为分析时,单看一个货币对很容易掉进相对运动的陷阱: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=96Lookback_H1=48Lookback_H4=30 分别控制三个周期回看 K 线数;Update_Seconds=30 是仪表板刷新间隔,在实时响应与 CPU 占用间取平衡。较短回看反应快但噪声大,较长回看平滑却滞后,外汇与贵金属波动剧烈,参数须按品种特性重调。 FontSizeBackgroundColorPanelWidth=280PanelHeight=240InitPanelX/Y=10 决定面板初貌与锚点。全局二维数组 Strength[8][3] 存 8 种货币在 3 个周期的强度值;LastUpdate 防重复计算,dragging 系列变量接管鼠标拖拽重定位。 OnInit() 循环 SymbolSelect() 启数据,OnDeinit()EventKillTimer() 杀定时器并删 CS_/Hdr_ 等前缀对象防残留。OnTimer() 按间隔调 UpdateStrengths()DrawPanel()OnChartEvent() 捕获点背景矩形进入拖动模式——开 MT5 把下面代码贴进 EA 头部,就能看到这套骨架如何编译。 权益/回撤线依赖 times[]equities[] 记录点,但仅当 EA 实际跑自动交易时曲线才有意义;纯手动或观摩用途下权益只因出入金变动,趋势线可能静止无用。

MQL5 / C++
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;

常见问题

它量的是某货币相对一篮子对手币的平均涨跌强度,而非单一盘面。直接看单对易被噪声带偏,跨品种评分能剥离个股对干扰。
就是对各货币配对的归一化涨跌幅做横向排名。可写脚本批量拉取跨品种数据自动算,不必手工盯十几张图。
小布可自动聚合多品种涨跌并生成强弱面板,你打开对应页就能直接看排序,不用自己搭代码。
核心是先声明货币篮子数组与权重属性,再写计算函数绑到图表对象。骨架可复用,但参数要按自己品种调。
思路通用但需重选篮子。外汇贵金属高杠杆高风险,强弱仅示概率倾向,别当确定性信号裸做重仓。