私たちのファンページに参加してください
- ビュー:
- 2862
- 評価:
- パブリッシュ済み:
- 2015.10.29 12:26
- アップデート済み:
- 2016.11.22 07:34
-
このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動
MQL5 Wizardを使えば、エキスパートアドバイザーを自動生成することができます。 (MQL5 Wizard: Creating Expert Advisors without Programmingを参照).
MACDのラインクロスによるトレードシグナルを考えてみましょう。(MQL5 WizardでEAを自動生成する際)この手法は、 "Signals based on crossover of main and signal MACD lines" です。
MACDのメインラインはfastEMAとslowEMAの差から計算されます。MACDのシグナルラインは、シグナルの期間だけスムージングしたメインラインです。
トレードシグナル:
- 買い: MACDのメインラインとシグナルラインの上向きのクロス
- 売り: MACDのメインラインとシグナルラインの下向きのクロス
この手法は、 MQL5 Standard Library (located in MQL5\Include\Expert\Signal\SignalMACD.mqh)の Trading Strategy classesのCSignalMACDにあります。
図1. MACDのメインとシグナルのクロスに基づいたトレードシグナル
トレードシグナル
このトレード手法は CSignalMACD にあり、インジケーターの値に簡単にアクセスできるメソッドが入っています。:
double MainMACD(int ind) // returns the value of main MACD line of the bar double SignalMACD(int ind) // returns the value of signal MACD line of the bar double StateMACD(int ind) // returns the difference between the main and signal MACD lines int ExtStateMACD(int ind); // returns the number of sign changes of the main and signal lines difference
1. 買いポジション
買いポジションの条件:
- ExtStateMACD(1)==1; MACDのメインラインがシグナルラインを上抜けした
//+------------------------------------------------------------------+ //| Checks conditions to open long position (buy) | //+------------------------------------------------------------------+ bool CSignalMACD::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration) { price=0.0; sl =m_symbol.Ask()-m_stop_loss*m_adjusted_point; tp =m_symbol.Ask()+m_take_profit*m_adjusted_point; //--- return(ExtStateMACD(1)==1); }
2. 買いの決済
買いポジションの決済条件:
- ExtStateMACD(1)==1; MACDのメインラインがシグナルラインを下抜けしたことを表します。
//+------------------------------------------------------------------+ //| Checks conditions to close long position | //+------------------------------------------------------------------+ bool CSignalMACD::CheckCloseLong(double& price) { price=0.0; //--- return(ExtStateMACD(1)==-1); }
3. 売りポジション
売りポジションの条件は買いポジションの決済と同じです。
//+------------------------------------------------------------------+ //| Checks conditions to open short position (sell) | //+------------------------------------------------------------------+ bool CSignalMACD::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration) { price=0.0; sl =m_symbol.Bid()+m_stop_loss*m_adjusted_point; tp =m_symbol.Bid()-m_take_profit*m_adjusted_point; //--- return(ExtStateMACD(1)==-1); }
4. 売りポジションの決済
売りポジションの決済は買いポジションのエントリーと同じです。
//+------------------------------------------------------------------+ //| Checks conditions to close short position | //+------------------------------------------------------------------+ bool CSignalMACD::CheckCloseShort(double& price) { price=0.0; //--- return(ExtStateMACD(1)==1); }
MQL5 WizardでEAを生成する
このロジックに基づいたトレードロボットを生成するには、MQL5 Wizardの "Creating Ready-Made Expert Advisors" の "Signals based on crossover of main and signal MACD lines" を選択してください。 :
図2. MQL5 Wizard の "Signals based on crossover of main and signal MACD lines" を選択してください。
次に、trailing stop とmoney and risk management の有無を選択します。エキスパートアドバイザーのコードは自動的に生成されるので、コンパイルすれば、MetaTrader 5 client terminalの Strategy Testerでテスト可能です。
テスト結果
過去データでエキスパートアドバイザーをテストしてみましょう。 (EURUSD M15, テスト期間: 1.1.2010-05.01.2011, PeriodFast=12, PeriodSlow=24, PeriodSignal=9, StopLoss=20, TakeProfit=80).
エキスパートアドバイザーの生成において、今回は固定ロット(Trading Fixed Lot, 0.1), トレーリングストップ(Trailing not used)はなしを選択しました。
図3. MACDのメインラインとシグナルラインのクロスに基づいたエキスパートアドバイザーのバックテスト結果
アタッチメント: The SignalMACD.mqh と CSignalMACD class (MQL5 Standard Libraryに含まれます) は MQL5\Include\Expert\Signal folderにあります。MQL5 Wizardで生成したエキスパートアドバイザーは、 testmacd.mq5 です。
MetaQuotes Ltdによってロシア語から翻訳されました。
元のコード: https://www.mql5.com/ru/code/262

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

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

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

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