线性回归通道趋势交易 EA
上涨趋势下轨做多,下跌趋势上轨做空,移动保本+对面轨道止盈
效果示意图 · AI 根据源码绘制,仅示意画了哪些元素,细节以实际运行为准
#property copyright "XAUOF 指标工坊"
#property version "1.00"
#include <Trade\Trade.mqh>
// ========== 可调参数 ==========
input int RegressionPeriod = 100; // 回归通道计算周期(K 线数量)
input double StdDevMultiplier = 2.0; // 标准差倍数(上下轨宽度)
input double SlopeThreshold = 0.3; // 斜率阈值(绝对值,判断趋势)
input double Lots = 0.1; // 固定交易手数
input int MagicNumber = 20261029; // EA 魔术号
input int Slippage = 30; // 滑点(点)
input int BreakevenPoints = 300; // 盈利多少点后移动到保本(0 = 不启用)
input string OrderComment = "LR通道EA"; // 订单注释
// ========== 全局变量 ==========
CTrade trade;
// 回归通道数据
double g_slope = 0.0; // 斜率
double g_intercept = 0.0; // 截距
double g_upperBand = 0.0; // 上轨
double g_lowerBand = 0.0; // 下轨
double g_stdDev = 0.0; // 标准差
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
trade.SetExpertMagicNumber(MagicNumber);
trade.SetDeviationInPoints(Slippage);
trade.SetTypeFilling(ORDER_FILLING_FOK);
if(!trade.SetTypeFillingBySymbol(_Symbol))
trade.SetTypeFilling(ORDER_FILLING_IOC);
已显示前 35 行,共 278 行。完整源码仅对 xauusd.team VIP 开放查看与复制。
开通 VIP 查看完整源码作品说明
使用说明
- 安装:将代码保存为
LinearRegressionChannelEA.mq5,放入 MT5 的MQL5\Experts文件夹,用 MetaEditor 编译后挂载到图表。
- 参数调整:
- 回归周期:默认 100 根 K 线,根据交易周期调整(日内短线可用 50-100,波段可用 200-300)
- 标准差倍数:默认 2.0,控制通道宽度
- 斜率阈值:默认 ±0.3,根据品种调整(黄金波动大可用 0.5-1.0)
- 移动保本盈利点数:默认 300 点,达到后止损移至开仓价
- 开仓逻辑:上涨趋势(斜率 > 0.3)触及下轨做多,下跌趋势(斜率 < -0.3)触及上轨做空。
- 平仓逻辑:多单触及上轨平仓,空单触及下轨平仓;盈利达标后自动移动止损到保本位。
- 日志查看:所有开平仓和保本操作都会在「专家」日志打印详细信息。
- 回测建议:先用策略测试器回测不同参数组合,找到适合当前品种和周期的设置。
AI 解读根据源码逐行分析写成,供参考,以实际运行为准
这是什么
这是一个基于线性回归通道的趋势跟踪 EA,用最小二乘法从历史 K 线拟合出中轨和上下轨道。它在上涨趋势中等价格回踩到下轨时做多,在下跌趋势中等价格反弹到上轨时做空,盈利后触及对面轨道平仓。核心思路是「趋势明确时低吸高抛」,避免在震荡市追涨杀跌。
逻辑原理
代码用最小二乘法对最近 N 根 K 线的收盘价做线性拟合,得到一条斜率和截距确定的回归直线,再计算价格偏离直线的标准差,用「回归值 ± 标准差倍数」画出上下轨。
每根新 K 线到来时,EA 先算斜率:斜率大于设定阈值判定为上涨趋势,小于负阈值为下跌趋势。上涨趋势里,当前价格碰到或低于下轨就开多单;下跌趋势里,价格碰到或高于上轨就开空单。每个方向同时只持一单,不加仓。
开仓后不设固定止损和止盈。多单一直持有,直到价格涨到上轨(对面轨道)平仓;空单则等到价格跌回下轨平仓。同时开启移动保本机制:盈利达到指定点数后,止损自动移到开仓价,确保不亏。
参数说明
- RegressionPeriod(100):回归通道的计算周期,用多少根 K 线拟合直线。周期越长通道越平滑但反应越慢,日内短线可用 50-100,波段交易可用 200-300。
- StdDevMultiplier(2.0):标准差倍数,控制上下轨距离中轨多远。数值越大通道越宽、信号越少但假突破也少,越小则信号频繁但噪音多。
- SlopeThreshold(0.3):斜率阈值,绝对值超过这个数才算趋势。品种波动大(如黄金)可调到 0.5-1.0,波动小(如欧元)可降到 0.2。
- Lots(0.1):每单固定手数,不会根据账户权益自动调整。
- MagicNumber(20261029):EA 魔术号,区分不同策略的订单。
- Slippage(30):允许滑点,单位是点(不是 pip)。
- BreakevenPoints(300):盈利多少点后把止损移到开仓价。设为 0 则不启用保本功能。黄金波动大可设 500-800,欧元等可用 200-300。
- OrderComment("LR通道EA"):订单备注,方便在历史和报表里识别。
怎么用
把代码保存为 .mq5 文件,放进 MT5 的 MQL5\Experts 文件夹,用 MetaEditor 编译(F7)。打开你要交易的品种图表,从导航器拖 EA 上去,允许自动交易,点确定。专家日志会打印所有开平仓和参数信息。
建议先在策略测试器里回测:选好品种和时间段,用「每笔分时」模式跑完整历史,看不同参数组合的胜率、盈亏比、最大回撤。找到合适参数后再挂实盘或模拟盘。
图表上不会自动画通道线,EA 只在后台计算。如果想看轨道位置,可以另外挂一个线性回归通道指标(MT5 自带或自己写),参数设成和 EA 一样。
适用场景
适合有明显趋势的品种和周期:黄金(XAUUSD)、原油、主要货币对的 H1/H4/D1 周期。趋势越清晰、回调越规律,效果越好。比如黄金单边上涨时多次回踩下轨再创新高,这种行情最理想。
不适合窄幅震荡和剧烈跳空行情。震荡市里价格反复穿越上下轨,斜率始终达不到阈值,EA 不会开仓或频繁开平亏手续费。重大消息发布时价格跳空,可能直接越过轨道没触发信号,或者滑点过大成交在很差的位置。
小周期(M5/M15)噪音多,回归通道频繁变形,假信号比例高。大周期(W1)信号太少,可能几个月才交易一次。
风险提示
无固定止损:开仓时不设 SL,只靠移动保本和对面轨道平仓。如果行情急速反向、价格还没到保本线就已经大幅亏损,EA 不会主动止损,可能扛单到爆仓。建议手动监控或在代码里加一个百分比止损逻辑。
固定手数无资金管理:不管账户余额多少都开 0.1 手,小资金可能扛不住回撤,大资金又浪费仓位。实盘前需要根据自己账户调整 Lots 参数,或者改代码加入按权益比例计算手数的功能。
回归滞后:线性回归用历史数据拟合,趋势刚转折时通道还停留在旧方向,可能错过最佳入场点或在假趋势里开反向单。参数 RegressionPeriod 越大滞后越严重。
通道重绘:每根新 K 线的回归结果都会变化,历史上的轨道位置和当时实盘看到的不完全相同。回测结果只是参考,实盘信号可能和回测有差异。
滑点和点差:触轨开仓时如果流动性差,成交价可能已经偏离轨道。BreakevenPoints 的计算是按点数不是按盈亏金额,点差大的品种(如小币种)实际盈利会少很多。
单边持仓风险:每个方向只开一单不加仓,错过一次信号后要等平仓才能再开,可能漏掉趋势中的多次机会。同时如果趋势突然反转,单子被套住没有对冲手段。
常见问题
- 这个 EA 会在图表上画出通道线吗
- 不会。EA 只在后台计算回归通道并根据轨道位置开平仓,不会在图表上显示线条。如果想看通道,需要另外挂一个线性回归通道指标,参数设成和 EA 一样。
- 开仓后没有止损,会不会爆仓
- 代码里开仓时 SL 和 TP 都是 0,只依赖移动保本和对面轨道平仓。如果行情急速反向且还没达到保本点数,持仓会一直亏损下去,理论上有爆仓风险。建议实盘前在代码里加一个固定点数或百分比止损逻辑。
- BreakevenPoints 设多少合适
- 取决于品种波动和点差。黄金(XAUUSD)波动大、点差小,可以设 500-800 点;欧美(EURUSD)波动小,200-300 点比较合理。设太小容易被正常回调扫掉保本止损,设太大则保本功能形同虚设。回测时可以对比不同数值的胜率变化。
- 回归周期 RegressionPeriod 怎么选
- 日内短线用 50-100 根 K 线,反应快但容易被噪音干扰;波段交易用 200-300 根,通道更稳定但滞后也更明显。具体数值要结合交易周期和品种特性,在策略测试器里跑优化找最佳参数。
- 这个 EA 可以用在股票或加密货币上吗
- 代码本身没有限制品种,但逻辑是为外汇和贵金属等连续报价市场设计的。股票有涨跌停和非连续交易时段,加密货币波动极大且可能跳空,都需要谨慎测试。建议先在模拟盘跑一段时间,确认信号质量和风险可控再考虑实盘。
Linear Regression Channel Trend EA for MT5
An automated EA that trades trend reversals using linear regression channels. Goes long at lower band in uptrends, short at upper band in downtrends. Exits at opposite band and moves stop loss to breakeven after configurable profit threshold.
A short source preview is shown above for visitors; full source, copy and compiled EX5 files are available to VIP members.
基于本作的二次创作1
增加固定止损和移动止盈止损 要在mt5上面显示轨道
评论
还没有人评论,来抢个沙发。