MT5指标编译通过 · EX5 15KB 自动发布 6 0

黄金多周期均线共振箭头指标

大hh·3 小时前发布

三条绿色均线+一条紫色快线,价格突破时显示买卖箭头信号

黄金多周期均线共振箭头指标

效果示意图 · AI 根据源码绘制

GoldMultiMAArrows.mq5193
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
#property copyright "XAUOF指标工坊"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 7
#property indicator_plots   7

// 前四条均线
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrMagenta
#property indicator_width1  2
#property indicator_label1  "快速均线"

#property indicator_type2   DRAW_LINE
#property indicator_color2  clrLime
#property indicator_width2  1
#property indicator_label2  "短期均线"

#property indicator_type3   DRAW_LINE
#property indicator_color3  clrLime
#property indicator_width3  1
#property indicator_label3  "中期均线"

#property indicator_type4   DRAW_LINE
#property indicator_color4  clrLime
#property indicator_width4  2
#property indicator_label4  "长期均线"

// 买卖箭头
#property indicator_type5   DRAW_ARROW
#property indicator_color5  clrLime
#property indicator_width5  2
#property indicator_label5  "买入信号"

#property indicator_type6   DRAW_ARROW
#property indicator_color6  clrMagenta
#property indicator_width6  2
#property indicator_label6  "卖出信号"

// 辅助缓冲区(不画图,用于存储前一根K线的快线值,判断穿越)
#property indicator_type7   DRAW_NONE

//--- 可调参数
input int MA_Fast   = 10;   // 紫色快速均线周期(推荐10-15)
input int MA_Short  = 20;   // 绿色短期均线周期(推荐20)
input int MA_Mid    = 50;   // 绿色中期均线周期(推荐50)
input int MA_Long   = 200;  // 绿色长期均线周期(推荐200)
input ENUM_MA_METHOD MA_Method = MODE_EMA; // 均线算法(EMA更灵敏)
input ENUM_APPLIED_PRICE MA_Price = PRICE_CLOSE; // 均线应用价格

input bool Show_Buy_Arrow  = true;  // 是否显示买入箭头
input bool Show_Sell_Arrow = true;  // 是否显示卖出箭头
input int  Arrow_Gap = 30;          // 箭头与价格的间距(点数)

//--- 指标缓冲区
double BufferFast[];   // 紫色快线
double BufferShort[];  // 绿色短线
double BufferMid[];    // 绿色中线
double BufferLong[];   // 绿色长线
double BufferBuy[];    // 买入箭头
double BufferSell[];   // 卖出箭头
double BufferPrevFast[]; // 辅助:前一根快线值

//--- 指标句柄
int handleFast, handleShort, handleMid, handleLong;

//+------------------------------------------------------------------+
int OnInit()
{
   // 创建均线句柄
   handleFast  = iMA(_Symbol, PERIOD_CURRENT, MA_Fast,  0, MA_Method, MA_Price);
   handleShort = iMA(_Symbol, PERIOD_CURRENT, MA_Short, 0, MA_Method, MA_Price);
   handleMid   = iMA(_Symbol, PERIOD_CURRENT, MA_Mid,   0, MA_Method, MA_Price);
   handleLong  = iMA(_Symbol, PERIOD_CURRENT, MA_Long,  0, MA_Method, MA_Price);
   
   if(handleFast == INVALID_HANDLE || handleShort == INVALID_HANDLE ||
      handleMid == INVALID_HANDLE || handleLong == INVALID_HANDLE)
   {
      Print("均线句柄创建失败");
      return(INIT_FAILED);
   }
   
   // 绑定缓冲区
   SetIndexBuffer(0, BufferFast,   INDICATOR_DATA);
   SetIndexBuffer(1, BufferShort,  INDICATOR_DATA);
   SetIndexBuffer(2, BufferMid,    INDICATOR_DATA);
   SetIndexBuffer(3, BufferLong,   INDICATOR_DATA);
   SetIndexBuffer(4, BufferBuy,    INDICATOR_DATA);
   SetIndexBuffer(5, BufferSell,   INDICATOR_DATA);
   SetIndexBuffer(6, BufferPrevFast, INDICATOR_CALCULATIONS);
   
   // 设置箭头样式
   PlotIndexSetInteger(4, PLOT_ARROW, 233); // 买入箭头向上
   PlotIndexSetInteger(5, PLOT_ARROW, 234); // 卖出箭头向下
   
   // 设置数组为时间序列(0 = 最新K线)
   ArraySetAsSeries(BufferFast, true);
   ArraySetAsSeries(BufferShort, true);
   ArraySetAsSeries(BufferMid, true);
   ArraySetAsSeries(BufferLong, true);
   ArraySetAsSeries(BufferBuy, true);
   ArraySetAsSeries(BufferSell, true);
   ArraySetAsSeries(BufferPrevFast, true);
   
   // 设置指标名称
   IndicatorSetString(INDICATOR_SHORTNAME, "多周期均线共振");
   
   return(INIT_SUCCEEDED);
}

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
   // 设置价格数组为时间序列
   ArraySetAsSeries(close, true);
   ArraySetAsSeries(high, true);
   ArraySetAsSeries(low, true);
   
   // 计算起始位置
   int start = prev_calculated > 0 ? prev_calculated - 1 : 0;
   
   // 从指标句柄拷贝数据到缓冲区
   if(CopyBuffer(handleFast,  0, 0, rates_total, BufferFast)  <= 0) return(0);
   if(CopyBuffer(handleShort, 0, 0, rates_total, BufferShort) <= 0) return(0);
   if(CopyBuffer(handleMid,   0, 0, rates_total, BufferMid)   <= 0) return(0);
   if(CopyBuffer(handleLong,  0, 0, rates_total, BufferLong)  <= 0) return(0);
   
   // 主循环:从右往左计算(i=0 是最新K线)
   for(int i = start; i < rates_total && !IsStopped(); i++)
   {
      // 初始化箭头缓冲区为空值
      BufferBuy[i]  = EMPTY_VALUE;
      BufferSell[i] = EMPTY_VALUE;
      
      // 需要至少两根K线才能判断穿越
      if(i < 1) continue;
      
      // 保存前一根快线值(用于下一次循环判断穿越)
      BufferPrevFast[i] = BufferFast[i];
      
      // 获取当前和前一根的快线、短线值
      double fastNow  = BufferFast[i];
      double fastPrev = BufferFast[i+1];
      double shortNow = BufferShort[i];
      double shortPrev = BufferShort[i+1];
      double closeNow = close[i];
      
      // 判断是否为 0(避免无效数据)
      if(fastNow == 0 || shortNow == 0) continue;
      
      // 买入信号:快线上穿短线 且 价格在快线上方
      if(Show_Buy_Arrow)
      {
         if(fastPrev < shortPrev && fastNow > shortNow && closeNow > fastNow)
         {
            // 箭头画在K线最低价下方
            BufferBuy[i] = low[i] - Arrow_Gap * _Point;
         }
      }
      
      // 卖出信号:快线下穿短线 且 价格在快线下方
      if(Show_Sell_Arrow)
      {
         if(fastPrev > shortPrev && fastNow < shortNow && closeNow < fastNow)
         {
            // 箭头画在K线最高价上方
            BufferSell[i] = high[i] + Arrow_Gap * _Point;
         }
      }
   }
   
   return(rates_total);
}

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
   // 释放指标句柄
   if(handleFast  != INVALID_HANDLE) IndicatorRelease(handleFast);
   if(handleShort != INVALID_HANDLE) IndicatorRelease(handleShort);
   if(handleMid   != INVALID_HANDLE) IndicatorRelease(handleMid);
   if(handleLong  != INVALID_HANDLE) IndicatorRelease(handleLong);
}
//+------------------------------------------------------------------+
真实 MT5 运行截图服务器把编译好的 EX5 挂到黄金 H1 图表上截的,上面的封面就是照着它画的
黄金多周期均线共振箭头指标 在 MT5 上的真实截图

作品说明

从图上识别到:三条绿色均线(目测周期分别约为20、50、200),一条紫色均线(周期较短,约10-15),价格上方有绿色向上箭头(买入信号),下方有紫色向下箭头(卖出信号)。信号逻辑推测为:快线上穿慢线且价格在均线上方时显示买入箭头,反之显示卖出箭头。

使用说明

  1. 安装方法
  • 将代码保存为 GoldMultiMAArrows.mq5,放入 MT5 的 MQL5\Indicators 文件夹
  • 在 MetaEditor 中编译(F7),无错误后拖到图表即可
  1. 参数调整
  • MA_Fast:紫色快线周期,默认 10,数值越小越灵敏
  • MA_Short/Mid/Long:三条绿色均线,分别为 20/50/200,可根据品种特性调整
  • MA_Method:均线算法,EMA 更贴近价格,SMA 更平滑
  • Arrow_Gap:箭头与 K 线的间距,图表放大时可调大此值避免箭头挤在一起
  1. 信号解读
  • 绿色向上箭头:快线(紫色)上穿短线(绿色)且价格在快线上方,考虑买入
  • 紫色向下箭头:快线下穿短线且价格在快线下方,考虑卖出
  • 箭头出现后,建议结合长期均线趋势(价格在 200 均线上方为多头趋势)以及其他指标(如 MACD、RSI)确认
  1. 注意事项
  • 此指标为趋势跟踪型,震荡行情中会有假信号,建议配合布林带或 ATR 过滤
  • 箭头只在 K 线收盘后才最终确定,盘中箭头可能消失,不要盘中追单
  • 黄金波动大,务必设置止损,箭头只是参考信号,不是自动交易指令

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

这是什么

这是一个基于四条移动均线共振的趋势跟踪指标,专为 MT5 设计。图表上显示一条紫色快速均线(默认 10 周期)和三条绿色慢速均线(20/50/200 周期),当快线上穿短线且价格站上快线时,K 线下方出现绿色向上箭头提示买入;反之出现紫色向下箭头提示卖出。适合在黄金等趋势性强的品种上捕捉中短期入场时机。

逻辑原理

指标通过 iMA 函数计算四条 EMA 均线(默认算法,可切换 SMA),分别对应快速(10)、短期(20)、中期(50)、长期(200)周期。核心信号逻辑是快线与短线的穿越配合价格位置:

  • 买入箭头:前一根 K 线快线在短线下方,当前 K 线快线上穿短线,且收盘价在快线上方,箭头画在 K 线最低价下方
  • 卖出箭头:前一根快线在短线上方,当前快线下穿短线,且收盘价在快线下方,箭头画在 K 线最高价上方

中期和长期均线不参与信号判断,仅作为趋势背景参考(例如价格在 200 均线上方可视为多头趋势)。箭头只在 K 线完全收盘后确定,盘中不会提前显示。

参数说明

  • MA_Fast(默认 10):紫色快速均线周期,数值越小越灵敏,剥头皮可降到 5-8,波段交易可提高到 15-20
  • MA_Short(默认 20):绿色短期均线,与快线配合产生穿越信号,日内交易常用 20,4 小时图可调到 30
  • MA_Mid(默认 50):绿色中期均线,仅作趋势参考,无需频繁调整
  • MA_Long(默认 200):绿色长期均线,经典趋势分界线,不建议修改
  • MA_Method(默认 EMA):均线算法,EMA 更贴近价格反应快,SMA 更平滑但滞后,趋势跟踪建议用 EMA
  • MA_Price(默认 PRICE_CLOSE):均线计算价格,收盘价最常用,特殊需求可选典型价或加权价
  • Show_Buy_Arrow / Show_Sell_Arrow(默认开启):是否显示买入 / 卖出箭头,可单独关闭某一方向信号
  • Arrow_Gap(默认 30):箭头与 K 线的间距点数,图表放大后箭头挤在一起可调大此值到 50-100

怎么用

将代码保存为 .mq5 文件放入 MT5 的 MQL5\Indicators 文件夹,在 MetaEditor 中按 F7 编译无误后,从导航器窗口拖到图表即可。指标默认加载到主图窗口,四条均线和箭头会自动绘制。

看信号:绿色向上箭头出现后,可在下一根 K 线开盘时考虑做多,止损设在快线下方或最近低点;紫色向下箭头同理做空。建议配合长期均线趋势过滤:价格在 200 均线上方只做多信号,下方只做空信号,可大幅减少假突破。

调参:默认参数适合黄金 H1 时间框架,其他品种需根据波动特性调整。欧美等波动小的品种可把快线周期降到 8,原油等波动大的可提高到 12-15。箭头间距根据图表缩放比例调整,以不遮挡 K 线为宜。

适用场景

  • 品种:适合黄金、原油、指数等趋势性强的品种,外汇主要货币对(欧美、镑美)也可用,但震荡期需谨慎。不适合小市值加密货币或冷门商品,这类品种假突破多
  • 周期:H1 和 H4 效果最好,日线也可,M15 以下假信号多不推荐。周线以上均线周期需相应放大(例如 50/100/500)
  • 行情:单边趋势行情表现优异,震荡整理期会频繁出箭头但价格来回扫损。建议配合 ATR 或布林带宽度过滤:ATR 过小时不交易
  • 时段:欧美盘重叠时段(北京时间 15:00-24:00)信号质量高,亚洲盘波动小容易假突破

风险提示

  • 滞后性:均线本质是历史价格平均值,穿越信号出现时价格往往已走出一段,入场点不是最优。急涨急跌行情中箭头出现时可能已接近短期顶底
  • 假信号:震荡行情中快线会反复上下穿短线,产生连续亏损的买卖箭头。代码没有过滤机制,需交易者自行结合 ADX、布林带宽度等指标判断是否震荡
  • 不重绘但盘中不稳定:箭头只在 K 线收盘后最终确定,盘中显示的箭头可能因价格回撤而在收盘时消失。不要在盘中看到箭头就立即下单
  • 无止损逻辑:代码只画箭头不管止损,必须手动设置。建议止损放在快线下方 20-30 点或最近摆动低点,止盈可参考长期均线或固定盈亏比
  • 参数敏感:快线周期改 1-2 个数字,信号数量和胜率会明显变化。默认参数未必适合所有品种和周期,需回测优化后再实盘

常见问题

这个指标的箭头会重绘吗
不会。箭头只在 K 线完全收盘后根据收盘价和均线值计算,一旦画出就不会消失或移动。但盘中显示的箭头可能在收盘时消失,因为盘中价格随时在变。
默认参数适合什么周期和品种
默认 10/20/50/200 周期组合适合黄金 H1 时间框架。H4 和日线也可直接用,M15 以下假信号多。其他品种需自行测试,欧美等低波动品种可把快线降到 8,原油可提高到 12-15。
只有箭头没有均线可以吗
代码里均线和箭头是绑定的,不能只显示箭头。如果不想看均线,可以在图表上右键点指标选择"可见性",把前四条均线的颜色改成透明(clrNone)需要修改代码重新编译。
震荡行情怎么过滤假信号
代码本身没有过滤逻辑。建议手动加 ATR 指标,ATR 低于均值时不交易;或加布林带,价格在中轨附近来回时忽略箭头。也可以只在价格突破 50 或 200 均线后才跟箭头方向交易。
MT4 能用这个指标吗
不能直接用。这是 MQL5 代码,MT4 用的是 MQL4,语法和函数不同。需要把 iMA 句柄改成 iMA 函数调用、缓冲区设置改成 SetIndexBuffer 等,工作量较大,建议直接用 MT5 或找 MT4 版本。

Gold Multi-Timeframe MA Resonance Arrow Indicator MT5

Four EMA lines (10/20/50/200 periods) with crossover arrows. Green up-arrow when fast MA crosses above short MA and price is above fast MA; purple down-arrow on opposite. Suitable for gold trend trading with adjustable periods and arrow spacing.

Source code is shown above. Compiled EX5 files are available to VIP members.

评论

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

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