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

MQL5 Wizard - アリゲーターのクロスによるトレードシグナル - MetaTrader 5のためのエキスパート

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

MQL5 Wizardを使えば、エキスパートアドバイザーを自動生成することができます。 (MQL5 Wizard: Creating Expert Advisors without Programmingを参照).

B.Williams氏が"Trading Chaos"で発表したアリゲーターに基づいたトレードシグナルを考えてみます。(MQL5ウィザードでEAを自動生成する際 )"Signals based on the Alligator" です。

3つの移動平均(ジョーの口、歯、顎)とその差のオシレーターに基づいています。トレンドに応じて3つの線が並んだ、アリゲーターのクロスの後にシグナルが形成されます。上昇トレンドの場合、口(最小期間のもの)が最も高くなり、次に歯、顎の順番に低くなります。下降トレンドでは、その逆になります。

トレードシグナル:

  • 買いポジション: 上昇トレンド時のアリゲーターのクロスと、3つの線の差の増大;
  • 買いポジション決済: 口と顎の上方のクロス;
  • 売りポジション: 下降トレンド時のアリゲーターのクロスと、3つの線の差の拡大;
  • 売りポジション決済: 口と顎の下方のクロス;

この手法は CSignalAlligator class にあります。

図1. アリゲーターに基づいたトレードシグナル

図1. アリゲーターに基づいたトレードシグナル


トレードシグナル

このトレード手法は CSignalAlligatorにあり、インジケーターの値に簡単にアクセスできるメソッドが含まれています。;

double   Jaw(int ind)              // returns the value of Jaw line of the bar
double   Teeth(int ind)            // returns the value of Teeth line of the bar
double   Lips(int ind)             // returns the value of Lips line of the bar
double   LipsTeethDiff(int ind)    // returns the difference between the Lips and Teeth lines
double   TeethJawDiff(int ind)     // returns the difference between the Teeth and Jaw lines
double   LipsJawDiff(int ind)      // returns the difference between the Lips and Jaw lines
bool     CheckCross();             // used to check the crossover of Alligator lines


1. 買いポジション

トレード条件の確認には、口、歯、顎のシフトによる特徴が含まれます。

買いポジションの条件:

  • CheckCrossは、ラインのクロスとライン間の差の増大によって決定されます。;
  • LipsTeethDiff(-2)>=LipsTeethDiff(-1) and LipsTeethDiff(-1)>=LipsTeethDiff(0); 口と歯の差の増大;
  • LipsTeethDiff(0)>=0.0;  歯よりも口が高い;
  • TeethJawDiff(-2) >=TeethJawDiff(-1)  かつ TeethJawDiff(-1) >=TeethJawDiff(0) ; 歯と顎の差の増大;
  • TeethJawDiff(0) >=0.0; 顎よりも歯が高い
//+------------------------------------------------------------------+
//| Checks conditions to open long position (buy)                    |
//+------------------------------------------------------------------+
bool CSignalAlligator::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration)
  {
   if(CheckCross()) return(false);
//---
   price=0.0;
   sl   =0.0;
   tp   =0.0;
//---
   if(LipsTeethDiff(-2)>=LipsTeethDiff(-1) && LipsTeethDiff(-1)>=LipsTeethDiff(0) && LipsTeethDiff(0)>=0.0 &&
      TeethJawDiff(-2) >=TeethJawDiff(-1)  && TeethJawDiff(-1) >=TeethJawDiff(0)  && TeethJawDiff(0) >=0.0)
      m_crossed=true;
//---
   return(m_crossed);
  }


2. 買いの決済

買いポジションの決済 (ラインのシフト):

  • LipsTeethDiff(-1)<0; (シフトによる)次の足の口が歯よりも低い;
  • LipsTeethDiff(0)>=0; 現在足の口が歯より高いか同等;
  • LipsTeethDiff(1)>0; 前の確定足の口が歯よりも高い
//+------------------------------------------------------------------+
//| Checks conditions to close long position                         |
//+------------------------------------------------------------------+
bool CSignalAlligator::CheckCloseLong(double& price)
  {
   price=0.0;
//---
   return(LipsTeethDiff(-1)<0 && LipsTeethDiff(0)>=0 && LipsTeethDiff(1)>0);
  }


3. 売りポジション

売りポジションの条件:

  • CheckCrossは、ラインのクロスとライン間の差の増大によって決定されます。;
  • LipsTeethDiff(-2)<=LipsTeethDiff(-1) かつ LipsTeethDiff(-1)<=LipsTeethDiff(0); 口と歯の差が増大;
  • LipsTeethDiff(0)<=0.0; 現在足の口が歯よりも低い;
  • TeethJawDiff(-2)<=TeethJawDiff(-1) かつ TeethJawDiff(-1)<=TeethJawDiff(0); 歯と顎の差の増大;
  • TeethJawDiff(0) <=0.0; 現在足の歯が顎よりも低い;
//+------------------------------------------------------------------+
//| Checks conditions to open short position (sell)                  |
//+------------------------------------------------------------------+
bool CSignalAlligator::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration)
  {
   if(CheckCross()) return(false);
//---
   price=0.0;
   sl   =0.0;
   tp   =0.0;
//---
   if(LipsTeethDiff(-2)<=LipsTeethDiff(-1) && LipsTeethDiff(-1)<=LipsTeethDiff(0) && LipsTeethDiff(0)<=0.0 &&
      TeethJawDiff(-2) <=TeethJawDiff(-1)  && TeethJawDiff(-1) <=TeethJawDiff(0)  && TeethJawDiff(0) <=0.0)
      m_crossed=true;
//---
   return(m_crossed);
  }


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

売りポジションの決済条件:

  • LipsTeethDiff(-1)>0; (シフトによる)次の足の口が歯よりも高い;
  • LipsTeethDiff(0)<=0; 現在足の口が歯よりも低いか同等;
  • LipsTeethDiff(1)<0; 前の確定足の口が歯よりも低い
//+------------------------------------------------------------------+
//| Checks conditions to close short position                        |
//+------------------------------------------------------------------+
bool CSignalAlligator::CheckCloseShort(double& price)
  {
   price=0.0;
//---
   return(LipsTeethDiff(-1)>0 && LipsTeethDiff(0)<=0 && LipsTeethDiff(1)<0);
  }

MQL5 WizardでEAを生成する

このロジックに基づいたトレードロボットを生成するには、MQL5 Wizardの"Creating Ready-Made Expert Advisors"の"Signals based on the Alligator"を選択してください。:

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

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

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


テスト結果

過去データでエキスパートアドバイザーをテストしてみましょう。 (EURUSD M15, テスト期間: 1.1.2010-05.01.2011, JawPeriod=13, JawShift=8, TeethPeriod=8, TeethShift=5, LipsPeriod=5, LipsShift=3, MaMethod=2, Applied=5, CrossMeasure=5).

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

図3. アリゲーターに基づいたトレードシグナルのエキスパートアドバイザーのトレード結果

図3. アリゲーターに基づいたトレードシグナルのエキスパートアドバイザーのトレード結果


フィルターと時間帯ごと相場の特徴を考慮に入れれば、収益を増大させることが可能です。CSignalITF class を使えば、ざらば時間帯フィルターをかけることができます。どの時間帯が最も良いかは、MetaTrader 5 client terminal のStrategy Tester で検証可能です。サンプルは MQL5 Wizard - Trade Signals Based on Crossover of Two EMA with intraday time filterを参照してください。


アタッチメント: SignalAlligator.mqh と CSignalAlligator class  がterminal_data_folder\MQL5\Include\Expert\Signal folder になければなりません。

MQL5 Wizardで生成したエキスパートアドバイザーは、expert_alligator.mq5 です。


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

MQL5 Wizard - ザラバフィルター付きの2つの指数平滑移動平均のクロスによるトレードシグナル MQL5 Wizard - ザラバフィルター付きの2つの指数平滑移動平均のクロスによるトレードシグナル

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

MQL5 Wizard - MACDのメインラインとシグナルラインのクロスに基づいたトレードシグナル MQL5 Wizard - MACDのメインラインとシグナルラインのクロスに基づいたトレードシグナル

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

MQL5 Wizard - ロウソク足の転換によるシグナル MQL5 Wizard - ロウソク足の転換によるシグナル

ロウソク足の転換によるシグナルです。この戦略のエキスパートのコードは、MQL5ウィザードで自動生成させることができます。

MQL5 Wizard - ストキャスティクスをフィルターとした3 Black Crows/3 White Soldiersロウソク足パターン MQL5 Wizard - ストキャスティクスをフィルターとした3 Black Crows/3 White Soldiersロウソク足パターン

このトレードシグナルは、ストキャスティクスをフィルターとした"3 Black Crows/3 White Soldiers"ロウソク足パターンです。この戦略のエキスパートのコードは、MQL5ウィザードで自動生成させることができます。