MT5EA / 策略编译通过 · EX5 56KB 自动发布 0 0

黄金布林趋势加仓EA

老吴·1 小时前发布

布林收口多次破轨入场,单K/破极值加仓,移动止损与保本出场

黄金布林趋势加仓EA

效果示意图 · AI 根据源码绘制,仅示意画了哪些元素,细节以实际运行为准

LH_TrendFix_MT5.mq5预览 35 / 924 行
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.00"
#property description "XAUUSD M5 布林带收口/多次破轨入场 + 加仓 + 移动止损,无需任何 DLL"

#include <Trade\Trade.mqh>

//=================== 枚举 ===================
enum ENUM_ADD_WAY           // 加仓方式
  {
   ADD_NONE = 0,            // 不加仓
   ADD_SINGLE_K = 1,        // 单K加仓
   ADD_BREAK_EXTREME = 2    // 破极值加仓
  };

enum ENUM_ADD_LOTS_WAY      // 加仓手数方式
  {
   LOTS_FIXED = 0,          // 固定手数
   LOTS_RATIO = 1,          // 按比例乘以上一单
   LOTS_FROM_FIRST = 2      // 按首单手数
  };

enum ENUM_ADD_OUT_WAY       // 加仓单止损方式
  {
   OUT_SAME_FIRST = 0,      // 同首单止损
   OUT_FIRST_PRICE = 4,     // 首单开单价
   OUT_BREAKEVEN = 5,       // 保本位
   OUT_ZZ_TRAIL = 6         // 小Zigzag移损
  };

//=================== 输入参数 ===================
input group "=== 起手仓 ==="
input bool   UsePercentLots   = false;     // true=按账户余额百分比算首单手数,false=固定手数
input double PercentLots      = 2.0;       // 首单手数占账户余额百分比(UsePercentLots=true 时生效,推荐 1~3)
input double FixedLots        = 0.01;      // 首单固定手数(UsePercentLots=false 时生效,推荐 0.01)
input int    FirstMaxSLPoint  = 500;       // 首单最大止损点数(0=不设首单止损,推荐 500)

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

开通 VIP 查看完整源码

作品说明

CheckBreakPrevEntry 里误写了一个未声明的 total,将这行去掉即可,其余代码不变。

使用说明

  1. 该文件保存为 LH_TrendFix_MT5.mq5,放在 MQL5\Experts\ 下,按 F7 编译,然后挂到 XAUUSD M5 图表并允许自动交易。
  2. 这次只删除了 CheckBreakPrevEntry 里那行误写的 if(secs <= 0 || total < 1) {},其余逻辑未动。
  3. 首单手数默认固定 0.01;把 UsePercentLots 改为 true 即按余额百分比计算。
  4. 所有决策都会打 [开仓]/[加仓]/[平仓]/[跳过]/[止损] 日志到专家页签,出问题先看日志。
✅ 自动修复后已通过服务器编译校验(共修 1 轮)。

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

这是什么

这是一个跑在 MT5、专为 XAUUSD M5 设计的趋势跟随型 EA。核心思路是:布林带收口后价格突破外轨时开首单,顺势用单 K 或破极值的方式加仓,最后靠保本、移动止损和整组最大止损收场。全部逻辑写在本地,不依赖任何 DLL。

逻辑原理

入场。 EA 读取布林带(周期 96、偏差 1.2)的上一根上下轨,算出带宽点数。只有带宽小于 MaxShrinkPoint(默认 1800 点)时,才认为处于收口状态。此时若价格站上上轨,并且满足「上一根收盘在上轨之上」或「现价已超出上轨 BreakMaxPoint(150 点)」,判定为有效上破,开多;下破下轨同理开空。另有一条「多次破轨」通道:价格先收回轨道内再重新突破,也算入场信号。价格离外轨太远(超过 PassBLPoint)时不开首单,避免追高。

首单手数。 UsePercentLots=false 时直接用 FixedLots。改为 true 时按账户余额百分比 PercentLots 除以每手保证金算手数;取不到保证金数据时退化为余额比例估算。最后统一按品种的最小手数、步长和最大手数规整。

加仓。 AddWay 控制方式。ADD_SINGLE_K:上一根 K 线实体达到 AddMinPoint(290 点)但小于 BreakMaxPoint,且收盘价顺方向越过最近一单开仓价至少 AddMinPoint,就加一仓。ADD_BREAK_EXTREME:价格突破开首单以来的最高/最低点且离首单价足够远时加仓。加仓最多 20 层。手数按 AddLotsWay 算:固定、上一单乘 AddPrecentLots(0.618)、或首单乘比例,且不低于 AddMinusLots。

出场。 每单开仓时都带服务器端止损(首单 FirstMaxSLPoint,加仓 AddMaxSLPoint)。持仓期间按整组加权均价算浮动盈利点数:盈利到过 SaveTPPt(300 点)把整组止损移到保本位;超过 PassProfitMSLPt(450 点)启动移动止损,回撤 MVMinSLPt(150 点)跟价;盈利到过 TPedPt(800 点)后价格回到中轨就平仓;整组亏损达到 MaxSLPt(550 点)直接全平。TPWay>1 时首单也可以按固定点数止盈。

参数说明

  • UsePercentLots(false):true 时按余额百分比算首单手数,false 用固定手数。
  • PercentLots(2.0):余额百分比,仅在上一项为 true 时生效,代码注释推荐 1~3。
  • FixedLots(0.01):首单固定手数。
  • FirstMaxSLPoint(500):首单最大止损点数,0 表示不设首单止损。
  • BreakMaxPoint(150):突破外轨多少点才算有效突破,同时用作单 K 加仓实体上限。
  • BandsPeriod(96):布林带周期。
  • Deviation(1.2):布林带偏差倍数。
  • MaxShrinkPoint(1800):带宽小于此点数才允许开首单。
  • PassBLPoint(500):价格距外轨超过此点数不开首单,0 关闭。
  • CloseEX(true):开新方向首单前是否平掉反向持仓。
  • AddWay(ADD_SINGLE_K):加仓方式,可选不加仓、单 K 加仓、破极值加仓。
  • AddMinPoint(290):加仓距离上一单的最小点数。
  • AddLotsWay(LOTS_RATIO):加仓手数算法。
  • AddPrecentLots(0.618):加仓手数比例,比例模式下生效。
  • AddMinusLots(0.03):加仓手数下限。
  • AddMaxSLPoint(500):加仓单最大止损点数。
  • AddOutWay(OUT_ZZ_TRAIL):加仓单止损方式,可选同首单止损、首单开单价、保本位、小 Zigzag 移损。
  • PassProfitMSLPt(450):盈利超过此点数启动移动止损。
  • MVMinSLPt(150):移动止损回撤点数。
  • MaxSLPt(550):整组最大止损点数。
  • TPedPt(800):盈利到过此点数后回中轨出场,0 关闭。
  • SaveTPPt(300):盈利到过此点数移到保本位,0 关闭。
  • TPWay(1):1 表示首单走移动止损,大于 1 表示到该点数固定止盈。
  • AddSpread(false):空单止损是否额外加点差。
  • ZZDepth1/ZZDeviation1/ZZBackstep1(12/5/3):小 Zigzag 参数。
  • ZZDepth2/ZZDeviation2/ZZBackstep2(8/5/3):大 Zigzag 参数。
  • wei(1.0):点值换算系数,外汇和黄金填 1,原油填 10。
  • MagicNumber(220417061):本 EA 持仓的魔术号。
  • Slippage(30):允许滑点。
  • MaxSpreadPoint(80):点差超过此点数不开新仓。

怎么用

把文件保存为 LH_TrendFix_MT5.mq5,放到 MQL5\Experts\ 下,按 F7 编译,然后挂到 XAUUSD 的 M5 图表上,打开自动交易。建议先挂着观察一段时间,看专家页签里的 [开仓]/[加仓]/[平仓]/[跳过]/[止损] 日志是否正常,出问题先看日志。注意作者说明:原代码 CheckBreakPrevEntry 里有一行误写的 if(secs <= 0 || total < 1) {},total 未声明,编译前把这行删掉即可。

适用场景

适合黄金这类波动大、点差相对稳定的品种,M5 周期,趋势展开和突破行情里表现更符合设计意图。收口后突破的入场逻辑在震荡市容易反复被扫,加仓层数多时对保证金占用也高,不太适合横盘时间极长的行情,也不适合账户资金很小的账户重手运行。

风险提示

  • 布林带用上一根已收盘数据,入场天然滞后一根 K 线,突破后可能已经走了一段。
  • 单 K 加仓只看实体大小和距离,不判断趋势强弱,震荡中可能连续加仓后一起被套。
  • 加仓层数上限 20,若手数比例设置过大,回撤时的整组亏损会迅速放大,务必先用小资金测试。
  • 移动止损和保本靠修改持仓 SL 实现,滑点、点差和服务器最小停损距离都会影响实际成交。
  • TPWay>1 的固定点数止盈只在未加仓时生效,加仓后不会再触发。
  • EA 会读取 wei 做点值换算,换品种时若该参数不对,止损和加仓距离会整体算错。

常见问题

这个 EA 会重绘吗?
不会。布林带和 K 线数据都用已收盘的上一根或历史 K 线计算,入场判断不依赖未来数据。
能用 XAUUSD 以外的品种吗?
代码里只判断了品种的点值和保证金信息,没有写死黄金,但参数默认值都是按黄金 M5 调的。换品种需要重新测试,尤其要确认 `wei` 和点差限制是否合适。
MT4 能用吗?
不能,这是 MQL5 写的 EA,只能在 MT5 上编译运行。
默认参数适合什么周期?
参数注释按 M5 给出,布林带周期 96 在 M5 上约等于 8 小时。换周期需要自己回测调整布林带周期和加仓距离。
编译报错 total 未声明怎么办?
按作者说明,把 `CheckBreakPrevEntry` 里误写的那行 `if(secs <= 0 || total < 1) {}` 删掉即可,其余代码不用动。

Gold Bollinger Trend Add-on EA for MT5

An MT5 expert advisor for XAUUSD M5 that enters when the Bollinger Band width contracts and price breaks the outer band, then adds positions on single candles or new extremes. It manages the group with break-even, trailing stop and a maximum group loss. Lot size can be fixed or a percentage of account balance.

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

评论

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

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