Services , новый функциона в архитеркуте MT5, похороны MT4 не за горой. - страница 6

 
Petros Shatakhtsyan:


Да, но надо еще учитывать что тут только один таймер, не так, так VC++, и если у вас есть много проверок временных участков, то просто можно потерять многие тики, и всё превратится в кашу.

Это же не проблема. Просто в одном таймере одну проверку делаете каждый запуск таймера, а другие - через Х секунд после последней соответствующей проверки.
 
Alexey Kozitsyn:
Это же не проблема. Просто в одном таймере одну проверку делаете каждый запуск таймера, а другие - через Х секунд после последней соответствующей проверки.


Не понимаю. А вы знаете сколько стоит запуск таймера. Разве можно запускать его более чем 1 раз.

Я говорил что важен каждый тик, а вы говорите о секундах.  Все они должны работать параллельно, независимо друг от друга.

 
Petros Shatakhtsyan:


Не понимаю. А вы знаете сколько стоит запуск таймера. Разве можно запускать его более чем 1 раз.

Я говорил что важен каждый тик, а вы говорите о секундах.

Запуск таймера стоит ровно столько, сколько нужно для задачи, если ее нельзя выполнить иначе. Его не нужно запускать много раз, просто одну проверку делать 3 раза из 3 запусков, а другую 1 раз из 3. Надеюсь, теперь мысль понятна.

 
Petros Shatakhtsyan:


Это будет работать неэффективно если эксперт обрабатывает каждый тик, даже если в таймере использовать миллисекунды.

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

A через ОnTick невозможно, поскольку он работает только тогда когда приходит очередной тик там где стоит советник.


ну как выриант запускать на самом волатильном символе. потеря конечно какая-то будет.. но потери будут и в скорости выполнения логики всего эксперта
 
Maxim Dmitrievsky:

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


И поэтому говорил, что нужно сделать еще и другой OnTick, который получил тики от всех символов, которые на данный момент доступны в обзоре рынка. Простой и быстрый вариант.

И не только это. Надо и еще иметь функцию, которая возвращает реальное кредитное плечо, которое имеет каждый символ.

 
Petros Shatakhtsyan:


И поэтому говорил, что нужно сделать еще и другой OnTick, который получил тики от всех символов, которые на данный момент доступны в обзоре рынка. Простой и быстрый вариант.

Вообще-то, OnTick() пропускает тики. Даже OnCalculate() пропускает тики. К тому же тики могут приходить пачками. Так что, таймер не является чем-то уж очень затратным, тем более при анализе многих символов. Главное сделать экономичный расчет.
 
Alexey Kozitsyn:
Вообще-то, OnTick() пропускает тики. Даже OnCalculate() пропускает тики. К тому же тики могут приходить пачками. Так что, таймер не является чем-то уж очень затратным, тем более при анализе многих символов. Главное сделать экономичный расчет.

Ну можно и через таймер. Хорошо что есть EventSetMillisecondTimer Но плохо что он тоже запускает OnTimer.  Надо было добавить OnMillisecondTimer.
 
Petros Shatakhtsyan:

Ну можно и через таймер. Хорошо что есть EventSetMillisecondTimer Но плохо что он тоже запускает OnTimer.  Надо было добавить OnMillisecondTimer.

А что мешает сделать так?

void OnTimer()
{
if( condition1 )
   {...копируем тики...}
if( condition2 )
   {...иной расчет, который не нужно запускать так часто, как condition1...}
}
А если по теме, то было бы хорошо, если б сервисы имели поле символ, как обработчик OnBookEvent().
 
Alexey Kozitsyn:
Вообще-то, OnTick() пропускает тики. Даже OnCalculate() пропускает тики. К тому же тики могут приходить пачками. Так что, таймер не является чем-то уж очень затратным, тем более при анализе многих символов. Главное сделать экономичный расчет.

по таймеру тоже будет пропускать, если нужно прямо до тика то нужно вести их учет, по тиковому объему там.. но тоже не спасет.. тики могут прийти очень быстро и много, да
 
Maxim Dmitrievsky:

по таймеру тоже будет пропускать, если нужно прямо до тика то нужно вести их учет, по тиковому объему там.. но тоже не спасет.. тики могут прийти очень быстро и много, да
Дак тут ничто не спасет. Абсолютно каждый тик не обработать.