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

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

ビュー:
1442
評価:
(24)
パブリッシュ済み:
2015.10.29 12:49
アップデート済み:
2021.11.01 10:36
\MQL5\Include\Expert\Signal\MySignals\
このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動

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

全般的な考え方は下記のとおりです。: CExpertSignalでトレードシグナルのクラスを作ります。次に、LongCondition()ShortCondition()の仮想メソッドを無効にする必要があります。

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

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

Stochasticのフィルター付きの"3 Black Crows/3 White Soldiers"の転換足パターンのシグナルを考えてみましょう。トレードシグナルのモジュールは、CCandlePattern classに基づいています。ロウソク足のパターンによるシグナルの生成のシンプルな一例です。


1. 転換足パターンによる"3 Black Crows" and "3 White Soldiers"

1.1. 3 Black Crows

現在の上昇トレンドの転換としてのベア型のロウソク足このパターンは、それぞれの足の始値がひとつ前の足の実体の範囲内にある状態で、終値がひとつ前の終値よりも低い3つの連続した実体の長いロウソク足で形成される。

図1. "3 Black Crows"のロウソク足パターン

図1. "3 Black Crows"のロウソク足パターン

"3 Black Crows"は、CCandlePattern classの CheckPatternThreeBlackCrows method に実装されています。:

//+------------------------------------------------------------------+
//| Checks formation of "3 Black Crows" candlestick pattern          |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternThreeBlackCrows()
  {
//--- 3 Black Crows 
   if((Open(3)-Close(3)>AvgBody(1)) && // (long black)
      (Open(2)-Close(2)>AvgBody(1)) &&
      (Open(1)-Close(1)>AvgBody(1)) && 
      (MidPoint(2)<MidPoint(3))     && // (lower midpoints)
      (MidPoint(1)<MidPoint(2)))       
      return(true);
//---
   return(false);
  }

CCandlePattern class の CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) method は、"3 Black Crows"の確認に使います。


1.2. 3 White Soldiers

現在のカコウトレンドの転換を予想するのに使うブル型のロウソク足のパターンこのパターンは、それぞれの足の始値がひとつ前の足の実体の範囲内にある状態で、終値がひとつ前の終値よりも高い3つの連続した実体の長いロウソク足で形成される。

このパターンは、2日目の日足の始値が日中の半分よりも上にある限り、有効です。日の終わりごろに、極めて小さい上ヒゲを残して、高値付近で終値を迎えるはずです。同じパターンが3日目でも繰り返されます。

図2. "3 White Soldiers"

図2. "3 White Soldiers"

"3 White Soldiers"のメソッドです。:

//+------------------------------------------------------------------+
//| Checks formation of "3 White Soldiers" candlestick pattern       |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternThreeWhiteSoldiers()
  {
   //--- 3 White Soldiers
   if((Close(3)-Open(3)>AvgBody(1)) && // long white
      (Close(2)-Open(2)>AvgBody(1)) &&
      (Close(1)-Open(1)>AvgBody(1)) &&
      (MidPoint(2)>MidPoint(3))     && // higher midpoints
      (MidPoint(1)>MidPoint(2)))
      return(true);
//---
   return(false);
  }

CCandlePattern class の CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) method を、"3 White Soldiers"で使います。


2. ストキャスティクスによるフィルター付きのシグナル

買いや売りのシグナルは、Stochasticで確認する必要があります。signal %D lineは、それぞれの基準レベルよりも高いか、低くなければなりません。(30 か 70).

ポジションの決済は、%Dの値で決めます。2通りのケースがあります。:

  1. %Dが反対側の基準レベルに到達した (買いポジションなら80、売りポジションなら20)
  2. 逆のシグナルが発生しなかった(%Dが基準点に達した: 買いポジションなら20、売りポジションなら80)

図3. ストキャスティクスによる条件付きの"3 White Soldiers"

図3. ストキャスティクスによる条件付きの"3 White Soldiers"


エントリー・決済条件の確認は2つのメソッドに実装されています。:

  • int CBC_WS_Stoch::LongCondition() - 買いポジションのエントリー条件(80) と 売りポジションの決済条件 (40);
  • int CBC_WS_Stoch::ShortCondition() - 売りポジションのエントリー条件(80) と 買いポジションの決済条件 (40)

2.1. 買いポジション/売りポジションの決済

  1. "Three White Soldiers"の条件は、 Stochasticで確認する必要があります。: StochSignal(1)<30 (直近の確定足のストキャスティクスのシグナルラインが30よりも低い)

  2. Stochasticのシグナルラインが20か80ラインを上抜けしたら、売りポジションは決済するべきです。

//+------------------------------------------------------------------+
//| Checks conditions for entry and exit from market                 |
//| 1) Market entry (open long position, result=80)                  |
//| 2) Market exit (close short position, result=40)                 |
//+------------------------------------------------------------------+
int CBC_WS_Stoch::LongCondition()
  {
   int result=0;
//--- idx can be used to determine Expert Advisor work mode
//--- idx=0 - in this case EA checks trade conditions at each tick
//--- idx=1 - in this case EA checks trade consition only at news bars
   int idx   =StartIndex();
//--- checking of conditions to open long position
//--- formation of 3 White Soldiers pattern and signal line<30
  if (CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) && (StochSignal(1)<30))
     result=80;
//--- checking of conditions to close short position
//--- signal line crossover of overbought/oversold levels (downward 20, upward 80)
   if((((StochSignal(1)>20) && (StochSignal(2)<20)) ||
       ((StochSignal(1)>80) && (StochSignal(2)<80))))
     result=40;
//--- return result
   return(result);
  }

2.2. 売りポジション/買いポジションの決済

  1. "Three Black Crows"の条件は、Stochasticで確認する必要があります。: StochSignal(1)>70 (直近の確定足のストキャスティクスのシグナルラインが70よりも高い)

  2. Stochasticのシグナルラインが20か80ラインを下抜けしたら、買いポジションは決済するべきです。

//+------------------------------------------------------------------+
//| Checks conditions for entry and exit from market                 |
//| 1) Market entry (open short position, result=80)                 |
//| 2) Market exit (close long position, result=40)                  |
//+------------------------------------------------------------------+
int CBC_WS_Stoch::ShortCondition()
  {
   int result=0;
//--- idx can be used to determine Expert Advisor work mode
//--- idx=0 - in this case EA checks trade conditions at each tick
//--- idx=1 - in this case EA checks trade consition only at news bars
   int idx   =StartIndex();
//--- checking of conditions to open short position
//--- formation of 3 Black Crows pattern and signal line>70
  if (CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) && (StochSignal(1)>70))
     result=80;
//--- checking of conditions to close long position
//--- signal line crossover of overbought/oversold levels (downward 80, upward 20)
   if((((StochSignal(1)<80) && (StochSignal(2)>80)) ||
       ((StochSignal(1)<20) && (StochSignal(2)>20))))
     result=40;
//--- return result
   return(result);
  }


2.3. MQL5 WizardでEAを生成する

CBC_WS_Stoch class はStandard Library classesにありません。利用するには、acbc_ws_stoch.mqhをダウンロードして、client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignalsに保存する必要があります。 (添付参照)candlepatterns.mqh も同様の処理が必要です。MQL5 Wizardを使うには、MetaEditorを再起動する必要があります。

エキスパートアドバイザーを生成するには、MQL5 Wizardを立ち上げてください。:

図4. MQL5 WizardでEAを生成する

図4. MQL5 WizardでEAを生成する

エキスパートアドバイザーの名前を決めましょう。:

図5. エキスパートアドバイザーの一般設定

図5. エキスパートアドバイザーの一般設定

トレードシグナルのモジュールを選択します。

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

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

今回の場合、モジュールは1つだけ使います。

"Signals based on 3 Black Crows/3 White Soldiers confirmed by Stochastic" のモジュールを追加

図7. エキスパートアドバイザーのシグナルプロパティSignal properties  of the Expert Advisor

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

シグナルの追加モジュール:

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

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

トレーリングプロパティにも様々なものがありますが、今回は"Trailing Stop not used"にします。:

図9. エキスパートアドバイザーのトレーリングプロパティTrailing properties of the Expert Advisor

図9. エキスパートアドバイザーのトレーリングプロパティTrailing properties of the Expert Advisor

資金管理プロパティとして、"Trading with fixed trade volume"(単利)を使います。:

図10エキスパートアドバイザーの資金管理プロパティMoney management properties of the Expert Advisor

図10エキスパートアドバイザーの資金管理プロパティMoney management properties of the Expert Advisor

"Finish"ボタンを押すと、エキスパートアドバイザーがExpert_ABC_WS_Stoch.mq5に生成されます。 保存場所はterminal_data_folder\MQL5\Experts\です。

生成後のエキスパートアドバイザーのデフォルトのパラメーター:

//--- inputs for main signal
input int            Signal_ThresholdOpen   =10;     // Signal threshold value to open [0...100]
input int            Signal_ThresholdClose  =10;     // Signal threshold value to close [0...100]
input double         Signal_PriceLevel      =0.0;    // Price level to execute a deal
input double         Signal_StopLevel       =50.0;   // Stop Loss level (in points)
input double         Signal_TakeLevel       =50.0// Take Profit level (in points)

上記は下記にしなければなりません。:

//--- inputs for main signal
input int            Signal_ThresholdOpen   =40;     // Signal threshold value to open [0...100]
input int            Signal_ThresholdClose  =20;     // Signal threshold value to close [0...100]
input double         Signal_PriceLevel      =0.0;    // Price level to execute a deal
input double         Signal_StopLevel       =0.0;    // Stop Loss level (in points)
input double         Signal_TakeLevel       =0.0;    // Take Profit level (in points)

Signal_ThresholdOpen/Signal_ThresholdClose パラメーターは、ポジションのオープン、決済の最初のレベルを決めます。

LongCondition() と ShortCondition() のメソッドのコードの中に、デフォルトの固定値が入っています。:

  • エントリー: 80;
  • 決済: 40.

MQL5 Wizard で生成したエキスパートアドバイザーは、トレードシグナルのモジュールの"ボート"を使ってエントリー、決済を行います。メインモジュール(コンテナとして、すべての追加モジュールを含む)のボートもまた、使われますが、 LongCondition() と ShortCondition() メソッドは常に0を返します。

メインモジュールの評価結果は、"ボート"平均が使われます。今回の場合、メインモジュールとシグナルのモジュールがあるので、初期値を与えるときには、このことを考慮に入れなければいけません。そのことにより、ThresholdOpen と ThresholdClose は、 40=(0+80)/2 and 20=(0+40)/2に設定しなければなりません。

Signal_StopLevel と Signal_TakeLevel パラメーターの値は、0にします。これは、ポジションの決済は、決済条件がtrueのときにのみ行われるということを表します。


2.4. バックテスト結果

過去データでエキスパートアドバイザーをテストしてみましょう。 (EURUSD H1, テスト期間: 2010.01.01-2011.02.02, PeriodK=47, PeriodD=9, PeriodSlow=13, MA_period=5).

エキスパートアドバイザーの生成において、今回は固定ロット(Trading Fixed Lot, 0.1), トレーリングストップ(Trailing not used)はなしを選択しました。


図11. 3 Black Crows/3 White Soldiers + Stochastic"のテスト結果

図11. 3 Black Crows/3 White Soldiers + Stochastic"のテスト結果


パラメーターの最適な設定値は、MetaTrader 5 client terminalのStrategy Testerで探すことができます。

MQL5 Wizard で生成したコードは、expert_abc_ws_stoch.mq5です。

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

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

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

MQL5 Wizard - アリゲーターのクロスによるトレードシグナル MQL5 Wizard - アリゲーターのクロスによるトレードシグナル

アリゲーターのクロスによるトレードシグナルを検証することができます。この戦略のエキスパートのコードは、MQL5ウィザードで自動生成させることができます。

MQL5 Wizard - 足の転換によるシグナル MQL5 Wizard - 足の転換によるシグナル

このクラスは、足の転換によるシグナルの生成に使います。

ChartNavigate Demo ChartNavigate Demo

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