Сигнал от советника Five Wave. Торговые правила советника генерируются на индикаторе FivePattern . Скачать индикатор FivePattern и ознакомиться с его работой можно по ссылке .
Начал полевые испытания сигнала/советника Five Wave: https://www.mql5.com/ja/signals/98850 . Советник генерирует торговые сигналы на основе прогноза от индикатора FivePattern.
...ところで、検索エンジンを最適化する際、検索アルゴリズムが何であれ、一つのパターンに気づいた:古典的なジグザグであろうと何であろうと、次のモデルを予測する際の誤差は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%のアルゴリズムエラーは、パターンの検出が遅れたことが原因である。私はダブル・パターンをテストして初めてそれに気づいた:
先に、あと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パーセントは、パターンの検出が遅れたために生じたものである。ダブル・パターンをテストして初めて気づいた:
コードが完全に書き直されたと聞いていますが、いつこの驚異に慣れることができるのでしょうか?
多くの変更があります:
1.インジケーターが「バイナリー」になりました:古いパターンは1時間足で定義され、若いパターンは分足で機能します(「トレーダーのアプローチ」-取引セッションの 境界を示すマークを追加する時間があるかどうかはわかりません)。共通パターンは1つのチャートに表示されるため、上級パターンの時間的極値の完全な値を復元するアルゴリズムがある;
2.2.MyCExtremumクラスは次のように書き換えられている:a) 古典的なZig-Zagのまま、b) パーセンテージ・ステップ付きのZig-Zagの修正、c) そして私の実験的なフラクタル(極値)+パーセンテージ・ステップ(写真では作業中のもの);
3.上級モデルの最初のポイントを検出するアルゴリズムでは、ボリンジャーバンドの境界を超えるという条件がチェックされます;
4.グラフィック:既製のElliotWave5オブジェクトを使うことにした;
近日リリース予定。テスト中...そして、これは設計よりも多くの時間を奪う。
多くの変更点がある:
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インディケータからの予測に基づいて取引シグナルを生成します。
Начал полевые испытания сигнала/советника Five Wave: https://www.mql5.com/ja/signals/98850 . Советник генерирует торговые сигналы на основе прогноза от индикатора FivePattern.
ファイブウェーブ・シグナル/アドバイザーの実地テスト開始 https://www.mql5.com/ja/signals/98850.Expert Advisorは、FivePatternインディケータからの予測に基づいて取引シグナルを生成します。
コード・ベースのインジケーターは更新されますか?
重い!開発者に賛辞を送りたい!
他とは絶対に違う、新しい何かがあることが好きだった。ほとんどノウハウのようなもの。