Discusión sobre el artículo "Desarrollo de un sistema de repetición — Simulación de mercado (Parte 01): Primeros experimentos (I)"
¿Qué sentido tiene el siguiente código?
17 struct st00 18 { 19 datetime dt; 20 int milisec; 21 double Bid, 22 Ask, 23 Last; 24 long Vol; 25 uchar flag; 26 }st00 m_ArrayInfoTicks[];
53 m_ArrayInfoTicks[m_ArrayCount].dt = macroRemoveSec ( StringToTime ( StringSubstr (szInfo, 0 , 19 ))); 54 m_ArrayInfoTicks[m_ArrayCount].milisec = ( int ) StringToInteger ( StringSubstr (szInfo, 20 , 3 ));Si se eliminaron los segundos en la línea 53, entonces los milisegundos y su uso pierden todo significado en la línea 54.
Aunque, los añades a la estructura.
Los eventos del temporizador se generan independientemente. Y cada tick viene de acuerdo a un temporizador, y no en milisegundos y segundos (que son eliminados).
Los milisegundos ahora pesan en el aire, como espacio extra de memoria. Y operaciones innecesarias para el llenado.
Además, no ha resuelto otro problema que permite reducir la construcción de una barra de minutos.
Por ejemplo, los tiempos resaltados en rojo y azul son los mismos, donde el último precio puede o no ser el mismo.
Estos ticks pueden comprimirse y reducir en gran medida el tiempo de construcción de una barra de minutos.
Lo que hace imposible realizar esta compresión con precisión. No hay vinculación de milisegundos a segundos - se ha eliminado.
Por supuesto, hay una baja probabilidad de que el valor de milisegundos se mueva al siguiente segundo, e incluso continúe en los siguientes ticks. Pero está ahí.
Hay una garantía del 100% de exactitud sólo cuando se mueve de una barra de minutos a la siguiente - hay una unión de milisegundos a minutos.
Por ejemplo, los tiempos resaltados en rojo y azul son los mismos, donde el último precio puede o no ser el mismo.
Estos ticks pueden comprimirse y reducir en gran medida el tiempo de construcción de una barra de minutos.
449 2021.10 . 22 09 : 00 : 38.649 107900 107905 6 450 2021.10 . 22 09 : 00 : 38.651 107900 1.00000000 88 451 2021.10 . 22 09 : 00 : 38.651 107895 5.00000000 88 452 2021.10 . 22 09 : 00 : 38.651 107890 5.00000000 88 453 2021.10 . 22 09 : 00 : 38.651 107885 3.00000000 88 454 2021.10 . 22 09 : 00 : 38.651 107880 15.00000000 88 455 2021.10 . 22 09 : 00 : 38.651 107880 3.00000000 88 456 2021.10 . 22 09 : 00 : 38.651 107875 16.00000000 88 457 2021.10 . 22 09 : 00 : 38.651 107870 2.00000000 88 458 2021.10 . 22 09 : 00 : 38.654 107875 1.00000000 88 459 2021.10 . 22 09 : 00 : 38.654 107875 1.00000000 88 460 2021.10 . 22 09 : 00 : 38.654 107880 1.00000000 88 461 2021.10 . 22 09 : 00 : 38.659 107880 2.00000000 88 462 2021.10 . 22 09 : 00 : 38.659 107885 2.00000000 88 463 2021.10 . 22 09 : 00 : 38.660 107885 1.00000000 88 464 2021.10 . 22 09 : 00 : 38.660 107890 3.00000000 88 465 2021.10 . 22 09 : 00 : 38.662 107885 3.00000000 88 466 2021.10 . 22 09 : 00 : 38.662 107880 3.00000000 88 467 2021.10 . 22 09 : 00 : 38.662 107875 2.00000000 88 468 2021.10 . 22 09 : 00 : 38.662 107895 3.00000000 88 469 2021.10 . 22 09 : 00 : 38.662 107900 1.00000000 88 470 2021.10 . 22 09 : 00 : 38.664 107880 1.00000000 88Pero, usted eliminó los segundos en la línea 53.
53 m_ArrayInfoTicks[m_ArrayCount].dt = macroRemoveSec ( StringToTime ( StringSubstr (szInfo, 0 , 19 )));
54 m_ArrayInfoTicks[m_ArrayCount].milisec = ( int ) StringToInteger ( StringSubstr (szInfo, 20 , 3 ));
Y dejaste los milisegundos en la línea 54. Lo que hace imposible realizar esta compresión con precisión. No hay vinculación de milisegundos a segundos - se ha eliminado.
Por supuesto, hay una baja probabilidad de que el valor de milisegundos se mueva al siguiente segundo, e incluso continúe en los siguientes ticks. Pero está ahí.
Hay una garantía del 100% de exactitud sólo cuando se mueve de una barra de minutos a la siguiente - hay una unión de milisegundos a minutos.
¿Necesita milisegundos para comprimir los ticks en el futuro? ¿Lo he entendido bien?
Bueno, "en el futuro" - para mí - todavía no he leído más. Para ti, supongo, esto ya es "en el pasado"...)))
Si esto es así, entonces estoy de acuerdo en que los segundos se puede quitar - la probabilidad de una coincidencia es extremadamente baja.)))
Bueno, "en el futuro" - para mí - todavía no he leído más. Para ti, supongo, esto ya es "en el pasado"...)))
Si esto es así, entonces estoy de acuerdo en que los segundos se puede quitar - la probabilidad de una coincidencia es extremadamente baja.)))
¡Oh, un milagro! Si comprime milisegundos, entonces el tiempo de formación de la vela minuto será 00:01:06. Contra 00:01:52 - sin compresión. Ganamos 46 segundos!)))
Como resultado, con todas las ediciones.
se crearon 1153.809 posiciones de movimiento.
Ticks borrados = 1066231
Comprobando la velocidad de ejecución . 2023.12.02 01:52:21 ---- 2023.12.02 01:53:17
Tiempo para construir la primera vela: 00:00:56 segundos)))
¡Ganamos 56 segundos!
Gracias por su gran trabajo.
Tengo una pregunta. ¿Es posible añadir la opción de rebobinado a la repetición? Me refiero a volver a las velas anteriores y jugar de nuevo.
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
Artículo publicado Desarrollo de un sistema de repetición — Simulación de mercado (Parte 01): Primeros experimentos (I):
¿Qué te parece crear un sistema para estudiar el mercado cuando está cerrado o simular situaciones de mercado? Aquí iniciaremos una nueva secuencia de artículos para tratar este tema.
Este código creará las barras con un periodo de 1 minuto, que es el mínimo requerido por la plataforma para generar cualquier otro periodo del gráfico. Las partes resaltadas no forman parte del código en sí, pero son útiles para analizar la barra de 1 minuto. Nos permiten comprobar si se está creando dentro de ese marco temporal. Si tarda mucho más de 1 minuto en crearse, tendremos que hacer algo al respecto. Sin embargo, si se está creando en menos de 1 minuto, tal vez el sistema es viable desde el principio.
Ejecutando este sistema, tendremos el resultado que se muestra en el siguiente vídeo:
Autor: Daniel Jose