Еще раз про лимит времени тестирования экспертов на Чемпионат - страница 2

 

Конструкция у меня примерно такая (картинка во вложении).

Максимально получение данных убраны в "новый бар" .На тиках только условия.

А чего их обновлять? Все в цикле,запрашиваю скажем бид:

bid=SymbolInfoDouble(simx[n],SYMBOL_BID);
Обработчик события "новый бар"
Обработчик события "новый бар"
  • 2010.10.04
  • Konstantin Gruzdev
  • www.mql5.com
Язык программирования MQL5 позволяет решать задачи на совершенно новом уровне. Даже те задачи, которые уже вроде имеют решения, благодаря объектно-ориентированному программированию могут подняться на качественно новый уровень. В данной статье специально взят простой пример проверки появления нового бара на графике, который был преобразован в достаточно мощный и универсальный инструмент. Какой? Читайте в статье.
Файлы:
icy.png  16 kb
 
papaklass:

У меня следующая конструкция, работающая на каждом тике:

 Так происходит инициализация.

А так происходит работа эксперта в функции OnTick().

То есть на каждом тике у меня обрабатывается один инструмент (переменная "к") .

PS: В своем коде я не использую понятие "новый бар" вообще. И получаю приемлемое время тестирования на 12 инструментах.

 

Инициализация такая же.Заполняю массивы.Циклом подключаю индикатор.

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

 
GODZILLA:

Мульт 10 пар, WindowsXP, индекс 6.6, Core2Duo 6600 2.4 (разогнан до 2.88ГГц), 6Gb. Тест мультивалютника на периоде в семь месяцев на четырёхчасовом графике в режиме "Все тики" проходит примерно за 15 минут! Но это при использовании функции OnTimer() с периодичностью вызова 60 секунд. А если использовать функцию OnTick(), то тест съедает поболя получаса! Мультивалютник съедает в этом тесте 819 мегов памяти. В этом году я обленился и решил не упаковывать индикаторы в индикаторные функции, благо для чемпионата такого результата достаточно, только в индюках ампутировал пересчёт текущего бара и всё!

Я видел функцию OnTimer в документации и никогда не мог понять её отличие от OnTick. Нельзя ли объяснить как OnTimer позволяет ускорить советник по сравнению с OnTick? Будут ли скорости такие же если в OnTick проверять начало новой минуты как у Вас или любого другого таймфрейма и производить расчёты только тогда?
 
gpwr:
Я видел функцию OnTimer в документации и никогда не мог понять её отличие от OnTick.

вы не можете понять - когда приходит тик, а когда срабатывает таймер?

какую страницу документации вы читали?

 
Karlson:

Конструкция у меня примерно такая (картинка во вложении).

Максимально получение данных убраны в "новый бар" .На тиках только условия.

А чего их обновлять? Все в цикле,запрашиваю скажем бид:

Если все данные рассчитываются на барах, почему бы и условия не проверять тоже на барах? Ведь если даже текущая цена (бид, аск) берутся на баре, то нет смысла проверять условия, использующие одни и те же данные, на каждом тике.
 
sergeev:

вы не можете понять - когда приходит тик, а когда срабатывает таймер?

какую страницу документации вы читали?

Давайте без сарказма и сосредоточимся на сути моего вопроса:

Будут ли скорости советников такие же если в одном используется OnTimer а в другом OnTick, в котором проверяется начало нового таймфрейма и производятся расчёты только тогда?

 
gpwr:

Давайте без сарказма и сосредоточимся на сути моего вопроса:

только конструктив!  мне важна документация.  Поэтому и спрашиваю. Где можно было читать и не понять. дайте ссылку.

Если вы уже поняли отличия и вам не надо их объяснять, то сами поймете

Будут ли скорости советников такие же если в одном используется OnTimer а в другом OnTick


 
sergeev:

только конструктив!  мне важна документация.  Поэтому и спрашиваю. Где можно было читать и не понять. дайте ссылку.

Если вы уже поняли отличия и вам не надо их объяснять, то сами поймете

Читал документацию по ссылке в посте (выделена зелёным цветом). А вообще-то хотелось бы высказать желание чтобы модераторы не отклонялись от темы ветки и не флудили. А если им вместо того чтобы дать прямой ответ интересно узнать где я не нашёл описание функции OnTimer, то пишите в личку. На то она и есть.
 

Мне важно чтоб вы поняли суть


В теории

OnTick - Генерируется только для экспертов при поступлении нового тика по символу, к графику которого прикреплен эксперт.

OnTimer - Функция OnTimer() вызывается при наступлении события Timer, которое генерируется системным таймером. Периодичность наступления этого события устанавливается при подписке на получение функцией EventSetTimer().


на практике

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


ваш вопрос:

Я видел функцию OnTimer в документации и никогда не мог понять её отличие от OnTick.

объяснен?

Причина обращения: