Как увеличить скорость таймера в мт4/5?

 
Максимальное разрешение millisecondsTimer 16 ms, есть какой-то способ ускорить до 1 мс? Через изменение частоты системного таймера windows может? Тогда вся ситема будет с ним работать, что может сказаться на производительности..
 
А зачем ? Пока не закончатся все вычисления в коде новое событие таймер игнорируется. У вас код обрабатывается за 1мс ?
 
Vladimir Zubov:
А зачем ? Пока не закончатся все вычисления в коде новое событие таймер игнорируется. У вас код обрабатывается за 1мс ?
меньше 16 мс обрабатывается, мне нужно ускорить код еще больше, но не могу проверить, все время выдает 16 мс )
 
Как вариант можно использовать: OnChartEvent и CHARTEVENT_CUSTOM+N
 

Создать петлю события...

Правда я не знаю на сколько это быстро. Надо проверить, аж любопытно стало :)

 

Только необходимо учесть тот факт, что погрешность GetTickCount ~ 15 мс

Хотя же есть GetMicrosecondCount :) 

 
Marat Sultanov:

Только необходимо учесть тот факт, что погрешность GetTickCount ~ 15 мс

Хотя же есть GetMicrosecondCount :) 

Точно! в мт5 же есть, в мтч не было.. Но все равно если код будет выполняться меньше 16 мс, то повторно то он будет вызван через этот интервал

придется как-то зацикливать программу при запуске, без таймера, что бы непрерыкно выполнялась.. тогда повесить все может к чертям ) 

 
Maxim Dmitrievsky:

Точно! в мт5 же есть, в мтч не было.. Но все равно если код будет выполняться меньше 16 мс, то повторно то он будет вызван через этот интервал

придется как-то зацикливать программу при запуске, без таймера, что бы непрерыкно выполнялась.. тогда повесить все может к чертям ) 

Вы, похоже, хотите распараллелить вычислительный поток? Тут единственный вариант: использовать таймер миллисекндный, цикл и таймаут для вычисления, чтобы все остальное тоже выполнялось:

int OnInit()
{
   EventSetMillisecondTimer(1);
   return(INIT_SUCCEEDED);
}

void OnTimer()
{
   ulong ToFinish = GetMicrosecondCount() + 1000;
  
   while(!_StopFlag && GetMicrosecondCount() < ToFinish)
   {
      //Your code...
   }
}

void OnDeinit(const int reason) {EventKillTimer();}
 
Marat Sultanov:

Вы, похоже, хотите распараллелить вычислительный поток? Тут единственный вариант: использовать таймер миллисекндный, цикл и таймаут для вычисления, чтобы все остальное тоже выполнялось:

int OnInit()
{
   EventSetMillisecondTimer(1);
   return(INIT_SUCCEEDED);
}

void OnTimer()
{
   ulong ToFinish = GetMicrosecondCount() + 1000;
  
   while(!_StopFlag && GetMicrosecondCount() < ToFinish)
   {
      //Your code...
   }
}

void OnDeinit(const int reason) {EventKillTimer();}
Да, именно так и сделаю, спасибо ) я хочу ускорить вычисления основных функций, и сделать их вызов как можно чаще 
 
ну вот, замерил, код считается в пределах 1 мс, что меня вполне устраивает )
 
Maxim Dmitrievsky:
ну вот, замерил, код считается в пределах 1 мс, что меня вполне устраивает )
Ого, значит все вышло? Круто!
Причина обращения: