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

MQL5 向导 - 烛台模式类 - MetaTrader 5 库

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

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

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

在这里,我们将考虑 CCandlePattern 类,它允许简化 MQL5 向导的烛台模式交易信号类的创建。

CCandlePattern 类

班级CCandlePattern:民众专家信号
  {受保护的:
  //--- 指标   CiMA              m_MA;
  //--- 时间序列   CiOpen            m_open;
   CiHigh            m_high;
   CiLow             m_low;
   CiClose           m_close;
  //--- 输入参数  整数               m_ma_period;民众://--- 构造函数                     CCandlePattern();
  //--- 输入参数设置方法  空白              MAP期间(整数期间)             { m_ma_period=期间;                 } 
  //--- 初始化方法  虚拟的 布尔值      验证设置();
  虚拟的 布尔值      InitIndicators(CIndicators *indicators);

  //--- 检查特定烛台形态的形成  布尔值              CheckCandlestickPattern(ENUM_CANDLE_PATTERNS CandlePattern);
  //--- 检查看涨/看跌烛台形态的形成  布尔值              CheckPatternAllBullish();
  布尔值              CheckPatternAllBearish();受保护的:
  //--- 指标和时间序列的初始化  布尔值              InitMA(CIndicators *指标);
  布尔值              InitOpen(CIndicators *指标);
  布尔值              InitHigh(CIndicators *指标);
  布尔值              InitLow(CIndicators *指标);
  布尔值              InitClose(CIndicators *指标);
  //--- 方法,用于蜡烛图检查  双倍的            平均身体尺寸(整数工业);
  双倍的            MA(整数工业)                常量{返回(m_MA.Main(ind));             }
  双倍的            打开(整数工业)              常量{返回(m_open.GetData(ind));        }
  双倍的            高的(整数工业)              常量{返回(m_high.GetData(ind));        }
  双倍的            低的(整数工业)              常量{返回(m_low.GetData(ind));         }
  双倍的            关闭(整数工业)            常量{返回(m_close.GetData(ind));       }
  双倍的            收盘平均(整数工业)          常量{返回(MA(工业));                    }
  双倍的            中点(整数工业)          常量{返回0.5*(高(ind)+低(ind)));   }
  双倍的            中开收盘(整数工业)      常量{返回0.5*(开盘(ind)+收盘(ind))); }
  //--- 检查某个烛台模型的方法  布尔值              CheckPatternThreeBlackCrows();
  布尔值              CheckPatternThreeWhiteSoldiers();
  布尔值              CheckPatternDarkCloudCover();
  布尔值              CheckPatternPiercingLine();
  布尔值              CheckPatternMorningDoji();
  布尔值              CheckPatternEveningDoji();
  布尔值              CheckPatternBearishEngulfing();
  布尔值              CheckPatternBullishEngulfing();
  布尔值              CheckPatternEveningStar();
  布尔值              CheckPatternMorningStar();
  布尔值              检查模式锤();
  布尔值              CheckPatternHangingMan();
  布尔值              CheckPatternBearishHarami();
  布尔值              CheckPatternBullishHarami();
  布尔值              CheckPatternBearishMeetingLines();
  布尔值              CheckPatternBullishMeetingLines();
  };


在 MQL5 向导的交易信号类中使用 CCandlePattern

CCandlePattern 类可用作 MQL5 向导的交易信号类的父类。有必要从 CCandlePattern 类派生交易信号类,也有必要添加用于检查多头/空头开仓/平仓的方法(除了指标等之外)。

反转烛台模式的形成可以用作交易信号,但最好检查确认(例如,使用振荡器)。

看一下这一行:

//|参数=MAPeriod,int,12                                         |

在向导描述部分。

MAPeriod 方法在 CCandlePattern 父类中用于计算平均收盘价和蜡烛体的平均值。默认情况下,在 CCandlePattern() 类构造函数中设置 m_ma_period=12。但是,最好使用输入参数来设置它,这样您就可以在策略测试仪MetaTrader 5.

不要忘记调用父类的 ValidationSettings() 和 InitIndicators()

注意,需要在相应的类方法中调用父类的 CCandlePattern::ValidationSettings 和 CCandlePattern::InitIndicators 方法。

最好先调用这些方法:

布尔值CSampleCandleSignal ::ValidationSettings()
  {//--- 调用父 CCandlePattern 类的 ValidationSettings  如果(!CCandlePattern::ValidationSettings())返回错误的);//--- 你的代码
..// - - 好的  返回真的);
  }

InitIndicators() 方法也是如此:

布尔值CSampleCandleSignal ::InitIndicators(CIndicators *indicators)
  {//--- 调用父 CCandlePattern 类的 InitIndicators  如果(!CCandlePattern::InitIndicators(指标))返回错误的);  //--- 你的代码...// - - 好的  返回真的);
  }


检查烛台形态

要检查某个烛台图案的形成,需要调用 CheckCandlestickPattern(ENUM_CANDLE_PATTERNS CandlePattern) 方法并将图案传递给函数。

您还可以使用 CheckPatternAllBullish() 和 CheckPatternAllBearish() 方法检查看涨/看跌烛台模式之一的形成。

为了简化烛台模式的工作,使用 ENUM_CANDLE_PATTERNS 枚举:

枚举ENUM_CANDLE_PATTERNS  // 烛台形态列表  {
   CANDLE_PATTERN_THREE_BLACK_CROWS     =1,
   CANDLE_PATTERN_THREE_WHITE_SOLDIERS  =2,
   CANDLE_PATTERN_DARK_CLOUD_COVER      =3,
   CANDLE_PATTERN_PIERCING_LINE         =4,
   CANDLE_PATTERN_MORNING_DOJI          =5,
   CANDLE_PATTERN_EVENING_DOJI          =6,
   CANDLE_PATTERN_BEARISH_ENGULFING     =7,
   CANDLE_PATTERN_BULLISH_ENGULFING     =8,
   CANDLE_PATTERN_EVENING_STAR          =9,
   CANDLE_PATTERN_MORNING_STAR          =10,
   CANDLE_PATTERN_HAMMER                =11,
   CANDLE_PATTERN_HANGING_MAN           =12,
   CANDLE_PATTERN_BEARISH_HRAMI        =13,
   CANDLE_PATTERN_BULLISH_HARAMI        =14,
   CANDLE_PATTERN_BEARISH_MEETING_LINES =15,
   CANDLE_PATTERN_BULLISH_MEETING_LINES =16  };

检查看涨烛台形态:

///---检查形成《3个白衣战士》图案:  检查烛台图案(CANDLE_PATTERN_THREE_WHITE_SOLDIERS)///---检查形成《穿刺线》图案:  检查烛台图案(CANDLE_PATTERN_PIERCING_LINE)///---检查形成《早晨的十字星》图案:  检查烛台模式(CANDLE_PATTERN_MORNING_DOJI)///---检查形成“看涨吞没”图案:  检查烛台模式(CANDLE_PATTERN_BULLISH_ENGULFING)///---检查形成“看涨哈拉米”图案:  检查烛台模式(CANDLE_PATTERN_BULLISH_HRAMI)///---检查形成“晨星”图案:  检查烛台模式(CANDLE_PATTERN_MORNING_STAR)///---检查形成“看涨汇合线”图案:  检查烛台模式(CANDLE_PATTERN_BULLISH_MEETING_LINES)///---检查形成“锤”图案:  检查烛台模式(CANDLE_PATTERN_HAMMER)///---检查形成看涨烛台形态之一  CheckPatternAllBullish();

检查看跌烛台形态:

///--- 检查“3 只黑乌鸦”形态的形成:  检查烛台图案(CANDLE_PATTERN_THREE_BLACK_CROWS)///---检查形成《乌云密布》图案:  检查烛台图案(CANDLE_PATTERN_DARK_CLOUD_COVER)///---检查形成《晚间十字星》图案:  检查烛台模式(CANDLE_PATTERN_EVENING_DOJI)///---检查形成“看跌吞噬”图案:  检查烛台图案(CANDLE_PATTERN_BEARISH_ENGULFING)///---检查形成《黄昏之星》图案:  检查烛台模式(CANDLE_PATTERN_EVENING_STAR)///---检查形成《吊人》图案:  检查烛台图案(CANDLE_PATTERN_HANGING_MAN)///---检查形成“看跌孕妇”图案:  检查烛台图案(CANDLE_PATTERN_BEARISH_HRAMI)///---检查形成“看跌汇合线”图案:  检查烛台模式(CANDLE_PATTERN_BEARISH_MEETING_LINES)///---检查看跌形态之一的形成  CheckPatternAllBearish();

以下是这些方法的使用示例:

1. 开多仓

//+------------------------------------------------------------------+
//|检查多头开仓状况    |
//+------------------------------------------------------------------+
布尔值CSampleCandleSignal::CheckOpenLong(双倍的&价格,双倍的&sl,双倍的&tp,日期时间&过期)
  {//--- 检查开立多头头寸的条件
//--- 除了指标检查之外,最好使用此代码
//--- 例如,让我们检查一下“3个白兵”模式的形成:  如果检查烛台图案(CANDLE_PATTERN_THREE_WHITE_SOLDIERS)返回真的)://--- 无信号  返回错误的);
  }

2. 多头平仓

//--------------------------------------------------------------------------------+
//|检查多头平仓状况 |
//+------------------------------------------------------------------+
布尔值CSampleCandleSignal::CheckCloseLong(双倍的&价格)
  {//--- 检查平仓条件
//--- 例如,让我们检查看跌模式之一的形成:  如果CheckPatternAllBearish()返回真的)://--- 无信号  返回错误的);
  }

3. 开空仓

//--------------------------------------------------------------------------------+
//|检查空头开仓情况    |
//+------------------------------------------------------------------+
布尔值CSampleCandleSignal::CheckOpenShort(双倍的&价格,双倍的&sl,双倍的&tp,日期时间&过期)
  {//--- 检查开空头寸的条件
//--- 除了指标检查之外,最好使用此代码
//--- 例如,让我们检查“3只黑乌鸦”形态的形成:   如果检查烛台图案(CANDLE_PATTERN_THREE_BLACK_CROWS)返回真的)://--- 无信号  返回错误的);
  }

4. 平仓

//--------------------------------------------------------------------------------+
//|检查空头平仓状况 |
//+------------------------------------------------------------------+
布尔值CSampleCandleSignal::CheckCloseShort(双倍的&价格)
  {//--- 检查平仓条件
//--- 除了指标检查之外,最好使用此代码//--- 例如,让我们检查看涨模式之一的形成:  如果CheckPatternAllBullish()返回真的)://--- 无信号  返回错误的);
  }

建议

为了减少虚假信号,反转烛台形态必须由其他指标(例如振荡指标)确认。

《最佳交易者策略》一书中考虑了以下模式:

确认者随机,CCI,微型金融机构相对强弱指数振荡器。

稍后我们将提供在 MQL5 向导中使用的交易信号类别。


附件下载

📎 candlepatterns.mqh (24.31 KB)

Source: MQL5 #291

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