Temporizador

 

En realidad, la pregunta es: ¿por qué el temporizador se mide en segundos?

Sinceramente, cuando oí que habría un temporizador nativo, no tenía ni idea de que la unidad atómica de tiempo sería un segundo en lugar de un milisegundo...

No es un descubrimiento muy agradable (para mí) que hice hace poco, cuando quise usarlo.


La premisa es muy simple - el temporizador se utiliza generalmente para la sincronización (a la espera de los datos que se calculan) o la observación (un EA temporizado, en mi opinión, será mucho más adecuado). En ambos casos, un segundo es demasiado, pero nos gustaría ver milisegundos en el temporizador.

Una vez más, es un buen sustituto de la función Sleep en los índices y un segundo es demasiado.

Espero que los desarrolladores consideren esta petición. Si es necesario, haré una solicitud en el Service Desk.

He abierto este tema a debate. ¿Qué te parece?

Общайтесь с разработчиками через Сервисдеск!
Общайтесь с разработчиками через Сервисдеск!
  • www.mql5.com
Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы.
 
TheXpert:

En realidad, la pregunta es: ¿por qué el temporizador se mide en segundos?

Sinceramente, cuando oí que habría un temporizador nativo, no tenía ni idea de que la unidad atómica de tiempo sería un segundo en lugar de un milisegundo...

No es un descubrimiento muy agradable (para mí) que hice hace poco, cuando quise usarlo.


La premisa es muy simple - el temporizador se utiliza generalmente para la sincronización (a la espera de los datos que se calculan) o la observación (un EA temporizado, en mi opinión, será mucho más adecuado). En ambos casos, un segundo es demasiado, pero nos gustaría ver milisegundos en el temporizador.

De nuevo, es un excelente sustituto de la función Sleep en los índices, y de nuevo el segundo es demasiado.

Espero que los desarrolladores no ignoren esta petición. Si es necesario, haré una solicitud en Service Desk.

El tema está abierto a debate. ¿Qué te parece?

Puedes creerme, la realización actual del terminal de comercio y el algoritmo de trabajo con hilos en MQ seconds es una buena solución.

Más aún cuando el tiempo en el probador se genera sobre la base del gráfico de minutos (hasta donde entendí) y por lo tanto una escala de tiempo más pequeña no funcionará.

PS

Por supuesto, los desarrolladores podrían dar una respuesta más detallada, pero es suficiente para entender que el algoritmo actual de trabajo con hilos en el Asesor de Expertos y en el terminal, el intervalo de tiempo inferior a un segundo no es posible en absoluto o simplemente causará inconsistencia en el funcionamiento del EA.

Para imaginar las consecuencias de esta solución, hay que entender lo que sucederá con el Asesor Experto si su temporizador se llama cada 500 milisegundos, mientras que el procesamiento del temporizador, por ejemplo, tarda un minuto....

 

Interesting:

Especialmente porque el tiempo en el probador se genera basado en el gráfico de minutos (según tengo entendido) y por lo tanto una escala de tiempo más pequeña simplemente no lo hará.

¿Qué tiene que ver el probador con esto?

... Un intervalo de tiempo inferior a un segundo no es posible en absoluto o simplemente causará inconsistencia en el trabajo del Asesor Experto.

¿En qué sentido? ¿Por qué no es posible?

Para imaginar las consecuencias de una solución de este tipo, hay que entender qué pasaría con el Asesor Experto si su temporizador es llamado cada 500 milisegundos, mientras que el temporizador de procesamiento, por ejemplo, tarda un minuto....

¿Y qué pasará? ¿Y cuánto más miedo da si el temporizador es de 1s?

¿Tienes la cabeza puesta cuando escribes comentarios?
 
TheXpert:

En realidad, la pregunta es: ¿por qué el temporizador se mide en segundos?

Sinceramente, cuando oí que habría un temporizador nativo, no tenía ni idea de que la unidad atómica de tiempo sería un segundo en lugar de un milisegundo...

No es un descubrimiento muy agradable (para mí) que hice hace poco, cuando quise usarlo.


La premisa es muy simple - el temporizador se utiliza generalmente para la sincronización (a la espera de los datos que se calculan) o la observación (un EA temporizado, en mi opinión, será mucho más adecuado). En ambos casos, un segundo es demasiado, pero nos gustaría ver milisegundos en el temporizador.

Y de nuevo, es un buen sustituto de la función Sleep en los índices y un segundo es demasiado.

Espero que los desarrolladores no dejen de atender la petición. Si es necesario, haré una petición en servicedesk.

Este tema está abierto a debate. ¿Qué te parece?

El temporizador en segundos es nuestra decisión consciente. El temporizador está pensado principalmente para que los Asesores Expertos trabajen sin ticks.

Si quieres sincronizar, utiliza varios Asesores Expertos en diferentes instrumentos que se envíen mensajes personalizados.

O escriba una especie de wotchdog, en bucle, por ejemplo, en un deslizamiento de 50 milisegundos, que envía mensajes a su Asesor Experto principal cuando se producen eventos esperados. De este modo, se garantiza la entrega de los mensajes (a menos que, por supuesto, se desborde la cola).

 
stringo:

El temporizador en segundos es nuestra decisión consciente. El temporizador está pensado principalmente para que los expertos puedan trabajar en ausencia de garrapatas.

Esto se puede hacer sin un temporizador y, por cierto, incluso sin la molestia de enviar un evento a sí mismo. Entonces, ¿por qué no ampliar la funcionalidad?

Si quieres sincronizar, utiliza varios EAs en diferentes herramientas que se envíen mensajes personalizados.

La sincronización puede ser con datos. Por ejemplo, un indicador incorporado. ¿Cómo resolver esta sincronización en el indicador? No pregunto por los Asesores Expertos, ahí se resuelve todo sin problemas. Pero en un indicador, Sleep es una parada de todo el hilo, y significa el resto de los indicadores. Y eso significa que hay muchos problemas de sincronización.

También puede escribir una especie de bucle de vigilancia para el deslizamiento de 50 mseg, que envía mensajes a su Asesor Experto principal cuando se producen eventos esperados. Se garantizará la entrega de los mensajes (a menos que se desborde la cola, por supuesto).

Tendrá que hacerlo, si nada cambia...
 
TheXpert:

¿Qué tiene que ver esto con el probador?

¿En qué sentido? ¿Por qué no es posible?

¿Y qué pasaría? ¿Y cuánto más miedo da si el temporizador es de 1s?

¿Utilizas la cabeza cuando escribes comentarios?

Creo que si conoces las unidades de tiempo atómicas, probablemente sepas cómo se organizan los procesos y los hilos en el SO y el resto del software.

Pero sólo para recordar (por si hay quien no lo sabe) lo básico - Todo lo que ocurre en el sistema se divide en procesos e hilos, cada proceso puede tener desde un hilo hasta varios. A grandes rasgos, cada archivo ejecutable que se ejecuta en el sistema es un PROCESO. Cada proceso tiene una prioridad, y cada hilo en un proceso tiene una prioridad.

Basándose en estas prioridades, el sistema asigna el tiempo de procesador a cada proceso (o hilo de un determinado proceso).

Así, la arquitectura del terminal de cliente es tal que sólo se puede lanzar un Asesor Experto y varios indicadores en cada gráfico (como usted sabe). El Asesor Experto tiene un solo hilo, pero cada indicador tiene su propio hilo (completamente independiente) del Asesor Experto.

Estará bien, pero el Asesor Experto o el propio indicador pueden ejecutarse sólo en su hilo, es decir, cualquier línea de código toma todo el hilo y no son posibles otras acciones en ese hilo (por supuesto, hay dudas sobre el procesamiento de los ticks, pero lo más probable es que encajen en el cuadro general).

En este caso, para cada gráfico se forma un hilo de eventos independiente que es procesado secuencialmente por el sistema.

Por lo tanto, el procesamiento del temporizador no puede ser llamado hasta que el procesamiento del temporizador anterior haya terminado. O, simplemente, OnTimer() no podrá ejecutarse hasta que el hilo que debería procesar el temporizador esté ocupado.

Para ilustrar la imposibilidad de iniciar el procesamiento del temporizador por el segundo hilo se puede utilizar este ejemplo (tonto pero claro):

int OnInit()
{
//----------------------------------------------------------------------------//
//Work variables
//----------------------------------------------------------------------------//
EventSetTimer(1);
//----------------------------------------------------------------------------//
return(0);
//----------------------------------------------------------------------------//
}

void OnTimer()
{
//----------------------------------------------------------------------------//
//Work variables
//----------------------------------------------------------------------------//
Print(TimeLocal());
Sleep(2000);
//----------------------------------------------------------------------------//
}

PS

Sobre el probador de estrategias, ¿cómo propones formar el tiempo allí?

 

Interesting:

La arquitectura del terminal de cliente es tal que sólo se puede iniciar un Asesor Experto y varios indicadores en cada gráfico (como usted sabe). El Asesor Experto tiene un solo hilo, pero cada indicador tiene su propio hilo (completamente independiente) del Asesor Experto.

¿Desde cuándo? No veo ningún problema con los scripts y los Expert Advisors en absoluto, ya que funcionan en sus propios hilos.

Los indicadores trabajan TODOS en UN hilo, como sabes, y eso complica la tarea de organizar el temporizador en cualquier indicador. Y a veces me gustaría mucho.

El ejemplo siguiente muestra cómo el temporizador no puede ser iniciado por un segundo hilo (contundente pero ilustrativo):

He aquí un ejemplo de trabajo. Muestra clara y contundentemente el nivel de tu pensamiento, sobre todo en el contexto del post anterior también.

Por favor, no vuelvas a responder a mis mensajes nunca más, de lo contrario no podré contenerme y te insultaré y recibiré un baneo.

No obstante, si quieres, no dudes en escribir, estaré encantado de burlarme de ti en cualquier tema relacionado con la programación, al diablo con la prohibición.

En cuanto al probador de estrategias, ¿cómo sugieres que se forme el tiempo allí?
No es así, por ahora me parece bien.
 
TheXpert:

¿Desde cuándo? No veo ningún problema con los scripts y los EAs, ya que todos funcionan en sus propios hilos.

Y los indicadores funcionan TODOS en UN hilo, que se sepa, y complica la tarea de organizar el temporizador en cualquier indicador. Y a veces realmente quieres hacerlo.


Quería no contestar, pero no pude evitarlo.

Los scripts no me interesan, mientras que no estoy seguro de dónde he dicho que los Asesores Expertos no se ejecutan en hilos separados (cada uno en su propio hilo). Aquí, señálame el lugar donde dije lo contrario ....

No estoy seguro de los indicadores, porque no trabajo mucho con ellos (seguramente esta cuestión se discutió en los foros, y si pasa algo, los desarrolladores lo corregirán). Sé con certeza que para cada indicador es posible prescribir su temporizador (no depende del experto), ya he utilizado esta posibilidad.

Sé exactamente lo que debería haber dicho sobre los índices.

TheXpert:

El ejemplo funciona. Muestra clara y contundentemente el nivel de tu pensamiento, sobre todo en el contexto del post anterior también.

Y quién iba a dudar de que funcionara, pero el temporizador (qué putada) está funcionando cada 2 segundos en lugar del 1 declarado, que señalé en el bloque de inicialización.

Especialmente para ti, lo puse en un Expert Advisor, aunque el problema de la llamada al temporizador era obvio de todos modos (supongamos que para mayor claridad, dicen que en imágenes todo es más conveniente y fácil de entender)...

Ahora sólo necesito averiguar, ¿cómo se llamará a OnTimer cada 500 milisegundos, si OnTime tarda 1 segundo (en el ejemplo un segundo y dos segundos respectivamente)?

TheXpert:

Por favor, no vuelvas a responder a mis mensajes, de lo contrario no podré contenerme y te insultaré y recibiré un baneo.

No obstante, si quieres, no dudes en escribir, estaré encantado de postear sobre cualquier tema relacionado con la programación, el infierno, la prohibición.

Sí, por favor, no tengo que responder...
 
Sólo en una discusión se puede conocer la verdad y en caso de adecuación de ambos argumentadores uno se aferrará a su opinión (correcta) y el segundo cambiará su opinión (incorrecta) por la del primero.

Así que no le digas a la otra persona en qué se equivoca, o simplemente escribe: "estás equivocado, búscalo en google".

Por lo que entiendo el foro - una conversación de beneficio mutuo, si usted tiene preguntas sólo para el desarrollador ir a servicedesk.

A Interesante

He hecho algunos experimentos con el rendimiento de MQL5. Déjame decirte: la mayoría de los Asesores Expertos realizan la función OnTick en menos de 0,1 segundos.


A TheXpert

¿Por qué tienes tanta prisa?
Pero no veo el sentido de un temporizador de menos de un segundo. ¿Contamos cuando dos electrones chocan?
Si es así, sigue con el bucle y Sleep().

 

mrProF:

A Interesante

He estado haciendo algunos experimentos con el rendimiento de MQL5, y déjame decirte: la mayoría de los EAs realizan la función OnTick en menos de 0,1 segundos.

Depende de lo que se ponga ahí y de la cantidad de datos que se procesen, pero MQL5 es bastante rápido, eso no lo discuto...
 

Otro... ¿No sois hermanos por casualidad?

mrProF:

Pero no veo el sentido de un temporizador de menos de un segundo.

Lo que no quiere decir que no lo haya. Las tareas de cada uno son diferentes.

Si es así, sigue con el bucle y Sleep().

Aquí vamos... ¿Sabemos leer? Muéstrame cómo hacerlo para los pavos.