Material interesante, ¡gracias!
No me gustó la implementación del reconocimiento de patrones:
//+------------------------------------------------------------------+ //|| Reconocimiento de patrones| //+------------------------------------------------------------------+ PATTERN_TYPE CProgram::GetPatternType(double A,double B,double C,double D,double E)
está claro que el método cumple su cometido, quizás para este artículo sea la solución óptima.
Me gustaría encontrar una solución más elegante (universal) a este problema, ¿algo así como una matriz para almacenar datos (array)? - ¿alguien se ha topado con una implementación de este tipo para la búsqueda de patrones?
Los patrones M2 y M4 de las imágenes son los mismos, ¿se trata de un error tipográfico?
Lo arreglaremos, gracias.
Material interesante, ¡gracias!
no me gustó la implementación del reconocimiento de patrones:
está claro que el método cumple su cometido, quizás para este artículo sea la solución óptima
me gustaría encontrar una solución más elegante (universal) a este problema, ¿algo como una matriz para almacenar datos (array)? - ¿alguien ha encontrado una implementación de este tipo para la búsqueda de patrones?
Por supuesto, podríamos ponerlo todo en una estructura o array. Pero hasta ahora es más fácil de entender desde cero en forma de puntos de una polilínea.
...
Me gustaría encontrar una solución más elegante (universal) a este problema, ¿algo así como una matriz para almacenar datos (array)? - ¿alguien se ha topado con una implementación de este tipo para la búsqueda de patrones?
Yo sí, lo he hecho universalmente. Pero es poco probable que lo encuentre, ni siquiera sé por dónde empezar a buscar.
Hay una línea, hay dos puntos. El tercer punto puede ocupar una de estas dos posiciones: entre el primer y el segundo punto, o por encima del primer punto (supongamos que la primera línea está dirigida hacia arriba). Ahora hay tres puntos, el cuarto punto puede ocupar una de las tres posiciones o la parte inferior de dos.... Primero hay dos puntos en el array, te sitúas en el índice 1, añades todas las variantes de la posición del tercer punto al final del array. Te mueves al índice 2, añades todas las variantes de otro punto al final del array.... etc. El patrón en sí se establece por números, tan pronto como el tamaño de la matriz alcanza el tamaño especificado - aquí está el patrón con este número. Necesitas un array de estructuras, y en la estructura un array con números de puntos.
***
El array no contiene coordenadas de puntos, sino números de vértices desde el principio. Por ejemplo, M16 se codificaría así: {1, 3, 2, 5, 4}. Y si añades otro vértice, obtienes estas opciones?
{1, 3, 2, 5, 4}
{1, 3, 2, 5, 6, 4}
{1, 3, 2, 5, 4, 6}
***
Así es como lo comprobamos. Digamos que buscamos un patrón: {1, 3, 2, 5, 4} Esto significa que el vértice 1 está por debajo del 3, el 5 está por encima del 2 y por debajo del 4, etc.
Lo era, era universal. Pero no creo que lo encuentre, ni siquiera sé por dónde empezar a buscar.
Hay una línea, son dos puntos. El tercer punto puede ocupar una de estas dos posiciones: entre el primer y el segundo punto, o por encima del primer punto (supongamos que la primera línea está dirigida hacia arriba). Ahora hay tres puntos, el cuarto punto puede ocupar una de las tres posiciones o la parte inferior de dos.... Primero hay dos puntos en el array, te sitúas en el índice 1, añades todas las variantes de la posición del tercer punto al final del array. Te mueves al índice 2, añades todas las variantes de otro punto al final del array.... etc. El patrón en sí se establece por números, tan pronto como el tamaño de la matriz alcanza el tamaño especificado - aquí está el patrón con este número. Necesitas un array de estructuras, y en la estructura un array con números de puntos.
***
El array no contiene coordenadas de puntos, sino números de vértices desde el principio. Por ejemplo, M16 se codificaría así: {1, 3, 2, 5, 4}. ¿Y si añades otro vértice, obtienes estas variantes?
{1, 3, 2, 5, 4}
{1, 3, 2, 5, 6, 4}
{1, 3, 2, 5, 4, 6}
***
Y la forma de comprobarlo es la siguiente. Digamos que buscamos un patrón: {1, 3, 2, 5, 4} Esto significa que el vértice 1 está por debajo del 3, el 5 está por encima del 2 y por debajo del 4, etc.
Sí, ese es el tipo de codificación que me gustaría encontrar.
Parece una matriz de adyacencia de grafo ponderado, donde el peso significará qué vértice es mayor/inferior que el vértice actual.
- neerc.ifmo.ru
Excelente trabajo, tanto en lo que se refiere al planteamiento del problema y su solución informática como a la aplicación de la interfaz gráfica.
Y sólo a modo de sugerencia: si es posible, añada los resultados de la investigación sobre la eficacia de las propias cifras para encontrar puntos de entrada en el mercado.
Probablemente, debido a lo voluminoso de la tarea, puede ser un tema y una publicación aparte.
Excelente trabajo, tanto por el planteamiento del problema y su solución informática como por la implementación de la interfaz gráfica de usuario.
Y sólo como sugerencia: si es posible, añada los resultados de la investigación sobre la eficacia de las propias cifras para encontrar puntos de entrada en el mercado.
Probablemente, debido a lo voluminoso de la tarea, puede ser un tema y una publicación aparte.
Gracias, Alexander, por gustarte mi artículo. Acerca de la investigación, la aplicación de este artículo está listo para ellos. Las opciones de configuración actuales ya presentan un gran número de opciones para la búsqueda.
En el próximo artículo intentaré ampliar las posibilidades de la aplicación.
Por supuesto, podríamos ponerlo todo en una estructura o array. Pero de esta manera es más fácil de entender desde cero en forma de puntos de una polilínea.
Está claro que además de la universalidad, el código en el artículo debe ser clara y legible, pero me gustan los problemas combinatorios, o para menear mi cerebro, así que agrupó esta función por la primera condición a través de una búsqueda en ME:
//+------------------------------------------------------------------+ //|| Reconocimiento de patrones| //+------------------------------------------------------------------+ PATTERN_TYPE GetPatternType(double A,double B,double C,double D,double E) { if(A>B && C>A && B>E && E>D) return(W6); if(A>B && C>E && E>A && B>D) return(W11); if(A>B && E>C && C>A && B>D)return(W12); if(A>B && C>E && E>D && D>A)return(W15); if(A>B && E>C && C>D && D>A) return(W16); // A>C if(A>C && B>D && D>A && C>E) return(M3); if(A>C && B>D && D>E && E>A) return(M8); if(A>C && D>B && B>E && E>A) return(M10); if(A>C && C>B && B>E && E>D) return(W1); if(A>C && C>E && E>B && B>D) return(W2); if(A>C && C>E && E>D && D>B) return(W4); if(A>C && E>A && C>B && B>D) return(W8); if(A>C && E>A && C>D && D>B)return(W10); // C>A si no ? if(C>A && B>D && D>C && A>E) return(M7); if(C>A && D>B && B>C && A>E) return(M9); if(C>A && B>D && D>E && E>C) return(M13); if(C>A && D>B && B>E && E>C) return(M15); if(C>A && D>E && E>B && B>C) return(M16); if(C>A && A>E && E>B && B>D) return(W7); if(C>A && A>E && E>D && D>B) return(W9); if(C>A && E>C && A>D && D>B) return(W14); if(B>A && A>D && D>C && C>E) return(M1); if(B>A && A>D && D>E && E>C) return(M2); if(B>A && D>B && A>C && C>E) return(M5); if(B>A && D>B && A>E && E>C) return(M6); if(B>A && D>E && E>B && A>C) return(M11); if(B>D && D>A && A>E && E>C) return(M4); if(B>D && D>C && C>E && E>A) return(M12); if(B>D && A>E && E>C && C>B) return(W3); if(D>B && B>C && C>E && E>A) return(M14); if(D>B && A>E && E>C && C>D) return(W5); if(D>B && C>E && E>A && A>D) return(W13); return(-1); }
todavía debe haber una solución compacta y universal!..... pero aún no la veo
Está claro que además de la universalidad, el código en el artículo también debe ser visual y legible, pero me gustan los problemas de combinatoria, o para menear mi cerebro, así que agrupó esta función por la primera condición a través de la búsqueda en ME:
todavía debe haber una solución compacta y universal!..... pero todavía no la veo
Así que buena solución por encima de Dmitry sugirió. Puedes hacerlo de esta manera:
En los argumentos del método GetPatternType pasa la dimensión del patrón y listo. El mismo hace todas las combinaciones posibles a partir de este número y en base a estos datos busca una determinada en una estructura o array.
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
Artículo publicado Estudio de las figuras técnicas de Merrill:
En el presente artículo, vamos a analizar el modelo de las figuras técnicas de Merrill, e intentaremos averiguar hasta qué punto estos patrones técnicos son útiles hoy en día. Para este propósito, crearemos una herramienta para testearlos y aplicaremos este modelo a diferentes tipos de datos, a saber: precio de cierre, sus máximos y mínimos, indicadores del tipo oscilatorio.
Para que esté bien claro de qué manera y para qué datos de entrada vamos a aplicar el modelo de las figuras técnicas de Merrill, es necesario aclarar qué es lo que representan. Hay dos categorías principales: son figuras que tienen la forma de las letras inglesas M y W. Se llaman los patrones de M y los patrones de W. Cada una de estas categorías incluye 16 figuras.
En la figura 1, se muestran 16 patrones M que, de una manera u otra, parecen a la letra M. Como podemos observar, su diferencia consiste en la ubicación mutua de cinco puntos que forman el patrón:
Autor: Alexander Fedosov