Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
...Übrigens ist mir ein Muster bei der Optimierung der Suchmaschine aufgefallen, unabhängig vom Suchalgorithmus: Klassischer Zickzack oder andere, der Fehler bei der Vorhersage des nächsten Modells schwankt um 20 +/-1 %. Und das bringt mich zu der Annahme, dass A.Merrill entweder absichtlich 6 Muster (d.h. jeweils 3 M- und W-Zahlen) nicht beschrieben hat oder sie nicht erkannt hat.
Zuvor schrieb er, dass es 6 weitere Muster gibt . Dies ist eine irrtümliche Meinung. Hier ist ein einfaches Skript, das bestätigt, dass es 32 Muster gibt.
#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;
}
//+------------------------------------------------------------------+
Und der Algorithmusfehler von 20 Prozent ist auf die späte Erkennung des Musters zurückzuführen. Ich habe das erst bemerkt, als ich ein doppeltes Muster getestet habe, hier ist eine Illustration:
Vorhin habe ich geschrieben, dass es 6 weitere Muster gibt . Dies ist ein Irrtum. Hier ist ein einfaches Skript, das bestätigt, dass es 32 Muster gibt.
#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;
}
//+------------------------------------------------------------------+
Und der Fehler des Algorithmus von 20 Prozent ist auf die späte Erkennung des Musters zurückzuführen. Ich habe das erst bemerkt, als ich ein doppeltes Muster getestet habe, hier ist eine Illustration:
Ich habe gehört, dass der Code komplett umgeschrieben wurde. Wann können wir uns mit diesem Wunder vertraut machen?
Es gibt eine Menge Änderungen:
1. Der Indikator ist "binär" geworden: Das ältere Muster ist auf Stundenbasis definiert, das jüngere arbeitet auf Minutenbasis ("traders' approach" - ich weiß nicht, ob ich die Zeit haben werde, die Markierung der Grenzen der Handelssitzungen hinzuzufügen). Das gemeinsame Muster wird auf einem Chart angezeigt, so dass es einen Algorithmus gibt, der den vollen Wert des Zeitextremums des älteren Musters wiederherstellt;
2. Die Klasse MyCExtremum ist neu geschrieben: a) der klassische Zig-Zag bleibt; b) eine Modifikation des Zig-Zag mit einem prozentualen Schritt; c) und mein experimentelles Fraktal (Extrema) + prozentualer Schritt (auf den Bildern ist es das in Arbeit);
3. Im Algorithmus der Erkennung des ersten Punktes des älteren Modells wird die Bedingung des Überschreitens der Grenzen der Bollinger Bänder überprüft, der Algorithmus beobachtet diese Bedingung auch an anderen Punkten, ich denke, auf dieser Grundlage können wir die Genauigkeit eines bestimmten Modells und seine aktuelle Vollständigkeit beurteilen (hier gibt es Schwierigkeiten... es gibt noch keinen klaren Algorithmus);
4. Grafiken: Ich habe mich entschieden, fertige ElliotWave5-Objekte zu verwenden;
Wird sehr bald veröffentlicht werden. Während des Testens... und das verschlingt mehr Zeit als das Entwerfen.
Es gibt eine Reihe von Änderungen:
1. der Indikator ist "binär" geworden: das ältere Muster ist auf stündlichen Perioden definiert, das jüngere arbeitet auf Minuten ("traders' approach" - ich weiß nicht, ob ich Zeit haben werde, die Markierung der Grenzen der Handelssitzung hinzuzufügen). Das gemeinsame Muster wird auf einem Chart angezeigt, so dass es einen Algorithmus gibt, der den vollen Wert des Zeitextremums des älteren Musters wiederherstellt;
2. Die Klasse MyCExtremum wurde neu geschrieben: a) der klassische Zig-Zag bleibt; b) eine Modifikation des Zig-Zag mit einem prozentualen Schritt; c) und mein experimentelles Fraktal (Extrema) + prozentualer Schritt (auf den Bildern ist es das in Arbeit);
3. Im Algorithmus der Erkennung des ersten Punktes des älteren Modells wird die Bedingung des Überschreitens der Grenzen der Bollinger Bänder überprüft, der Algorithmus beobachtet diese Bedingung auch an anderen Punkten, ich denke, auf dieser Grundlage können wir die Genauigkeit eines bestimmten Modells und seine aktuelle Vollständigkeit beurteilen (hier gibt es Schwierigkeiten... es gibt noch keinen klaren Algorithmus);
4. Grafiken: Ich habe mich entschieden, fertige ElliotWave5-Objekte zu verwenden;
Wird sehr bald veröffentlicht werden. Während des Testens... was mehr Zeit verschlingt als das Entwerfen.
Start des Feldtests von Five Wave Signal/Advisor: https: //www.mql5.com/ru/signals/98850. Der Expert Advisor generiert Handelssignale auf der Grundlage der Prognose des FivePattern-Indikators.
Начал полевые испытания сигнала/советника Five Wave: https://www.mql5.com/de/signals/98850 . Советник генерирует торговые сигналы на основе прогноза от индикатора FivePattern.
Start des Feldtests von Five Wave Signal/Advisor: https: //www.mql5.com/ru/signals/98850. Der Expert Advisor generiert Handelssignale auf der Grundlage der Prognose des FivePattern-Indikators.
Toll, ich habe lange gewartet, wird der Indikator in der Code Base aktualisiert werden?
HEAVY!!!! Hut ab vor dem Entwickler!
Ich mochte die Tatsache, dass es etwas Neues, absolut anders als die anderen war. Fast wie ein Know-how.