Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Делись знаниями. Стань популярным разработчиком!
Ugar
9
Ugar 2015.03.20 16:52 

Вот простейший код советника на таймере

uint _LastTickCount, _LastTickCountTick;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- create timer
   EventSetTimer(1);
   _LastTickCount=0;
   _LastTickCountTick=0;
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- destroy timer
   EventKillTimer();
   
  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
//---
   uint TickCount, t;
    TickCount=GetTickCount();
    if(_LastTickCount==0)
      {
      _LastTickCount=TickCount;
      return;
      }
   t=TickCount-_LastTickCount;
   _LastTickCount=TickCount;
   Print("Таймер ",t," ms");
   Comment(t);
  }
//+------------------------------------------------------------------+

На VDS стоит win2008 r2 standart SP1, запускал от 1 до 9 терминалов. Файл отчёта прилагаю.

Начиная с 5 терминалов барахлить. На 9 это вообще не похоже на таймер. В диспетчере задач ресурсов вроде хватает. Скрин при работающих 9 терминалах


Файлы:
TestTimer.txt 23 kb
Dmitiry Ananiev
6504
Dmitiry Ananiev 2015.03.20 16:57  

таймер настроен на 1 секунду.

С чего вы взяли что в текстовом файле не видно секундного таймера. Я пропусков в логах не нашел не нашел на первой странице. Все четко работает. Разница в несколько милисекунд

Ugar
9
Ugar 2015.03.20 17:09  

Посмотрите текстовый файл который я прикрепил. В самом низу, где запущено 9 терминалов, там вообще не похоже на таймер. Редко, но бывает до 5 минут клинит. У меня индикатор работает по таймеру, переписывает контрольный файл раз в минуту. Раз в 5 минут другая программа проверяет контрольный файлы всех терминалов, и если он давно не переписывался присылает сообщение что соответствующий терминал висит.

Кстати дома на нормальном компе с win7, при тех же 9 терминалах, тикает с отклонениями, но всё же почти секунда. Именно на VDS барахлит.

Ugar
9
Ugar 2015.03.20 17:27  
Пробовал вместо OnTimer() использовать цикл с Sleep(1000) внутри. Всё чётко работает. Похоже что OnTimer и Sleep используют разные ресурсы винды.
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий