Características del lenguaje mql5, sutilezas y técnicas - página 100
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
Este deslizamiento puede tardar decenas de milisegundos en completarse.
Este deslizamiento puede durar decenas de milisegundos.
¿Qué significa?
Recuerdo que hace tiempo se mencionaba a Sleep() en los procesos paralelos
¿Qué significa eso?
Exactamente lo que dijo.
Este deslizamiento puede durar decenas de milisegundos.
No son decenas, sino 15,625 milisegundos.
Llevo mucho tiempo utilizando la construcción:
No son decenas, sino 15,625 milisegundos.
Llevo mucho tiempo utilizando el diseño:
Resultado
Resultado
Calcula el tiempo medio.
Acumula el SleepTime y luego divídelo por el número de iteraciones después de que el bucle termine.
De lo contrario, el resultado que acabas de presentar parece aterrador para las mentes inmaduras. También muestra el tiempo mínimo al mismo tiempo.
PS. La función Sleep() en MQL5 no es una redirección a la función win api ::Sleep(). O mejor dicho, si el valor es inferior a 100 es una redirección. Pero por encima de 100 es un bucle con el deslizamiento de win api dentro de él para que pueda ser interrumpido por IsStopped.
Hay un punto más sutil. Si los milisegundos <=0, añadimos 1. Es decir, nunca llamamos a ::Sleep(0).
PPS importar la función Sleep de kernel32.dll y hacer el mismo experimento con ella
Calcula el tiempo medio.
Acumule el SleepTime y luego divídalo por el número de iteraciones una vez completado el ciclo.
No me refería al tiempo medio, sino a la posibilidad de picos. Los encontré cuando esperaba que el historial de operaciones se sincronizara con el resultado de OrderSend. Estaba esperando usando Sleep(0). Resultó ser imposible.
PS. La función Sleep() en MQL5 no es una redirección a la función win api ::Sleep(). Si el valor es inferior a 100, se trata de una redirección. Pero por encima de 100 es un bucle con el deslizamiento de win api dentro de él para que pueda ser interrumpido por IsStopped.
Hay un punto más sutil. Si los milisegundos <=0, añadimos 1. Es decir, nunca llamamos a ::Sleep(0).
Gracias por los detalles. No sabía que Sleep(5000) puede ser terminado a través de IsStopped().
No se trataba del tiempo medio, sino de la posibilidad de picos. Los encontré mientras esperaba la sincronización del historial de operaciones con el resultado de OrderSend. Estaba esperando usando Sleep(0). Resultó que no se puede hacer así.
fxsaber:
Gracias por los detalles. No sabía que Sleep(5000) podía terminarse mediante IsStopped().
https://www.mql5.com/ru/docs/common/sleep
La función tiene incorporada una comprobación del estado de la bandera de parada del EA cada 0,1 segundos.
Así que el sistema operativo Windows nunca ha sido un sistema en tiempo real
Sinceramente, no sé ni lo que significa ni en qué parte de MQL5 se puede encontrar.