私たちのファンページに参加してください
MQL5 Wizard - CCI の条件付きの"Hammer/Hanging Man"のシグナル - MetaTrader 5のためのエキスパート
- ビュー:
- 1369
- 評価:
- パブリッシュ済み:
- 2015.11.10 07:45
- アップデート済み:
- 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のクラスを書いて、必要な条件例えば、オシレーターの確認など)を追加すれば十分です。
CCIの条件付きの"Hammer/Hanging Man"の転換足パターンのシグナルを考えてみましょう。トレードシグナルのモジュールは、CCandlePattern classに基づいています。ロウソク足のパターンによるシグナルの生成のシンプルな一例です。
1. "Hammer" と "Hanging Man"
1.1. Hammer
"Hammer"は、下降トレンドの後に小さい実体と長い下ヒゲのロウソク足で構成されます。"Hammer"は、ベアトレンドの終わりを示唆します。
ロウソク足の実体の色は重要ではありませんが、ブル型のハンマーはより高いブルトレンドの潜在性を表します。"Hammer"の実体は、前のロウソク足の最小値に近い場所で形成されます。下ヒゲが長く低ければなればなるほど、そして上ヒゲが短くなればなるほど、転換の可能性が高くなります。.
図1. "Hammer"
"Hammer"は、 CCandlePatternのCheckPatternHammer() method に実装されています。:
//+------------------------------------------------------------------+ //| Checks formation of "Hammer" candlestick pattern | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternHammer() { //--- Hammer if((MidPoint(1)<CloseAvg(2)) && // down trend (MathMin(Open(1),Close(1))>(High(1)-(High(1)-Low(1))/3.0)) && // body in upper 1/3 (Close(1)<Close(2)) && (Open(1)<Open(2))) // body gap return(true); //--- return(false); }
CCandlePattern class のCheckCandlestickPattern(CANDLE_PATTERN_HAMMER) method を、 "Hammer"で使います。
1.2. Hanging Man
"Hanging Man"は、上昇トレンド後に、小さい実体と長く低いヒゲで構成されます"Hanging Man"は、ブルトレンドの終わりを表します。
ロウソク足の実体の色は重要ではありませんが、ベア型のハンマーはベアトレンドのより高い潜在性を表します。"Hanging Man"の実体は、前のロウソク足の最大値に近い場所で形成されます。. 下ヒゲが長く低ければなればなるほど、そして上ヒゲが短くなればなるほど、転換の可能性が高くなります。.
図2. "Hanging Man"
"Hanging Man"は、 CCandlePatternのCheckPatternHangingMan() method に実装されています。:
//+------------------------------------------------------------------+ //| Checks formation of "Hanging Man" candlestick pattern | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternHangingMan() { //--- Hanging man if((MidPoint(1)>CloseAvg(2)) && // up trend (MathMin(Open(1),Close(1)>(High(1)-(High(1)-Low(1))/3.0)) && // body in upper 1/3 (Close(1)>Close(2)) && (Open(1)>Open(2)))) // body gap return(true); //--- return(false); }
CCandlePattern class のCheckCandlestickPattern(CANDLE_PATTERN_HANGING_MAN) method を、 "Hanging Man"で使います。
2. CCIによる条件付きのシグナル
買いポジション・売りポジションのシグナルは、CCIで確認する必要があります。CCIの値は基準値よりも大きい/小さい必要があります。 (買いポジションは-50。売りポジションは50。)
ポジションの決済は、CCIの値で行います。2通りのケースがあります。:
- CCIが反対側の基準値に達した場合(買いポジションは80。売りポジションは-80)
- 逆のシグナルが発生しない (CCIが下記の点に達したとき:買いポジションは-80。売りポジションは80)
図3. CCIによる条件付きの"Hammer"
- int CH_HM_CCI::LongCondition() - 買いポジションのエントリー条件(80) と 売りポジションの決済条件 (40);
- int CH_HM_CCI::ShortCondition() - 売りポジションのエントリー条件(80) と 買いポジションの決済条件 (40).
2.1. 買いポジション/売りポジションの決済
CCI の条件付きの"Hammer" :CCI(1)<-50 (直近の確定した足のCCIが-50より小さい).
CCIが-80ラインを上向きにクロスした場合、もしくは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 CH_HM_CCI::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 Hammer pattern and CCI<-50 if(CheckCandlestickPattern(CANDLE_PATTERN_HAMMER) && (CCI(1)<-50)) result=80; //--- checking of conditions to close short position //--- signal line crossover of overbought/oversold levels (downward -80, downward -80) if(((CCI(1)>-80) && (CCI(2)<-80)) || ((CCI(1)<80) && (CCI(2)>80))) result=40; //--- return result return(result); }
2.2. 売りポジション/買いポジションの決済
//+------------------------------------------------------------------+ //| 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 CH_HM_CCI::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 Hanging Man pattern and CCI>50 if(CheckCandlestickPattern(CANDLE_PATTERN_HANGING_MAN) && (CCI(1)>50)) result=80; //--- checking of conditions to close long position //--- signal line crossover of overbought/oversold levels (downward -80, downward 80) if(((CCI(1)<80) && (CCI(2)>80)) || ((CCI(1)<-80) && (CCI(2)>-80))) result=40; //--- return result return(result); }
2.3. MQL5 WizardでEAを生成する
CH_HM_CCI class はStandard Libraryには含まれていません。利用するには、ach_hm_cci.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 Hammer/Hanging Man confirmed by CCI"のモジュールを追加:
図7. エキスパートアドバイザーのシグナルプロパティ
シグナルの追加モジュール:
図8. エキスパートアドバイザーのシグナルプロパティ
トレーリングプロパティにも様々なものがありますが、今回は"Trailing Stop not used"にします。:
図9. エキスパートアドバイザーのトレーリングプロパティ
資金管理プロパティとして、"Trading with fixed trade volume"(単利)を使います。:
図10エキスパートアドバイザーの資金管理プロパティ
"Finish"ボタンを押すと、エキスパートアドバイザーがExpert_AH_HM_CCI.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.03.16, PeriodCCI=25, MA_period=5).
エキスパートアドバイザーの生成において、今回は固定ロット(Trading Fixed Lot, 0.1), トレーリングストップ(Trailing not used)はなしを選択しました。
図11. Hammer/Hanging Man + CCIのテスト結果
パラメーターの最適な設定値は、MetaTrader 5 client terminalのStrategy Testerで探すことができます。
MQL5 Wizard で生成したコードは expert_ah_hm_cci.mq5 です。
MetaQuotes Ltdによってロシア語から翻訳されました。
元のコード: https://www.mql5.com/ru/code/315
ステップチャネルを基準にCCIを表示します。「ボラティリティ・ステップチャネル」も付属しています。
MQL5 Wizard - 商品チャネル指数(CCI)による条件付きの"Bullish/Bearish Meeting Lines"のシグナル商品チャネル指数(CCI)による条件付きの"Bullish/Bearish Meeting Lines"のシグナルを試すことができます。この戦略のエキスパートのコードは、MQL5ウィザードで自動生成させることができます。
特定のタイミングで画像の表示が必要な場合、もしくは隠す場合、画像の表示エリアを指定しムービングウィンドウを使うことができます。
MQL5 のIterated Function Systems (IFS) でフラクタルを生成cIntBMP ライブラリはBMP画像を生成します。Iterated Function System (IFS)を使って、自己相似フラクタルの生成の使い方の例を考えてみましょう。