MT5指标编译通过 · EX5 17KB 10 0

多周期趋势共振指标

a729621·2 小时前发布

日线/4H/1H 的 EMA7-14-34-65 排列一致时,右上角显示多头绿、空头红、震荡灰

多周期趋势共振指标

MT5 真机运行截图 · 服务器把编译好的 EX5 挂到黄金 H1 图表上截的,你装上去看到的就是这个样子

MultiTimeframeResonance.mq5预览 35 / 254 行
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#property copyright "XAUOF 指标工坊"
#property version   "1.01"
#property description "日线 / 4小时 / 1小时 四条 EMA 多周期共振状态面板"
#property indicator_chart_window

#property indicator_buffers 1
#property indicator_plots   1

//--- 本指标只做状态面板,不画线,用一个空缓冲区占位

#property indicator_type1   DRAW_NONE
#property indicator_label1  "Resonance"

//==================== 可调参数 ====================

input int   EMA_Fast   = 7;      // EMA 快线周期(默认 7,数值越小反应越快)

input int   EMA_Mid1   = 14;     // EMA 次快线周期(默认 14)

input int   EMA_Mid2   = 34;     // EMA 中线周期(默认 34)

input int   EMA_Slow   = 65;     // EMA 慢线周期(默认 65,代表大趋势)


input int   BoxX       = 20;     // 面板距图表右边缘的距离(像素,建议 10-60)

input int   BoxY       = 20;     // 面板距图表上边缘的距离(像素,建议 20-80)

input int   BoxWidth   = 190;    // 面板宽度(像素,字大就调大)

input int   BoxHeight  = 64;     // 面板高度(像素,建议 60-90)

input int   FontSize   = 12;     // 面板文字大小(建议 11-16)

input bool  ShowAlert  = true;   // 共振状态发生变化时是否弹窗提醒


//==================== 内部变量 ====================

double DummyBuffer[];            // 占位缓冲区(不绘图)


//--- 三个周期 × 四条均线的句柄,索引 0=EMA7 1=EMA14 2=EMA34 3=EMA65

int hD1[4], hH4[4], hH1[4];

//--- 三个周期当前的均线数值

double emaD1[4], emaH4[4], emaH1[4];

string lastSignal = "";          // 上一次的共振状态,用于判断是否变化

已显示前 35 行,共 254 行。完整源码仅对 xauusd.team VIP 开放查看与复制。

开通 VIP 查看完整源码
MT5 运行截图 · 完整视图带价格轴和时间轴的整张图表(约 150 根 H1 K 线),上面的封面是它最近 80 根 K 线的放大视图
多周期趋势共振指标 在 MT5 上的真实截图

作品说明

OBJPROP_BORDER_SIZE 在 MQL5 不存在,矩形标签的边框粗细用 OBJPROP_WIDTH,OBJPROP_BORDER_TYPE 的值必须是 BORDER_FLAT。另外顺手修了三处会导致显示异常的问题:不能对 SetIndexBuffer 绑定的缓冲区调 ArrayResize;CORNER_RIGHT_UPPER 下 XDISTANCE 本身就是离右边的距离,不用减图表宽度;MT5 的 OBJ_LABEL 不支持 \n,改成两行独立标签。

使用说明

  1. 把 MultiTimeframeResonance.mq5 放进 MQL5/Indicators,在 MetaEditor 按 F7 编译,然后从导航器拖到图表上。
  2. 第一次加载请先在 MT5 里把该品种的 D1、H4、H1 历史数据下载完整(切换一遍周期即可),否则面板会短暂空白。
  3. 面板位置用 BoxX / BoxY 调,字太小就加大 FontSize 并同步放大 BoxWidth / BoxHeight。
  4. 绿色「多头共振」= 三个周期的 EMA7>14>34>65;红色「空头共振」= 三个周期全部反向排列。
  5. 灰色「震荡」时第二行会显示 日↑ 4H↓ 1H- 这样的明细,可以看出哪个周期还没跟上。
  6. 共振状态切换时弹窗提醒,不需要可把 ShowAlert 设为 false。
  7. 本指标只给方向,不画入场箭头、不带止损止盈,实际交易请自行配合回调入场点和风控。
  8. 面板读的是未收盘 K 线的均线值,状态可能在收盘前反复跳动,建议以 K 线收盘后的状态为准。
✅ 自动修复后已通过服务器编译校验(共修 1 轮)。

AI 解读根据源码逐行分析写成,供参考,以实际运行为准

这是什么

这是一个挂在图表右上角的状态面板,同时监控日线、4小时、1小时三个周期的 EMA 排列。当三个周期的 7、14、34、65 四条均线全部多头排列(7>14>34>65)时显示绿色"多头共振",全部空头排列时显示红色"空头共振",方向不一致时显示灰色"震荡"并标注各周期状态。适合需要多周期确认才入场的趋势交易者。

逻辑原理

指标为三个周期(日线、4小时、1小时)各创建四个 EMA 句柄(周期分别为参数里设置的快线、次快线、中线、慢线,默认 7/14/34/65),每个 tick 读取最新一根 K 线上的均线值。判断每个周期是否多头排列(EMA7 > EMA14 > EMA34 > EMA65)或空头排列(EMA7 < EMA14 < EMA34 < EMA65)。只有三个周期全部多头排列才算多头共振,全部空头排列才算空头共振,否则算震荡。

面板背景矩形用 OBJ_RECTANGLE_LABEL 绘制,文字用两个 OBJ_LABEL 分两行显示。多头共振时背景绿色,空头共振时背景暗红色,震荡时灰色。震荡状态下第二行会显示三个周期各自的方向(↑ 向上、↓ 向下、- 混乱),方便判断哪个周期还没跟上。

状态从上次记录切换到新状态时,如果 ShowAlert 为 true 会弹窗提醒。读的是当前未收盘 K 线的均线值,所以收盘前可能反复跳动。

参数说明

  • EMA_Fast(默认 7):快线周期,数值越小对价格反应越快,调小会让共振更灵敏但假信号也更多
  • EMA_Mid1(默认 14):次快线周期,介于快线和中线之间
  • EMA_Mid2(默认 34):中线周期,代表中期趋势
  • EMA_Slow(默认 65):慢线周期,代表大趋势,数值越大越平滑但滞后也越严重
  • BoxX(默认 20):面板距图表右边缘的像素距离,建议 10-60
  • BoxY(默认 20):面板距图表上边缘的像素距离,建议 20-80
  • BoxWidth(默认 190):面板宽度,字体大就同步调大
  • BoxHeight(默认 64):面板高度,建议 60-90
  • FontSize(默认 12):文字大小,建议 11-16,调大后需同步放大面板宽高
  • ShowAlert(默认 true):共振状态切换时是否弹窗提醒,不需要改成 false

怎么用

把 .mq5 文件放进 MT5 数据文件夹的 MQL5/Indicators 目录,在 MetaEditor 按 F7 编译通过后,从导航器窗口拖到图表上即可。第一次使用前务必在 MT5 里把该品种的日线、4小时、1小时历史数据下载完整(切换一遍周期让 MT5 自动下载即可),否则面板会短暂空白或均线句柄创建失败。

面板固定在图表右上角,共振时背景变色并显示状态文字。绿色表示三个周期都是多头排列,可以找回调做多;红色表示都是空头排列,可以找反弹做空;灰色表示方向不一致,不建议按趋势方向开仓。面板不画箭头、不提示具体入场点,交易者需自行结合价格行为、支撑阻力或其他指标确定入场时机。

适用场景

适合波动较大、趋势明显的品种,例如黄金(XAUUSD)、原油、主要货币对的日线或 4 小时图。多周期共振后沿大周期方向在小周期回调入场,可以提高胜率并减少逆势单。默认参数(7/14/34/65)偏向中长线趋势,适合 H4 及以上周期;如果用在 M15、M30 等小周期,建议把四条均线周期同步缩小(例如 5/10/20/40),否则均线会过于平滑导致信号严重滞后。

不适合窄幅震荡、频繁假突破的品种或时段(例如亚洲盘的欧系货币对),因为均线本身就滞后,震荡行情下三个周期很难同时排列整齐,大部分时间会显示灰色,参考价值有限。也不适合重大消息发布前后,因为价格跳空或急速反转时均线来不及转向。

风险提示

均线是滞后指标,共振信号出现时趋势往往已经走了一段,如果直接追单可能买在阶段高点或卖在低点。建议等共振出现后在小周期找回调或反弹的二次入场机会,而不是看到绿色就直接市价做多。

代码读取的是当前未收盘 K 线的均线值,K 线收盘前价格波动会导致均线值和面板状态反复变化,尤其是在 H1、H4 K 线即将收盘的几分钟。建议以 K 线收盘后的状态为准,避免在收盘前几分钟看到颜色变化就急着开仓。

弹窗提醒只在状态切换瞬间触发一次,如果当时不在电脑前就会错过。代码里没有历史信号记录功能,无法回测过去某个时刻是什么状态。面板也没有做多周期数据同步失败的容错处理,如果某个周期的历史数据缺失或网络卡顿导致 CopyBuffer 失败,面板会保持上一次的状态不变,可能与实际行情脱节。

指标本身不包含止损止盈逻辑,也不限制仓位和风险敞口。交易者必须自行设置止损、控制单笔风险在账户的 1-2% 以内,并根据账户规模和品种波动率调整手数。

常见问题

这个指标会重绘吗
不会。指标读取的是已经计算好的 EMA 值,不会回头修改历史 K 线上的状态。但当前未收盘 K 线的状态会随价格波动实时变化,建议以 K 线收盘后为准。
可以用在 XAUUSD 以外的品种吗
可以。代码里没有限制品种,任何 MT5 支持的品种都能用。但建议选波动大、趋势明显的品种(黄金、原油、主要货币对),窄幅震荡的品种大部分时间会显示灰色。
MT4 能用吗
不能。这是 MQL5 代码,MT4 不支持。MT4 需要用 MQL4 重写,函数名和对象属性都不一样。
参数默认值适合什么周期
默认的 7/14/34/65 适合 H4 和日线级别的中长线趋势交易。如果用在 M15、M30 等小周期,建议把四条均线周期同步缩小(例如 5/10/20/40),否则信号会严重滞后。
为什么面板一直显示空白或灰色
首次加载时需要确保日线、4小时、1小时的历史数据已下载完整,否则均线句柄无法计算。切换一遍这三个周期让 MT5 自动下载数据即可。如果数据完整但仍显示灰色,说明三个周期的均线排列方向不一致,这是正常的震荡状态。

Multi-Timeframe EMA Resonance Panel for MT5

Displays bullish (green), bearish (red), or neutral (gray) signal in the top-right corner when EMA7-14-34-65 alignment across D1, H4, and H1 timeframes matches. Alerts on resonance state changes.

A short source preview is shown above for visitors; full source, copy and compiled EX5 files are available to VIP members.

评论

后可以留言,比如反馈用着怎么样、想加什么功能。

还没有人评论,来抢个沙发。