nuevo mql4 que proporciona milisegundos en los timestamps.... - página 2

 
Tenga en cuenta si los milisegundos y nanosegundos son tan importantes que estos ticks están llegando a través de Internet ( IO vinculado a la red ). La resolución de tiempo en nonosegundos es probablemente exagerada, a menos que esté planeando algo malo.
 
angevoyageur:
En mql5 tampoco existe esa información. Pero hay eventos Timer que se pueden usar con precisión de milisegundos, aunque no sé si esta característica estará disponible con el nuevo mql4.

El equivalente actual de mql4 es algo como lo que se muestra a continuación:

void start(){
    while(true){
        do_something....;
        Sleep(1000); //Sleep for one Second.
        RefreshRates();
    }
}

void start(){
    static bool RunOnce;
    if(RunOnce) return;
    int Begin=GetTickCount();
    while(GetTickCount()<Begin+1000){
        Print("GetTickCount()="+GetTickCount());
        Sleep(1);
    }
    RunOnce=true;
}

He probado el GTC y parece que salta 16_milisegundos. Vengo a descubrir que probablemente sea algún tipo de limitación de la Ciencia de la Computación en los sistemas heredados. Si alguien quiere explicar por qué [ a pesar de mis divagaciones ] estaré encantado. Hummm, me pregunto si mql5 tiene las mismas limitaciones. Muy bien, una prueba más que viene de inmediato :)

 

Siempre vale la pena el esfuerzo de averiguar, que función de la API de Widows los desarrolladores de MQL encapsularon.

En este caso la respuesta es fácil - usaron GetTickCount Dice:

La resolución de la función GetTickCount está limitada a la resolución del temporizador del sistema, que suele estar en el rango de 10 milisegundos a 16 milisegundos.

 

He buscado en Google y, aunque no lo entiendo muy bien, parece que GetTickCount() es una función directamente del sistema operativo Windows. No está pensada para ser precisa y no debería usarse para cosas que necesiten ser precisas a nivel de milisegundos (aunque devuelva valores en milisegundos).

He hecho pruebas con sleep y con get tick count y siempre hay errores, es difícil decir si son causados por Sleep o por GTC pero creo que son ambos

 
Ovo:

Siempre vale la pena el esfuerzo de averiguar, que función de la API de Widows los desarrolladores de MQL encapsularon.

En este caso la respuesta es fácil - usaron GetTickCount Dice:

La resolución de la función GetTickCount está limitada a la resolución del temporizador del sistema, que suele estar en el rango de 10 milisegundos a 16 milisegundos.

Gracias.
 
ubzen:

El equivalente actual de mql4 es algo así como lo siguiente:

He probado el GTC y parece que salta 16_milisegundos. Vengo a descubrir que probablemente sea algún tipo de limitación de la Ciencia de la Computación en los sistemas heredados. Si alguien quiere explicar por qué [ a pesar de mis divagaciones ] estaré encantado. Hummm, me pregunto si mql5 tiene las mismas limitaciones. Muy bien, una prueba más que viene de inmediato :)

La limitación de 16 milisegundos viene de una limitación de hardware, pero hay otras formas de conseguir un temporizador de mayor precisión.
mql5 tiene la misma limitación para GetTickCount() pero como he tratado de explicar más arriba hay otras características que se pueden utilizar (eventos del temporizador).

 
Ovo:

Siempre vale la pena el esfuerzo de averiguar, que función de la API de Widows los desarrolladores de MQL encapsularon.

En este caso la respuesta es fácil - usaron GetTickCount Dice:

La resolución de la función GetTickCount está limitada a la resolución del temporizador del sistema, que suele estar en el rango de 10 milisegundos a 16 milisegundos.


Sí, eso es lo que dice, pero es difícil saber qué significa realmente. Si la resolución es de 16 ms, esperaría ver valores de 0,16,32,48.. etc.

Nunca veo nada entre 0 y 16 pero veo todos los valores alrededor de 16.

 
angevoyageur:

La limitación de 16 milisegundos viene de una limitación de hardware, pero hay otras maneras de conseguir un temporizador de mejor precisión.
mql5 tiene la misma limitación para GetTickCount() pero como intenté explicar arriba hay otras características que pueden ser usadas (eventos de temporizador).

Entendido :)
 
RaptorUK:
El volumen es un mal nombre para lo que en realidad es "Recuento de ticks"... no tiene nada que ver con el volumen/lote negociado... la razón por la que puede cambiar en más de 1 es porque se pueden perder ticks.


Gracias por la información. Me pregunto cómo no me di cuenta de esto antes. En este caso, parece una información bastante inútil (o engañosa).

Realmente tengo que buscar datos reales de volumen de nivel 2 de algunos corredores. Afortunadamente mi broker ECN ofrece datos de negociación de nivel2 con volumen real.