欢迎访问 外汇EA下载与MT4/MT5自动交易资源 - 聚合外汇EA、黄金EA、量化交易工具与自动化交易实战内容。
登录 注册

MQL5 向导 - 基于晨星/晚星 + MFI 的交易信号 - MetaTrader 5 专家

author emer | 599 人阅读 | 0 人评论 |

MQL5 Wizard - Trade Signals Based on Morning/Evening Stars + MFI - expert for MetaTrader 5

MQL5 Wizard - Trade Signals Based on Morning/Evening Stars + MFI - expert for MetaTrader 5

MQL5 Wizard - Trade Signals Based on Morning/Evening Stars + MFI - expert for MetaTrader 5

MQL5 Wizard - Trade Signals Based on Morning/Evening Stars + MFI - expert for MetaTrader 5

MQL5 Wizard - Trade Signals Based on Morning/Evening Stars + MFI - expert for MetaTrader 5

MQL5 Wizard - Trade Signals Based on Morning/Evening Stars + MFI - expert for MetaTrader 5

MQL5 Wizard - Trade Signals Based on Morning/Evening Stars + MFI - expert for MetaTrader 5

MQL5 Wizard - Trade Signals Based on Morning/Evening Stars + MFI - expert for MetaTrader 5

MQL5 Wizard - Trade Signals Based on Morning/Evening Stars + MFI - expert for MetaTrader 5

MQL5 Wizard - Trade Signals Based on Morning/Evening Stars + MFI - expert for MetaTrader 5

MQL5 Wizard - Trade Signals Based on Morning/Evening Stars + MFI - expert for MetaTrader 5

有本书“最佳交易者的策略“(俄语),那里考虑了许多交易策略,我们将重点关注反转烛台模式,由随机,CCI,微型金融机构相对强弱指数振荡器。

最好的方法是创建单独的类,派生自专家信号用于检查烛台图案的形成。对于由烛台模式生成的交易信号的确认,编写从 CCandlePattern 派生的类并在其中添加必要的功能(例如,通过振荡器确认)就足够了。

在这里,我们将根据“晨星/晚星”(晨十字星/晚十字星)反转烛台形态来考虑信号,并通过以下方式确认微型金融机构指标。交易信号模块基于CC蜡烛形态类,这是使用烛台模式创建交易信号的简单示例。

1.“晨星”和“晚星”反转烛台形态

1.1.晨星

该形态表明下降趋势的逆转,它由三根蜡烛组成(图 1)。在一根长的黑色蜡烛之后,有一根蜡烛体较小的蜡烛(颜色并不重要),它位于黑色蜡烛的主体之外。蜡烛体较小意味着多头和空头的力量相等,市场已准备好改变趋势。

该形态的第三根蜡烛是看涨蜡烛,它的主体与第二根蜡烛的主体不重叠,并且收盘价位于第一根(看跌)蜡烛的主体内部。模型生成的蜡烛图也绘制在图 1 中。

对于第二根蜡烛是十字星蜡烛的情况,该模型被命名为“晨星十字星”。

MQL5 Wizard - Trade Signals Based on Morning/Evening Stars + MFI - expert for MetaTrader 5

图 1. “晨星”和“晨星十字星”烛台形态

“晨星”形态的识别是在 CheckPatternMorningStar() 和 CheckPatternMorningDoji() 方法中实现的CC蜡烛形态班级:

//+------------------------------------------------------------------+
//|检查“晨星”形态的形成                    |
//+------------------------------------------------------------------+
布尔值CCandlePattern::CheckPatternMorningStar()
  {//--- 晨星  如果((打开(3)-关闭(3)>平均体(1))             &&// 看跌蜡烛,其实体大于平均蜡烛实体      (数学抗体(关闭(2)-打开(2))1)*0.5)&&// 第二根蜡烛的实体较小(低于平均实体的一半)      (关闭(2)<关闭(3))                       &&// 第二根蜡烛的收盘价低于第一根蜡烛的收盘价      (打开(2)<打开(3))                        &&// 第二个canlde的开盘价低于第一个canlde的开盘价      (关闭(1)>中开收盘(3)))                 // 最后一个完成的蜡烛的收盘价高于第一根蜡烛的中心     返回真的);//---  返回错误的);
  }//+------------------------------------------------------------------+
//|检查“晨间十字星”形态的形成               |
//+------------------------------------------------------------------+
布尔值CCandlePattern::CheckPatternMorningDoji()
  {//--- 早晨十字星  如果((打开(3)-关闭(3)>平均体(1)) &&// 蜡烛实体大于平均蜡烛实体的看跌蜡烛       (平均体(2)1)*0.1)   &&// 第二根蜡烛的实体非常小(十字星)      (关闭(2)<关闭(3))           &&// 第二根蜡烛的收盘价低于第一根蜡烛的收盘价      (打开(2)<打开(3))             &&// 第二根蜡烛的开盘价低于第一根蜡烛的开盘价      (打开(1)>关闭(2))            &&// 最后完成的蜡烛的向上缺口      (关闭(1)>关闭(2)))            // 最后一个完成的蜡烛的收盘价高于第二个蜡烛的收盘价     返回真的);//---  返回错误的);
  }

CheckCandlestickPattern(CANDLE_PATTERN_MORNING_STAR) 和 CheckCandlestickPattern(CANDLE_PATTERN_MORNING_DOJI) 方法CC蜡烛形态类用于检查“晨星”和“晨星十字星”烛台形态的形成。

1.2.晚星

该形态表明上升趋势的逆转,它由三根蜡烛组成(图 2)。在一根长白蜡烛之后,有一根蜡烛(颜色不重要),其蜡烛体很小,位于白蜡烛的蜡烛体之外。蜡烛体较小意味着多头和空头的力量相等,市场已准备好改变趋势。

该形态的第三根蜡烛是看跌蜡烛,它的主体与第二根蜡烛的主体不重叠,并且收盘价位于第一根(看涨)蜡烛的主体内部。模型生成的蜡烛图也绘制在图 2 中。

对于第二根蜡烛是十字星蜡烛的情况,该模型被命名为“Evening Doji Star”。

MQL5 Wizard - Trade Signals Based on Morning/Evening Stars + MFI - expert for MetaTrader 5

图 2. “黄昏之星”和“黄昏十字星”烛台形态

以下是“黄昏星”和“黄昏十字星”形态的识别方法:

//+------------------------------------------------------------------+
//|检查“的形成晚上星”图案               |
//+------------------------------------------------------------------+
布尔值CCandlePattern::CheckPatternEveningStar()
  {//--- 晚星  如果((关闭(3)-打开(3)>平均体(1))             &&// 实体高于平均实体的看涨蜡烛      (数学抗体(关闭(2)-打开(2))1)*0.5)&&// 第二根蜡烛的实体较小(小于平均值的一半)      (关闭(2)>关闭(3))                       &&// 第二根蜡烛的收盘价高于第一根蜡烛的收盘价      (打开(2)>打开(3))                        &&// 第二根蜡烛的开盘价高于第一根蜡烛的开盘价      (关闭(1)<中开收盘(3)))                 // 最后一个完成的蜡烛的收盘价低于第一根蜡烛的中心     返回真的);//---  返回错误的);
  }//+------------------------------------------------------------------+
//|检查“的形成晚间十字星星”图案          |
//+------------------------------------------------------------------+
布尔值CCandlePattern::CheckPatternEveningDoji()
  {//--- 黄昏十字星  如果((关闭(3)-打开(3)>平均体(1)) &&// 实体高于平均线的看涨蜡烛       (平均体(2)1)*0.1)   &&// 第二根蜡烛的实体非常小(十字星)      (关闭(2)>关闭(3))           &&// 第二根蜡烛的收盘价高于第一根蜡烛的收盘价      (打开(2)>打开(3))             &&// 第二根蜡烛的开盘价高于第一根蜡烛的开盘价      (打开(1)<关闭(2))            &&// 最后一根完成的蜡烛的向下缺口      (关闭(1)<关闭(2)))            // 最后一个完成的蜡烛的收盘价低于第二个蜡烛的收盘价     返回真的);//---  返回错误的);
  }

CheckCandlestickPattern(CANDLE_PATTERN_EVENING_STAR) 和 CheckCandlestickPattern(CANDLE_PATTERN_EVENING_DOJI) 方法CC蜡烛形态类用于检查“Evening Star”和“Evening Doji Star”烛台形态的形成。

2. 由MFI指标确认的交易信号

已开仓位的平仓取决于 MFI 指标的值。可以分两种情况进行:

MQL5 Wizard - Trade Signals Based on Morning/Evening Stars + MFI - expert for MetaTrader 5

图 3. MFI 指标确认的“晨星”模式

2.1.开多仓/平空仓

“晨星”形态的形成必须由微型金融机构指标:MFi(1)<40(最后完成柱的 MFI 指标值必须小于 40)。

空头头寸必须平仓,如果微型金融机构指标已向上穿越关键水平(70 或 30)。

//+------------------------------------------------------------------+
//|检查进入和退出市场的条件                 |
//| 1) 进入市场(开仓多头,结果=80)                  |
//| 2) 市场退出(平仓,结果=40)                 |
//+------------------------------------------------------------------+
整数CMS_ES_MFI::长条件()
  {
  整数结果=0;//--- idx 可用于确定 Expert Advisor 工作模式
//--- idx=0 - 在这种情况下 EA 在每个价格变动时检查交易条件
//--- idx=1 - 在这种情况下 EA 仅检查新闻柱的交易状况  整数idx   =StartIndex();//--- 检查开立多头头寸的条件
//--- 晨星形态的形成且 MFI<40  如果(检查烛台模式(CANDLE_PATTERN_MORNING_STAR) && (MFI(1)<40))
     结果=80;//--- 检查平仓条件
//--- 超买/超卖水平的信号线交叉(向上 30,向上 70)  如果(((小额信贷机构(1)>30) && (小额信贷机构(2)<30)) || ((小额信贷机构(1)>70) && (小额信贷机构(2)<70)))
     结果=40;//--- 返回结果  返回(结果);
  }


2.2.开空头仓位/平仓多头仓位

“黄昏之星”形态的形成必须由微型金融机构指标:MFI(1)>60(最后完成柱的 MFI 指标值必须大于 60)。

多头头寸必须平仓,如果微型金融机构指标已向上穿越关键水平(70 或 30)。

//+------------------------------------------------------------------+
//|检查进入和退出市场的条件                 |
//| 1) 进入市场(空头持仓,结果=80)                 |
//| 2) 市场退出(平仓,结果=40)                  |
//+------------------------------------------------------------------+
整数CMS_ES_MFI::ShortCondition()
  {
  整数结果=0;//--- idx 可用于确定 Expert Advisor 工作模式
//--- idx=0 - 在这种情况下 EA 在每个价格变动时检查交易条件
//--- idx=1 - 在这种情况下 EA 仅检查新闻柱的交易状况  整数idx   =StartIndex();//--- 检查开空头寸的条件
//--- 黄昏之星形态的形成和 MFI>60  如果(检查烛台图案(CANDLE_PATTERN_EVENING_STAR) && (MFI(1)>60))
     结果=80;//--- 检查平仓条件
//--- 超买/超卖水平的信号线交叉(向上 70,向下 30)  如果(((小额信贷机构(1)>70) && (小额信贷机构(2)<70)) || ((小额信贷机构(1)<30) && (小额信贷机构(2)>30)))
     结果=40;//--- 返回结果  返回(结果);
  }


2.3.使用 MQL5 向导创建 EA 交易

CMS_ES_MFI 类不包含在标准库类中,要使用它,需要下载 ams_es_mfi.mqh 文件(参见附件)并将其保存到 client_terminal_data_folder\MQL5\Include\Expert\Signal\MySignals。对 acandlepatterns.mqh 文件也应执行相同的操作。重新启动 MetaEditor 后,您可以在 MQL5 向导中使用它。

创建 Expert Advisor 启动MQL5 向导:

MQL5 Wizard - Trade Signals Based on Morning/Evening Stars + MFI - expert for MetaTrader 5

图 4. 使用 MQL5 向导创建 EA 交易

让我们指定 EA 交易的名称:

MQL5 Wizard - Trade Signals Based on Morning/Evening Stars + MFI - expert for MetaTrader 5

图 5. EA 交易的一般属性

之后我们需要选择所使用的交易信号模块。

MQL5 Wizard - Trade Signals Based on Morning/Evening Stars + MFI - expert for MetaTrader 5

图 6. EA 交易的信号属性

在我们的例子中,我们仅使用一个交易信号模块。

MQL5 Wizard - Trade Signals Based on Morning/Evening Stars + MFI - expert for MetaTrader 5

图 7. EA 交易的信号属性

添加了交易信号模块:

MQL5 Wizard - Trade Signals Based on Morning/Evening Stars + MFI - expert for MetaTrader 5

图 8. EA 交易的信号属性

您可以选择任何追踪属性,但我们将使用“未使用追踪止损”:

MQL5 Wizard - Trade Signals Based on Morning/Evening Stars + MFI - expert for MetaTrader 5

图 9. EA 交易的追踪属性

关于资金管理属性,我们将使用“固定交易量交易”:

MQL5 Wizard - Trade Signals Based on Morning/Evening Stars + MFI - expert for MetaTrader 5

图 10. EA 交易的资金管理属性

通过按“完成”按钮,我们将获得生成的 EA 交易的代码,位于 Expert_AMS_ES_MFI.mq5 中,它将保存在terminal_data_folder\MQL5\Experts\ 中。

生成的 EA 交易的默认输入参数:

//--- 主信号输入
输入 整数            Signal_ThresholdOpen =10;    // 打开信号阈值 [0...100]
输入 整数            Signal_ThresholdClose =10;    // 关闭信号阈值 [0...100]
输入 双倍的         Signal_PriceLevel      =0.0;   // 执行交易的价格水平
输入 双倍的         Signal_StopLevel       =50.0;  // 止损水平(以点为单位)
输入 双倍的         Signal_TakeLevel       =50.0// 止盈水平(以点为单位)

必须更换为:

//--- 主信号输入
输入 整数            Signal_ThresholdOpen =40;    // 打开信号阈值 [0...100]
输入 整数            Signal_ThresholdClose =20;    // 关闭信号阈值 [0...100]
输入 双倍的         Signal_PriceLevel      =0.0;   // 执行交易的价格水平
输入 双倍的         Signal_StopLevel       =0.0;    // 止损水平(以点为单位)
输入 双倍的         Signal_TakeLevel       =0.0;    // 止盈水平(以点为单位)

Signal_ThresholdOpen/Signal_ThresholdClose 输入参数允许指定开仓和平仓的阈值水平。

在交易信号类的 LongCondition() 和 ShortCondition() 方法的代码中,我们指定了 阈值的固定值:

该 Expert Advisor 由 MQL5 向导使用交易信号模块中的“投票”生成开仓和平仓。还使用主模块(作为容器,由所有添加的模块组成)的投票,但其 LongCondition() 和 ShortCondition() 方法始终返回 0。

主模块的投票结果也用于“投票”平均。在我们的例子中,我们有:主模块 + 1 个交易信号模块,因此我们在设置阈值时需要考虑这一事实。因此,ThresholdOpen 和 ThresholdClose 必须设置为 40=(0+80)/2 和 20=(0+40)/2。

Signal_StopLevel 和 Signal_TakeLevel 输入参数的值设置为 0,这意味着仅当平仓条件成立时才会平仓。

2.4.历史回测结果

让我们考虑一下 Expert Advisor 对历史数据的回测(EURUSD H1,测试期:2010.01.01-2011.03.16,PeriodMFI=49,MA_period=3)。

在创建 EA 交易时,我们使用了固定交易量 (交易固定手数, 0.1), 未使用追踪止损算法 (未使用尾随)。

MQL5 Wizard - Trade Signals Based on Morning/Evening Stars + MFI - expert for MetaTrader 5

图 11. 基于晨星/晚星 + MFI 的 EA 交易测试结果

可以使用以下命令找到最佳的输入参数集策略测试仪MetaTrader 5 客户端。

由 MQL5 向导创建的 EA 交易代码附在 Expert_ams_es_mfi.mq5 中。


附件下载

📎 acandlepatterns.mqh (20.34 KB)

📎 acms_es_mfi.mqh (7.99 KB)

📎 expert_ams_es_mfi.mq5 (6.63 KB)

Source: MQL5 #323

🔐
请登录后参与评论
注册满12小时后评论,即可解锁附件下载
立即登录