下载MetaTrader 5

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

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

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

2013.10.01 13:22
EA

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

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

显示:
876
等级:
投票: 18

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

这里我们将考察基于2条指数平滑移动平均数交叉(快速EMA和慢速EMA)的策略。该策略名称为“Signals based on crossover of two EMA” (当使用MQL5 向导自动创建EA 交易时可看到)

交易信号:

  • 买入: 快速EMA 向上交叉慢速EMA
  • 卖出: 快速EMA 向下交叉慢速EMA

图1. 交易信号,基于两条指数平滑移动平均线交叉

图1. 交易信号,基于两条指数平滑移动平均线交叉


交易信号

交易策略在CSignalCrossEMA类实现, 它有一些受保护的方法可简化对指标和价格的访问:

double   FastEMA(int ind)      // 返回柱子的快速EMA值
double   SlowEMA(int ind)      // 返回柱子的慢速EMA值
double   StateEMA(int ind)     // 返回柱子的快速和慢速移动平均线的差额


1. 多头开仓

多头开仓的条件:

  • StateEMA(1)>0 && StateEMA(2)<0: 在前一结束柱子上快速EMA向上交叉慢速EMA。
//+------------------------------------------------------------------+
//| 检查多头开仓的条件 (买入)                                           |
//+------------------------------------------------------------------+
bool CSignalCrossEMA::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration)
  {
   if(!(StateEMA(2)<0 && StateEMA(1)>0)) return(false);
//---
   price=0.0;
   sl   =0.0;
   tp   =0.0;
//---
   return(true);
  }

2. 多头平仓

多头平仓的条件:

  • StateEMA(1)<0 && StateEMA(2)>0: 在前一结束柱子上快速EMA向下交叉慢速EMA。
//+------------------------------------------------------------------+
//| 检查多头平仓的条件                                                  |
//+------------------------------------------------------------------+
bool CSignalCrossEMA::CheckCloseLong(double& price)
  {
   if(!(StateEMA(2)>0 && StateEMA(1)<0)) return(false);
//---
   price=0.0;
//---
   return(true);
  }


3. 空头开仓

空头开仓的条件和多头平仓的条件一样。

//+------------------------------------------------------------------+
//| 检查空头开仓的条件 (卖出)                   |
//+------------------------------------------------------------------+
bool CSignalCrossEMA::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration)
  {
   if(!(StateEMA(2)>0 && StateEMA(1)<0)) return(false);
//---
   price=0.0;
   sl   =0.0;
   tp   =0.0;
//---
   return(true);
  }

4. 空头平仓

空头平仓的条件和多头开仓的条件一样。

//+------------------------------------------------------------------+
//| 检查空头平仓的条件                                                  |
//+------------------------------------------------------------------+
bool CSignalCrossEMA::CheckCloseShort(double& price)
  {
   if(!(StateEMA(2)<0 && StateEMA(1)>0)) return(false);
//---
   price=0.0;
//---
   return(true);
  }

使用MQL5向导创造EA 交易

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

图2. 在MQL5 向导中选择“Signals, based on crossover of two EMA”

图2. 在MQL5 向导中选择“Signals, based on crossover of two EMA”

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

此外,标准库类包含了"Signals based on crossover of two MA", 实施在CSignalCrossMA类中。交易思想是类似的,但它提供了许多附加功能(均线类型,移位和均值计算方法和使用获利和止损水平)。

图3. 在MQL5 向导中选择“Signals, based on crossover of two MA”

Figure 3. 在MQL5 向导中选择“Signals, based on crossover of two MA”


测试结果

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

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

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

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


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

文件 crossover_2ema.mq5 包含了由MQL5向导创建的EA交易代码。


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

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

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

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

基于三条移动平均线的交易信号 被考虑. 基于该策略的EA交易的代码可以被MQL5向导自动生成

MQL5向导 - 基于MACD指标主线和信号线交叉的交易信号 MQL5向导 - 基于MACD指标主线和信号线交叉的交易信号

基于MACD指标主线和信号线交叉的交易信号(CSignalMACD来自MQL5标准库)被考虑。基于该策略的EA交易的代码可以被MQL5向导自动生成

MQL5向导 - 基于两条移动平均线带日内时间过滤的交易信号 MQL5向导 - 基于两条移动平均线带日内时间过滤的交易信号

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