Что с таймером на котирах с суффиксами?

 

Вот к примеру код

//+------------------------------------------------------------------+
//|                                                          111.mq4 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
datetime Timer;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- create timer
if(!EventSetTimer(60))
      Print("Cannot initialize timer");
      
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- destroy timer
   EventKillTimer();
      
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if((TimeCurrent()-Timer)>50)
     {
      EventKillTimer();
      OnTimer();
      if(!EventSetTimer(1))
        {
         Print("Error of set timer. Error = ",GetLastError());
        }
      else
        {
         Print ("Timer initialized");
        }
     }
  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
//---
   Timer=TimeCurrent();
  }
//+------------------------------------------------------------------+

на терминале метаквотов (чистом) все аботает

на 4х значном брокера 1 все работает

на 5ти значном с суффиксами брокера 2 не работает

при том не работает вообще никак, не инициализируется и все тут.

как решить проблему?
 

 
Vladimir Gribachev:

Вот к примеру код

//+------------------------------------------------------------------+
//|                                                          111.mq4 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
datetime Timer;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- create timer
if(!EventSetTimer(60))
      Print("Cannot initialize timer");
      
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- destroy timer
   EventKillTimer();
      
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if((TimeCurrent()-Timer)>50)
     {
      EventKillTimer();
      OnTimer();
      if(!EventSetTimer(1))
        {
         Print("Error of set timer. Error = ",GetLastError());
        }
      else
        {
         Print ("Timer initialized");
        }
     }
  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
//---
   Timer=TimeCurrent();
  }
//+------------------------------------------------------------------+

на терминале метаквотов (чистом) все аботает

на 4х значном брокера 1 все работает

на 5ти значном с суффиксами брокера 2 не работает

при том не работает вообще никак, не инициализируется и все тут.

как решить проблему?
 

Не совсем понятно зачем  внутрь OnTick() пихаем OnTimer()

Какая задача решаеться? 

 

Из справки:

 Рекомендуется вызывать функцию EventSetTimer() однократно в функции OnInit(), а функцию EventKillTimer() вызывать однократно в OnDeinit().

Возможно они как-то конфликтуют между собой! 

 
Evgeny Belyaev:

Не совсем понятно зачем  внутрь OnTick() пихаем OnTimer()

Какая задача решаеться? 

(должно) решается то, что ели с ОнИнит не вызвался, то походу с ОнТик точно вызовется

а он не вызывается вообще не как

не обычно, не с извращениями по коду...

я уже психовать начинаю... ррр..........  бредятина какая-то 

 
Vladimir Gribachev:

(должно) решается то, что ели с ОнИнит не вызвался, то походу с ОнТик точно вызовется

а он не вызывается вообще не как

не обычно, не с извращениями по коду...

я уже психовать начинаю... ррр..........  бредятина какая-то 

У тебя этот принт выходит?

Print

("Cannot initialize timer");

Посмотрю у себя 

 
Может у кого есть самописная функция таймера чтобы подходила и для тестера тоже?
 
Vladimir Gribachev:
Может у кого есть самописная функция таймера чтобы подходила и для тестера тоже?

Смотря какая задача решается, если нужен таймер от секунды, то вполне достаточно использовать TimeLocal(). Всё зависит от задачи 

Вот секундный

  if(Paused<TimeLocal()) {
   Selected(); // что-то делаем
   Paused=TimeLocal();
  }


 

 
Vitaly Muzichenko:

Смотря какая задача решается, если нужен таймер от секунды, то вполне достаточно использовать TimeLocal(). Всё зависит от задачи 

Вот секундный

  if(Paused<TimeLocal()) {
   Selected(); // что-то делаем
   Paused=TimeLocal();
  }


 

идею понял

спс