Mercado cerrado - página 6

 
fxsaber:

ver que el tiempo sólo será diferente en estas situaciones


Se ha comentado varias veces que MqlTick no devuelve el tick tal cual. Que hay dos flujos de garrapatas: cotización y trato. Y que en CopyTicks se fusionan a veces de forma retroactiva, porque los flujos no están sincronizados. Y que los tiempos de MqlTick y CopyTicks pueden no coincidir.


¿Es realmente posible que 10 SEK. no coincidan?

2017.09.22 11:18:38.257 Test_time (RTS-12.17,M1)        CopyTicks time = 11:18:27; SymbolInfoTick = 11:18:37
 
prostotrader:

¿Puede 10 SEC. no coincidir?

No existe tal cosa en Metaquotes-Demo.

 
fxsaber:

No hay tal cosa en Metaquotes-Demo.


Es un abridor de demostración, lo probaré en el de verdad...

Añadido

Sí, es más divertido cuando no es real.

2017.09.22 11:58:03.892 Test_time (Si-12.17,M1) CopyTicks time = 11:58:03; SymbolInfoTick = 11:58:03
2017.09.22 11:58:03.922 Test_time (Si-12.17,M1) CopyTicks time = 11:58:03; SymbolInfoTick = 11:58:03
2017.09.22 11:58:05.186 Test_time (Si-12.17,M1) CopyTicks time = 11:58:03; SymbolInfoTick = 11:58:04
2017.09.22 11:58:06.110 Test_time (Si-12.17,M1) CopyTicks time = 11:58:03; SymbolInfoTick = 11:58:05
2017.09.22 11:58:06.230 Test_time (Si-12.17,M1) CopyTicks time = 11:58:06; SymbolInfoTick = 11:58:06
2017.09.22 11:58:06.350 Test_time (Si-12.17,M1) CopyTicks time = 11:58:06; SymbolInfoTick = 11:58:06
2017.09.22 11:58:06.430 Test_time (Si-12.17,M1) CopyTicks time = 11:58:06; SymbolInfoTick = 11:58:06
2017.09.22 11:58:06.430 Test_time (Si-12.17,M1) CopyTicks time = 11:58:06; SymbolInfoTick = 11:58:06
2017.09.22 11:58:07.174 Test_time (Si-12.17,M1) CopyTicks time = 11:58:07; SymbolInfoTick = 11:58:07
 
prostotrader:

no en la vida real es más divertido.

Losmilisegundos y otros datos están ahí.

 

Por ahora, he decidido hacer lo siguiente

//bool CheckMarketTime(const string a_symbol)
bool CheckMarketTime()
{
  sv_time.year = 0;
  TimeTradeServer(sv_time);
  if(sv_time.year > 0)
  {
    if((sv_time.day_of_week == int(FirstDay)) ||                 //первый выходной
       (sv_time.day_of_week == int(SecondDay))) return(false);   //Второй выходной
    sv_time.year = 0;   
    TimeCurrent(sv_time);
    if(sv_time.year > 0)
    {   
      ulong cur_time = sv_time.hour * 3600 + sv_time.min * 60 + sv_time.sec;
      if(((cur_time >= time_st_mon) && (cur_time < 50370)) ||
         ((cur_time >= time_st_day) && (cur_time < 67470)) ||
         ((cur_time >= time_st_evn) && (cur_time < 85770)))
      {
        return(true);
      }
    }
  }
}
 

La buena idea es simplemente traducir la hora del servidor (intercambio)

en lugar de TimeCurrent(), que se toma de la última cotización conocida en Market Watch,

hacer una función TimeServer(), que simplemente traduce la hora del intercambio.

Entonces el TimeTradeServer() no será necesario.

Las dos funciones serán suficientes

TimeLocal() y TimeServer()

 
prostotrader:

Por ahora, decidí hacerlo así

Me recuerda el comportamiento de TC en este hilo.

Перевод string в часы и минуты
Перевод string в часы и минуты
  • 2017.09.06
  • www.mql5.com
Когда встаёт задача задать во входных параметрах время в формате ЧЧ:ММ, приходится решать дилему: удобство пользователя при вводе значений или удоб...
 

En la imagen la salida en el gráfico es la función TimeTradeServer(), el tiempo corre más rápido.
Si emite TimeCurrent(), será la hora de la última cotización por el símbolo actual y, por tanto, también suele haber incoherencias.
¿Cómo puedo obtener la última hora de la cotización más reciente de Market Watch para que salga la hora de forma sincronizada con la hora de Market Watch?



 
Vasiliy Pushkaryov:

¿Cómo puedo obtener la última hora de la cotización más reciente de Market Watch para que salga la hora de forma sincronizada con la hora de Market Watch?

TiempoCorriente.

 
fxsaber:

TiempoCorriente.

Sí, tampoco es muy bueno. Utilizo OnTimer para dar salida una vez por segundo, decidí añadir la salida del mensaje a la impresión también. Puedo ver que el mismo tiempo pasa allí dos veces. Ahora sólo he visto en la ayuda que TimeCurrent para OnTimer es "la hora de la última cotización de cualquier símbolo disponible en la ventana Market Watch, la misma hora que se muestra en la cabecera de esta ventana".

Es decir, esto es lo que se necesita. En teoría. Pero en la práctica, algo no está bien.



Razón de la queja: