私たちのファンページに参加してください
![エキスパート](https://c.mql5.com/i/code/expert.png)
MQL5 Wizard - Stochasticの条件付きの"Dark Cloud Cover/Piercing Line"のロウソク足パターンによるシグナル - MetaTrader 5のためのエキスパート
- ビュー:
- 1343
- 評価:
- パブリッシュ済み:
- 2015.11.06 08:53
- アップデート済み:
- 2016.11.22 07:34
-
このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動
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" (ロシア)という著書があります。 そこには数多くの手法と方法が記述されており、転換足パターンを Stochastic、 CCI、 MFI、 RSIの条件のもと、焦点を当てていきます。
最も良い方法は、ロウソク足のパターンの確認に、CExpertSignalから導かれるクラスを切り分けて生成することです。ロウソク足のパターンによるトレードシグナルの確認には、CCandlePatternのクラスを書いて、必要な条件例えば、オシレーターの確認など)を追加すれば十分です。
Stochasticの条件付きの "Dark Cloud Cover/Piercing Line"のシグナルを考えてみます。トレードシグナルのモジュールは、CCandlePattern classに基づいています。ロウソク足のパターンによるシグナルの生成のシンプルな一例です。
1."Dark Cloud Cover" と "Piercing Line" のロウソク足の転換パターン
1.1.Dark Cloud Cover
上昇トレンドの最後に起こる、ベア型のロウソク足の転換です。一日目に長い白いロウソク足が形成され、上の窓が2日目に形成される。しかし、2日目の終値が1日目の真ん中よりも下にある。
図1. "Dark Cloud Cover" ロウソク足パターン
"Dark Cloud Cover"は、 CCandlePattern の CheckPatternDarkCloudCover() メソッドに実装されています。:
//+------------------------------------------------------------------+ //| Checks formation of "Dark Cloud Cover" candlestick pattern | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternDarkCloudCover() { //--- Dark Cloud Cover if((Close(2)-Open(2)>AvgBody(1)) && // (long white) (Close(1)<Close(2)) && // (Close(1)>Open(2)) && // (close within previous body) (MidOpenClose(2)>CloseAvg(1)) && // (uptrend) (Open(1)>High(2))) // (open at new high) return(true); //--- return(false); }
クラスCCandlePattern のメソッドCheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) が、"Dark Cloud Cover"の確認に使います。
1.2. Piercing Line
2日目の下窓は下降トレンドを延長している。しかし、2日目の終値が1日目のロウソク足の実体の真ん中よりも上にある。このことは、ベアが底にあるということを示唆します。:このプライスアクションは、ロウソク足チャートとバーチャートでは判別可能な違いはありません。2日目の終値が1日目の実体を超えれば超えるほど、反転シグナルは成功率が高くなります。
図2. "Piercing Line"ロウソク足パターン
"Piercing Line"は、 CCandlePatternのCheckPatternPiercingLine() method に実装されています。:
//+------------------------------------------------------------------+ //| Checks formation of "Piercing Line" candlestick pattern | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternPiercingLine() { //--- Piercing Line if((Close(1)-Open(1)>AvgBody(1)) && // (long white) (Open(2)-Close(2)>AvgBody(1)) && // (long black) (Close(1)>Close(2)) && // (Close(1)<Open(2)) && // (close inside previous body) (MidOpenClose(2)<CloseAvg(2)) && // (downtrend) (Open(1)<Low(2))) // (open lower than previous Low) return(true); //--- return(false); }
CCandlePattern class のCheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) method を、 "Piercing Line"で使います。
2. ストキャスティクスによるフィルター付きのシグナル
買いや売りのシグナルは、Stochasticで確認する必要があります。シグナル%Dラインは、それぞれの基準レベルよりも高いか、低くなければなりません。(30 か 70).
ポジションの決済は、%Dの値で決めます。2通りのケースがあります。:
- %Dが反対側の基準レベルに到達した (買いポジションなら80、売りポジションなら20)
- 逆のシグナルが発生しなかった(%Dが基準点に達した: 買いポジションなら20、売りポジションなら80)
図3. ストキャスティクスによる条件付きの"Dark Cloud Cover"
2.1. 買いポジション/売りポジションの決済
"Piercing Line"の条件は、Stochasticで確認する必要があります。: StochSignal(1)<30 (直近の確定足のストキャスティクスのシグナルラインは30よりも低くなければなりません。)
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 CDC_PL_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 Piercing Line pattern and signal line<30 if (CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) && (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. 売りポジション/買いポジションの決済
"Dark Cloud Cover"の条件は、Stochasticで確認する必要があります。: StochSignal(1)>70 (直近の確定足のストキャスティクスのシグナルラインが70よりも高い)
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 CDC_PL_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 Dark Cloud Cover pattern and signal line>70 if (CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) && (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を生成する
CDC_PL_Stoch class は、Standard Library に含まれていません。利用するには、adc_pl_stoch.mqh をダウンロードして、client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals に保存する必要があります。candlepatterns.mqh も同様の処理が必要です。MQL5 Wizardを使うには、MetaEditorを再起動する必要があります。
エキスパートアドバイザーを生成するには、MQL5 Wizardを立ち上げてください。:
図4. MQL5 WizardでEAを生成する
エキスパートアドバイザーの名前を決めましょう。:
図5. エキスパートアドバイザーの一般設定
トレードシグナルのモジュールを選択します。
図6. エキスパートアドバイザーのシグナルプロパティ
今回の場合、モジュールは1つだけ使います。
"Signals based on Dark Cloud Cover/Piercing Line confirmed by Stochastic" のモジュールを追加:
図7. エキスパートアドバイザーのシグナルプロパティ
シグナルの追加モジュール:
図8. エキスパートアドバイザーのシグナルプロパティ
トレーリングプロパティにも様々なものがありますが、今回は"Trailing Stop not used"にします。:
図9. エキスパートアドバイザーのトレーリングプロパティTrailing properties of the Expert Advisor
資金管理プロパティとして、"Trading with fixed trade volume"(単利)を使います。:
図10エキスパートアドバイザーの資金管理プロパティMoney management properties of the Expert Advisor
"Finish"ボタンを押すと、エキスパートアドバイザーがExpert_ADC_PL_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=9, PeriodD=5, PeriodSlow=20, MA_period=27).
エキスパートアドバイザーの生成において、今回は固定ロット(Trading Fixed Lot, 0.1), トレーリングストップ(Trailing not used)はなしを選択しました。
図11. Dark Cloud Cover/Piercing Line + Stochastic"のテスト結果
パラメーターの最適な設定値は、MetaTrader 5 client terminalのStrategy Testerで探すことができます。
MQL5 Wizard で生成したコードは expert_adc_pl_stoch.mq5です。.
MetaQuotes Ltdによってロシア語から翻訳されました。
元のコード: https://www.mql5.com/ru/code/297
![MQL5 Wizard - RSIの条件付の3 Black Crows/3 White Soldiersのシグナル](https://c.mql5.com/i/code/expert.png)
RSIの条件付の"3 Black Crows/3 White Soldiers"のシグナルを試すことができます。この戦略のエキスパートのコードは、MQL5ウィザードで自動生成させることができます。
![MQL5 Wizard - MFIによる条件付きの3 Black Crows/3 White Soldiers](https://c.mql5.com/i/code/expert.png)
Market Facilitation Index (MFI)の条件付きの"3 Black Crows/3 White Soldiers"この戦略のエキスパートのコードは、MQL5ウィザードで自動生成させることができます。
![MQL5 Wizard - CCIによる条件付きの"Dark Cloud Cover/Piercing Line"のロウソク足パターンによるシグナル](https://c.mql5.com/i/code/expert.png)
CCIによる条件付きの"Dark Cloud Cover/Piercing Line"のロウソク足パターンによるシグナルを検証することができます。この戦略のエキスパートのコードは、MQL5ウィザードで自動生成させることができます。
![MQL5 Wizard - MFIによる条件付きの"Dark Cloud Cover/Piercing Line"のロウソク足パターンによるシグナル](https://c.mql5.com/i/code/expert.png)
MFIによる条件付きの"Dark Cloud Cover/Piercing Line"のロウソク足パターンによるシグナルを検証することができます。この戦略のエキスパートのコードは、MQL5ウィザードで自動生成させることができます。