Así podemos comprobar si la tabla de historial actual, generada previamente mediante las funciones HistorySelect, contiene el registro que necesitamos. Lo mismo ocurre con DEAL_TICKET.
Es posible que no se sepa que la función GetMicrosecondCount, a diferencia de GetTickCount, está vinculada a la hora local del ordenador. Esto significa que si esta hora cambia (por ejemplo, debido a la sincronización con la hora de Internet), los valores de GetMicrosecondCount también cambiarán en un valor correspondiente.Esto debe tenerse en cuenta si esta función se utiliza para medir intervalos de tiempo; de hecho, no debería utilizarse para este propósito. GetTickCount, por otro lado, no tiene estos problemas.
Como demostración, puede ejecutar este código y cambiar la hora del ordenador mientras se está ejecutando.
Es posible que no se sepa que la función GetMicrosecondCount, a diferencia de GetTickCount, está vinculada a la hora local del ordenador. Esto significa que si esta hora cambia (por ejemplo, debido a la sincronización con la hora de Internet), los valores de GetMicrosecondCount también cambiarán en un valor correspondiente.Esto debe tenerse en cuenta si esta función se utiliza para medir intervalos de tiempo; de hecho, no debería utilizarse para este propósito. GetTickCount, por otro lado, no tiene estos problemas.
Para demostrarlo, puede ejecutar este código y cambiar la hora del ordenador durante la ejecución del código.
Se trata de un error que los desarrolladores deberían solucionar. La función entonces no se ajusta a la descripción:
Функция GetMicrosecondCount() возвращает количество микросекунд, прошедших с момента начала работы MQL5-программы.
El valor de esta función en comparación con GetTickCount es de microsegundos, no de milisegundos (una precisión 1000 veces mayor). Además, no es hinchable. Por eso no es del todo correcto hablar de su sustituibilidad.
No todo el mundo sabe que la función GetMicrosecondCount, a diferencia de GetTickCount, está vinculada a la hora local del ordenador. Esto significa que si esta hora cambia (por ejemplo, debido a la sincronización con la hora de Internet), los valores de GetMicrosecondCount también cambiarán en un valor correspondiente.Esto debe tenerse en cuenta si esta función se utiliza para medir intervalos de tiempo; de hecho, no debería utilizarse para este propósito. GetTickCount, por otro lado, no tiene estos problemas.
Para demostrarlo, puedes ejecutar este código y cambiar la hora del ordenador mientras se está ejecutando.
Una observación más importante: de ella se deduce que es absolutamente inapropiado utilizar la función GetTickCount en lugar de GetMicrosecondCount. Creo que será una sorpresa para mucha gente.
Examinando el funcionamiento de un simple script:
voidOnStart()
{
uint i=GetTickCount();
uint i0=GetTickCount();
while(i==i0) i0=GetTickCount();
int N1=1;
ulong t1=GetMicrosecondCount();
uint i1=GetTickCount();
uint i2=GetTickCount();
while(i1==i2) { i2=GetTickCount(); N1++;}
t1=GetMicrosecondCount()-t1;
ulong t=GetMicrosecondCount();
ulong t0=GetMicrosecondCount();
while(t==t0) t0=GetMicrosecondCount();
int N2=1;
ulong t2=GetMicrosecondCount();
ulong t3=GetMicrosecondCount();
while(t2==t3) { t3=GetMicrosecondCount(); N2++;}
ulong t4=t3-t2;
Print("1 значение в милисекундах: " +(string)i1+", следующее значение "+ (string)i2 + ", разница - " +(string)t1 +
" микросекунд, время выполнения функции GetTickCount (одного прохода цикла) = " +DoubleToString((double)t1*1000.0/N1,3)+ " наносекунды");
Print("1 значение в микросекундах: " +(string)t2+", следующее значение "+ (string)t3 + ", разница - " +(string)t4 +
" микросекунд, время выполнения функции GetMicrosecondCount (одного прохода цикла) = " +DoubleToString((double)t4*1000.0/N2,3)+ " наносекунды");
}
El resultado del trabajo:
2018.07.2700:23:02.261 TestTimeCount 1 значение в милисекундах: 25225093, следующее значение 25225109, разница - 15663 микросекунд, время выполнения функции GetTickCount (одного прохода цикла) = 2.323 наносекунды
2018.07.2700:23:02.261 TestTimeCount 1 значение в микросекундах: 20247, следующее значение 20248, разница - 1 микросекунд, время выполнения функции GetMicrosecondCount (одного прохода цикла) = 33.333 наносекунды
2018.07.2700:23:03.590 TestTimeCount 1 значение в милисекундах: 25226421, следующее значение 25226437, разница - 15586 микросекунд, время выполнения функции GetTickCount (одного прохода цикла) = 2.324 наносекунды
2018.07.2700:23:03.590 TestTimeCount 1 значение в микросекундах: 22835, следующее значение 22836, разница - 1 микросекунд, время выполнения функции GetMicrosecondCount (одного прохода цикла) = 30.303 наносекунды
2018.07.2700:23:04.920 TestTimeCount 1 значение в милисекундах: 25227750, следующее значение 25227765, разница - 15657 микросекунд, время выполнения функции GetTickCount (одного прохода цикла) = 2.309 наносекунды
2018.07.2700:23:04.920 TestTimeCount 1 значение в микросекундах: 23701, следующее значение 23702, разница - 1 микросекунд, время выполнения функции GetMicrosecondCount (одного прохода цикла) = 27.027 наносекунды
podemos sacar las siguientes conclusiones:
El valor de la función GetTickCount () no cambia cada milisegundo sino cada 15,625milisegundos(1/64 de segundo, 64=2^6), mientras que el valor de la función GetMicrosecondCount() cambia cada micro segundo. Significa que la función GetMicrosecondCount es 15625 veces más precisa que GetTickCount, no 1000.
pero la función GetTickCount() es aproximadamente 12-15 veces más rápida que GetMicrosecondCount().
Pues bien, se trata de un error que los desarrolladores harían bien en solucionar. Porque entonces la función no se corresponde con la descripción:
El valor de esta función en comparación con GetTickCount es de microsegundos, no de milisegundos (1000 veces más preciso). Además, no es hinchable. Por eso no es del todo correcto hablar de su sustituibilidad.
Si se mide el tiempo de ejecución de algunas secciones del programa, las fluctuaciones del rendimiento del sistema anulan toda esta precisión y se produce un error en milisegundos o incluso en decenas de milisegundos. Si se miden segmentos muy pequeños con una duración inferior a 1 milisegundo, entonces no tiene sentido. La proporción de error de medición será muy alta.
Todavía no he visto ningún uso práctico de los microsegundos. Si se mide el tiempo de ejecución de algunas secciones del programa, las fluctuaciones del rendimiento del sistema anularán toda esta precisión, y el error será de milisegundos, o incluso de decenas de milisegundos. Si se miden segmentos muy pequeños con una duración inferior a 1 milisegundo, el error de medición será muy elevado.
ver mi post anterior
Tengo muchos ejemplos con el uso práctico de los microsegundos.
Otra observación importante sugiere que es absolutamente inapropiado utilizar la función GetTickCount en lugar de GetMicrosecondCount. Creo que será una sorpresa para muchos programadores.
Examinando el funcionamiento de un simple script:
se pueden extraer las siguientes conclusiones:
El valor de la función GetTickCount ( ) cambia cada 15,6 milisegundos en lugar de cada milisegundo, mientras que el valor de la función GetMicrosecondCount() cambia cada micro segundo. Significa que GetMicrosecondCount es 15600 veces más preciso que GetTickCount, no 1000.
pero GetTickCount() es aproximadamente 12-15 veces más rápido que GetMicrosecondCount().
Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading
Bichos, errores, preguntas
fxsaber, 2016.07.19 12:41
Con el ejemplo de ORDER_TICKET la idea debería estar clara.
Foro sobre comercio, sistemas de comercio automatizados y prueba de estrategias de comercio
OrderCloseTime () en MQL5?
fxsaber, 2018.07.18 03:51
Así podemos comprobar si la tabla de historial actual, generada previamente mediante las funciones HistorySelect, contiene el registro que necesitamos. Lo mismo ocurre con DEAL_TICKET.
Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading
Guardar el nivel de precios de la posición mediante la compensación (¿es posible?)
fxsaber, 2018.07.17 20:45
Es posible que no se sepa que la función GetMicrosecondCount, a diferencia de GetTickCount, está vinculada a la hora local del ordenador. Esto significa que si esta hora cambia (por ejemplo, debido a la sincronización con la hora de Internet), los valores de GetMicrosecondCount también cambiarán en un valor correspondiente.Esto debe tenerse en cuenta si esta función se utiliza para medir intervalos de tiempo; de hecho, no debería utilizarse para este propósito. GetTickCount, por otro lado, no tiene estos problemas.
Como demostración, puede ejecutar este código y cambiar la hora del ordenador mientras se está ejecutando.
Quizás no todo el mundo sepa que la función GetMicrosecondCount, a diferencia de GetTickCount, está ligada a la hora local del ordenador.
No lo sabía, ¡gracias!
Una variante de la función GetTickCount que evita los desbordamientos (siempre que el intervalo entre llamadas a la función no supere los 50 días)
Es posible que no se sepa que la función GetMicrosecondCount, a diferencia de GetTickCount, está vinculada a la hora local del ordenador. Esto significa que si esta hora cambia (por ejemplo, debido a la sincronización con la hora de Internet), los valores de GetMicrosecondCount también cambiarán en un valor correspondiente.Esto debe tenerse en cuenta si esta función se utiliza para medir intervalos de tiempo; de hecho, no debería utilizarse para este propósito. GetTickCount, por otro lado, no tiene estos problemas.
Para demostrarlo, puede ejecutar este código y cambiar la hora del ordenador durante la ejecución del código.
Se trata de un error que los desarrolladores deberían solucionar. La función entonces no se ajusta a la descripción:
Функция GetMicrosecondCount() возвращает количество микросекунд, прошедших с момента начала работы MQL5-программы.El valor de esta función en comparación con GetTickCount es de microsegundos, no de milisegundos (una precisión 1000 veces mayor). Además, no es hinchable.Por eso no es del todo correcto hablar de su sustituibilidad.
No todo el mundo sabe que la función GetMicrosecondCount, a diferencia de GetTickCount, está vinculada a la hora local del ordenador. Esto significa que si esta hora cambia (por ejemplo, debido a la sincronización con la hora de Internet), los valores de GetMicrosecondCount también cambiarán en un valor correspondiente.Esto debe tenerse en cuenta si esta función se utiliza para medir intervalos de tiempo; de hecho, no debería utilizarse para este propósito. GetTickCount, por otro lado, no tiene estos problemas.
Para demostrarlo, puedes ejecutar este código y cambiar la hora del ordenador mientras se está ejecutando.
Una observación más importante: de ella se deduce que es absolutamente inapropiado utilizar la función GetTickCount en lugar de GetMicrosecondCount.
Creo que será una sorpresa para mucha gente.
Examinando el funcionamiento de un simple script:
El resultado del trabajo:
podemos sacar las siguientes conclusiones:
Pues bien, se trata de un error que los desarrolladores harían bien en solucionar. Porque entonces la función no se corresponde con la descripción:
El valor de esta función en comparación con GetTickCount es de microsegundos, no de milisegundos (1000 veces más preciso). Además, no es hinchable.Por eso no es del todo correcto hablar de su sustituibilidad.
Si se mide el tiempo de ejecución de algunas secciones del programa, las fluctuaciones del rendimiento del sistema anulan toda esta precisión y se produce un error en milisegundos o incluso en decenas de milisegundos. Si se miden segmentos muy pequeños con una duración inferior a 1 milisegundo, entonces no tiene sentido. La proporción de error de medición será muy alta.
Todavía no he visto ningún uso práctico de los microsegundos. Si se mide el tiempo de ejecución de algunas secciones del programa, las fluctuaciones del rendimiento del sistema anularán toda esta precisión, y el error será de milisegundos, o incluso de decenas de milisegundos. Si se miden segmentos muy pequeños con una duración inferior a 1 milisegundo, el error de medición será muy elevado.
Otra observación importante sugiere que es absolutamente inapropiado utilizar la función GetTickCount en lugar de GetMicrosecondCount.
Creo que será una sorpresa para muchos programadores.
Examinando el funcionamiento de un simple script:
se pueden extraer las siguientes conclusiones:
El argumento significativo