MT5EA / 策略编译通过 · EX5 29KB 114 19

黄金亚盘区间突破 EA

XAUOF 官方·1 个月前发布

记录亚盘高低点,欧盘开盘后突破区间进场,止盈是止损的 2 倍

黄金亚盘区间突破 EA

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

AsiaBreakoutEA.mq5预览 35 / 180 行
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
//+------------------------------------------------------------------+
//|                                          AsiaBreakoutEA.mq5      |
//|                        突破亚盘区间 EA - 适合 XAUUSD M15          |
//+------------------------------------------------------------------+
#property copyright "Kiro"
#property version   "1.00"
#property strict

#include <Trade\Trade.mqh>

//--- 输入参数
input group "=== 亚盘区间设置 ==="
input int    InpAsiaStartHour   = 1;      // 亚盘开始小时(服务器时间,推荐1)
input int    InpAsiaEndHour     = 7;      // 亚盘结束小时(服务器时间,推荐7)

input group "=== 交易设置 ==="
input double InpLotSize         = 0.01;   // 手数(推荐0.01起)
input double InpTPMultiplier    = 2.0;    // 止盈倍数(推荐2.0,即盈亏比1:2)
input int    InpSLBufferPoints  = 50;     // 止损缓冲点数(区间外额外加的距离,推荐50点)
input int    InpMagicNumber     = 888123; // 魔术号(用于识别本EA订单)
input int    InpMaxTradesPerDay = 2;      // 每天最大下单数(推荐2,做多+做空各1次)
input int    InpLatestTradeHour = 20;     // 允许交易的最晚小时(推荐20,避免隔夜)

//--- 全局变量
CTrade trade;                              // 交易类
datetime g_currentTradeDay = 0;            // 当前交易日期(用于判断是否新的一天)
double   g_asiaHigh        = 0.0;          // 亚盘区间最高价
double   g_asiaLow         = 0.0;          // 亚盘区间最低价
bool     g_buyDoneToday    = false;        // 今天是否已做多
bool     g_sellDoneToday   = false;        // 今天是否已做空
datetime g_lastBarTime     = 0;            // 最后处理的K线时间(防止同一根K线重复信号)
int      g_todayTradeCount = 0;            // 今天已下单数

//+------------------------------------------------------------------+
//| 初始化函数                                                         |

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

开通 VIP 查看完整源码

作品说明

思路说明

每天服务器时间 1:00-7:00 记录亚盘区间(最高/最低价),7:00 后收盘价突破上沿则做多、突破下沿则做空,每个方向每天只触发一次。止损设在区间对面+缓冲点数,止盈为止损距离的倍数。用当日日期判断是否新的一天并重置状态,用最后K线时间戳防止同一根K线重复信号。下单前检查止损距离是否满足经纪商最小要求,兼容3位和5位小数报价。

使用说明

将 AsiaBreakoutEA.mq5 保存到 MT5 数据文件夹的 MQL5\Experts\ 目录,在 MetaEditor 中编译,然后在图表上拖拽到 XAUUSD M15 图表启用。

  1. 安装方法
  1. 参数调节
  • 亚盘时段:默认 1:00-7:00(服务器时间),根据你的经纪商时区调整
  • 手数:建议从 0.01 起测试,黄金波动大,需谨慎
  • 止盈倍数:默认 2.0(盈亏比 1:2),可根据回测调整到 1.5-3.0
  • 止损缓冲:默认 50 点,黄金噪音大,太小容易被扫
  • 每天最大下单数:默认 2(做多+做空各1次),避免过度交易
  • 最晚交易小时:默认 20 点,避免持仓过夜
  1. 信号识别
  • EA 会在专家日志中打印"新交易日开始"和开仓信息
  • 可在图表上看到挂单或持仓的止损止盈线
  • 订单备注为 AsiaBreakout_BUY 或 AsiaBreakout_SELL
  1. 注意事项
  • 必须先在模拟账户回测,验证参数和经纪商兼容性
  • 黄金点差较大,建议在流动性好的时段交易
  • 周一亚盘可能因跳空导致区间失真,建议观察一周后再实盘
  • 确保 MT5 允许自动交易(工具栏绿色"自动交易"按钮已启用)
  • 经纪商如果要求最小止损距离,EA 会自动检查并拒绝不合规订单

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

这是什么

这是一个 MetaTrader 5 专用的自动交易 EA,针对黄金(XAUUSD)设计。它每天在亚洲交易时段(默认服务器时间 1:00-7:00)记录价格的最高点和最低点,等欧盘开盘后,如果价格向上突破亚盘高点就自动做多,向下突破亚盘低点就自动做空,每个方向每天只触发一次。

逻辑原理

区间记录阶段:在服务器时间 1:00 到 7:00 之间,EA 持续更新当前看到的最高价和最低价,这段时间不会开仓。

突破进场:7:00 之后,EA 开始监控价格。当上一根 K 线的收盘价突破亚盘最高价,就按当前卖价(Ask)做多;如果收盘价跌破亚盘最低价,就按当前买价(Bid)做空。用的是上一根 K 线收盘价,不是当前未完成 K 线的价格,避免信号反复变化。

止损止盈计算:

  • 做多时,止损设在亚盘最低价下方,额外减去缓冲点数(默认 50 点)
  • 做空时,止损设在亚盘最高价上方,额外加上缓冲点数
  • 止盈距离 = 止损距离 × 止盈倍数(默认 2.0),也就是盈亏比 1:2

风控机制:每天最多开 2 单(做多和做空各 1 次),超过晚上 8 点(服务器时间 20:00)就不再交易。开仓前会检查止损距离是否满足经纪商的最小要求,不够就拒绝下单并在日志里提示。每根 K 线只处理一次信号,不会在同一根 K 线上重复开仓。

每日重置:EA 通过日期判断是否进入新的一天,每天零点后会清空亚盘高低价、重置做多做空标记和交易次数,重新开始记录。

参数说明

  • InpAsiaStartHour(默认 1):亚盘开始的小时,根据你的经纪商服务器时区调整,比如有的券商用 UTC+2 或 UTC+3
  • InpAsiaEndHour(默认 7):亚盘结束的小时,7 点后才会开始判断突破
  • InpLotSize(默认 0.01):每次开仓的手数,黄金波动大,建议从 0.01 手起测试
  • InpTPMultiplier(默认 2.0):止盈是止损的几倍,2.0 就是盈亏比 1:2,可以调到 1.5-3.0 之间
  • InpSLBufferPoints(默认 50):止损在区间边界外再加多少点,黄金噪音多,太小容易被扫,50 点是个保守值
  • InpMagicNumber(默认 888123):魔术号,用来识别这个 EA 开的单,和其他 EA 区分开
  • InpMaxTradesPerDay(默认 2):每天最多开几单,默认 2 单就是做多做空各一次
  • InpLatestTradeHour(默认 20):允许交易的最晚小时,20 点后不再开新仓,避免持仓过夜

怎么用

把 AsiaBreakoutEA.mq5 文件放到 MT5 数据文件夹的 MQL5\Experts\ 目录下,在 MetaEditor 里打开编译通过,然后打开 XAUUSD 的 M15 图表,从导航器窗口把 EA 拖到图表上,允许自动交易(工具栏的"自动交易"按钮要亮绿灯)。

EA 会在专家日志(工具 → 选项 → 专家顾问)里打印"新交易日开始"和每次开仓的详细信息。图表上能看到持仓的止损止盈线,订单备注会显示 AsiaBreakout_BUY 或 AsiaBreakout_SELL。

建议先在模拟账户跑一周,观察亚盘区间和突破信号是否符合预期,再考虑实盘。

适用场景

适合 XAUUSD(黄金现货)的 M15 周期,也可以试试 M5 或 M30,但 M15 是作者建议的。这个策略假设亚盘是窄幅震荡,欧盘开盘后会选择方向突破,所以在趋势行情或波动率上升的日子表现会好一些。

不适合横盘整理的行情,如果全天都在亚盘区间内来回晃,EA 不会开仓;如果假突破后回抽,止损会被打掉。周一开盘如果跳空,亚盘区间可能失真,建议观察一段时间再决定要不要交易周一。

代码里没有限制品种,理论上可以用在其他货币对或商品,但逻辑是针对黄金设计的,其他品种需要自己回测调参。

风险提示

时区依赖:EA 用的是 MT5 服务器时间,不同经纪商的服务器时区不一样(有的是 UTC+2,有的是 UTC+3),你得确认自己券商的 1:00-7:00 对应的是不是真正的亚洲时段,否则记录的区间就错了。

假突破:如果欧盘开盘瞬间假突破又回抽,止损会被触发,这是突破类策略的通病。缓冲点数可以缓解,但也会让止损变宽。

点差和滑点:黄金点差在新闻或低流动性时段会扩大,实际成交价可能和预期有偏差。EA 设了 10 点滑点容差,但极端行情下可能成交失败。

持仓过夜:虽然默认 20 点后不开新仓,但之前开的仓可能会持仓过夜,遇到跳空或隔夜利息会有额外成本。

单方向限制:每天做多做空各只能触发一次,如果行情反转,EA 不会再进场。这是为了控制过度交易,但也意味着可能错过好机会。

经纪商限制:代码会检查止损距离是否满足券商要求,但不同券商的最小止损、订单类型(FOK / IOC)要求不一样,务必先在模拟盘测试。

常见问题

这个 EA 会重绘吗?
不会。它用的是上一根 K 线的收盘价(iClose 索引 1)判断突破,K 线已经完成了,信号不会变。同时有时间戳检查,同一根 K 线只处理一次。
可以用在 XAUUSD 以外的品种吗?
代码里没有限制品种,但逻辑是针对黄金亚盘特性设计的。其他品种的时段特征不同,需要自己回测调整参数,不能直接套用。
MT4 能用吗?
不能。这是 MQL5 代码,只能在 MetaTrader 5 上运行。MT4 用的是 MQL4 语言,语法和交易函数都不一样。
参数默认值适合什么周期?
作者建议 M15 周期,亚盘时段 1:00-7:00、缓冲 50 点、止盈倍数 2.0 这些默认值是基于 M15 设计的。其他周期可能需要调整缓冲和止盈倍数。
为什么有时候明明突破了却没开仓?
可能是三种情况:一是当天已经开过这个方向的单了(每天每方向只开一次),二是时间超过晚上 8 点了,三是计算出的止损距离不满足经纪商最小要求,EA 会在日志里提示。

Asia Session Range Breakout EA for XAUUSD MT5

Records Asia session high/low (1:00-7:00 server time), enters long on upside breakout or short on downside breakout after 7:00. Stop loss at opposite boundary plus buffer, take profit at 2× SL distance. Max 2 trades per day, validates broker stop level requirements.

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

评论

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

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