- 显示:
- 5255
- 等级:
- 已发布:
- 2013.10.01 13:24
- 已更新:
- 2016.11.22 07:33
-
需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务
MQL5向导 提供EA 交易的自动创建 (参考MQL5向导:无需编程创建EA交易).
这里我们将考察基于MACD指标线交叉的交易信号。该策略名称为“Signals based on crossover of main and signal MACD lines” (当使用MQL5 向导自动创建EA 时可看到)
MACD 指标的主线由快速EMA和慢速EMA之间的差值计算而得。MACD 的信号线由对主线进行PeriodSignal 周期的平滑计算而得。
交易信号:
- 买入:MACD指标的主线和信号线向上交叉。
- 卖出:MACD指标的主线和信号线向下交叉。
这个策略实现在MQL5标准库的交易策略类的CSignalMACD类中(位于MQL5\Include\Expert\Signal\SignalMACD.mqh)。
图1. 基于MACD指标主线和信号线交叉的交易信号
交易信号
交易策略在CSignalMACD类实现, 它有一些受保护的方法可简化对指标和价格的访问:
double MainMACD(int ind) // 返回某柱上MACD主线的值 double SignalMACD(int ind) // 返回某柱上MACD信号线的值 double StateMACD(int ind) // 返回MACD主线和信号线的差值 int ExtStateMACD(int ind); // 返回主线和信号线差值的符号变化的数字
1. 多头开仓
多头开仓的条件:
- ExtStateMACD(1)==1; 意味着主线向上交叉MACD 信号线
//+------------------------------------------------------------------+ //| 检查多头开仓的条件 (买入) | //+------------------------------------------------------------------+ bool CSignalMACD::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration) { price=0.0; sl =m_symbol.Ask()-m_stop_loss*m_adjusted_point; tp =m_symbol.Ask()+m_take_profit*m_adjusted_point; //--- return(ExtStateMACD(1)==1); }
2. 多头平仓
多头平仓的条件:
- ExtStateMACD(1)==1; 意味着主线向下交叉MACD 信号线
//+------------------------------------------------------------------+ //| 检查多头平仓的条件 | //+------------------------------------------------------------------+ bool CSignalMACD::CheckCloseLong(double& price) { price=0.0; //--- return(ExtStateMACD(1)==-1); }
3. 空头开仓
空头开仓的条件和多头平仓的条件一样。
//+------------------------------------------------------------------+ //| 检查空头开仓条件(卖出) | //+------------------------------------------------------------------+ bool CSignalMACD::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration) { price=0.0; sl =m_symbol.Bid()+m_stop_loss*m_adjusted_point; tp =m_symbol.Bid()-m_take_profit*m_adjusted_point; //--- return(ExtStateMACD(1)==-1); }
4. 空头平仓
空头平仓的条件和多头开仓的条件一样。
//+------------------------------------------------------------------+ //| 检查空头平仓的条件 | //+------------------------------------------------------------------+ bool CSignalMACD::CheckCloseShort(double& price) { price=0.0; //--- return(ExtStateMACD(1)==1); }
使用MQL5向导创造EA 交易
要基于该策略创建交易程序,你需要在 MQL5向导的 "快速创建EA交易" 选项 "中选择信号属性为" Signals based on crossover of main and signal MACD lines":
图2. 在MQL5 向导中选择“Signals based on crossover of main and signal MACD lines”
接下来你必须指定所需要的 移动止损 算法和 货币风险管理系统。EA 交易代码将被自动创建,你可以对它编译然后在MetaTrader 5客户端的策略测试中对其测试。
测试结果
让我们来考察EA交易在历史数据(EURUSD H1,自定义时段:1.1.2010-05.01.2011, PeriodFast=12, PeriodSlow=24, PeriodSignal=9, StopLoss=20, TakeProfit=80)上的回归测试。
在创建EA 交易时,我们使用了固定交易量 (固定交易手数, 0.1),未使用移动止损算法 (不使用移动)。
图3. 以基于MACD指标线交叉为交易信号的EA交易的历史回归测试结果
附件:定义CSignalMACD 类(包含在 MQL5 标准库)的SignalMACD.mqh文件位于MQL5\Include\Expert\Signal文件夹中. 文件 testmacd.mq5 <s4></s4>包含了由MQL5向导创建的EA交易的代码。
由MetaQuotes Ltd译自俄语
原代码: https://www.mql5.com/ru/code/262

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

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

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

基于 锤头 / 上吊线形态的交易信号,由 CCI (商品通道指数)指标确认.基于此交易策略的交易程序代码可使用 MQL5 向导自动生成。