Discussão do artigo "Fundamentos básicos da programação MQL5: Tempo" - página 4

 
Dennis Kirichenko:

Preciso de um análogo de TimeCurrent() com precisão de milissegundos, algo como TimeCurrentMsс().

Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação

Mercado fechado

fxsaber, 2017.09.22 09:45 AM

// Hora do último tique de caractere
long GetSymbolTime( const string Symb )
{
  MqlTick Tick;
  
  return(SymbolInfoTick(Symb, Tick) ? Tick.time_msc : 0);
}

// Hora do último tique do Market Watch
long GetMarketWatchTime( void )
{
  long Res = 0;
  
  for (int i = SymbolsTotal(true) - 1; i >= 0; i--)
  {
    const long TmpTime = GetSymbolTime(SymbolName(i, true));
    
    if (TmpTime > Res)
      Res = TmpTime;
  }
  
  return(Res);
}

// Hora atual no servidor de negociação sem levar em conta o ping
long GetCurrenTime( void )
{
  static ulong StartTime = GetMicrosecondCount();
  static long PrevTime = 0;
  
  const long TmpTime = GetMarketWatchTime();
  
  if (TmpTime > PrevTime)
  {
    PrevTime = TmpTime;
    
    StartTime = GetMicrosecondCount();
  }
  
  return(PrevTime + (long)((GetMicrosecondCount() - StartTime) / 1000));
}

void OnInit()
{
  MarketBookAdd(_Symbol);
}

void OnDeinit( const int )
{
  MarketBookRelease(_Symbol);
}

string TimeToString( const long Value )
{
  return((string)(datetime)(Value / 1000) + "." + (string)IntegerToString(Value % 1000, 3, '0'));
}

void OnBookEvent( const string& )
{
  Comment(TimeToString(GetCurrenTime()));
}

Não é perfeito, é claro.

 

fxsaber, obrigado! Como sempre, você está no ponto certo. Respeito

 
Gostei do artigo e achei-o útil, obrigado!
 
Onde posso obter o tempo dos incitadores de velas para usar o mt5?
 
Bom dia - Onde posso encontrar esses indicadores para MT$?
 

Há alguma maneira de determinar de forma mais simples se quero que um EA seja executado entre 8h e 14h, de forma otimizada ou em um determinado horário, por exemplo, 9hrs 15 min, de forma otimizada?

 
Como novato em MQL5 e programação, isso me deu algumas ideias de técnicas que posso usar quando precisar gerenciar qualquer coisa relacionada ao tempo em meu primeiro Expert Advisor.