Indicadores: Harmonic Pattern Finder V2 - página 5

 

Así que David,

He estado probando tu idea de un PRZ purista, debo decir que me gusta. Pensé que te podría interesar, así que te pongo un fragmento de código que puedes copiar y pegar en la línea 802. Esto no hará que el punto D proyectado sea el primer ratio ni que el tope PRZ sea el último ratio. En su lugar, filtrará los patrones que sólo están ahí para el holista y no para el purista, es decir, no contiene todas las relaciones en la PRZ.

               //--- La PRZ purista debe contener las proporciones exactas
               if(true)
                 {
                  if(cd2bcConstraint)
                    {
                     bool contained;
                     if(startsInTrough)
                       {
                        double nearRatio=C-pattern.cd2bc_min*BC;
                        double farRatio=C-pattern.cd2bc_max*BC;
                        contained=nearD>=farRatio && nearRatio>=farD;
                       }
                     else
                       {
                        double nearRatio=C+pattern.cd2bc_min*BC;
                        double farRatio=C+pattern.cd2bc_max*BC;
                        contained=nearD<=farRatio && nearRatio<=farD;
                       }
                     if(!contained)
                        continue;
                    }
                  if(ad2xaConstraint)
                    {
                     bool contained;
                     if(startsInTrough)
                       {
                        double nearRatio=A-pattern.ad2xa_min*XA;
                        double farRatio=A-pattern.ad2xa_max*XA;
                        contained=nearD>=farRatio && nearRatio>=farD;
                       }
                     else
                       {
                        double nearRatio=A+pattern.ad2xa_min*XA;
                        double farRatio=A+pattern.ad2xa_max*XA;
                        contained=nearD<=farRatio && nearRatio<=farD;
                       }
                     if(!contained)
                        continue;
                    }
                  if(cd2xcConstraint)
                    {
                     bool contained;
                     if(startsInTrough)
                       {
                        double nearRatio=C-pattern.cd2xc_min*XC;
                        double farRatio=C-pattern.cd2xc_max*XC;
                        contained=nearD>=farRatio && nearRatio>=farD;
                       }
                     else
                       {
                        double nearRatio=C+pattern.cd2xc_min*XC;
                        double farRatio=C+pattern.cd2xc_max*XC;
                        contained=nearD<=farRatio && nearRatio<=farD;
                       }
                     if(!contained)
                        continue;
                    }
                  if(cd2abConstraint)
                    {
                     bool contained;
                     if(startsInTrough)
                       {
                        double nearRatio=C-pattern.cd2ab_min*AB;
                        double farRatio=C-pattern.cd2ab_max*AB;
                        contained=nearD>=farRatio && nearRatio>=farD;
                       }
                     else
                       {
                        double nearRatio=C+pattern.cd2ab_min*AB;
                        double farRatio=C+pattern.cd2ab_max*AB;
                        contained=nearD<=farRatio && nearRatio<=farD;
                       }
                     if(!contained)
                        continue;
                    }
                 }

También puede sustituir "true" en el paréntesis de la línea 2 anterior por una variable como "InpPuristPRZ" y declarar la variable como una entrada si desea activar/desactivar el modo PRZ purista en la configuración. Las relaciones de intervalo se comprueban por mero solapamiento, o que alguna parte del intervalo esté en la PRZ (en lugar de sólo holgura).

Saludos,

André

 

Hola Andre,

He descargado los archivos e instalado alexstal_outsidebar en la carpeta "Include". Luego guardé el alexstal_ZZprof, swingchart, fastzz y Harmonic Pattern Finder V2 en la carpeta \MQL5\Indicators\Example.

Cerré la plataforma y una vez abierta de nuevo arrastré el Harmonic Pattern Finder al gráfico. En la pestaña Expertos me aparece el siguiente mensaje:


El indicador está cargado en el gráfico EU y XAG.

Por favor, indíqueme dónde me he equivocado.


Saludos Eckbert

Archivos adjuntos:
 
Eckbert Gevers:

Hola Andre,

He descargado los archivos e instalado alexstal_outsidebar en la carpeta "Include". Después guardé alexstal_ZZprof, swingchart, fastzz y Harmonic Pattern Finder V2 en la carpeta \MQL5\Indicators\Example.

Cerré la plataforma y una vez abierta de nuevo arrastré el Harmonic Pattern Finder al gráfico. En la pestaña Expertos me aparece el siguiente mensaje:


El indicador está cargado en el gráfico EU y XAG.

Por favor, indíqueme dónde me he equivocado.


Saludos Eckbert

Hola Andre, he conseguido solucionar el problema. He creado una nueva carpeta de descargas y todo va bien.

Gracias Eckbert

 

Hola Andre,

¿Es posible utilizar este indicador en un EA?

Estoy utilizando el icustom con todos los parámetros de entrada, pero no puedo acceder a los búferes necesarios para detectar picos y valles

y lo mas importante el buffer con los puntos A, B, C y D

¿Hay algún EA con un ejemplo?

 
João José:

Hola Andre,

¿Es posible utilizar este indicador en un EA?

Estoy utilizando el icustom con todos los parámetros de entrada, pero no puedo acceder a los búferes necesarios para detectar picos y valles

y lo mas importante el buffer con los puntos A, B, C y D

¿Hay algún EA con un ejemplo?

Hola João,

Es posible utilizar el código en un EA pero eso requeriría modificaciones a menos que escribas un EA que interprete los objetos dibujados en el gráfico. No he visto ningún EA basado en él para darte un ejemplo pero puedo darte mi opinión al respecto.

En primer lugar, si está considerando ir por un enfoque con la copia de los búferes, tenga en cuenta que sólo las matrices de doble tipo son compartibles a través de ICustom(). Esto significa que usted necesitaría una matriz para cada uno de los puntos, veces que para cada uno de los patrones. Así que de repente necesitarías tener 4*18=72 buffers sólo para los patrones AB=CD, y el doble de ese número para los patrones proyectados y activos. Por no mencionar el reprocesamiento continuo de estas matrices para evitar que los patrones "antiguos" confundan al EA receptor, y la información que se pierde como la parada PRZ (pero eso se puede arreglar con otro búfer para cada patrón). Aunque podría ser posible hacerlo manteniendo el límite de la plataforma de 512 buffers compartidos, no es lo que la mayoría de los programadores sensatos habrían hecho.

Podría decirse que un mejor enfoque es incorporar partes del código del indicador directamente en un EA para evitar las limitaciones de iCustom(). De esta manera usted puede delegar memoria para cada patrón coincidente y proyectado de una manera fácil, y también un mejor seguimiento de los patrones a medida que se desarrollan. No hace falta decir que requiere refactorizar las secciones de coincidencia de patrones del código (a partir de "//--- bucle principal" en la línea 408) de tal manera que no vaya y dibuje los patrones, sino que proporcione información de ellos a otras partes de la EA.Esto podría implicar algunos detalles como la eliminación de la funcionalidad específica de dibujo y mantener la sobrecarga para eliminar duplicados, pero es el principal cambio necesario para tener un "matcher" básico que puede ser consultado en el código para encontrar patrones, después de lo cual las órdenes de trading pueden ser enviadas.

 

Muy buen indicador.. Creo que el mejor en la web. ¿Ha considerado implementar el patrón de ondas de elliott en este indicador? Podría ser realmente interesante con las proyecciones....

 
Andre Enger:

Hola João,

Es posible utilizar el código en un EA pero eso requeriría modificaciones a menos que escribas un EA que interprete los objetos dibujados en el gráfico. No he visto un EA basado en él para darte un ejemplo pero puedo darte mi opinión al respecto.

En primer lugar, si está considerando ir por un enfoque con la copia de los búferes, tenga en cuenta que sólo las matrices de doble tipo son compartibles a través de ICustom(). Esto significa que usted necesitaría una matriz para cada uno de los puntos, veces que para cada uno de los patrones. Así que de repente necesitarías tener 4*18=72 buffers sólo para los patrones AB=CD, y el doble de ese número para los patrones proyectados y activos. Por no mencionar el reprocesamiento continuo de estas matrices para evitar que los patrones "antiguos" confundan al EA receptor, y la información que se pierde como la parada PRZ (pero eso se puede arreglar con otro búfer para cada patrón). Aunque podría ser posible hacerlo manteniendo el límite de la plataforma de 512 buffers compartidos, no es lo que la mayoría de los programadores sensatos habrían hecho.

Podría decirse que un mejor enfoque es incorporar partes del código del indicador directamente en un EA para evitar las limitaciones de iCustom(). De esta manera usted puede delegar memoria para cada patrón coincidente y proyectado de una manera fácil, y también un mejor seguimiento de los patrones a medida que se desarrollan. No hace falta decir que requiere refactorizar las secciones de coincidencia de patrones del código (a partir de "//--- bucle principal" en la línea 408) de tal manera que no vaya y dibuje los patrones, sino que proporcione información de ellos a otras partes de la EA.Esto podría implicar algunos detalles como la eliminación de la funcionalidad específica de dibujo y mantener la sobrecarga para eliminar duplicados, pero es el principal cambio necesario para tener un "matcher" básico que puede ser consultado en el código para encontrar patrones, después de lo cual se pueden enviar órdenes de trading.


Gracias, probaré el segundo enfoque (y sí, será sólo para puntos D en patrones AB=CD)
 
João José:

Gracias, probaré el segundo enfoque (y sí, será sólo para puntos D en patrones AB=CD)

Andre,

Me decidí por el primer enfoque.

Justo después de llamar a la función DisplayPattern, he añadido 9 nuevos búferes para almacenar A, B, C, D y toro / oso. Y algunos ajustes más por defecto

Ya está funcionando, gracias

 
danizani95:

Muy buen indicador.. Creo que el mejor en la web. ¿Ha considerado implementar el patrón de ondas de elliott en este indicador? Podría ser realmente interesante con las proyecciones....

Gracias por el comentario.

Por lo que yo sé, las ondas de Elliot no son armónicas en sí mismas, sino que se trata de una teoría de estructuras de ondas definida de forma más general. Las ondas de Elliot tienen tres máximos sucesivamente más altos antes de dos mínimos más bajos (compra en el segundo mínimo), y varias composiciones y clasificaciones sobre cómo puede ocurrir esto. Algunos analistas técnicos parecen creer, que la relación entre los armónicos y las ondas de Elliot es que el segmento X-A debe corresponder a la fase de impulso de Elliot, y la parte ABCD corresponde a la corrección de Elliot. Por lo tanto, diferentes patrones armónicos, como el Gartley y el Bat, son diferentes manifestaciones del mismo fenómeno de Elliot.

Añadir marcadores de ondas de Elliot al indicador es menos útil, ya que algunos de los patrones en sí son ondas de Elliot completas. Una cosa que he considerado sin embargo en una nueva versión es un mecanismo de filtrado que hace que sea fácil de añadir filtros definidos por el usuario para el buscador de patrones. Así, sería rápido añadir, por ejemplo, un "filtro de onda de Elliot" que elimine los patrones armónicos en los que no haya una estructura de impulsos de escala más fina en el tramo XA. Esto podría detectarse, por ejemplo, comprobando si un zigzag en un marco temporal inferior tiene tres máximos superiores sucesivos.

Saludos

 
João José:

Andre,

Decidí ir en el primer enfoque.

Justo después de llamar a la función DisplayPattern, he añadido 9 nuevos búferes para almacenar A, B, C, D y toro / oso. Y algunos ajustes más por defecto

Ya está funcionando, gracias

Genial