Mercado fechado - página 6

 
fxsaber:

ver que o momento só será diferente nestas situações


Já foi discutido várias vezes que o MqlTick não devolve o tick como está. Que existem dois fluxos de carrapatos - citar e negociar. E que no CopyTicks eles são fundidos às vezes retroativamente, porque os fluxos são dessincronizados. E que o timing do MqlTick e do CopyTicks pode não coincidir.


É realmente possível que 10 SEK. não coincidam?

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

10 SEC. não pode corresponder?

Não existe tal coisa em Metaquotes-Demo.

 
fxsaber:

Não existe tal coisa em Metaquotes-Demo.


É um abridor de demonstrações, vou experimentá-lo no real...

Adicionado

Sim, é mais divertido quando não é 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:

não na vida real é mais engraçado.

Milissegundos e outros dados estão lá.

 

Por enquanto, decidi fazer o seguinte

//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);
      }
    }
  }
}
 

A boa idéia é simplesmente traduzir o tempo do servidor (troca)

em vez da TimeCurrent(), que é retirada da última cotação conhecida no Market Watch,

fazer uma função TimeServer(), que simplesmente traduz o tempo da troca.

Então o TimeTradeServer() não será necessário.

As duas funções serão suficientes

TimeLocal() e TimeServer()

 
prostotrader:

Por enquanto, decidiu fazer desta forma

Lembrado do comportamento da TC nesta linha.

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

Na figura, a saída no gráfico é a função TimeTradeServer(), o tempo corre mais rápido.
Se você emitir TimeCurrent(), será a hora da última citação pelo símbolo atual e, portanto, também muitas vezes inconsistente.
Como posso obter a última hora da cotação mais recente do Market Watch para produzir a hora em sincronia com a hora do Market Watch?



 
Vasiliy Pushkaryov:

Como posso obter a última hora da cotação mais recente do Market Watch para produzir a hora em sincronia com a hora do Market Watch?

TimeCurrent.

 
fxsaber:

TimeCurrent.

Sim, também não é muito bom. Eu uso o OnTimer para imprimir uma vez por segundo, decidi adicionar a saída da mensagem também à impressão. Posso ver que o mesmo tempo passa ali duas vezes. Agora só vi em ajuda que TimeCurrent para OnTimer é "hora da última cotação para qualquer símbolo disponível na janela Market Watch, a mesma hora que é mostrada no cabeçalho desta janela".

Isto é, isto é o que é necessário. Em teoria. Mas, na prática, algo não está muito certo.



Razão: