インディケータ: FivePattern - ページ 6

 
nav_soft:

...ところで、検索エンジンを最適化する際、検索アルゴリズムが何であれ、一つのパターンに気づいた:古典的なジグザグであろうと何であろうと、次のモデルを予測する際の誤差は20±1%程度 である。このことから、A.Merrillは意図的に6つのパターン(つまり、MとWの数字がそれぞれ3つずつ)を記述しなかったか、あるいは検出しなかったのではないかと思う。

先に彼は、さらに6つのパターンが あると書いているこれは誤った意見である ここに 32のパターンが あることを確認する簡単なスクリプトがある。

#include <Object.mqh>

#include <Arrays\ArrayObj.mqh>

//+------------------------------------------------------------------+

//| КЛАСС ХРАНЕНИЯ ПОЛУЧЕННЫХ ДАННЫХ                                 |

//+------------------------------------------------------------------+

class MyPPattern : public CObject

  {

private:

   double            A;

   double            B;

   double            C;

   double            D;

   double            E;

public:

                     MyPPattern(void){A=0;B=0;C=0;D=0;E=0;};

                     MyPPattern(double ia, double ib, double ic,

                                double id, double ie)

                                {A=ia;B=ib;C=ic;D=id;E=ie;};

                    ~MyPPattern(void){;};

   //+---------------------------------------------------------------+

   //| SET-МЕТОДЫ                                                    |

   //+---------------------------------------------------------------+

   void              SetA(double in){A = in;};

   void              SetB(double in){B = in;};

   void              SetC(double in){C = in;};

   void              SetD(double in){D = in;};

   void              SetE(double in){E = in;};

   //+---------------------------------------------------------------+

   //| GET-МЕТОДЫ                                                    |

   //+---------------------------------------------------------------+

   double            GetA(void){return(A);};

   double            GetB(void){return(B);};

   double            GetC(void){return(C);};

   double            GetD(void){return(D);};

   double            GetE(void){return(E);};

  };

//+------------------------------------------------------------------+

//| Script program start function                                    |

//+------------------------------------------------------------------+

void OnStart()

  {

   //--- value

   int         filehandle,total;

   double      a=1,b=1,c=1,d=1,e=1,sum=0;

   string      subfolder="Research";

   CArrayObj*  Marray = new CArrayObj;

   CArrayObj*  Warray = new CArrayObj;

   MyPPattern* ppattern;

   //--- Простой поисковый массив

   while(true)

     {

      //--- 1. Инкримент

      a = a + 1;

      if(a > 5){a = 1;b = b + 1;};

      if(b > 5){b = 1;c = c + 1;};

      if(c > 5){c = 1;d = d + 1;};

      if(d > 5){d = 1;e = e + 1;};

      //--- 2. Выход из цикла

      if(e > 5) break;

      //--- 3. Сумматор

      sum = a+b+c+d+e;

      //--- 4. Запись данных

      if(sum == 15)

        {

         //--- Проверка: неравенства

         if(a!=b && a!=c && a!=d && a!=e && b!=c && 

            b!=d && b!=e && c!=d && c!=e && d!=e)

           {

            //--- Проверка: зиг-заг формации

            if(a<b && b>c && c<d && d>e)

              {//--- Формация M-волн

               ppattern = new MyPPattern(a,b,c,d,e);

               Marray.Add(ppattern);

              }

            if(a>b && b<c && c>d && d<e)

              {//--- Формация W-волн

               ppattern = new MyPPattern(a,b,c,d,e);

               Warray.Add(ppattern);

              }

           }

        }

     }

   //--- Сохранение M-данных

   ResetLastError();

   filehandle=FileOpen(subfolder+"\\SearchNewPatternM.csv",FILE_WRITE|FILE_CSV);

   if(filehandle!=INVALID_HANDLE)

     {

      total = Marray.Total();

      for(int i=0;i<total;i++)

        {

         ppattern = Marray.At(i);

         FileWrite(filehandle,ppattern.GetA(),ppattern.GetB(),ppattern.GetC(),

                   ppattern.GetD(),ppattern.GetE());

        }

      //--- Close file

      FileClose(filehandle);

     }

   else Print(__FUNCTION__,": ERROR FileOpen = ",GetLastError());

   //--- Сохранение W-данных

   ResetLastError();

   filehandle=FileOpen(subfolder+"\\SearchNewPatternW.csv",FILE_WRITE|FILE_CSV);

   if(filehandle!=INVALID_HANDLE)

     {

      total = Warray.Total();

      for(int i=0;i<total;i++)

        {

         ppattern = Warray.At(i);

         FileWrite(filehandle,ppattern.GetA(),ppattern.GetB(),ppattern.GetC(),

                   ppattern.GetD(),ppattern.GetE());

        }

      //--- Close file

      FileClose(filehandle);

     }

   else Print(__FUNCTION__,": ERROR FileOpen = ",GetLastError());

   //--- delet all objects

   delete Marray;

   delete Warray;

  }

//+------------------------------------------------------------------+


そして、20%のアルゴリズムエラーは、パターンの検出が遅れたことが原因である。私はダブル・パターンをテストして初めてそれに気づいた:

パターン発見の遅れ

 
nav_soft:

先に、あと6パターン あると書いた。 これは誤解である ここに 32のパターンが あることを確認する簡単なスクリプトがある。

#include <Object.mqh>

#include <Arrays\ArrayObj.mqh>

//+------------------------------------------------------------------+

//| КЛАСС ХРАНЕНИЯ ПОЛУЧЕННЫХ ДАННЫХ                                 |

//+------------------------------------------------------------------+

class MyPPattern : public CObject

  {

private:

   double            A;

   double            B;

   double            C;

   double            D;

   double            E;

public:

                     MyPPattern(void){A=0;B=0;C=0;D=0;E=0;};

                     MyPPattern(double ia, double ib, double ic,

                                double id, double ie)

                                {A=ia;B=ib;C=ic;D=id;E=ie;};

                    ~MyPPattern(void){;};

   //+---------------------------------------------------------------+

   //| SET-МЕТОДЫ                                                    |

   //+---------------------------------------------------------------+

   void              SetA(double in){A = in;};

   void              SetB(double in){B = in;};

   void              SetC(double in){C = in;};

   void              SetD(double in){D = in;};

   void              SetE(double in){E = in;};

   //+---------------------------------------------------------------+

   //| GET-МЕТОДЫ                                                    |

   //+---------------------------------------------------------------+

   double            GetA(void){return(A);};

   double            GetB(void){return(B);};

   double            GetC(void){return(C);};

   double            GetD(void){return(D);};

   double            GetE(void){return(E);};

  };

//+------------------------------------------------------------------+

//| Script program start function                                    |

//+------------------------------------------------------------------+

void OnStart()

  {

   //--- value

   int         filehandle,total;

   double      a=1,b=1,c=1,d=1,e=1,sum=0;

   string      subfolder="Research";

   CArrayObj*  Marray = new CArrayObj;

   CArrayObj*  Warray = new CArrayObj;

   MyPPattern* ppattern;

   //--- Простой поисковый массив

   while(true)

     {

      //--- 1. Инкримент

      a = a + 1;

      if(a > 5){a = 1;b = b + 1;};

      if(b > 5){b = 1;c = c + 1;};

      if(c > 5){c = 1;d = d + 1;};

      if(d > 5){d = 1;e = e + 1;};

      //--- 2. Выход из цикла

      if(e > 5) break;

      //--- 3. Сумматор

      sum = a+b+c+d+e;

      //--- 4. Запись данных

      if(sum == 15)

        {

         //--- Проверка: неравенства

         if(a!=b && a!=c && a!=d && a!=e && b!=c && 

            b!=d && b!=e && c!=d && c!=e && d!=e)

           {

            //--- Проверка: зиг-заг формации

            if(a<b && b>c && c<d && d>e)

              {//--- Формация M-волн

               ppattern = new MyPPattern(a,b,c,d,e);

               Marray.Add(ppattern);

              }

            if(a>b && b<c && c>d && d<e)

              {//--- Формация W-волн

               ppattern = new MyPPattern(a,b,c,d,e);

               Warray.Add(ppattern);

              }

           }

        }

     }

   //--- Сохранение M-данных

   ResetLastError();

   filehandle=FileOpen(subfolder+"\\SearchNewPatternM.csv",FILE_WRITE|FILE_CSV);

   if(filehandle!=INVALID_HANDLE)

     {

      total = Marray.Total();

      for(int i=0;i<total;i++)

        {

         ppattern = Marray.At(i);

         FileWrite(filehandle,ppattern.GetA(),ppattern.GetB(),ppattern.GetC(),

                   ppattern.GetD(),ppattern.GetE());

        }

      //--- Close file

      FileClose(filehandle);

     }

   else Print(__FUNCTION__,": ERROR FileOpen = ",GetLastError());

   //--- Сохранение W-данных

   ResetLastError();

   filehandle=FileOpen(subfolder+"\\SearchNewPatternW.csv",FILE_WRITE|FILE_CSV);

   if(filehandle!=INVALID_HANDLE)

     {

      total = Warray.Total();

      for(int i=0;i<total;i++)

        {

         ppattern = Warray.At(i);

         FileWrite(filehandle,ppattern.GetA(),ppattern.GetB(),ppattern.GetC(),

                   ppattern.GetD(),ppattern.GetE());

        }

      //--- Close file

      FileClose(filehandle);

     }

   else Print(__FUNCTION__,": ERROR FileOpen = ",GetLastError());

   //--- delet all objects

   delete Marray;

   delete Warray;

  }

//+------------------------------------------------------------------+


そして、アルゴリズムの誤差20パーセントは、パターンの検出が遅れたために生じたものである。ダブル・パターンをテストして初めて気づいた:


コードは完全に書き直されたそうですが、いつこの奇跡を見ることができますか?
 
ozhiganov:
コードが完全に書き直されたと聞いていますが、いつこの驚異に慣れることができるのでしょうか?

多くの変更があります:

1.インジケーターが「バイナリー」になりました:古いパターンは1時間足で定義され、若いパターンは分足で機能します(「トレーダーのアプローチ」-取引セッションの 境界を示すマークを追加する時間があるかどうかはわかりません)。共通パターンは1つのチャートに表示されるため、上級パターンの時間的極値の完全な値を復元するアルゴリズムがある;

2.2.MyCExtremumクラスは次のように書き換えられている:a) 古典的なZig-Zagのまま、b) パーセンテージ・ステップ付きのZig-Zagの修正、c) そして私の実験的なフラクタル(極値)+パーセンテージ・ステップ(写真では作業中のもの);

3.上級モデルの最初のポイントを検出するアルゴリズムでは、ボリンジャーバンドの境界を超えるという条件がチェックされます;

4.グラフィック:既製のElliotWave5オブジェクトを使うことにした;

近日リリース予定。テスト中...そして、これは設計よりも多くの時間を奪う。

 
nav_soft:

多くの変更点がある:

1. インジケーターが「バイナリー」になった:上級パターンは1時間足で定義され、下級パターンは分 足で機能する(「トレーダーのアプローチ」-取引セッションの 境界をマークする時間 があるかどうかわからない)。共通パターンは1つのチャートに表示されるため、上級パターンの時間的極値の完全な値を復元するアルゴリズムがある;

2.2.MyCExtremumクラスは次のように書き換えられている:a) 古典的なZig-Zagのまま、b) パーセンテージ・ステップ付きのZig-Zagの修正、c) そして私の実験的なフラクタル(極値)+パーセンテージ・ステップ(写真では作業中のもの);

3.上級モデルの最初のポイントを検出するアルゴリズムでは、ボリンジャーバンドの境界を超えるという条件がチェックされます;

4.グラフィック:既製のElliotWave5オブジェクトを使うことにした;

近日リリース予定。テスト中...テスト中...。

楽しみだ
 

ファイブウェーブ・シグナル/アドバイザーの実地テスト開始 https://www.mql5.com/ja/signals/98850.Expert Advisorは、FivePatternインディケータからの予測に基づいて取引シグナルを生成します。

Торговые сигналы для MetaTrader 5: Five Wave indicator Five Pattern
Торговые сигналы для MetaTrader 5: Five Wave indicator Five Pattern
  • Andrey Emelyanov
  • www.mql5.com
Сигнал от советника Five Wave. Торговые правила советника генерируются на индикаторе FivePattern . Скачать индикатор FivePattern и ознакомиться с его работой можно по ссылке .
 
nav_soft:

Начал полевые испытания сигнала/советника Five Wave: https://www.mql5.com/ja/signals/98850 . Советник генерирует торговые сигналы на основе прогноза от индикатора FivePattern.

nav_soft
:

ファイブウェーブ・シグナル/アドバイザーの実地テスト開始 https://www.mql5.com/ja/signals/98850.Expert Advisorは、FivePatternインディケータからの予測に基づいて取引シグナルを生成します。

素晴らしい!長い間待っていたのですが、Code Baseのインジケーターは更新されるのでしょうか?
 
ozhiganov:
コード・ベースのインジケーターは更新されますか?
はい。18.04.2015 - モデレーターにコードを提出してチェックしてもらい、アーカイブとしてフォーラムに掲載します。
削除済み  

重い!開発者に賛辞を送りたい!

他とは絶対に違う、新しい何かがあることが好きだった。ほとんどノウハウのようなもの。

削除済み  
開発者に感謝します。アップデート版を待っています。)
 
このインジケーターを MT5にインストールする方法を教えてください。