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

MQL5ウィザードで作成する「3つの黒いカラス」と「3つの白い兵士」に基づくトレードシグナル

添付ファイル
283.zip (6.6 KB, ダウンロード 1回)

皆さん、こんにちは!今日は、MQL5ウィザードを使って、トレードアイデアを素早く検証する方法をお話しします。特に、「3つの黒いカラス」と「3つの白い兵士」という逆転のローソク足パターンを、ストキャスティクス指標で確認する方法に焦点を当てます。

MQL5ウィザードでは、スタンダードライブラリのクラスを利用して、すぐに使えるエキスパートアドバイザー(EA)を作成できます。自分のトレードシグナルクラスを作成するだけで、取引アイデアをすぐにチェックすることができます。

トレードシグナルクラスは、CExpertSignalから派生させ、LongCondition()ShortCondition()のメソッドをオーバーライドする必要があります。

ここでは、逆転のローソク足パターンと、それを確認するためのインディケーターについて考察します。特に、ストキャスティクスCCIMFIRSIといったオシレーターを用います。

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

1.1. 3つの黒いカラス

このベアリッシュなローソク足パターンは、現在の上昇トレンドの反転を予測するために使用されます。3本の長いボディを持つローソク足が連続しており、前日よりも安く終わっています。それぞれのセッションのオープンは、前のローソク足のボディ内にあります。

3つの黒いカラスのパターン

図1. 「3つの黒いカラス」ローソク足パターン

このパターンの認識は、CCandlePatternクラスのCheckPatternThreeBlackCrowsメソッドで実装されています。

//+------------------------------------------------------------------+
//| 3つの黒いカラスのパターンをチェックするメソッド        |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternThreeBlackCrows()
{
    if((Open(3)-Close(3)>AvgBody(1)) && 
       (Open(2)-Close(2)>AvgBody(1)) &&
       (Open(1)-Close(1)>AvgBody(1)) &&
       (MidPoint(2)

1.2. 3つの白い兵士

このブルリッシュなローソク足パターンは、現在の下降トレンドの反転を示唆します。3本の長いボディを持つローソク足が連続しており、前日よりも高く終わっています。それぞれのセッションのオープンは、前のローソク足のボディ内にあります。

3つの白い兵士のパターン

図2. 「3つの白い兵士」ローソク足パターン

このパターンは、2日目のローソク足が1日目のレンジの上半分でオープンし、2日目の終わりには高値に近い位置で終わる限り有効です。

こちらも、CCandlePatternクラスのCheckPatternThreeWhiteSoldiersメソッドを使用してパターンを認識します。

//+------------------------------------------------------------------+
//| 3つの白い兵士のパターンをチェックするメソッド        |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternThreeWhiteSoldiers()
{
    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);
}

2. ストキャスティクス指標で確認されたトレードシグナル

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

オープンポジションのクローズは、%Dインディケーターの値に依存します。クローズは次の2つのケースで行われます:

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

ストキャスティクスによる確認

図3. ストキャスティクスによって確認された「3つの白い兵士」のパターン

取引条件のチェックは、次の2つのメソッドで実装されています:

  • int CBC_WS_Stoch::LongCondition() - ロングポジションを開く条件をチェック(結果は80)
  • int CBC_WS_Stoch::ShortCondition() - ショートポジションを開く条件をチェック(結果は80)

2.1. ロングポジションのオープン/ショートポジションのクローズ

  1. 「3つの白い兵士」パターンの形成は、ストキャスティクス指標によって確認される必要があります:StochSignal(1)<30(最終バーのストキャスティクスシグナルラインの値が30未満である必要があります)。

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

//+------------------------------------------------------------------+
//| 市場へのエントリーとエグジットの条件をチェック              |
//+------------------------------------------------------------------+
int CBC_WS_Stoch::LongCondition()
{
    int result=0;
    if (CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) && (StochSignal(1)<30))
        result=80;
    if ((((StochSignal(1)>20) && (StochSignal(2)<20)) || ((StochSignal(1)>80) && (StochSignal(2)<80))))
        result=40;
    return(result);
}

2.2. ショートポジションのオープン/ロングポジションのクローズ

  1. 「3つの黒いカラス」パターンの形成は、ストキャスティクス指標によって確認される必要があります:StochSignal(1)>70(最終バーのストキャスティクスシグナルラインの値が70より大きい必要があります)。

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

//+------------------------------------------------------------------+
//| 市場へのエントリーとエグジットの条件をチェック              |
//+------------------------------------------------------------------+
int CBC_WS_Stoch::ShortCondition()
{
    int result=0;
    if (CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) && (StochSignal(1)>70))
        result=80;
    if ((((StochSignal(1)<80) && (StochSignal(2)>80)) || ((StochSignal(1)<20) && (StochSignal(2)>20))))
        result=40;
    return(result);
}

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

CBC_WS_Stochクラスはスタンダードライブラリには含まれていないため、acbc_ws_stoch.mqhファイルをダウンロードし、クライアントターミナルのデータフォルダ内のMQL5/Include/Expert/Signal/MySignalsに保存する必要があります。これと同様にcandlepatterns.mqhファイルも保存してください。MQL5ウィザードで使用するには、MetaEditorを再起動する必要があります。

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

エキスパートアドバイザーの作成

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

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

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

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

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

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

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

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

ストキャスティクスで確認された3つの黒いカラス/3つの白い兵士に基づくシグナル」モジュールを追加します:

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

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

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

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

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

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

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

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

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

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

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

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

デフォルトの入力パラメータ

//--- メインシグナルの入力パラメータ
input int Signal_ThresholdOpen = 10; // オープンのためのシグナル閾値
input int Signal_ThresholdClose = 10; // クローズのためのシグナル閾値
input double Signal_PriceLevel = 0.0; // 取引を実行する価格レベル
input double Signal_StopLevel = 50.0; // ストップロスレベル(ポイント単位)
input double Signal_TakeLevel = 50.0; // テイクプロフィットレベル(ポイント単位)

これらは次のように置き換える必要があります:

//--- メインシグナルの入力パラメータ
input int Signal_ThresholdOpen = 40; // オープンのためのシグナル閾値
input int Signal_ThresholdClose = 20; // クローズのためのシグナル閾値
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を返します。

メインモジュールの投票結果も「投票」の平均化に使用されます。この場合、メインモジュール + 1つのトレードシグナルモジュールがあるため、閾値を設定する際にこの点を考慮する必要があります。

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

2.4. バックテスト結果

エキスパートアドバイザーのバックテストを行いましょう(EURUSD H1、テスト期間:2010.01.01-2011.02.02、PeriodK=47、PeriodD=9、PeriodSlow=13、MA_period=5)。

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

バックテスト結果

図11. 「3つの黒いカラス」と「3つの白い兵士」+ ストキャスティクスに基づくエキスパートアドバイザーのテスト結果

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

MQL5ウィザードによって生成されたエキスパートアドバイザーのコードは、expert_abc_ws_stoch.mq5に添付されています。

関連記事

コメント (0)