MQL5ウィザードを使えば、プログラミングなしで自動的にエキスパートアドバイザー(EA)を作成することができます。
今回は、MACDの主要線とシグナル線のクロスオーバーに基づいたトレードシグナルについて考えてみましょう。この戦略は「MACD主要線とシグナル線のクロスオーバーに基づくシグナル」と呼ばれ、MQL5ウィザードでEAを自動生成する際に使用されます。
MACDの主要線は、速いEMAと遅いEMAの差として計算されます。そして、シグナル線は主要線をPeriodSignalでスムーズにしたものです。
トレードシグナル:
- 買い: MACDの主要線がシグナル線を上にクロスオーバーした場合。
- 売り: MACDの主要線がシグナル線を下にクロスオーバーした場合。
この戦略は、CSignalMACDクラスに実装されており、インジケーターの値に簡単にアクセスするためのメソッドがいくつか用意されています。

図1: MACDの主要線とシグナル線のクロスオーバーに基づくトレードシグナル
トレードシグナルの詳細
このトレーディング戦略は、CSignalMACDクラスに実装されており、インジケーターの値へのアクセスを簡素化するためのいくつかの保護されたメソッドがあります:
double MainMACD(int ind) // 主要MACD線の値を返す double SignalMACD(int ind) // シグナルMACD線の値を返す double StateMACD(int ind) // 主要線とシグナル線の差を返す int ExtStateMACD(int ind); // 主要線とシグナル線の差のサイン変化の数を返す
1. ロングポジションを開く
ロングポジションを開く条件:
- ExtStateMACD(1)==1; これは主要線がシグナル線を上にクロスしたことを意味します。
//+------------------------------------------------------------------+ //| ロングポジションを開く条件をチェックする | //+------------------------------------------------------------------+ 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; これは主要線がシグナル線を下にクロスしたことを意味します。
//+------------------------------------------------------------------+ //| ロングポジションを閉じる条件をチェックする | //+------------------------------------------------------------------+ bool CSignalMACD::CheckCloseLong(double& price) { price=0.0; //--- return(ExtStateMACD(1)==-1); }
3. ショートポジションを開く
ショートポジションを開く条件は、ロングポジションを閉じる条件と同じです。
//+------------------------------------------------------------------+ //| ショートポジションを開く条件をチェックする | //+------------------------------------------------------------------+ 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. ショートポジションを閉じる
ショートポジションを閉じる条件は、ロングポジションを開く条件と同じです。
//+------------------------------------------------------------------+ //| ショートポジションを閉じる条件をチェックする | //+------------------------------------------------------------------+ bool CSignalMACD::CheckCloseShort(double& price) { price=0.0; //--- return(ExtStateMACD(1)==1); }
MQL5ウィザードを使ったエキスパートアドバイザーの作成
この戦略に基づいたトレーディングロボットを作成するには、MQL5ウィザードの「エキスパートアドバイザーの作成」オプションで「MACD主要線とシグナル線のクロスオーバーに基づくシグナル」を選択する必要があります。

図2: MQL5ウィザードで「MACD主要線とシグナル線のクロスオーバーに基づくシグナル」を選択
次に、必要なトレーリングストップアルゴリズムおよび資金管理システムを指定します。エキスパートアドバイザーのコードは自動的に生成され、コンパイルしてMetaTrader 5クライアントターミナルのストラテジーテスターでテストできます。
テスト結果
エキスパートアドバイザーのバックテストを、過去のデータ(EURUSD H1、テスト期間: 2010年1月1日〜2011年5月1日、PeriodFast=12、PeriodSlow=24、PeriodSignal=9、StopLoss=20、TakeProfit=80)で考えてみましょう。
エキスパートアドバイザーの作成時には、固定ロット(固定ロット取引、0.1)を使用し、トレーリングストップアルゴリズムは使用していません(トレーリングなし)。

図3: MACDラインのクロスオーバーに基づくエキスパートアドバイザーのテスト結果
添付ファイル: SignalMACD.mqhにはCSignalMACDクラスが含まれており(MQL5スタンダードライブラリに含まれています)、MQL5\Include\Expert\Signalフォルダーに格納されています。testmacd.mq5には、MQL5ウィザードを使用して作成されたエキスパートアドバイザーのコードが含まれています。
コメント 0