- 显示:
- 3653
- 等级:
- 已发布:
- 2013.10.01 13:22
- 已更新:
- 2020.08.19 11:32
-
需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务
MQL5 向导 允许自动创建EA 交易代码。详细信息参考 使用MQL5 向导快速创建EA交易。
这里我们将考察基于2条指数平滑移动平均数交叉(快速EMA和慢速EMA)的策略。该策略名称为“Signals based on crossover of two EMA” (当使用MQL5 向导自动创建EA 交易时可看到)
交易信号:
- 买入: 快速EMA 向上交叉慢速EMA
- 卖出: 快速EMA 向下交叉慢速EMA
图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”
接下来你必须指定所需要的 移动止损 算法和 货币风险管理系统。EA 交易代码将被自动创建,你可以对它编译然后在MetaTrader 5客户端的策略测试中对其测试。
此外,标准库类包含了"Signals based on crossover of two MA", 实施在CSignalCrossMA类中。交易思想是类似的,但它提供了许多附加功能(均线类型,移位和均值计算方法和使用获利和止损水平)。
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交易的历史回归测试结果
附件:定义CSignalCrossEMA 类 的SignalCrossEMA.mqh文件位于 terminal_data_folder\MQL5\Include\Expert\Signal文件夹中.
文件 crossover_2ema.mq5 包含了由MQL5向导创建的EA交易代码。
由MetaQuotes Ltd译自俄语
原代码: https://www.mql5.com/ru/code/261

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

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

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

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