無料でロボットをダウンロードする方法を見る
Facebook上で私たちを見つけてください。
私たちのファンページに参加してください
興味深いスクリプト?
それではリンクにそれを投稿してください。-
他の人にそれを評価してもらいます
記事を気に入りましたか?MetaTrader 5ターミナルの中でそれを試してみてください。
エキスパート

MQL5 Wizard - 3つの移動平均線に基づいたシグナル - MetaTrader 5のためのエキスパート

ビュー:
1801
評価:
(26)
パブリッシュ済み:
2015.10.29 11:21
アップデート済み:
2016.11.22 07:34
このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動

MQL5 Wizardは、エキスパートアドバイザーを自動生成することができます。詳細はCreating Ready-Made Expert Advisors in MQL5 Wizardを参照してください。

3つの移動平均線に基づいたトレンド戦略を考えてみます。"Signals based on three EMA"と呼ばれる戦略です。トレンドを決定するためには、3つの指数平滑移動平均線を使います。: FastEMA と MediumEMA と SlowEMA.

トレードシグナル:

  • 買いシグナル: FastEMA>MediumEMA>SlowEMA (上昇トレンド).
  • 売りシグナル: FastEMA<MediumEMA<SlowEMA (下降トレンド).

この戦略は、 CSignal3EMA クラスに実装されています。 ( signal3ema.mqh を下記フォルダーに入れておく必要があります。 Terminal\MQL5\Include\Expert\Signal\Signal3EMA.mqh).

図1. 3つの移動平均線に基づいたトレードシグナル

図1. 3つの移動平均線に基づいたトレードシグナル

トレードシグナル

このトレード手法は CSignal3EMA クラスに実装されており、3つの移動平均(Fast,Medium,Slow)の値へのアクセスが単純化された方法です。:

double  FastEMA(int ind)      // returns the value of Fast EMA of the bar
double  MediumEMA(int ind)    // returns the value of Medium EMA of the bar
double  SlowEMA(int ind)      // returns the value of Slow EMA of the bar
現在足のインジケーターの値は変更される可能性があります。そのため、確定した足のデータを使ってトレードの状態を確認する必要があります。

1. 買いポジション

上昇トレンドは、下記条件で定義されます。: FastEMA>MediumEMA>SlowEMA:

  • FastEMA(1)>MediumEMA(1): Fast EMA が Medium EMA より高い(直近の確定した足において);
  • MediumEMA(2)>SlowEMA(1): Medium EMA が Slow EMA (直近の確定した足において);
//+------------------------------------------------------------------+
//| Checks conditions to open long position (buy)                    |
//+------------------------------------------------------------------+
bool CSignal3EMA::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration)
  {
   double medium=MediumEMA(1);
//---
   price=0.0;
   sl   =m_symbol.Ask()-m_stop_loss*m_adjusted_point;
   tp   =m_symbol.Ask()+m_take_profit*m_adjusted_point;
//--- checking for upward trend (on the last completed bar): FastEMA(1)>MediumEMA(1)>SlowEMA(1)
    return(FastEMA(1)>medium && medium>SlowEMA(1));
  }


2. 買いの決済

下降トレンドは、下記条件で定義されます。: FastEMA<MediumEMA<SlowEMA:

  • FastEMA(1)<MediumEMA(1): Fast EMA が Medium EMA よりも低い(直近の確定した足において);
  • MediumEMA(2)<SlowEMA(1): Medium EMA が Slow EMA よりも低い(直近の確定した足において);
//+------------------------------------------------------------------+
//| Checks conditions to close long position                         |
//+------------------------------------------------------------------+
bool CSignal3EMA::CheckCloseLong(double& price)
  {
   double medium=MediumEMA(1);
//---
   price=0.0;
//--- checking for downward trend (on the last completed bar): FastEMA(1)<MediumEMA(1)<SlowEMA(1)
   return(FastEMA(1)<medium && medium<SlowEMA(1));
  }
買いポジションの決済を改善するために、下降トレンドまで待つ必要はありません。相場が横向きになった段階で買いポジションを決済しても構いません。横向きの定義は: FastEMA<MediumEMA>SlowEMA です。


3. 売りポジション

//+------------------------------------------------------------------+
//| Checks conditions to open short position (sell)                  |
//+------------------------------------------------------------------+
bool CSignal3EMA::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration)
  {
   double medium=MediumEMA(1);
//---
   price=0.0;
   sl   =m_symbol.Bid()+m_stop_loss*m_adjusted_point;
   tp   =m_symbol.Bid()-m_take_profit*m_adjusted_point;
//--- checking for downward trend (on the last completed bar): FastEMA(1)<MediumEMA(1)<SlowEMA(1)
   return(FastEMA(1)<medium && medium<SlowEMA(1));

  }

4. 売りポジションの決済

//+------------------------------------------------------------------+
//| Checks conditions to close short position                        |
//+------------------------------------------------------------------+
bool CSignal3EMA::CheckCloseShort(double& price)
  {
   double medium=MediumEMA(1);
//---
   price=0.0;
//--- checking for upward trend (on the last completed bar): FastEMA(1)>MediumEMA(1)>SlowEMA(1)
   return(FastEMA(1)>medium && medium>SlowEMA(1));
  }

売りポジションの決済を改善するために、上昇トレンドまで待つ必要はありません。相場が横向きになった段階で売りポジションを決済しても構いません。横向きの定義は: FastEMA>MediumEMA<SlowEMA です。


MQL5 WizardでEAを生成する

このロジックに基づいたトレードロボットを生成するには、MQL5 Wizardの"Creating Ready-Made Expert Advisors" のシグナルプロパティ"Signals based on three EMAを選んでください。 :

図2. MQL5 Wizardの "Signals based on three EMA" を選択してください。

図2. MQL5 Wizardの "Signals based on three EMA" を選択してください。

次に、trailing stopmoney and risk management の有無を選択します。エキスパートアドバイザーのコードは自動的に生成されるので、コンパイルすれば、MetaTrader 5 client terminalの Strategy Testerでテスト可能です。


テスト結果

過去データでエキスパートアドバイザーをテストしてみましょう。 (EURUSD H1, テスト期間: 1.1.2010-05.01.2011,  FastPeriod=5, MediumPeriod=12, SlowPeriod=24, StopLoss=400, TakeProfit=900).

エキスパートアドバイザーの生成において、今回は固定ロット(Trading Fixed Lot, 0.1), トレーリングストップ(Trailing not used)はなしを選択しました。

図3. 3つのEMAに基づいたエキスパートアドバイザーのバックテスト結果

図3. 3つのEMAに基づいたエキスパートアドバイザーのバックテスト結果

Attachments: Signal3EMA.mqh と CSignal3EMA クラスが、Terminal_data_folder\MQL5\Include\Expert\Signal になければなりません。

MQL5 Wizard を使って生成したエキスパートアドバイザーのコードはthreeema.mq5です。


MetaQuotes Ltdによってロシア語から翻訳されました。
元のコード: https://www.mql5.com/ru/code/250

An Expert Advisor template An Expert Advisor template

このコードは、ATC-2010用にValery Mazurenko氏が作ったエキスパートアドバイザーのテンプレートです。

Ticks Ticks

ティックチャート例

MQL5 Wizard - ADXによる条件付きの移動平均と価格のクロスによるトレードロジックX MQL5 Wizard - ADXによる条件付きの移動平均と価格のクロスによるトレードロジックX

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

MQL5 Wizard - 2つのEMAのクロスによるトレードシグナル MQL5 Wizard - 2つのEMAのクロスによるトレードシグナル

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