私たちのファンページに参加してください
- ビュー:
- 2309
- 評価:
- パブリッシュ済み:
- 2015.10.29 11:32
- アップデート済み:
- 2016.11.22 07:34
-
このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動
MQL5 Wizardは、エキスパートアドバイザーを自動生成することができます。詳細はCreating Ready-Made Expert Advisors in MQL5 Wizardを参照してください。
2つの指数平滑移動平均線 (fast EMA と slow EMA)のクロスによる戦略を考えてみます。この戦略は、(MQL5 WizardでEAを自動生成する際)"Signals based on crossover of two EMA" です。
トレードシグナル:
- 買い: Fast EMA が slow EMAを上抜け
- 売り: Fast EMA が slow EMA を下抜け
この戦略は CSignalCrossEMA classにあります。
図1. 2つの指数平滑移動平均のクロスに基づいたトレードシグナル
トレードシグナル
このトレード手法は CSignalCrossEMA class にあり、 インジケーターの値に簡単にアクセスできるメソッドが入っています。:
double FastEMA(int ind) // returns the value of fast moving average of the bar double SlowEMA(int ind) // returns the value of slow moving average of the bar double StateEMA(int ind) // returns the difference between the fast and slow moving averages of the bar
1. 買いポジション
買いポジションの条件:
- StateEMA(1)>0 かつ StateEMA(2)<0: 直近の確定足において、Fast EMA が slow EMA を上抜け
//+------------------------------------------------------------------+ //| Checks conditions to open long position (buy) | //+------------------------------------------------------------------+ bool CSignalCrossEMA::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration) { if(!(StateEMA(2)<0 && StateEMA(1)>0)) return(false); //--- price=0.0; sl =0.0; tp =0.0; //--- return(true); }
2. 買いの決済
買いポジションの決済条件:
- StateEMA(1)<0 かつ StateEMA(2)>0: 直近の確定足において、Fast EMA が slow EMA を下抜け
//+------------------------------------------------------------------+ //| Checks conditions to close long position | //+------------------------------------------------------------------+ bool CSignalCrossEMA::CheckCloseLong(double& price) { if(!(StateEMA(2)>0 && StateEMA(1)<0)) return(false); //--- price=0.0; //--- return(true); }
3. 売りポジション
売りポジションの条件は買いポジションの決済と同じです。
//+------------------------------------------------------------------+ //| Checks conditions to open short position (sell) | //+------------------------------------------------------------------+ bool CSignalCrossEMA::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration) { if(!(StateEMA(2)>0 && StateEMA(1)<0)) return(false); //--- price=0.0; sl =0.0; tp =0.0; //--- return(true); }
4. 売りポジションの決済
売りポジションの決済は買いポジションのエントリーと同じです。
//+------------------------------------------------------------------+ //| Checks conditions to close short position | //+------------------------------------------------------------------+ bool CSignalCrossEMA::CheckCloseShort(double& price) { if(!(StateEMA(2)<0 && StateEMA(1)>0)) return(false); //--- price=0.0; //--- return(true); }
MQL5 WizardでEAを生成する
このロジックに基づいたトレードロボットを生成するには、MQL5 Wizardの "Creating Ready-Made Expert Advisors" のシグナルプロパティ "Signals based on crossover of two EMA" を選んでください。 :
図2. MQL5 Wizard の "Signals, based on crossover of two EMA" を選んでください。
次に、trailing stop とmoney and risk management の有無を選択します。エキスパートアドバイザーのコードは自動的に生成されるので、コンパイルすれば、MetaTrader 5 client terminalの Strategy Testerでテスト可能です。
さらに、標準ライブラリには CSignalCrossMA class の "Signals based on crossover of two MA"があります。このトレード手法はよくあるものですが、様々に変化させることができます。 (タイプ、シフト、平均方法、TP・SLのレベル)
図3. MQL5 Wizard の "2つの移動平均のクロスに基づいたシグナル"
テスト結果
過去データでエキスパートアドバイザーをテストしてみましょう。 (EURUSD H1, テスト期間: 1.1.2010-05.01.2011, FastPeriod=12, SlowPeriod=24).
エキスパートアドバイザーの生成において、今回は固定ロット(Trading Fixed Lot, 0.1), トレーリングストップ(Trailing not used)はなしを選択しました。
図4. 2つのEMAのクロスに基づいたエキスパートアドバイザーのバックテスト結果
アタッチメント: SignalCrossEMA.mqh と CSignalCrossEMA class が terminal_data_folder\MQL5\Include\Expert\Signal folder になければなりません。
MQL5 Wizard を使って生成したエキスパートアドバイザーのコードはcrossover_2ema.mq5 です。
MetaQuotes Ltdによってロシア語から翻訳されました。
元のコード: https://www.mql5.com/ru/code/261

ADXを確認した上で、移動平均と価格のクロスによるトレードロジックを検証することができます。この戦略のエキスパートのコードは、MQL5ウィザードで自動生成させることができます。

3つの移動平均線に基づいたシグナルです。この戦略のエキスパートのコードは、MQL5ウィザードで自動生成させることができます。

MACD(CSignalMACD from MQL5 Standard Library)のメインラインとシグナルラインのクロスに基づいたトレードシグナルを検証することができます。 この戦略のエキスパートのコードは、MQL5ウィザードで自動生成させることができます。

ザラバフィルター付きの2つの指数平滑移動平均のクロスによるトレードシグナルを考えます。この戦略のエキスパートのコードは、MQL5ウィザードで自動生成させることができます。