黄金亚欧盘突破策略EA(二创)
亚盘区间突破,欧盘开仓,三档移动止损保护利润
相对上一版改了:增加移动止损功能.。当浮盈到达止盈的20%时,将止损移动到止盈的5%;当浮盈到达止盈的50%时,将止损移动到止盈的25%;当浮盈到达止盈的80%时,将止损移动到止盈的60%。
效果示意图 · AI 根据源码绘制,仅示意画了哪些元素,细节以实际运行为准
// 基于 XAUOF 社区作品 #29《黄金亚欧盘突破策略EA》(作者 taiyu1983)二次创作
// 本版改动:增加移动止损功能,浮盈达止盈的 20%/50%/80% 时,止损移至止盈的 5%/25%/60%
#property copyright "XAUOF指标工坊"
#property version "2.00"
#include <Trade\Trade.mqh>
//+------------------------------------------------------------------+
//| 可调参数 |
//+------------------------------------------------------------------+
input int InpMagicNumber = 888888; // 魔术号(用于区分不同策略)
input double InpLotSize = 0.1; // 固定手数
input int InpAsianStartHour = 8; // 亚盘开始时间(小时,北京时间)
input int InpAsianEndHour = 14; // 亚盘结束时间(小时,北京时间)
input int InpTimezoneOffset = 8; // 时区偏移(北京时间=8,UTC=0)
input double InpRiskRewardRatio = 2.0; // 止盈止损比例(倍数,默认2倍)
input bool InpUseCloseBreakout = true; // 使用收盘价确认突破(true=更保守,false=触及即突破)
input int InpSlippage = 30; // 允许滑点(点)
input string InpTradeComment = "亚欧盘突破"; // 订单备注
//+------------------------------------------------------------------+
//| 全局变量 |
//+------------------------------------------------------------------+
CTrade trade; // 交易对象
datetime currentDate = 0; // 当前日期(用于每日重置区间)
double asianHigh = 0; // 亚盘最高价
double asianLow = 0; // 亚盘最低价
bool rangeValid = false; // 区间是否有效
bool tradedToday = false; // 今天是否已交易(防止重复开仓)
int trailingStage = 0; // 移动止损阶段(0=未启动,1=第一档,2=第二档,3=第三档)
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
已显示前 35 行,共 370 行。完整源码仅对 xauusd.team VIP 开放查看与复制。
开通 VIP 查看完整源码作品说明
相对原作改动:在 OnTick() 里增加了移动止损逻辑,当持仓浮盈达到止盈目标的 20%、50%、80% 时,分别将止损移动到止盈的 5%、25%、60%,保护利润。用全局变量记录每个持仓的移动止损阶段,避免重复修改。
使用说明
- 安装:将文件保存为
.mq5格式,放入 MT5 的Experts目录,编译后挂载到黄金图表。 - 参数调整:
InpAsianStartHour/InpAsianEndHour:亚盘时段,默认北京时间 8:00-14:00。InpRiskRewardRatio:止盈止损比例,默认 2 倍(止盈=止损×2)。InpUseCloseBreakout:true 用收盘价确认突破(更保守),false 触及即突破。
- 移动止损机制:
- 浮盈达止盈目标的 20% 时,止损自动移至止盈的 5%(锁定小利润)。
- 浮盈达 50% 时,止损移至止盈的 25%(保护更多利润)。
- 浮盈达 80% 时,止损移至止盈的 60%(接近止盈,避免回撤)。
- 查看日志:移动止损触发时会在「专家」日志里打印当前浮盈百分比和新止损位置。
- 注意事项:
- 每天只交易一次突破信号,新一天自动重置。
- 移动止损只修改止损位,不修改止盈位。
- 确保交易品种允许修改持仓止损(有些券商限制)。
AI 解读根据源码逐行分析写成,供参考,以实际运行为准
这是什么
这是一个基于亚盘区间突破的MT5自动交易EA,专为黄金等波动品种设计。逻辑是亚盘(默认北京时间8:00-14:00)记录价格区间的最高最低点,欧盘时段一旦价格突破区间上沿做多、突破下沿做空,每天只交易一次。相比原作,这个版本增加了三档移动止损机制:当持仓浮盈达到止盈目标的20%、50%、80%时,自动把止损移动到止盈的5%、25%、60%,锁定利润、避免盈利回吐。
逻辑原理
区间记录:亚盘时段每根K线更新最高价和最低价,形成当天的突破区间。
突破信号:欧盘开始后,如果参数InpUseCloseBreakout=true,用收盘价确认突破(前一根K线收盘在区间内、当前K线收盘在区间外);如果false,只要价格触及区间边界就算突破,更激进但假信号也多。
开仓:突破上沿做多,止损设在亚盘低点,止盈=(区间高度×止盈止损比例);突破下沿做空,止损设在亚盘高点,止盈算法相同。固定手数开仓,每天只交易一次。
移动止损:持仓后实时监控浮盈进度(当前盈利距离÷止盈距离)。达到20%时,止损移至止盈的5%(锁定小利润);达到50%时移至25%(保护更多利润);达到80%时移至60%(接近止盈,避免大幅回撤)。用全局变量trailingStage记录当前阶段(0-3),避免重复修改订单。
参数说明
- InpMagicNumber(888888):魔术号,用来区分不同EA的订单,不要和其他EA冲突。
- InpLotSize(0.1):固定开仓手数。根据账户资金和风险承受能力调整,资金小就0.01起步。
- InpAsianStartHour(8)/ InpAsianEndHour(14):亚盘时段的起止小时,默认北京时间8:00-14:00。如果你的券商服务器时间不是UTC+8,需配合
InpTimezoneOffset调整。 - InpTimezoneOffset(8):时区偏移,北京时间填8,UTC填0。EA会把服务器时间转换到本地时区判断是否在亚盘。
- InpRiskRewardRatio(2.0):止盈止损比例,默认2倍(止盈距离=止损距离×2)。提高这个值可以追求更大盈亏比,但止盈更远、到达概率更低。
- InpUseCloseBreakout(true):true表示用收盘价确认突破,更保守、假信号少;false表示价格触及就算突破,更激进、可能提前入场也可能被假突破打止损。
- InpSlippage(30):允许的滑点范围(点),下单时价格波动在这个范围内算成交。
- InpTradeComment("亚欧盘突破"):订单备注,方便在历史订单里识别。
怎么用
- 把代码保存为
.mq5文件,放到MT5的MQL5/Experts文件夹,在MetaEditor里编译。 - 打开黄金(XAUUSD)图表,从导航器拖拽EA到图上,或右键图表选"交易"→"Expert Advisor"。
- 在弹出的参数窗口调整亚盘时段、手数、止盈止损比例。如果你的券商服务器时间不是北京时间,记得改
InpTimezoneOffset。 - 勾选"允许自动交易"(工具栏上的绿色按钮),EA开始运行。
- 图表左上角会显示当前状态:亚盘区间、今日是否已交易、持仓浮盈进度、移动止损阶段。
- EA每天只交易一次,新一天0点会自动重置区间和交易标志。持仓平仓后不会再次开仓,直到第二天。
适用场景
- 品种:主要为黄金(XAUUSD)设计,也可用于原油、外汇主要货币对等日内波动明显、有亚欧盘时段特征的品种。波动太小的品种(如EURUSD近期)区间可能太窄,止损容易被扫。
- 周期:建议挂M5或M15图表,太小的周期(M1)噪音多、假突破频繁,太大的周期(H1)可能错过入场时机。
- 行情:适合趋势日或突破行情,亚盘窄幅震荡、欧盘单边拉升的日子表现好。不适合全天宽幅震荡、假突破频繁的行情。
- 时段:欧盘开盘(北京时间下午3-4点)是主要交易窗口,如果这个时段没有明确方向,当天可能不会开仓。
风险提示
- 假突破风险:价格短暂突破区间后回调,可能触发止损。参数
InpUseCloseBreakout=true可以减少假信号,但也会错过部分真突破。 - 区间太窄:如果亚盘波动极小(区间不到10点),突破后的止损空间很小,容易被正常波动扫掉。代码里没有过滤最小区间,可以自己加判断。
- 移动止损被打:三档移动止损会逐步收紧,保护利润的同时也可能在正常回调时提前止损出场。如果行情走得很顺,可能止盈不到就被移动止损带走;这是权衡,不是缺陷。
- 滑点和点差:黄金的点差和滑点在重要数据时段(非农、美联储决议)会放大,实际成交价可能偏离预期。参数里设了30点滑点容忍,极端行情可能还不够。
- 每日一次限制:EA每天只交易一次,如果第一次突破是假信号打了止损,当天不会再开仓。这是为了控制风险,但也意味着会错过当天的第二次机会。
- 券商限制:部分券商不允许EA运行时修改持仓止损,或者限制最小止损距离。移动止损修改失败时,EA会在日志里打印错误代码,注意查看。
- 历史表现不代表未来:任何策略都有失效周期,黄金的亚欧盘特征可能因市场结构变化而减弱。建议先在模拟盘跑一段时间,观察胜率和盈亏比。
常见问题
- 这个EA会重绘或者未来函数吗
- 不会。亚盘区间是实时记录的历史最高最低价,突破信号基于已收盘或当前K线的价格,不涉及未来数据。移动止损也是根据当前持仓状态实时计算,不会改变历史逻辑。
- 可以用在XAUUSD以外的品种吗
- 可以,但效果取决于品种是否有明显的亚欧盘时段特征。原油、主要外汇货币对(GBPUSD、USDJPY)可以尝试,但参数可能需要调整。股指期货和加密货币的时段特征不同,不建议直接套用。
- MT4能用吗
- 不能,这是MQL5代码,只能在MT5平台运行。MT4和MT5的语法、交易函数、持仓模型都不同,代码无法直接移植。如果只有MT4,需要找对应的MT4版本或者自己用MQL4重写。
- 参数默认值适合什么周期和账户
- 默认参数(0.1手、亚盘8-14点、止盈止损比2倍)是按标准账户、M5或M15周期、黄金品种校准的。如果是美分账户或资金较小,手数改成0.01;如果你的券商服务器时间不是北京时间,必须调整时区偏移,否则时段判断会出错。
- 移动止损的三档比例可以改吗
- 代码里是硬编码的(20%触发→5%止损、50%→25%、80%→60%),想改的话需要修改`OnTick()`函数里移动止损部分的数值。比如想更激进锁利润,可以改成10%触发、或者把止损移得更靠近开仓价。改完记得重新编译。
Asian-European Session Breakout EA with Trailing Stop for MT5
An MT5 EA that trades breakouts from the Asian session range during European hours. Features three-stage trailing stop (5%, 25%, 60% of TP) triggered at 20%, 50%, and 80% profit milestones. Supports fixed lot sizing and customizable session times.
A short source preview is shown above for visitors; full source, copy and compiled EX5 files are available to VIP members.
评论
还没有人评论,来抢个沙发。