MT5指标 二创编译未通过 30 1

黄金分割自动回撤线指标

a729621·8 天前发布

自动取凌晨时段高低点画七条斐波那契线,回撤到0.618或0.5顺势进场

原作《黄金分割自动回撤线指标》15296489698二创本作

相对上一版改了:MT4上用

黄金分割自动回撤线指标

效果示意图 · AI 根据源码绘制,仅示意画了哪些元素,细节以实际运行为准(这份没截到真机图)

AutoFibonacciLevels_MT4.mq5预览 35 / 172 行
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
//+------------------------------------------------------------------+

//| 基于 XAUOF 社区作品 #32《黄金分割自动回撤线指标》(作者 15296489698)二次创作 |

//|                                                                  |

//| 本版改了什么:                                                    |

//| 1. 整体移植到 MetaTrader 4 / MQL4,文件后缀 .mq4,可直接在 MT4 编译; |

//|    MT5 专有写法(indicator_plots、indicator_typeN)已替换为 MQL4 的  |

//|    SetIndexStyle / SetIndexLabel / SetIndexEmptyValue。            |

//| 2. MT4 里 time[]/high[]/low[] 和指标缓冲区默认索引 0 = 当前K线,      |

//|    因此时间段扫描和绘制循环改为从新到旧(i--),避免线与K线错位。      |

//| 3. 新增"高低点变化时整屏重画":换日后老K线上不会再残留昨天的线。      |

//| 4. 当日数据未加载完时不再锁定日期,下次K线更新会自动重试计算。        |

//| 5. 对 StartHour / EndHour 增加范围与大小校验,防止时间段非法。        |

//| 6. 原有参数名、缓冲区名、七条斐波那契价位算法完全保留,未做改动。      |

//+------------------------------------------------------------------+

#property copyright   "XAUOF指标工坊"
#property version     "1.10"
#property strict
#property indicator_chart_window
#property indicator_buffers 7

//--- 七条线的颜色(MT4 线宽在 OnInit 里用 SetIndexStyle 设置)

#property indicator_color1  clrPink              // 1.618 扩展

#property indicator_color2  clrMagenta           // 1.0 高点

#property indicator_color3  clrDeepSkyBlue       // 0.618

#property indicator_color4  clrMediumSeaGreen    // 0.5 中位

#property indicator_color5  clrGold              // 0.382

#property indicator_color6  clrOrange            // 0.236

#property indicator_color7  clrSandyBrown        // 0.0 低点


//+------------------------------------------------------------------+

//| 输入参数(全部可调,推荐值见注释)                                |

//+------------------------------------------------------------------+

input int StartHour    = 0;    // 凌晨时段开始小时(服务器时间,0-23,黄金推荐 0)

input int EndHour      = 8;    // 凌晨时段结束小时(必须大于开始小时,黄金推荐 8)

input int LookbackDays = 3;    // 向前查找天数(今日数据不足时往前找几天,推荐 3)

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

开通 VIP 查看完整源码

这份代码编译没通过

服务器用 MetaEditor 编译时报了 88 个错误,所以没有提供 ex5 成品文件。 你还是可以下载源码,把下面的报错连同代码一起丢给 AI 工作台,让它改好再编译。

.mq5(81,57) : error 149: ')' - unexpected token
AutoFibonacciLevels_MT4_c443d2.mq5(81,48) : warning 95: expression has no effect
AutoFibonacciLevels_MT4_c443d2.mq5(82,4) : error 256: undeclared identifier 'SetIndexStyle'
AutoFibonacciLevels_MT4_c443d2.mq5(82,19) : error 149: ',' - unexpected token
AutoFibonacciLevels_MT4_c443d2.mq5(82,18) : error 152: '6' - some operator expected
AutoFibonacciLevels_MT4_c443d2.mq5(82,30) : error 149: ',' - unexpected token
AutoFibonacciLevels_MT4_c443d2.mq5(82,43) : error 149: ',' - unexpected token
AutoFibonacciLevels_MT4_c443d2.mq5(82,32) : warning 95: expression has no effect
AutoFibonacciLevels_MT4_c443d2.mq5(82,46) : error 149: ',' - unexpected token
AutoFibonacciLevels_MT4_c443d2.mq5(82,45) : warning 95: expression has no effect
AutoFibonacciLevels_MT4_c443d2.mq5(82,61) : error 149: ')' - unexpected token
AutoFibonacciLevels_MT4_c443d2.mq5(82,48) : warning 95: expression has no effect
AutoFibonacciLevels_MT4_c443d2.mq5(85,4) : error 256: undeclared identifier 'SetIndexLabel'
AutoFibonacciLevels_MT4_c443d2.mq5(85,19) : error 149: ',' - unexpected token
AutoFibonacciLevels_MT4_c443d2.mq5(85,18) : error 152: '0' - some operator expected
AutoFibonacciLevels_MT4_c443d2.mq5(85,30) : error 149: ')' - unexpected token
AutoFibonacciLevels_MT4_c443d2.mq5(86,4) : error 256: undeclared identifier 'SetIndexLabel'
AutoFibonacciLevels_MT4_c443d2.mq5(86,19) : error 149: ',' - unexpected token
AutoFibonacciLevels_MT4_c443d2.mq5(86,18) : error 152: '1' - some operator expected
AutoFibonacciLevels_MT4_c443d2.mq5(86,28) : error 149: ')' - unexpected token

作品说明

用户要在 MT4 上用,所以这一版整体移植成 MQL4(文件后缀 .mq4)。核心算法、7 条斐波那契价位、参数名全部保留原作,只做平台适配和两处健壮性修补:

相对原作的改动:① 语法改为 MQL4(SetIndexStyle/SetIndexLabel/SetIndexEmptyValue/IndicatorShortName,删掉 MT5 专有的 indicator_plots、indicator_typeN);② MT4 的 time[]/high[]/low[] 和指标缓冲区默认索引 0 = 当前 K 线,所以时间段扫描和绘制循环都改成由新到旧(i--),这是和 MT5 版唯一的本质差别,不改就会线和 K 线错位;③ 高低点每天变化时强制整屏重画(原作只刷新新 K 线,换日后老 K 线上还留着昨天的线);④ 当日数据没加载完时不再把日期标记为"已算",下次 K 线更新会自动重试;⑤ 对 StartHour/EndHour 做了范围和大小校验。

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

这是什么

这是一个画线类的主图指标。它每天自动找出凌晨时段(默认服务器时间 0 点到 8 点)的最高价和最低价,用这一段区间当作斐波那契的量尺,在图上画出七条水平价位线。省掉每天早上手动拉斐波那契工具的工夫。

需要说明:源码里的作品来源是 MT5 版,但这一版已经整体移植成 MQL4,文件后缀 .mq4,是给 MT4 用的。

逻辑原理

计算过程很直白:

  1. 按 StartHour 和 EndHour 框出一个时段,区间是「大于等于开始时间、小于结束时间」,所以正好打在 EndHour 整点那根 K 线不算在内。
  2. 把落在这个时段内的所有 K 线过一遍,取出最高的 high 和最低的 low。
  3. 做有效性检查:时段内至少要有 3 根 K 线,而且最高价减最低价要大于 0.0001,否则这组高低点判为无效,不画线。
  4. 今日数据不够时,按 LookbackDays 往前几天找。扫描历史最多 2000 根 K 线,并且一旦倒推到时段开始前一整天以外就停止,不会无限往回翻。
  5. 有效之后,把低点当 0.0、高点当 1.0,依次画出 0.0、0.236、0.382、0.5、0.618、1.0 以及 1.618 扩展位,共七条线,向左只画 DrawBarsBack 根 K 线。

还有两处细节:高低点一变就整屏重画,换日后老 K 线上不会残留昨天的线;当日数据没加载完时不把日期标记为「已算」,下一次 K 线更新会自动重试。

代码里只有这七条线的缓冲区,没有箭头、没有报警、没有下单逻辑。简介里提到的「回撤到 0.618 或 0.5 顺势进场」是人工用法,程序本身不发信号。

参数说明

  • StartHour(0):时段开始小时,服务器时间,0–23。你的服务器不是 GMT+0 时,要按时区自己平移。
  • EndHour(8):时段结束小时,1–24,必须大于开始小时。代码会做校验,填非法值会被改回合法范围。
  • LookbackDays(3):今日数据不足时往前找几天。小周期图上历史 K 线扫描有上限,调大未必生效。
  • DrawBarsBack(500):向左画多少根 K 线,填 0 画全部历史。图卡的话把它调小。

怎么用

把 .mq4 文件放进 MT4 的 MQL4/Indicators 目录,在 MetaEditor 里编译一次,然后在导航器里把它拖到主图上。图例名显示为 AutoFib。

线画出来后,七条线从下到上就是 0.0 到 1.618。常规看法是把 0.5 和 0.618 当回撤参考区,价格退到这一带再结合你自己的入场条件做决定;1.0 和 1.618 当上方目标参考。线本身不告诉你方向。

适用场景

适合亚盘有明显窄幅区间、欧美盘再走出方向的品种,黄金是典型。周期建议 M5 到 H1 这一档,时段内 K 线数量够,区间也划得干净。

不适合日线及以上周期——8 小时的时段里凑不出 3 根 K 线,有效性检查直接过不去,线就不画。全天无规律乱震荡的行情里,这个区间也没什么参考价值。

风险提示

  • 时段还没结束时高低点仍在变,线会跟着动,这是正常更新不是故障;时段结束后当日价位才固定。
  • 换日会整屏重画,回看历史时看到的是按当天区间重算的线,不要当成当时实时就有的位置。
  • 服务器时区决定一切。默认 0–8 点对应的是你经纪商的服务器时间,不是你本地时间,装上先核对。
  • 历史扫描上限 2000 根。M1 图上 2000 根只有一天多,LookbackDays 填 3 也找不到那么远。
  • 斐波那契价位是统计参考,不是支撑阻力的保证。代码里没有任何止损、止盈或仓位逻辑,风险控制全靠你自己。

常见问题

这个指标会重绘吗
会动,但不是传统意义的重绘。凌晨时段还没走完时最高最低价仍可能刷新,线会跟着上下移动;时段结束后当日的七条线就固定了。另外换日时指标会整屏重画,所以回看历史图上的线是按当天区间重算出来的。
MT5 能用吗
这一版不能直接用。源码已经改成 MQL4 写法(SetIndexStyle、SetIndexLabel、IndicatorShortName 等),文件后缀 .mq4,只在 MT4 里编译。MT5 需要用原作的 MQL5 版本。
可以用在 XAUUSD 以外的品种吗
代码里没有品种限制,任何品种挂上都会计算。但凌晨区间这个思路对亚盘窄幅震荡的品种更合适,换品种需自行测试效果。
默认的 0 到 8 点适合什么周期
这两个值是服务器时间的小时数,和图表周期无关,但周期决定时段内有几根 K 线。代码要求时段内至少 3 根 K 线才画线,所以 M5 到 H1 比较稳妥,H4 勉强,日线及以上会直接不画。
为什么图上一条线都没有
常见三个原因:图表 K 线总数少于 50 根,代码会直接返回不计算;时段内不足 3 根 K 线或高低差不超过 0.0001,被判为无效;或者 DrawBarsBack 设得太小,线只画在屏幕外的区域。

Auto Fibonacci Retracement Levels Indicator for MT4

An MT4 indicator that scans a user-defined overnight session (server time 0:00-8:00 by default), takes its highest high and lowest low, and plots seven Fibonacci levels on the main chart: 0.0, 0.236, 0.382, 0.5, 0.618, 1.0 and a 1.618 extension. The session hours, lookback days and how many bars to draw back are all inputs. It draws lines only, with no arrows, alerts or trade logic, so entries remain a manual decision. Ported from the original MQL5 version; this build is a .mq4 file for MetaTrader 4.

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

评论

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

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