Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
...Por cierto, he observado un patrón al optimizar el motor de búsqueda, sea cual sea el algoritmo de búsqueda: Zigzag clásico u otro, el error en la predicción del siguiente modelo varía alrededor del 20 +/-1 %. Y esto me lleva a pensar que A.Merrill o bien no describió deliberadamente 6 patrones (es decir, 3 cifras M y W cada uno), o bien no los detectó.
Anteriormente escribió que hay 6 patrones más. Se trata de una opinión errónea. Aquí tiene un sencillo script que confirma que hay 32 patrones.
#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;
}
//+------------------------------------------------------------------+
Y el error del algoritmo del 20% se debe a la detección tardía del patrón. Me di cuenta sólo después de probar un patrón doble, aquí hay una ilustración:
Antes he escrito que hay 6 modelos más. Esto es un error. Aquí hay un sencillo script que confirma que hay 32 patrones.
#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;
}
//+------------------------------------------------------------------+
Y el error del algoritmo del 20% se debe a la detección tardía del patrón. Me di cuenta sólo después de probar un patrón doble, aquí hay una ilustración:
Tengo entendido que el código se ha reescrito por completo, ¿cuándo podremos familiarizarnos con esta maravilla?
Hay muchos cambios:
1. el indicador se ha convertido en "binario": el patrón más antiguo se define en periodos horarios, el más joven funciona en minutos, ("enfoque de los traders" - no sé si tendré tiempo para añadir el marcado de los límites de las sesiones de negociación). El patrón común se muestra en un gráfico, por lo que hay un algoritmo para restaurar el valor completo del extremo temporal del patrón mayor;
2. Se reescribe la clase MyCExtremum: a) se mantiene el Zig-Zag clásico; b) modificación del Zig-Zag con un paso porcentual; c) y mi fractal experimental (extremo) + paso porcentual (en las imágenes es el que está en trabajo);
3. En el Algoritmo de detección del primer punto del modelo senior, se comprueba la condición de sobrepasar los límites de las Bandas de Bollinger, también el algoritmo observa esta condición en otros puntos, creo que en base a esto podemos juzgar sobre la exactitud de un determinado modelo y su completitud actual (aquí hay dificultades... aún no hay un algoritmo claro);
4. Gráficos: se decidió utilizar objetos ElliotWave5 ya hechos;
Se publicará muy pronto. Mientras se prueba... y esto mata más tiempo que el diseño.
Hay muchos cambios:
1. el indicador se ha convertido en "binario": el patrón senior se define en periodos horarios, el junior funciona en minutos, ("enfoque de los traders" - no sé si tendré tiempo para añadir el marcado de los límites de la sesión de negociación). El patrón común se muestra en un gráfico, por lo que existe un algoritmo para restablecer el valor completo del extremo temporal del patrón senior;
2. Se reescribe la clase MyCExtremum: a) se mantiene el Zig-Zag clásico; b) modificación del Zig-Zag con un paso porcentual; c) y mi fractal experimental (extremo) + paso porcentual (en las imágenes es el que está en trabajo);
3. En el Algoritmo de detección del primer punto del modelo senior, se comprueba la condición de sobrepasar los límites de las Bandas de Bollinger, también el algoritmo observa esta condición en otros puntos, creo que en base a esto podemos juzgar sobre la exactitud de un determinado modelo y su completitud actual (aquí hay dificultades... aún no hay un algoritmo claro);
4. Gráficos: se decidió utilizar objetos ElliotWave5 ya hechos;
Se publicará muy pronto. Mientras se prueba... que mata más tiempo que el diseño.
Iniciadas las pruebas de campo de la señal/asesor Five Wave: https: //www.mql5.com/ru/signals/98850. El Asesor Experto genera señales de trading basadas en la previsión del indicador FivePattern.
Начал полевые испытания сигнала/советника Five Wave: https://www.mql5.com/es/signals/98850 . Советник генерирует торговые сигналы на основе прогноза от индикатора FivePattern.
Iniciadas las pruebas de campo de la señal/asesor Five Wave: https: //www.mql5.com/ru/signals/98850. El Asesor Experto genera señales de trading basadas en la previsión del indicador FivePattern.
Estupendo, llevo mucho tiempo esperando, ¿se actualizará el indicador en Code Base?
¡¡¡¡HEAVY!!!! Felicitaciones al desarrollador.
Me gustó el hecho de que había algo nuevo, absolutamente diferente de los demás. Casi como un know-how.