無料でロボットをダウンロードする方法を見る
Twitter上で私たちを見つけてください。
私たちのファンページに参加してください
興味深いスクリプト?
それではリンクにそれを投稿してください。-
他の人にそれを評価してもらいます
記事を気に入りましたか?MetaTrader 5ターミナルの中でそれを試してみてください。
ライブラリ

MQL5 Wizard - 足の転換によるシグナル - MetaTrader 5のためのライブラリ

ビュー:
1712
評価:
(83)
パブリッシュ済み:
2015.10.29 13:43
アップデート済み:
2016.12.26 15:22
このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動

MQL5 Wizardを使えば、クライアントターミナルにあるStandard libraryのエキスパートアドバイザーを自動生成することができます。トレードシグナルのクラスを生成しさせすれば、トレードアイディアをすぐに確認することができますこのクラスの構造とサンプルは、MQL5 Wizard: How to Create a Module of Trading Signalsを参照してください。.

一般的な考え方は下記の通りです。:CExpertSignalがシグナルのクラスです。そして、LongCondition()ShortCondition() を上書きする必要があります。

"Strategies of best traders" (ロシア)という著書があります。 そこには数多くの手法と方法が記述されており、転換足パターンを StochasticCCIMFIRSIの条件のもと、焦点を当てていきます。

最も良い方法は、ロウソク足のパターンの確認に、CExpertSignalから導かれるクラスを切り分けて生成することです。ロウソク足のパターンによるトレードシグナルの確認には、CCandlePatternのクラスを書いて、必要な条件例えば、オシレーターの確認など)を追加すれば十分です。

CCandlePattern classの場合を考えてみましょう。このクラスは、MQL5 Wizard でロウソク足によるトレードシグナルの生成をする際、単純化します。


CCandlePattern class

CCandlePattern class は、 CExpertSignal (シグナルの基本クラス)にあります。

class CCandlePattern : public CExpertSignal
  {
protected:
   //--- indicators
   CiMA              m_MA;
   //--- time series
   CiOpen            m_open;
   CiHigh            m_high;
   CiLow             m_low;
   CiClose           m_close;
   //--- input parameters
   int               m_ma_period;

public:
   //--- constructor
                     CCandlePattern();
   //--- method of input parameter setting
   void              MAPeriod(int period)             { m_ma_period=period;                 } 
   //--- initialization methods
   virtual bool      ValidationSettings();
   virtual bool      InitIndicators(CIndicators *indicators);

   //--- check formation of a certain candlestick pattern
   bool              CheckCandlestickPattern(ENUM_CANDLE_PATTERNS CandlePattern);
   //--- check formation of bullish/bearish candlestick pattern
   bool              CheckPatternAllBullish();
   bool              CheckPatternAllBearish();

protected:
   //--- initialization of indicators and time series
   bool              InitMA(CIndicators *indicators);
   bool              InitOpen(CIndicators *indicators);
   bool              InitHigh(CIndicators *indicators);
   bool              InitLow(CIndicators *indicators);
   bool              InitClose(CIndicators *indicators);
   //--- methods, used for candlestick checking
   double            AvgBodySize(int ind);
   double            MA(int ind)                const { return(m_MA.Main(ind));             }
   double            Open(int ind)              const { return(m_open.GetData(ind));        }
   double            High(int ind)              const { return(m_high.GetData(ind));        }
   double            Low(int ind)               const { return(m_low.GetData(ind));         }
   double            Close(int ind)             const { return(m_close.GetData(ind));       }
   double            CloseAvg(int ind)          const { return(MA(ind));                    }
   double            MidPoint(int ind)          const { return(0.5*(High(ind)+Low(ind)));   }
   double            MidOpenClose(int ind)      const { return(0.5*(Open(ind)+Close(ind))); }
   //--- methods for checking of a certain candlestick model
   bool              CheckPatternThreeBlackCrows();
   bool              CheckPatternThreeWhiteSoldiers();
   bool              CheckPatternDarkCloudCover();
   bool              CheckPatternPiercingLine();
   bool              CheckPatternMorningDoji();
   bool              CheckPatternEveningDoji();
   bool              CheckPatternBearishEngulfing();
   bool              CheckPatternBullishEngulfing();
   bool              CheckPatternEveningStar();
   bool              CheckPatternMorningStar();
   bool              CheckPatternHammer();
   bool              CheckPatternHangingMan();
   bool              CheckPatternBearishHarami();
   bool              CheckPatternBullishHarami();
   bool              CheckPatternBearishMeetingLines();
   bool              CheckPatternBullishMeetingLines();
  };


MQL5 Wizard で、シグナルに CCandlePattern を使う

MQL5 Wizard では、CCandlePattern class は、トレードシグナルの親クラスに使うことができます。トレードシグナルは CCandlePattern class から使う必要があります。また、エントリーと決済を確認するためのメソッドを追加する必要があります。(そのほかにも、インジケーターなど)

転換足のパターンはトレードシグナルとして使うことができますが、確認を行った方が賢明です。(例えば、オシレーターの利用など)

  • bool CheckOpenLong(double &price,double &sl,double &tp,datetime &expiration) - 買いエントリーの状態確認;
  • bool CheckCloseLong(double &price)  - 買い決済の状態確認;
  • bool CheckOpenShort(double &price,double &sl,double &tp,datetime &expiration) - 売りエントリーの状態確認;
  • bool CheckCloseShort(double &price) - 売り決済の状態確認;
//+------------------------------------------------------------------+
//|                                          CSampleCandleSignal.mqh |
//+------------------------------------------------------------------+
// include CCandlePattern class
// the candlepatterns.mqh must be located in the same folder
#include "CandlePatterns.mqh"
// wizard description start
//+------------------------------------------------------------------+
//| Description of the class                                         |
//| Title=Test signal                                                |
//| Type=Signal                                                      |
//| Name=CSampleCandleSignal                                         |
//| Class=CSampleCandleSignal                                        |
//| Page=                                                            |
//| Parameter=param1,int,9                                           |
....
//| Parameter=paramN,int,13                                          |
//| Parameter=MAPeriod,int,12                                        |
//+------------------------------------------------------------------+
// wizard description end
//+------------------------------------------------------------------+
class CSampleCandleSignal : public CCandlePattern
  {
protected:
   //--- indicators
   ....
   //--- input parameters
   ...
public:
   //--- constructor
                     CTestClass();
   //--- methods for setting of input parameters
   ...
   //--- initialization of indicators and time series/checking of input parameters
   virtual bool      ValidationSettings();
   virtual bool      InitIndicators(CIndicators *indicators);
   //--- checking of trade signals
   virtual bool      CheckOpenLong(double &price,double &sl,double &tp,datetime &expiration);
   virtual bool      CheckCloseLong(double &price);
   virtual bool      CheckOpenShort(double &price,double &sl,double &tp,datetime &expiration);
   virtual bool      CheckCloseShort(double &price);

protected:
   //--- methods of indicators initialization
   ...
   //--- methods for access to indicator's values
   ...
  };

クラスの例と構造については、MQL5 Wizard: How to Create a Module of Trading Signalsを参照してください。

項目を見てください:

//| Parameter=MAPeriod,int,12                                        |

wizard 説明のセクション

MAPeriod methodは、 終値の平均や足の実体の平均を計算用に、CCandlePatternの親クラスで使われます。デフォルトでは、m_ma_period=12 がCCandlePattern() class にセットされています。しかし、MetaTrader 5のStrategy Testerでパラメーターでセットした方がよいです。


必ず、親クラスのValidationSettings() と InitIndicators() を呼び出してください。

各クラスメソッドでは、親クラスのメソッドCCandlePattern と ValidationSettings と CCandlePattern を呼び出す必要があります。

先に以下のメソッドを呼び出しておくと良いでしょう。:

bool CSampleCandleSignal ::ValidationSettings()
  {
//--- call of ValidationSettings of parent CCandlePattern class
   if(!CCandlePattern::ValidationSettings()) return(false);
//--- your code
..
//--- ok
   return(true);
  }

InitIndicators() method についても同様です。:

bool CSampleCandleSignal ::InitIndicators(CIndicators *indicators)
  {
//--- call of InitIndicators of parent CCandlePattern class
   if(!CCandlePattern::InitIndicators(indicators)) return(false);   
//--- your code
...
//--- ok
   return(true);
  }


ロウソク足のパターンを確認

特定のロウソク足のパターンを確認するには、CheckCandlestickPattern(ENUM_CANDLE_PATTERNS CandlePattern) メソッドを呼び出す必要があります。

CheckPatternAllBullish() と CheckPatternAllBearish() で、ブル型/ベア型のロウソク足のパターンを同様に確認することができます。

ロウソク足のパターンを単純化には、ENUM_CANDLE_PATTERNS の一覧が使えます。:

enum ENUM_CANDLE_PATTERNS  // candlestick patterns list
  {
   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_HARAMI        = 13,
   CANDLE_PATTERN_BULLISH_HARAMI        = 14,
   CANDLE_PATTERN_BEARISH_MEETING_LINES = 15,
   CANDLE_PATTERN_BULLISH_MEETING_LINES = 16
  };

ブル型のロウソク足の確認:

///--- Check formation of "3 White Soldiers" pattern:
  CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS)

///--- Check formation of "Piercing Line" pattern:
  CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE)

///--- Check formation of "Morning Doji" pattern:
  CheckCandlestickPattern(CANDLE_PATTERN_MORNING_DOJI)

///--- Check formation of "Bullish Engulfing" pattern:
  CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING)

///--- Check formation of "Bullish Haramii" pattern:
  CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI)

///--- Check formation of "Morning Star" pattern:
  CheckCandlestickPattern(CANDLE_PATTERN_MORNING_STAR)

///--- Check formation of "Bullish Meeting Lines" pattern:
  CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_MEETING_LINES)

///--- Check formation of "Hammer" pattern:
  CheckCandlestickPattern(CANDLE_PATTERN_HAMMER)

///--- Check formation of one of the bullish candlestick patterns
  CheckPatternAllBullish();

ベア型のロウソク足の確認:

///--- Check formation of "3 Black Crows" pattern:
  CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS)

///--- Check formation of "Dark Cloud Cover" pattern:
  CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER)

///--- Check formation of "Evening Doji" pattern:
  CheckCandlestickPattern(CANDLE_PATTERN_EVENING_DOJI)

///--- Check formation of "Bearish Engulfing" pattern:
  CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING)

///--- Check formation of "Evening Star" pattern:
  CheckCandlestickPattern(CANDLE_PATTERN_EVENING_STAR)

///--- Check formation of "Hanging Man" pattern:
  CheckCandlestickPattern(CANDLE_PATTERN_HANGING_MAN)

///--- Check formation of "Bearish Harami" pattern:
  CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI)

///--- Check formation of "Bearish Meeting Lines" pattern:
  CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_MEETING_LINES)

///--- Check formation of one of the bearish patterns
  CheckPatternAllBearish();

メソッドの使用例:

1. 買いポジション

//+------------------------------------------------------------------+
//| Checking condition of long position opening                      |
//+------------------------------------------------------------------+
bool CSampleCandleSignal::CheckOpenLong(double &price,double &sl,double &tp,datetime &expiration)
  {
//--- check conditions to open long position
//--- it's better to use this code in addition to indicator's checking
//--- for example, let's check formation of "3 white soldiers" pattern:
   if CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) return(true):
//--- no signal
   return(false);
  }

2. 買いの決済

//-------------------------------------------------------------------+
//| Checking condition of long position closing                      |
//+------------------------------------------------------------------+
bool CSampleCandleSignal::CheckCloseLong(double &price)
  {
//--- check conditions to close long position
//--- for example, let's check formation of one of the bearish pattern:
   if CheckPatternAllBearish() return(true):
//--- no signal
   return(false);
  }

3. 売りポジション

//-------------------------------------------------------------------+
//| Checking condition of short position opening                     |
//+------------------------------------------------------------------+
bool CSampleCandleSignal::CheckOpenShort(double &price,double &sl,double &tp,datetime &expiration)
  {
//--- check conditions to open short position
//--- it's better to use this code in addition to indicator's checking
//--- for example, let's check formation of "3 black crows" pattern:
    if CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) return(true):
//--- no signal
   return(false);
  }

4. 売りポジションの決済

//-------------------------------------------------------------------+
//| Checking condition of short position closing                     |
//+------------------------------------------------------------------+
bool CSampleCandleSignal::CheckCloseShort(double &price)
  {
//--- check conditions to close short position
//--- it's better to use this code in addition to indicator's checking
//--- for example, let's check formation of one of the bullish pattern:
   if CheckPatternAllBullish() return(true):
//--- no signal
   return(false);
  }

推奨

ダマシを減らすには、足の転換パターンを他のオシレーターなどのインジケーターで確認しなければなりません。

順張りパターンは 書籍"Strategies of best traders"が参考になります。 :

  • 3 Black Crows/3 White Soldiers
  • Dark Cloud Cover/Piercing Line
  • Morning Doji/Evening Doji
  • Bearish Engulfing/Bullish Engulfing
  • Evening Star/Morning Star
  • Hammer/Hanging Man
  • Bearish Harami/Bullish Harami
  • Bearish Meeting Lines/Bullish Meeting Lines

StochasticCCIMFIRSIによる確認

後に、MQL5 Wizardでのシグナルのクラスを行います。

MetaQuotes Ltdによってロシア語から翻訳されました。
元のコード: https://www.mql5.com/ru/code/291

MQL5 Wizard - ストキャスティクスをフィルターとした3 Black Crows/3 White Soldiersロウソク足パターン MQL5 Wizard - ストキャスティクスをフィルターとした3 Black Crows/3 White Soldiersロウソク足パターン

このトレードシグナルは、ストキャスティクスをフィルターとした"3 Black Crows/3 White Soldiers"ロウソク足パターンです。この戦略のエキスパートのコードは、MQL5ウィザードで自動生成させることができます。

MQL5 Wizard - ロウソク足の転換によるシグナル MQL5 Wizard - ロウソク足の転換によるシグナル

ロウソク足の転換によるシグナルです。この戦略のエキスパートのコードは、MQL5ウィザードで自動生成させることができます。

ChartNavigate Demo ChartNavigate Demo

ChartNavigate() 関数の使用例のシンプルなスクリプト

MQL5 Wizard - 商品チャネル指数(CCI)による条件付きの3 Black Crows/3 White Soldiersのシグナル MQL5 Wizard - 商品チャネル指数(CCI)による条件付きの3 Black Crows/3 White Soldiersのシグナル

商品チャネル指数(CCI)による条件付きの"3 Black Crows/3 White Soldiers"のシグナルを試すことができます。この戦略のエキスパートのコードは、MQL5ウィザードで自動生成させることができます。