MQL5ウィザードを使ったトレード信号生成 - ブル・ベアミーティングラインとMFIの活用法

Mike 2011.03.24 20:15 46 0 0
添付ファイル

皆さん、こんにちは!今日は、MQL5ウィザードを使って、トレード信号を生成する方法を紹介します。特に、ブル・ベアミーティングラインとMFI(マーケットファシリテーションインデックス)を活用した手法に焦点を当てます。

このウィザードを使えば、MetaTrader 5でのエキスパートアドバイザー(EA)を簡単に作成できます。まずは、トレードアイデアを素早く検証する方法について見ていきましょう。このプロセスでは、自分自身のトレード信号クラスを作成する必要があります。その構造と例については、こちらの記事MQL5ウィザード: トレード信号モジュールの作成方法を参照してください。

1. ブル・ベアミーティングラインとは?

1.1. ブル・ミーティングライン

このパターンは、同じような終値を持つ2つのキャンドル(ベアリッシュとブルリッシュ)で構成されています。2つのキャンドルのボディは、平均的なボディの長さよりも長い必要があります。

この「ブル・ミーティングライン」は、下向きのトレンドが反転することを示します。

ブル・ミーティングラインのパターン

Fig. 1. ブル・ミーティングラインのパターン

「ブル・ミーティングライン」の認識は、CheckPatternBullishMeetingLines()メソッドで実装されています。以下にそのコードの例を示します。

//+--------------------------------------------------------------------+
//| ブル・ミーティングラインの形成をチェックします |
//+--------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBullishMeetingLines()
  {
   if((Open(2)-Close(2)>AvgBody(1))&&
     ((Close(1)-Open(1))>AvgBody(1))&&
     (MathAbs(Close(1)-Close(2))<0.1*AvgBody(1)))
     return(true);
   return(false);
  }

2. MFIインジケーターによるトレード信号の確認

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

ポジションのクローズは、MFIの値に依存します。クローズ条件は以下の2つです:

  • 反対の重要レベルに達した場合(ロングポジションの場合は70、ショートポジションの場合は30)
  • 逆信号が確認されなかった場合(MFIが30(ロングポジション)または70(ショートポジション)に達した場合)

MFIインジケーターによる確認

Fig. 3. MFIインジケーターによる確認

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

  1. 「ブル・ミーティングライン」パターンの形成は、MFIインジケーターによって確認されなければなりません:MFI(1) < 40(最後の完成したバーのMFI値が40未満である必要があります)。

  2. ショートポジションは、MFIインジケーターが重要なレベルを上回った場合(70または30)にクローズされます。

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

CML_MFIクラスは標準ライブラリのクラスに含まれていないため、aml_mfi.mqhファイルをダウンロードし、クライアントターミナルのデータフォルダのに保存する必要があります。
次に、MQL5ウィザードを起動してエキスパートアドバイザーを作成します。

MQL5ウィザードでのエキスパートアドバイザー作成

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

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

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

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

次に、使用するトレード信号モジュールを選択します。

エキスパートアドバイザーの信号プロパティ

Fig. 6. エキスパートアドバイザーの信号プロパティ

私たちの場合、トレード信号モジュールは1つだけ使用します。

MFIによるブル・ベアミーティングラインに基づく信号」モジュールを追加します:

エキスパートアドバイザーの信号プロパティ

Fig. 7. エキスパートアドバイザーの信号プロパティ

トレード信号モジュールが追加されました:

エキスパートアドバイザーの信号プロパティ

Fig. 8. エキスパートアドバイザーの信号プロパティ

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

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

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

マネーマネジメントプロパティについては、「固定取引ボリュームでの取引」を使用します:

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

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

「完了」ボタンを押すと、生成されたエキスパートアドバイザーのコードが得られます。ファイルは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の入力パラメータは、ポジションを開くと閉じるための閾値を指定します。

ロングポジションとショートポジションの条件チェックメソッドでは、固定値が指定されています:

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

MQL5ウィザードによって生成されたエキスパートアドバイザーは、トレード信号モジュールからの「票」に基づいてポジションを開いたり閉じたりします。メインモジュールの票結果も使用されますが、LongCondition()とShortCondition()メソッドは常に0を返します。

このため、ThresholdOpenとThresholdCloseは、40=(0+80)/2および20=(0+40)/2として設定する必要があります。

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

4. バックテスト結果

エキスパートアドバイザーのバックテストを行いましょう。対象はEURUSDのH1チャートで、テスト期間は2000年1月1日から2011年3月16日までです。この場合、ストラテジーテスターを使用して最適な入力パラメータを見つけることができます。

バックテスト結果

Fig. 11. バックテスト結果

リスト
コメント 0