Indicadores: Ping - página 2

 
fxsaber:

En realidad no es pequeño ~ 5 ms. Una piedra en el jardín de los que sufren de ping cero.

En la build 1703 el lag medio es el mismo. Pero los picos se hicieron mucho menos.

Realicé un experimento. Comenzó un torrente en una máquina con MT5, esta es la situación

Esto significa que si alguien está utilizando activamente la red, el retardo de la terminal puede ser de hasta 2 segundos. Esto es especialmente importante de entender para aquellos que utilizan VPS, donde el canal de red no depende de uno, sino de muchos clientes. Y poner un TS de noticias en tal VPS, por ejemplo, se vuelve muy riesgoso.

 
fxsaber:


Y, de hecho, inicialmente se dijo que los indicadores en los Asesores Expertos son un cuello de botella, ya que todos los indicadores se ejecutan en un hilo, a diferencia de los Asesores Expertos. Los lags en los Expert Advisors requieren un estudio aparte. La función de obtener lags está en la descripción, así que no es difícil.

¿Podría decirme dónde se afirma que los indicadores llamados en el Asesor Experto se ejecutan en un hilo, y el Asesor Experto de alguna manera paralela a las tareas en sí?

Me pareció que todo lo contrario - el indicador es un programa independiente y puede calcular fácilmente en un hilo paralelo, pero el cálculo tendrá que esperar si no se ha completado por alguna razón. Sé que en el probador de estrategias todo está en un hilo.

 
Aleksey Vyazmikin:

¿Podrías decirme dónde se indica que los indicadores llamados en el Asesor Experto se ejecutan en un hilo, y el Asesor Experto de alguna manera paralela a las tareas en sí?

Foro sobre trading, sistemas automatizados de trading y testeo de estrategias de trading

¿Puede alguien explicar el significado de la aplicación en Asesores Expertos :....

Renat Fatkhullin, 2010.02.06 13:06

Un indicador es una entidad calculada, que tiene requisitos estrictos para trabajar. No tiene derecho a reducir la velocidad y no producir datos (y los datos se requiere de él incondicionalmente).

Los indicadores trabajan en su propio flujo, procesando cada tick de precio y cualquier retraso provocará el bloqueo de todo el sistema (las consecuencias serán muy diversas).

Temíamos que el trabajo con objetos llevara a serios frenos de los indicadores (el trabajo con objetos pasa por una cola especial asíncrona de mensajes). Los experimentos han demostrado que si los objetos se utilizan de forma razonable (sin mover cientos y miles de objetos a la vez), no afectan significativamente a los cálculos. Por eso permitimos el uso de funciones de gestión de objetos en indicadores personalizados. Pero si lo desea, puede crear fácilmente frenos en el terminal por un trabajo poco inteligente con los objetos del indicador.


Para entender lo que es un indicador, tenemos que mirar más profundo - en el acceso a los datos históricos. Cuando se llama a un indicador a través de OnCalculate, se le da el historial disponible.

Si observamos su volumen (mostrando los contadores en los registros), veremos que en realidad se dan decenas y cientos de megabytes en cada tick:

  1. ¿De dónde proceden estas matrices?

    Del gestor global del historial, que se actualiza tick a tick, almacena en caché y recrea los plazos bajo demanda.

  2. ¿Quién las proporciona?

    El terminal las bloquea para su lectura y las proporciona a cada indicador sucesivamente.

  3. ¿Cuántos indicadores se proporcionan?

    Teóricamente un número ilimitado de indicadores, pero uno a uno.

  4. ¿De dónde sacar tanta memoria para dar a cada indicador independencia en los cálculos?

    La memoria es catastróficamente escasa, por lo que existe la única forma de que los indicadores trabajen uno a uno.


La peculiaridad de MetaTrader 5 en comparación con MetaTrader 4 es que ahora el volumen de la historia ha aumentado muchas veces y hemos resuelto un problema muy difícil de rápido (sin copiar decenas de megabytes de historia para cada indicador por separado) recálculo de los indicadores. Incluso dos (o más) indicadores idénticos en marcos temporales idénticos se fusionan en una copia de cálculo y se cuentan una vez.

Ahora usted propone tomar y ralentizar todo el mecanismo, en realidad haciendo puros expertos de los indicadores. Está absolutamente claro que esto es técnicamente irrazonable. Añadir interactividad a los indicadores destruirá inmediatamente el mecanismo de trabajo con el núcleo del terminal: el acceso a los datos.

Como resultado, obtendremos un "terminal lento, ¡ni siquiera pueden dibujar un indicador, y los gráficos se dibujan con retraso!", y nadie dirá "sí, es mi indicador de lujo que funciona, es su culpa". E incluso en este caso se nos acusará de "no proporcionar una separación razonable, no saber escribir software multihilo, etc.".

Por lo tanto, no habrá ningún cambio fundamental en el comportamiento y los principios de trabajo de los indicadores.


 
fxsaber:

Gracias por la información que ha encontrado.

El año 2010 me llama inmediatamente la atención, como sabemos "nunca digas nunca", así que sería interesante saber qué pasa ahora, si realmente no hay cambios.

Además, de la respuesta de Renat se deduce que cada indicador funciona en su propio hilo, por lo que ¿no se deduce de esto que pueden existir al menos dos hilos simultáneamente para un Asesor Experto y un indicador?

Renat afirma que el retraso se debe a la necesidad de proporcionar a los indicadores una gran cantidad de datos(de hecho, decenas y cientos de megabytesse dan en cada tick), pero de acuerdo con las realidades de hoy en día, esto no es una cantidad tan grande de datos, y es muy posible que para el trabajo de los mismos indicadores con los mismos instrumentos, se organice un flujo conjunto de datos históricos, pero un flujo diferente para el cálculo de los propios indicadores, que en parte ya se organizó en 2010"Incluso tenemos dos (o más) indicadores idénticos en los mismos plazos se fusionan en un solo flujo.

Incluso si esto es cierto, es muy posible fusionar los indicadores en un clúster y aplicar OpenCL allí (nunca lo he aplicado yo mismo debido a la poca información para dummies sobre la organización).

 
Aleksey Vyazmikin:

Me interesaría saber qué está pasando ahora...

Uno, dos, tres, cuatro.

 
fxsaber:

Uno, dos, tres, cuatro.

Gracias, eché un buen vistazo a los resultados de la búsqueda. Es sobre todo lo mismo de siempre.

Al final, tenemos un hilo por símbolo para todos los indicadores en ese símbolo. Y tenemos un hilo para cada (?) EA. Por lo tanto, si utilizamos la información para la toma de decisiones de diferentes gráficos, el uso de indicadores es preferible?

Los indicadores tienen una ventaja - trabajo conveniente con la historia de los cálculos.

Tal vez, si usted hace cálculos en cada tick, el indicador puede convertirse en un cuello de botella, porque va a tratar de dar los datos más relevantes, pero si el cálculo se basa en OHLC, a continuación, el cálculo paralelo debe dar una ventaja. Mientras el Asesor Experto solicite información a los indicadores, después de comprobar la situación con la posición actual, estos datos ya estarán listos para su recepción. Y sí, hago cálculos en los indicadores sólo en la apertura de una nueva barra. Y si se combina la lógica de los indicadores, será aún más rápido, ¿o tiene una opinión diferente?

 

Aleksey Vyazmikin:

¿o tienes otra opinión?

cambiar el hilo.

 
Hola, ¿la unidad de medida del ping es en segundos?
 
Manoel Calixto Da Silva Neto:
Hola, ¿la unidad de medida del ping es en segundos?

Está descrita. ¿No lo has leído?

"El retraso de las citas se calcula en milisegundos;"

 

Me acordé de este gran indicador.

Esta es una imagen de una máquina con ping cero. Resulta que el lag interno del Terminal es de ~2 ms de media. Salta en el rango de 0-9 ms.


Por ejemplo, dos ticks llegaron al servidor: el primero, en 10 ms - el segundo. Así que en el Terminal puedes recibir el segundo tick no en 10 ms después del primero, sino en 10-19 ms. En promedio en 12 ms.