Características del lenguaje mql5, sutilezas y técnicas - página 94
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
¿y cómo ves la aplicación práctica de GetMicrosecondCount que estropea todo el trabajo del programa en la versión actual? describe la aplicación práctica
por ejemplo, no veo ninguna variante ni en c++ ni aquí, salvo las descritas por Renat, es decir, medir el tiempo de ejecución del código con precisión en mcs
No entiendo su persistencia, francamente hablando
El alcance de esta función es bastante amplio, si se tiene un vuelo de fantasía.
Ya he mencionado anteriormente el multitemporizador que permite ejecutar varios temporizadores con diferentes períodos al mismo tiempo.
Esto es también lo que ya ha escrito fxsaber.
La función de microsegundos, comparada con la de milisegundos, es útil no sólo para las pruebas de velocidad, sino también para obtener diversas informaciones de telemetría durante el tiempo de ejecución de los Asesores Expertos.
Si la precisión de dicha telemetría es de 16 ms (más exactamente 1/64 s = 15625 microsegundos), se trata de un error muy grande.
Configurado, pero no ayuda - no entiendo la razón. Cierto, mi servidor es ntp2.stratum2.ru
Si utilizas GetTickCount para intervalos tan largos, no deberías tener ningún problema.
Se producirán problemas si se utiliza GetMicrosecondCount.
Si el uso de la función de microsegundos es una cuestión de principios, es mejor que utilice esta variante de la función.
Información a tener en cuenta:
Tiempo aproximado de ejecución de las funciones:
- GetTickCount - ~ 2 ns
- GetMicrosecondCount - ~ 30 ns
-RealMicrosecondCount - ~ 40 ns
Si utiliza GetTickCount para intervalos tan largos, no debería tener ningún problema.
Se producirán problemas si se utiliza GetMicrosecondCount.
Si el uso de la función de microsegundos es una cuestión de principios, es mejor utilizar esta variante de la función.
Información a tener en cuenta:
Tiempo aproximado de ejecución de las funciones:
- GetTickCount - ~ 2 ns
- GetMicrosecondCount - ~ 30 ns
-RealMicrosecondCount - ~ 40 ns
Estoy utilizando el código de otra persona y no hay tales funciones en absoluto, pero este efecto de desincronización se produce.
¿Cuál es la probabilidad de que cambie la hora local del ordenador entre dos llamadas a GetMicrosecondsCount utilizadas para medir el tiempo en microsegundos?
Esto depende, en primer lugar, del periodo establecido de sincronización de la hora del sistema con la hora de Internet. Por ejemplo, yo programo la sincronización una vez al día, y durante este tiempo hay más de 1 s de diferencia. Alguien sincroniza una vez por hora, o incluso más a menudo. Entonces, calcula la probabilidad.
...porque ya conozco esa función de GetMicrosecondCount() y que esta función es más lenta que GetTickCount.
Supongo que esta lentitud se debe a que, además de obtener el PerfomanceCount nativo, también se sacude la hora local, por lo que hay que pagar por este servicio bajista. Si comparáramos la velocidad del PerfomanceCount y del GetTickCount directamente, la diferencia sería mucho menor.
Aunque, francamente hablando, no entiendo muy bien toda esta charla sobre la velocidad de ejecución cuando estamos hablando de 2-20 nanosegundos. Esta diferencia sólo se puede sentir cuando se ejecuta un bucle casi vacío (con esta función) durante cien millones de iteraciones. Esta solución en sí está mal diseñada.
Y sí, te quedarás igual de flipado con una función pura de WinAPI (ya sea GetTickCount o QueryPerformanceCounter) cuando metas una chorrada en la sierra cambiando la fecha aunque sea por segundos. No hay ninguna protección de la que se habla que supuestamente se tiene. Se le ha chupado el dedo como un problema y una supuesta solución.
Así que todo es cierto: así es WinAPI y esta es la realidad.
Te equivocas, he citado específicamente el código aquí usando WinApi. Ejecútalo, cambia el reloj en el proceso y mira el resultado.
No está muy claro cómo llevar a cabo cualquier diálogo con usted, si sus argumentos se basan en especulaciones. E incluso no considera necesario familiarizarse con la discusión del tema.
El campo de aplicación de esta función es bastante extenso, si se tiene un vuelo de fantasía.
Ya he mencionado anteriormente el multitemporizador, que permite ejecutar varios temporizadores con diferentes períodos al mismo tiempo.
Esto es también lo que ya escribió fxsaber.
La función de microsegundos, comparada con la de milisegundos, es útil no sólo para las pruebas de velocidad, sino también para obtener diversas informaciones de telemetría durante el tiempo de ejecución de los Asesores Expertos.
Si esa telemetría tiene una precisión de 16 ms (más exactamente 1/64 s = 15625 microsegundos), es un error bastante grande.
Constantemente mido la velocidad de ejecución, como escribió Renat, nunca he visto ningún problema, parece que te enrollas de la nada, o no quieres cambiar lo que estaba escrito antes, eso pasa cuando lo consigues todo en vano, no te ofendas, pero el mismo multitimer que mencionaste se puede implementar fácilmente sin ningún error, pero tienes que pagar por ello, Renat también dio una descripción en respuesta a mi pregunta anterior
La boca de la Verdad es muda para los no iniciados.
bueno, sí ))
Depende, en primer lugar, del periodo de sincronización de la hora del sistema con la de Internet. Por ejemplo, yo pongo la sincronización una vez al día, y durante este tiempo hay más de 1 segundo de divergencia. Alguien lo tiene una vez por hora, o incluso más a menudo. Aquí se puede estimar la probabilidad.
¿Seguro que has leído toda la pregunta?
...entre dos llamadas a GetMicrosecondsCount...