下载MetaTrader 5

请观看如何免费下载自动交易

有趣的脚本?
因此发布一个链接 -
让其他人评价

喜欢这个脚本? 在MetaTrader 5客户端尝试它

EA

MQL5向导 - 基于三条移动平均线的交易信号 - MetaTrader 5EA

| Chinese English Русский Español Deutsch 日本語 Português

显示:
854
等级:
投票: 19
已发布:
2013.10.01 13:15
已更新:
2016.11.22 07:33

MQL5 向导 允许自动创建EA 交易代码。详细信息参考 使用MQL5 向导快速创建EA交易

这里将考虑基于3个移动平均数的趋势策略。这个策略叫做 "基于三条指数移动平均线的信号". 为了确定趋势,要使用三条指数平滑移动平均线:快速EMA,中速EMA和慢速EMA。

交易信号:

  • 买入信号:快速EMA>中速EMA>慢速EMA(向上趋势)。
  • 卖出信号:快速EMA<中速EMA<慢速EMA(向下趋势)。

图1. 基于三条移动平均线的交易信号

图1. 基于三条移动平均线的交易信号

交易信号

这个交易策略实施在CSignal3EMA类中,它有一些受保护的方法可简化对三条移动均线值的访问(快速,中速,慢速):

double  FastEMA(int ind)      // 返回柱子的快速EMA值
double  MediumEMA(int ind)    // 返回柱子的中速EMA值
double  SlowEMA(int ind)      // 返回柱子的慢速EMA值
当前(未完成的)柱的指标值可能改变,所以必需使用已结束(成形的)柱子的数据值来检查交易条件。

1. 多头开仓

向上的趋势由以下条件决定:FastEMA>MediumEMA>SlowEMA:

  • FastEMA(1)>MediumEMA(1): 快速EMA高于中速EMA(在刚结束的前一柱子上);
  • MediumEMA(2)>SlowEMA(1): 中速EMA高于慢速EMA(在刚结束的前一柱子上);
//+------------------------------------------------------------------+
//| 检查多头开仓的条件 (买入)                    |
//+------------------------------------------------------------------+
bool CSignal3EMA::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration)
  {
   double medium=MediumEMA(1);
//---
   price=0.0;
   sl   =m_symbol.Ask()-m_stop_loss*m_adjusted_point;
   tp   =m_symbol.Ask()+m_take_profit*m_adjusted_point;
//--- 检查向上趋势(在刚结束的前一柱子上): FastEMA(1)>MediumEMA(1)>SlowEMA(1)
    return(FastEMA(1)>medium && medium>SlowEMA(1));
  }


2. 多头平仓

向下的趋势由以下条件决定:FastEMA<MediumEMA<SlowEMA:

  • FastEMA(1)<MediumEMA(1): 快速EMA低于中速EMA(在刚结束的前一柱子上);
  • MediumEMA(2)<SlowEMA(1): 中速EMA低于慢速EMA(在刚结束的前一柱子上);
//+------------------------------------------------------------------+
//| 检查多头平仓条件                        |
//+------------------------------------------------------------------+
bool CSignal3EMA::CheckCloseLong(double& price)
  {
   double medium=MediumEMA(1);
//---
   price=0.0;
//--- 检查向下趋势(在刚结束的前一柱子上): FastEMA(1)<MediumEMA(1)<SlowEMA(1)
   return(FastEMA(1)<medium && medium<SlowEMA(1));
  }
可以改进多头平仓:没有必要等待下降趋势,可在震荡时平仓,这可由以下条件来决定: FastEMA<MediumEMA>SlowEMA.


3. 空头开仓

//+------------------------------------------------------------------+
//| 检查空头开仓条件(卖出)                    |
//+------------------------------------------------------------------+
bool CSignal3EMA::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration)
  {
   double medium=MediumEMA(1);
//---
   price=0.0;
   sl   =m_symbol.Bid()+m_stop_loss*m_adjusted_point;
   tp   =m_symbol.Bid()-m_take_profit*m_adjusted_point;
//--- 检查向下趋势(在刚结束的前一柱子上):FastEMA(1)<MediumEMA(1)<SlowEMA(1)
   return(FastEMA(1)<medium && medium<SlowEMA(1));

  }

4. 空头平仓

//+------------------------------------------------------------------+
//| 检查空头平仓条件                        |
//+------------------------------------------------------------------+
bool CSignal3EMA::CheckCloseShort(double& price)
  {
   double medium=MediumEMA(1);
//---
   price=0.0;
//--- 检查向上趋势(在刚结束的前一柱子上):FastEMA(1)>MediumEMA(1)>SlowEMA(1)
   return(FastEMA(1)>medium && medium>SlowEMA(1));
  }

可以改进空头平仓:没有必要等待上升趋势,可在震荡时平仓,这可由以下条件决定:快速:FastEMA>MediumEMA<SlowEMA.


使用MQL5向导创造EA 交易

要基于该策略创造交易程序,你需要在 MQL5向导的 "快速创建EA交易" 选项 "中选择信号属性为" Signals based on three EMA":

图2. 在MQL5 向导中选择“Signals based on three EMA”

图2. 在MQL5 向导中选择“Signals based on three EMA”

接下来你必须指定所需要的 移动止损 算法和 货币风险管理系统。EA 交易代码将被自动创建,你可以对它编译然后在MetaTrader 5客户端的策略测试中对其测试。


测试结果

让我们来考察EA交易在历史数据(EURUSD H1,自定义时段:1.1.2010-05.01.2011,  FastPeriod=5, MediumPeriod=12, SlowPeriod=24, StopLoss=400, TakeProfit=900)上的回归测试。

在创建EA 交易时,我们使用了固定交易量 (固定交易手数, 0.1),未使用移动止损算法 (不使用移动)。

图3. 基于三条指数移动平均线的EA交易的历史回归测试结果

图3. 基于三条指数移动平均线的EA交易的历史回归测试结果

附件:定义CSignal3EMA 类( 的Signal3EMA.mqh文件位于terminal_data_folder\MQL5\Include\Expert\Signal文件夹中.

文件 threeema.mq5 包含了通过MQL5 Wizard 创建的EA交易代码。


本文译自 MetaQuotes Software Corp. 撰写的俄文原文
官方代码: https://www.mql5.com/ru/code/250

MQL5向导 - 基于价格交叉移动平均线指标的交易信号 MQL5向导 - 基于价格交叉移动平均线指标的交易信号

基于价格交叉移动平均线指标的交易信号(CSignalMA来自MQL5标准库)被考虑. 基于该策略的EA交易的代码可以被MQL5向导自动生成

一个EA交易模板 一个EA交易模板

该代码是一个EA交易的模板,由Valery Mazurenko (notused) 编写用于2010年自动交易锦标赛。

MQL5向导 - 基于价格交叉移动平均线并由ADX确认的交易信号 MQL5向导 - 基于价格交叉移动平均线并由ADX确认的交易信号

基于价格交叉移动平均线指标并由ADX确认的交易信号 被考虑. 基于该策略的EA交易的代码可以被MQL5向导自动生成

MQL5向导 - 基于三条移动平均线的交易信号 MQL5向导 - 基于三条移动平均线的交易信号

基于两条指数平滑移动平均线交叉的交易信号 被考虑。基于该策略的EA交易的代码可以被MQL5向导自动生成