nuevo mql4 que proporciona milisegundos en los timestamps....

 

Actualmente, mql4 sólo puede proporcionar el tiempo hasta el segundo más cercano para los ticks entrantes. Utilizamos la siguiente función:

MarketInfo(Symbol(), MODE_TIME)

1) ¿Existe alguna función diferente que pueda proporcionar la hora en milisegundos o que se pueda utilizar para determinar los milisegundos de los datos de los ticks que llegan a la plataforma?

2) ¿podrá el nuevo mql4 que combina las funciones de mql5 solicitar u obtener marcas de tiempo de milisegundos (o sub-segundos) en los ticks entrantes?

Entonces, ¿cómo se supone que la plataforma mt4 (y mt5) va a distinguir adecuadamente entre los ticks que llegan al "mismo tiempo"?

 
4evermaat:

Actualmente, mql4 sólo puede proporcionar el tiempo hasta el segundo más cercano para los ticks entrantes. Utilizamos la siguiente función:

MarketInfo(Symbol(), MODE_TIME)

1) ¿Existe alguna función diferente que pueda proporcionar la hora en milisegundos o que se pueda utilizar para determinar los milisegundos de los datos de los ticks que llegan a la plataforma?

2) ¿podrá el nuevo mql4 que combina las funciones de mql5 solicitar u obtener marcas de tiempo de milisegundos (o sub-segundos) en los ticks entrantes?

Entonces, ¿cómo se supone que la plataforma mt4 (y mt5) va a distinguir adecuadamente entre los ticks que llegan al "mismo tiempo"?

1) GetTickCount(), debería funcionar en vivo. No tiene sentido en datos históricos.

2) Incluso mt5_data no se guarda en milisegundos. Sin embargo, no_problema en vivo.

3) No veo a dónde quieres llegar con eso. Si es el mismo tiempo en milisegundos entonces tener milisegundos no ayudaría. Si son tiempos diferentes en milisegundos entonces GetTickCount() podría ayudar. Ayuda en el sentido de que su código procesa el tick actual en menos de un milisegundo. Qué tan importante es todo depende de lo que usted está tratando de lograr ... supongo.

 

Tienes al menos dos opciones.

1. Distinguir los ticks con la función GetTickCount() de MQL, que tiene una precisión de 16 ms.

2. Acceder a la hora del PC usando GetLocalTime() de Kernell32.dll con precisión de nanosegundos (esto no funciona con los emuladores en linux, siguen devolviendo la precisión de 16 ms).

 

4evermaat: Creo que los ticks se distinguen por el Volumen. Cada vez que un nuevo tick es enviado por el broker, el Volumen aumentará en uno. Por ejemplo, si estás mirando un gráfico M1, el volumen para una barra en particular es cuántos ticks fueron enviados en ese minuto.

En realidad ayer intenté hacer una función que registre el tiempo con milisegundos. Usaba TimeCurrent() y GetTickCount(). Matemáticamente, era correcto.. pero GetTickCount() no es lo suficientemente preciso. Encontré que redondeando los tiempos de los eventos al último segundo (es decir, sólo usando TimeCurrent() ) tenía menores errores que mi función... :/

Lo intentaré otro día, pero por lo que veo, no se puede confiar en GetTickCount() si se necesita una precisión de un segundo.

¿Quizás los expertos en C++ puedan acceder a equivalentes más precisos de GetTickCount()...?

 
Ovo:

Tienes al menos dos opciones.

1. Distinguir los ticks con la función GetTickCount() de MQL, que tiene una precisión de 16 ms.

2. Acceder a la hora del PC usando GetLocalTime() de Kernell32.dll con precisión de nanosegundos (esto no funciona con emuladores en linux, siguen devolviendo la precisión de 16 ms).


1) Por mis pruebas, no creo que GetTickCount() tenga una precisión de 16ms. Es cierto, 16ms es el valor más pequeño que obtengo (aparte de 0), pero no creo que los valores sobre 16ms sean precisos al 16ms más cercano. :/

2) Ah, esa es una gran idea. Lo intentaré.

 
alladir:


1) Por mis pruebas, no creo que GetTickCount() tenga una precisión de 16ms. Es cierto, 16ms es el valor más pequeño que obtengo (aparte de 0), pero no creo que los valores sobre 16ms sean precisos a lo más cercano a 16ms. :/

2) Ah, es una gran idea. Lo intentaré.


Lo siento, a menudo confundo la precisión con la exactitud, incluso ahora no estoy seguro de cuál es cuál.
 
Ovo:

Lo siento, a menudo lío la precisión con la exactitud, no estoy seguro incluso ahora de cuál es cuál.

Yo tampoco, todo lo que sé es que tengo una fórmula que debería funcionar matemáticamente pero que en la vida real no lo hace... así que estoy culpando a GetTickCount() :)
 
alladir:

4evermaat: Creo que los ticks se distinguen por el Volumen. Cada vez que un nuevo tick es enviado por el broker, el Volumen aumentará en uno. Por ejemplo, si usted está mirando un gráfico M1, el volumen de una barra en particular es cuántos ticks fueron enviados en ese minuto.


He visto esto muchas veces antes, pero ¿estás seguro de esto? He comprobado esto algunas veces en mi broker ECN y el volumen aumenta de forma bastante diferente en cada tick, probablemente son los lotes negociados reales que fluyen a través de ese broker. Por ejemplo, cuando vendo 10 lotes, el siguiente tick será +10, no +1.

 

¿El volumen sube por 10 cuando se negocian 10 lotes? No he experimentado eso. Tengo un recolector de ticks que registra cada uno de ellos. A veces el volumen sube por 2 o 3 pero supuse que eran ticks muy rápidos que, o bien el broker no enviaba, o bien llegaban mientras la función Start de mi recolector de ticks estaba todavía en marcha.

Yeh, sólo creo que el volumen = Ticks de google, pero parece encajar con los datos que estoy viendo

 
szgy74:

He visto esto muchas veces antes, pero ¿estás seguro de esto? He comprobado esto algunas veces en mi broker ECN y el volumen aumenta de forma muy diferente en cada tick, probablemente son los lotes negociados reales que fluyen a través de ese broker. Por ejemplo, cuando vendo 10 lotes, el siguiente tick será +10, no +1.

El volumen es un mal nombre para lo que en realidad es el "recuento de ticks"... no tiene nada que ver con el volumen/los lotes negociados... la razón por la que puede cambiar en más de 1 es porque se pueden perder los ticks.
 
4evermaat:

Actualmente, mql4 sólo puede proporcionar el tiempo hasta el segundo más cercano para los ticks entrantes. Utilizamos la siguiente función:

MarketInfo(Symbol(), MODE_TIME)

1) ¿Existe alguna función diferente que pueda proporcionar la hora en milisegundos o que se pueda utilizar para determinar los milisegundos de los datos de los ticks que llegan a la plataforma?

2) ¿podrá el nuevo mql4 que combina las funciones de mql5 solicitar u obtener marcas de tiempo de milisegundos (o sub-segundos) en los ticks entrantes?

Entonces, ¿cómo se supone que la plataforma mt4 (y mt5) va a distinguir adecuadamente entre los ticks que llegan al "mismo tiempo"?

En mql5 tampoco existe esa información. Pero hay eventos Timer que pueden ser usados con precisión de milisegundos, aunque no sé si esta característica estará disponible con el nuevo mql4.