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

MQL5ウィザードを使ったダーククラウドカバー/ピアシングラインとストキャスティクスによるトレードシグナル

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

トレーダーの皆さん、こんにちは!今日は、MQL5ウィザードを使用して、ダーククラウドカバーやピアシングラインの逆転パターンに基づくトレードシグナルを作成する方法についてお話しします。これにより、取引アイデアをすばやく確認できるので、ぜひ最後までご覧ください。

まず、トレードシグナルのクラスを作成する必要があります。このクラスは、CExpertSignalから派生させます。次に、LongCondition()およびShortCondition()のメソッドをオーバーライドして、自分のメソッドを実装します。

ここで注目したいのは、ダーククラウドカバーとピアシングラインの逆転パターンです。これらのパターンは、ストキャスティクスなどのオシレーターによって確認されます。

1. ダーククラウドカバーとピアシングラインの逆転パターン

1.1 ダーククラウドカバー

これは、上昇トレンドの終わりに現れるベアリッシュな逆転パターンです。初日には長い白いローソク足が形成され、二日目にはギャップアップが生じます。しかし、二日目の終値は初日の中間値を下回ります。

ダーククラウドカバー

ダーククラウドカバーのパターンは、CCandlePatternクラスのCheckPatternDarkCloudCover()メソッドで実装されています。

//+------------------------------------------------------------------+
//| ダーククラウドカバーの形成を確認するメソッド              |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternDarkCloudCover()
  {
   //--- ダーククラウドカバー
   if((Close(2)-Open(2)>AvgBody(1))  && // (長い白)
      (Close(1)<Close(2))            && // 
      (Close(1)>Open(2))            && // (前のボディ内で終了)
      (MidOpenClose(2)>CloseAvg(1))  && // (上昇トレンド)
      (Open(1)>High(2)))                // (新しい高値でオープン)
      return(true);
//---
   return(false);
  }

CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER)メソッドは、ダーククラウドカバーの形成を確認するために使用されます。


1.2 ピアシングライン

二日目のギャップダウンは下降トレンドを続けますが、二日目の終値は初日のボディの中間値を超えます。これは、底が形成される可能性を示唆します。ローソク足チャートで見ると、この価格アクションは非常に明確です。

ピアシングライン

ピアシングラインのパターンは、CCandlePatternクラスのCheckPatternPiercingLine()メソッドで実装されています。

//+------------------------------------------------------------------+
//| ピアシングラインの形成を確認するメソッド              |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternPiercingLine()
  {
   //--- ピアシングライン
   if((Close(1)-Open(1)>AvgBody(1)) && // (長い白)
      (Open(2)-Close(2)>AvgBody(1)) && // (長い黒)
      (Close(1)>Close(2))           && //  
      (Close(1)<Open(2))            && // (前のボディ内で終了)
      (MidOpenClose(2)<CloseAvg(2)) && // (下降トレンド)
      (Open(1)<Low(2)))                // (前のローの下でオープン)
      return(true);
//---
   return(false);
  }

CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE)メソッドは、ピアシングラインの形成を確認するために使用されます。


2. ストキャスティクスによって確認されたトレードシグナル

ロングまたはショートポジションを開くためのトレーディングシグナルは、ストキャスティクスオシレーターによって確認される必要があります。シグナルの%Dラインは、それぞれのクリティカルレベル(30または70)を超える必要があります。

オープンしたポジションのクローズは、%Dインジケーターの値に依存します。クローズは以下の2つの条件で行うことができます:

  • %Dラインが反対のクリティカルレベル(ロングポジションの場合は80、ショートポジションの場合は20)に達した場合
  • 逆のシグナルが確認されない場合(%Dラインが次のレベルに達した場合:ロングポジションの場合は20、ショートポジションの場合は80)

ダーククラウドカバーのパターン、ストキャスティクスによって確認された

ダーククラウドカバーのパターン、ストキャスティクスによって確認された


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

  1. 「ピアシングライン」パターンの形成は、ストキャスティクスオシレーターによって確認されなければなりません:StochSignal(1)<30(ストキャスティクスのシグナルラインの値が30未満である必要があります)。

  2. ショートポジションは、ストキャスティクスオシレーターのシグナルラインが20または80のレベルを上抜けした場合にクローズする必要があります。

//+------------------------------------------------------------------+
//| マーケットへのエントリーとエグジットの条件を確認するメソッド |
//| 1) マーケットエントリー(ロングポジションを開く、結果=80)     |
//| 2) マーケットエグジット(ショートポジションをクローズ、結果=40)|
//+------------------------------------------------------------------+
int CDC_PL_Stoch::LongCondition()
  {
   int result=0;
   //--- idxはExpert Advisorの動作モードを決定するために使用できます
   //--- idx=0 - この場合、EAは各ティックで取引条件を確認します
   //--- idx=1 - この場合、EAはニュースバーでのみ取引条件を確認します
   int idx   =StartIndex();
   //--- ロングポジションを開く条件を確認
   //--- ピアシングラインパターンとシグナルライン<30
  if (CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) && (StochSignal(1)<30))
     result=80;
   //--- ショートポジションをクローズする条件を確認
   //--- シグナルラインがオーバーボート/オーバーソールドレベルをクロスする(下方向20、上方向80)
   if((((StochSignal(1)>20) && (StochSignal(2)<20)) ||
       ((StochSignal(1)>80) && (StochSignal(2)<80))))
     result=40;
   //--- 結果を返す
   return(result);
  }

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

  1. 「ダーククラウドカバー」パターンの形成は、ストキャスティクスオシレーターによって確認されなければなりません:StochSignal(1)>70(ストキャスティクスのシグナルラインの値が70を超える必要があります)。

  2. ロングポジションは、ストキャスティクスオシレーターのシグナルラインが下方向80または20のレベルをクロスした場合にクローズする必要があります。

//+------------------------------------------------------------------+
//| マーケットへのエントリーとエグジットの条件を確認するメソッド |
//| 1) マーケットエントリー(ショートポジションを開く、結果=80)    |
//| 2) マーケットエグジット(ロングポジションをクローズ、結果=40)|
//+------------------------------------------------------------------+
int CDC_PL_Stoch::ShortCondition()
  {
   int result=0;
   //--- idxはExpert Advisorの動作モードを決定するために使用できます
   //--- idx=0 - この場合、EAは各ティックで取引条件を確認します
   //--- idx=1 - この場合、EAはニュースバーでのみ取引条件を確認します
   int idx   =StartIndex();
   //--- ショートポジションを開く条件を確認
   //--- ダーククラウドカバーの形成とシグナルライン>70
  if (CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) && (StochSignal(1)>70))
     result=80;
   //--- ロングポジションをクローズする条件を確認
   //--- シグナルラインがオーバーボート/オーバーソールドレベルをクロスする(下方向80、上方向20)
   if((((StochSignal(1)<80) && (StochSignal(2)>80)) ||
       ((StochSignal(1)<20) && (StochSignal(2)>20))))
     result=40;
   //--- 結果を返す
   return(result);
  }

2.3 MQL5ウィザードを使ったExpert Advisorの作成

CDC_PL_Stochクラスは、スタンダードライブラリのクラスに含まれていないため、adc_pl_stoch.mqhファイルをダウンロードし、client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignalsに保存する必要があります。同様に、candlepatterns.mqhファイルも保存してください。これを行った後、MetaEditorを再起動するとMQL5ウィザードで使用できるようになります。

Expert Advisorを作成するために、MQL5ウィザードを起動します。

Expert Advisorの作成

Expert Advisorの作成

Expert Advisorの名前を指定します:

Expert Advisorの一般的なプロパティ

Expert Advisorの一般的なプロパティ

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

Expert Advisorのシグナルプロパティ

Expert Advisorのシグナルプロパティ

私たちのケースでは、トレードシグナルのモジュールは1つだけ使用します。

ストキャスティクスによって確認されたダーククラウドカバー/ピアシングラインに基づくシグナル」のモジュールを追加します:

Expert Advisorのシグナルプロパティ

Expert Advisorのシグナルプロパティ

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

Expert Advisorのシグナルプロパティ

Expert Advisorのシグナルプロパティ

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

Expert Advisorのトレイリングプロパティ

Expert Advisorのトレイリングプロパティ

マネーマネジメントプロパティに関しては、「固定取引量での取引」を使用します:

Expert Advisorのマネーマネジメントプロパティ

Expert Advisorのマネーマネジメントプロパティ

「完了」ボタンを押すことで、生成されたExpert Advisorのコードを取得できます。このコードはExpert_ADC_PL_Stoch.mq5として保存され、terminal_data_folder\MQL5\Experts\に格納されます。

生成されたExpert Advisorのデフォルト入力パラメータ:

//--- メインシグナルの入力パラメータ
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ウィザードによって生成されたExpert Advisorは、トレードシグナルのモジュールからの「投票」を使用してポジションを開閉します。メインモジュールの投票結果も「投票」平均に使用されます。ただし、メインモジュールの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.02.02、PeriodK=9、PeriodD=5、PeriodSlow=20、MA_period=27)。

Expert Advisorの作成時には固定ボリュームを使用し、固定ロットでの取引(0.1)を適用しました。トレイリングストップアルゴリズムは使用していません。

Expert Advisorのテスト結果

ダーククラウドカバー/ピアシングライン + ストキャスティクスに基づくExpert Advisorのテスト結果


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

生成されたExpert Advisorのコードは、expert_adc_pl_stoch.mq5として添付されています。

関連記事

コメント (0)