ホーム システムトレード 投稿

MQL5ウィザードで作成する「3本の黒いカラス/3本の白い兵士」トレードシグナルとMFIの活用法

添付ファイル
287.zip (6.5 KB, ダウンロード 0回)

皆さん、こんにちは!今日は、MQL5ウィザードを使って、トレードシグナルを簡単に作成する方法をご紹介します。特に「3本の黒いカラス」や「3本の白い兵士」といった逆転のローソク足パターンに基づいたシグナルを、MFI(マーケットファシリテーションインデックス)で確認する方法です。

このウィザードを使うと、MetaTrader 5のクライアント端末に同梱されている標準ライブラリを活用して、すぐに使えるエキスパートアドバイザー(EA)を作成できます。トレードアイデアを素早くチェックできるので、自分のトレーディングシグナルクラスを作成するだけでOKです。詳細については、MQL5ウィザードでのエキスパートアドバイザーの作成を参照してください。

このシグナルクラスは、CExpertSignalから派生し、LongCondition()ShortCondition()という仮想メソッドをオーバーライドする必要があります。

ロシア語の本、「ベストトレーダーの戦略」では、多くのトレーディング戦略が考察されていますが、今回は逆転のローソク足パターンに焦点を当て、ストキャスティクスCCIMFIRSIのオシレーターによって確認されたパターンを探ります。

最も効果的なのは、ローソク足パターンの形成を確認するために、CExpertSignalから派生した別のクラスを作成することです。ローソク足パターンによって生成されたトレードシグナルを確認するためには、CCandlePatternから派生したクラスを作成し、必要な機能(例えば、オシレーターによる確認)を追加するだけです。

1.「3本の黒いカラス」と「3本の白い兵士」の逆転ローソク足パターン

1.1. 3本の黒いカラス

このベアリッシュなローソク足パターンは、現在の上昇トレンドの反転を予測するために使用されます。このパターンは、3本の連続した長いボディのローソク足で構成されており、各セッションのオープンが前日のボディ内で発生し、前日よりも低い位置でクローズします。

Fig. 1. '3本の黒いカラス' ローソク足パターン

Fig. 1. '3本の黒いカラス' ローソク足パターン

「3本の黒いカラス」パターンの認識は、CCandlePatternクラスのCheckPatternThreeBlackCrowsメソッドで実装されています:

//+------------------------------------------------------------------+
//| '3本の黒いカラス' ローソク足パターンの形成をチェックします       |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternThreeBlackCrows()
  {
//--- 3本の黒いカラス
   if((Open(3)-Close(3)>AvgBody(1)) && // (長い黒)
      (Open(2)-Close(2)>AvgBody(1)) &&
      (Open(1)-Close(1)>AvgBody(1)) && 
      (MidPoint(2)3))     && // (下位のミッドポイント)
      (MidPoint(1)2)))       
      return(true);
//---
   return(false);
  }

CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS)メソッドを使って、「3本の黒いカラス」ローソク足パターンの形成を確認します。


1.2. 3本の白い兵士ローソク足パターン

このブルリッシュなローソク足パターンは、現在の下落トレンドの反転を予測するために使用されます。このパターンは、3本の連続した長いボディのローソク足で構成され、各セッションのオープンが前日のボディ内で発生し、前日よりも高い位置でクローズします。

このパターンは、2日目のキャンドルが1日目の範囲の上半分でオープンする限り有効です。2日目の終わりには高値近くでクローズし、上ヒゲが非常に小さいか存在しない状態になります。そして、3日目には同じパターンが繰り返されます。

Fig. 2. '3本の白い兵士' ローソク足パターン

Fig. 2. '3本の白い兵士' ローソク足パターン

「3本の白い兵士」パターンの認識方法は以下の通りです:

//+------------------------------------------------------------------+
//| '3本の白い兵士' ローソク足パターンの形成をチェックします       |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternThreeWhiteSoldiers()
  {
   //--- 3本の白い兵士
   if((Close(3)-Open(3)>AvgBody(1)) && // 長い白
      (Close(2)-Open(2)>AvgBody(1)) && 
      (Close(1)-Open(1)>AvgBody(1)) &&
      (MidPoint(2)>MidPoint(3))     && // 上位のミッドポイント
      (MidPoint(1)>MidPoint(2)))
      return(true);
//---
   return(false);
  }

CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS)メソッドを使って、「3本の白い兵士」ローソク足パターンの形成を確認します。


2. MFIインジケーターで確認されたトレードシグナル

ロングまたはショートポジションを開くためのトレードシグナルは、MFIインジケーターによって確認される必要があります。ロングポジションの場合はMFIの値が40未満、ショートポジションの場合は60を超える必要があります。

オープンポジションのクローズは、MFIインジケーターの値によって決まります。以下の2つのケースで行われます:

  1. MFIが逆の臨界レベル(ロングポジションの場合は70、ショートポジションの場合は30)に達した場合。
  2. 逆シグナルが確認されなかった場合(MFIが次のレベルに達した時:ロングポジションの場合は30、ショートポジションの場合は70)。

Fig. 3. '3本の黒いカラス' パターン、MFIインジケーターで確認

Fig. 3. '3本の黒いカラス' パターン、MFIインジケーターで確認


  • int CBC_WS_MFI::LongCondition() - ロングポジションを開く条件をチェック(80を返す)し、ショートポジションのクローズ条件をチェック(40を返す)。
  • int CBC_WS_MFI::ShortCondition() - ショートポジションを開く条件をチェック(80を返す)し、ロングポジションのクローズ条件をチェック(40を返す)。

2.1. ロングポジションを開く/ショートポジションをクローズする

  1. 「3本の白い兵士」パターンの形成は、MFIインジケーターによって確認されなければなりません:MFi(1)<40(最後の完了したバーのMFIインジケーターの値が40未満である必要があります)。

  2. ショートポジションは、MFIインジケーターが臨界レベル(70または30)を上に越えた場合にクローズしなければなりません。

//+------------------------------------------------------------------+
//| マーケットへのエントリーとエグジット条件をチェックします                 |
//| 1) エントリー(ロングポジションをオープン、結果=80)                  |
//| 2) エグジット(ショートポジションをクローズ、結果=40)                 |
//+------------------------------------------------------------------+
int CBC_WS_MFI::LongCondition()
  {
   int result=0;
//--- idxはエキスパートアドバイザーの動作モードを決定するために使用できます
//--- idx=0 - この場合、EAは各ティックでトレード条件をチェックします
//--- idx=1 - この場合、EAはニュースバーでのみトレード条件をチェックします
  int idx   =StartIndex();
//--- ロングポジションを開く条件のチェック
//--- 3本の白い兵士パターンとMFI<40
  if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) && (MFI(1)<40))
     result=80;
//--- ショートポジションをクローズする条件のチェック
//--- シグナルラインのオーバーボート/オーバーソールドレベルのクロスオーバー(上昇30、上昇70)
  if(((MFI(1)>30) && (MFI(2)<30)) || ((MFI(1)>70) && (MFI(2)<70)))
     result=40;
//--- 結果を返す
   return(result);
  }


2.2. ショートポジションを開く/ロングポジションをクローズする

  1. 「3本の黒いカラス」パターンの形成は、MFIインジケーターによって確認されなければなりません:MFI(1)>60(最後の完了したバーのMFIインジケーターの値が60を超えている必要があります)。

  2. ロングポジションは、MFIインジケーターが臨界レベル(70または30)を上に越えた場合にクローズしなければなりません。

//+------------------------------------------------------------------+
//| マーケットへのエントリーとエグジット条件をチェックします                 |
//| 1) エントリー(ショートポジションをオープン、結果=80)                 |
//| 2) エグジット(ロングポジションをクローズ、結果=40)                  |
//+------------------------------------------------------------------+
int CBC_WS_MFI::ShortCondition()
  {
   int result=0;
//--- idxはエキスパートアドバイザーの動作モードを決定するために使用できます
//--- idx=0 - この場合、EAは各ティックでトレード条件をチェックします
//--- idx=1 - この場合、EAはニュースバーでのみトレード条件をチェックします
  int idx   =StartIndex();
//--- ショートポジションを開く条件のチェック
//--- 3本の黒いカラスパターンとMFI>60
  if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) && (MFI(1)>60))
     result=80;
//--- ロングポジションをクローズする条件のチェック
//--- シグナルラインのオーバーボート/オーバーソールドレベルのクロスオーバー(上昇70、下降30)
  if(((MFI(1)>70) && (MFI(2)<70)) || ((MFI(1)<30) && (MFI(2)>30)))
     result=40;
//--- 結果を返す
   return(result);
  }


2.3. MQL5ウィザードを使ったエキスパートアドバイザーの作成

CBC_WS_MFIクラスは標準ライブラリのクラスには含まれていないため、使用するにはabc_ws_mfi.mqhファイルをダウンロードし、client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignalsに保存する必要があります。同様に、acandlepatterns.mqhファイルも行います。MQL5ウィザードでは、MetaEditorを再起動した後に使用できます。

エキスパートアドバイザーを作成するには、MQL5ウィザードを起動します:

Fig. 4. MQL5ウィザードを使ったエキスパートアドバイザーの作成

Fig. 4. MQL5ウィザードを使ったエキスパートアドバイザーの作成

エキスパートアドバイザーの名前を指定します:

Fig. 5. エキスパートアドバイザーの一般的なプロパティ

Fig. 5. エキスパートアドバイザーの一般的なプロパティ

次に、使用するトレードシグナルのモジュールを選択します。

Fig. 6. エキスパートアドバイザーのシグナルプロパティ

Fig. 6. エキスパートアドバイザーのシグナルプロパティ

この場合、トレードシグナルのモジュールは1つだけ使用します。

MFIで確認された3本の黒いカラス/3本の白い兵士に基づくシグナル」モジュールのトレーディングシグナルを追加します:

Fig. 7. エキスパートアドバイザーのシグナルプロパティ

Fig. 7. エキスパートアドバイザーのシグナルプロパティ

トレードシグナルモジュールが追加されました:

Fig. 8. エキスパートアドバイザーのシグナルプロパティ

Fig. 8. エキスパートアドバイザーのシグナルプロパティ

任意のトレーリングプロパティを選択できますが、「トレーリングストップは使用しない」を選択します:

Fig. 9. エキスパートアドバイザーのトレーリングプロパティ

Fig. 9. エキスパートアドバイザーのトレーリングプロパティ

マネーマネジメントのプロパティについては、「固定取引量でのトレード」を選択します:

Fig. 10. エキスパートアドバイザーのマネーマネジメントプロパティ

Fig. 10. エキスパートアドバイザーのマネーマネジメントプロパティ

「完了」ボタンを押すと、生成されたエキスパートアドバイザーのコードが得られ、Expert_ABC_WS_MFI.mq5に保存されます。これは、terminal_data_folder\MQL5\Experts\に保存されます。

生成されたエキスパートアドバイザーのデフォルト入力パラメータは次の通りです:

//--- メインシグナル用の入力
input int            Signal_ThresholdOpen   =10;     // 開くためのシグナル閾値[0...100]
input int            Signal_ThresholdClose  =10;     // 閉じるためのシグナル閾値[0...100]
input double         Signal_PriceLevel      =0.0;    // 取引を実行するための価格レベル
input double         Signal_StopLevel       =50.0;   // ストップロスレベル(ポイント単位)
input double         Signal_TakeLevel       =50.0    // テイクプロフィットレベル(ポイント単位)

これを以下のように置き換える必要があります:

//--- メインシグナル用の入力
input int            Signal_ThresholdOpen   =40;     // 開くためのシグナル閾値[0...100]
input int            Signal_ThresholdClose  =20;     // 閉じるためのシグナル閾値[0...100]
input double         Signal_PriceLevel      =0.0    // 取引を実行するための価格レベル
input double         Signal_StopLevel       =0.0    // ストップロスレベル(ポイント単位)
input double         Signal_TakeLevel       =0.0    // テイクプロフィットレベル(ポイント単位)

Signal_ThresholdOpen/Signal_ThresholdClose入力パラメータは、ポジションのオープンとクローズのための閾値レベルを指定することができます。

LongCondition()およびShortCondition()メソッドのコード内では、閾値の固定値を指定しています:

  • ポジションオープン: 80;
  • ポジションクローズ: 40。

MQL5ウィザードによって生成されたエキスパートアドバイザーは、トレードシグナルモジュールからの「投票」を使用してポジションを開き、クローズします。メインモジュールの投票も使用されますが、そのLongCondition()とShortCondition()メソッドは常に0を返します。

メインモジュールの投票結果も「投票」の平均化に使用されます。この場合、メインモジュール+1のトレードシグナルモジュールがあるため、閾値の設定時にこの事実を考慮する必要があります。したがって、ThresholdOpenとThresholdCloseは40=(0+80)/2、20=(0+40)/2として設定する必要があります。

Signal_StopLevelとSignal_TakeLevelの入力パラメータが0に設定されている場合、ポジションのクローズは、クローズ条件が真である場合のみ行われます。


2.4. バックテストの結果

エキスパートアドバイザーのバックテストを行い、過去データ(EURUSD H1、テスト期間:2010.01.01-2011.03.16、PeriodMFI=37、MA_period=13)を確認します。

エキスパートアドバイザーの作成時には、固定ボリュームを使用しました(固定ロット取引、0.1)、トレーリングストップアルゴリズムは使用していません(トレーリングなし)。

Fig. 11. '3本の黒いカラス/3本の白い兵士 + MFI' に基づくエキスパートアドバイザーのテスト結果

Fig. 11. '3本の黒いカラス/3本の白い兵士 + MFI' に基づくエキスパートアドバイザーのテスト結果


最適な入力パラメータのセットは、MetaTrader 5クライアント端末のストラテジーテスターを使用して見つけることができます。

MQL5ウィザードで作成されたエキスパートアドバイザーのコードがexpert_abc_ws_mfi.mq5に添付されています。


関連記事

コメント (0)