Mercato chiuso - pagina 6

 
fxsaber:

vedere che i tempi saranno diversi solo in queste situazioni


È stato discusso più volte che MqlTick non restituisce il tick così com'è. Che ci sono due flussi di tick - citazione e affare. E che in CopyTicks vengono uniti a volte retroattivamente, perché i flussi non sono sincronizzati. E che i tempi di MqlTick e CopyTicks possono non coincidere.


È davvero possibile che 10 SEK. non coincidano?

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

Può 10 SEC. non corrispondere?

Non esiste una cosa del genere su Metaquotes-Demo.

 
fxsaber:

Niente del genere su Metaquotes-Demo.


È un'apertura demo, la proverò sul vero...

Aggiunto

Sì, è più divertente quando non è reale.

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:

non nella vita reale è più divertente.

Imillisecondi e altri dati sono lì.

 

Per ora, ho deciso di fare quanto segue

//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 buona idea è di tradurre semplicemente l'ora del server (scambio)

invece di TimeCurrent(), che è preso dall'ultima quotazione conosciuta in Market Watch,

fare una funzione TimeServer(), che traduce semplicemente il tempo dello scambio.

Allora il TimeTradeServer() non sarà necessario.

Le due funzioni saranno sufficienti

TimeLocal() e TimeServer()

 
prostotrader:

Per ora, ho deciso di fare così

Ricorda il comportamento di TC in questo thread.

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

Nell'immagine l'output sul grafico è la funzione TimeTradeServer(), il tempo scorre più velocemente.
Se si emette TimeCurrent(), sarà il tempo dell'ultima quotazione dal simbolo corrente e quindi anche spesso incoerente.
Come posso ottenere l'ultima ora della quotazione più recente da Market Watch per emettere l'ora in modo sincrono con l'ora in Market Watch?



 
Vasiliy Pushkaryov:

Come posso ottenere l'ultima ora della quotazione più recente da Market Watch per emettere l'ora in modo sincrono con l'ora in Market Watch?

TempoCorrente.

 
fxsaber:

TempoCorrente.

Sì, non è nemmeno molto buono. Uso OnTimer per l'output una volta al secondo, ho deciso di aggiungere anche l'output del messaggio alla stampa. Posso vedere che lo stesso tempo passa lì due volte. Ora ho solo visto nell'aiuto che TimeCurrent per OnTimer è "l'ora dell'ultima quotazione per qualsiasi simbolo disponibile nella finestra Market Watch, la stessa ora che viene mostrata nell'intestazione di questa finestra".

Cioè questo è ciò di cui c'è bisogno. In teoria. Ma in pratica, c'è qualcosa che non va.