Comparación de dos gráficos de cotización con distorsiones no lineales en el eje X - página 7

 
hrenfx:

Cómo se resuelve este problema mediante DTW (ejemplo):

  1. Tenemos que encontrar situaciones similares en el historial como las 100 barras extremas.
  2. El historial disponible es de 1 000 000 de barras.
  3. En primer lugar, tomamos 1.000.000 de secuencias de 50 barras y las comparamos con el patrón mediante DTW.
  4. A continuación, tomamos otro 1.000.000 de secuencias de 55 barras y las comparamos mediante DTW con la plantilla.
  5. Esta vez son 60 bares.
  6. .....
  7. A 100 bares.
  8. .....
  9. 300 bares. Y aquí es donde podemos parar.

En total hemos realizado 50.000.000 de comparaciones utilizando el algoritmo DTW que tiene una complejidad de O(N^2). Es decir, se realizaron aproximadamente 5 * 10^11 (500 mil millones) de operaciones de cálculo elementales.

Ahora ha llegado una nueva barra: hemos vuelto a hacer 500.000 millones de cálculos.

Decidimos ejecutarlo en la historia, a partir de 200 000 del elemento más externo. Aproximadamente, se necesitan 200.000 veces 500.000 millones de cálculos cada una para hacer una carrera. Son 10^17 cálculos en total.

Incluso si hay una optimización complicada, no se obtendrá una ganancia de más de dos órdenes de magnitud. Es decir, tendrá que realizar 10^15 cálculos como máximo.


Primero entiende el principio del algoritmo antes de decir semejantes tonterías. La complejidad del algoritmo es O(n*m), donde n y m son las longitudes de los dos vectores de entrada.

p.d. No hay que hacer "a los 50 bares, a los 55 bares", porque una de las tres distorsiones posibles es la falta de una observación.

p.p.s. El DTW con restricciones de forma de trayectoria también existe, tu "y podemos parar ahí" también es completamente innecesario.

p.p.p.s. Su método de "zigzag + cálculo de correlación" mostrará un sinsentido, ya que el zigzag se basará en los máximos de una variable aleatoria ruidosa, lo que le dice poco.

p.p.p. Para buscar en un gran flujo de audio, se utilizan métodos completamente diferentes.

 
IgorM:
El artículo sobre DTW en Habrahabr http://habrahabr.ru/blogs/algorithm/135087/ parece estar bastante bien escrito, pero no consigo averiguar cómo utilizar DTW para OHLC, ¿podría alguien explicármelo?


Para el OHLC hay que pensar en una función para el espaciado de las barras. Por ejemplo:

1. se dan dos barras

2. aproximar cada una de las barras por un polinomio de tercer grado (para la barra C>O por puntos: {(t[0];Open), (t[1];Low), (t[2];High), (t[3];Close)}, para la barra O>C por puntos {(t[0];Open), (t[1];High), (t[2];Low), (t[3];Close)}, donde t[i]=i/3)

3. Considera la distancia como raíz cuadrada de la integral del cuadrado de la diferencia de dos polinomios en el intervalo 0..1.

(no lo he inventado yo, el método parece ser bien conocido y disponible para todas las personas interesadas).

 
Integer:

Primero deberías leer la tarea del autor del hilo y sus respuestas.

Estoy de acuerdo, la tarea fue formulada para encontrar un criterio de similitud. He realizado un paso más lógico que el autor aplicará, basado en su trabajo anterior con el criterio de similitud a través del QC de Spearman. Tal vez erróneamente, el autor está pensando en aplicar un criterio de similitud nuevo para él a otro.
 
hrenfx:

Decidí correr en la historia, comenzando con el elemento más externo de 200.000. Aproximadamente, la ejecución requiere 200.000 veces 500 mil millones de cálculos cada una. Son 10^17 cálculos en total.

Incluso si hay una optimización complicada, no se obtendrá una ganancia de más de dos órdenes de magnitud. Es decir, tendrá que realizar 10^15 cálculos como máximo.

La tarea es mucho más modesta: comparar lo que ha ocurrido hoy con el inicio del día anterior (¡los tamaños de los patrones son diferentes!) y evaluar la similitud. Si está presente - para dibujar una trayectoria aproximada del curso para el resto del día de hoy. Si tomamos H1, son 24 barras. En cualquier caso, no más de 24 comparaciones. En la M15 son 96 comparaciones al máximo. Según mis observaciones, la similitud se da en 2 días como máximo, y luego el mercado "se olvida" de todo. La optimización durante meses y años es contraproducente.
 
anonymous:


Primero, infórmate sobre el principio del algoritmo, antes de inventarte semejantes tonterías. La complejidad del algoritmo es O(n*m), donde n y m son las longitudes de dos vectores de entrada.

¿Por qué eres tan hostil y agresivo? Lee las estimaciones de la complejidad del algoritmo. O(N^2) no contradice lo que has escrito. Los algoritmos con esta complejidad son adecuados para tareas con pequeñas cantidades de datos.

p.d. No hay que hacer "a los 50 bares, a los 55 bares", ya que una de las tres distorsiones posibles es la falta de una observación.

p.p.s. El DTW con restricciones de forma de trayectoria también existe, tu "y puedes parar allí" también es completamente innecesario.

Obsérvese que la palabra "áspera" se menciona varias veces en el ejemplo anterior. Si se tienen en cuenta todos los matices, el puesto crecerá hasta alcanzar un tamaño descomunal. Puede mencionar el algoritmo FastDTW y otras optimizaciones algorítmicas adicionales. Es mejor hacer brillar tu cerebro y tus conocimientos en la práctica.

p.p.p.s. Su método de "zigzag + cálculo de correlación" mostrará un sinsentido, ya que el zigzag se basará en los máximos de una variable aleatoria ruidosa, lo que le dice poco.

En su idioma: "tonterías". ¿Podría ilustrar esto de forma constructiva con un ejemplo?

p.p.p. Para buscar en un gran flujo de audio, se utilizan métodos completamente diferentes.

Eso es interesante.
 
wmlab:
La tarea es mucho más modesta.

Entonces me he pasado. Probablemente no haya nada más sencillo que DTW para una tarea tan simple. Pero la comparación de secuencias de datos tan pequeñas es cuestionable.

¿Puede dar un ejemplo de la vida en el que su hipótesis parezca haber funcionado?

 
hrenfx:

Entonces me he pasado. Probablemente no haya nada más sencillo que DTW para una tarea tan simple. Pero la comparación de secuencias de datos tan pequeñas es cuestionable.

¿Puede dar un ejemplo de la vida, cuando su hipótesis parece haber funcionado?


Viene de la vida real - me he dado cuenta de que en el EURUSD cambio mentalmente el gráfico ya obtenido de hoy por el de ayer. Si al menos la primera mitad del día coincide visualmente, podemos hacer un pronóstico (si no es viernes y si no hay noticias). "Visualmente" es una alternancia de altibajos, los niveles no coinciden. Bueno, es como mirar una ilustración de la evolución: las imágenes adyacentes son similares, las lejanas no. Pues bien, si las fotos de hoy y de ayer no coinciden, este método no funciona.
 
¿Es posible citar los gráficos de los sitios visualmente coincidentes?
 
wmlab:
La tarea es mucho más modesta: comparar lo que ha ocurrido hoy con el inicio del día anterior (¡los tamaños de los patrones son diferentes!) y evaluar la similitud. Si es así, dibujar una trayectoria aproximada para el resto del día. Si tomamos H1, son 24 barras. En cualquier caso, no más de 24 comparaciones. En la M15 son 96 comparaciones al máximo. Según mis observaciones, la similitud se da en 2 días como máximo, y luego el mercado "se olvida" de todo. La optimización en el intervalo de meses y años es un autoengaño.

Sin embargo, mi indicador y mi Asesor Experto en H4, por ejemplo, operan con una retrospectiva de 900-1000 barras y captan claramente los eventos de las últimas barras https://forum.mql4.com/ru/46596/page124, significa que la memoria del mercado no es algo tan fugaz?
 

Tengo algo... Sólo que no me di cuenta. Experimentar una sensación de éxtasis místico:)

Archivos adjuntos:
idtw2.mq4  8 kb