Порционное вычисление в индикаторе - страница 2

 
pronych:

Ни че не понял. Я-то как раз не путаю.

Как будто  праздники  не случаются по будням, а в выходные не бывает рабочих дней.

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

Для тех, кто умеет читать только последние комментарии, а не всю предисторию. Вопрос был:

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Порционное вычисление в индикаторе

elugovoy, 2014.04.13 10:59

Приветствую всех!

У меня вопрос следующий.

...

2. На время weekend конечно можно зарядить таймер OnTimer для вызова OnCalculate... наверное... но... как эта каша будет себя вести при вызове из торгового робота? Кушать ресурсы системы... Непрактично.

 Может кто сталкивался с подобной проблемой, пните в нужную сторону для размышлений. 

И соответственно ответ именно для weekend: 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Порционное вычисление в индикаторе

barabashkakvn, 2014.04.13 12:36

Насчет работы в выходные.

Нужно использовать OnTimer() плюс проверка по дням недели:

//--- если выходной, то сигнал не нужен.
   MqlDateTime dt_struct_tm;
   TimeToStruct(TimeLocal(),dt_struct_tm);
   if(dt_struct_tm.day_of_week==6 || dt_struct_tm.day_of_week==0) return; // день недели (0-воскресенье, 1-понедельник, ... ,6-суббота)

 

Lingvo.UA | англо-русский перевод «Weekend»
Lingvo.UA | англо-русский перевод «Weekend»
  • www.lingvo.ua
Русско-английский, украинско-английский, толковый украинский и другие словари бесплатно! Точный и качественный перевод слов, примеры употребления слов в различных контекстах и многое другое.
 
Fleder:
А как вообще можно программно определить, что сейчас выходные или праздники (кроме анализа даты и отсутствия тиков)?
Определение торговых дней недели
 

А если в индикатор встроить блок,  при вызове которого будет происходить порционная обработка +10 баров в прошлое

плюс текущий (при условии, что он(текущий бар) изменился с момента прошлого вызова этого блока).

 

Каждый вызов этого блока увеличивает счётчик на единицу. И при переполнении счётчика отключить обработку прошлого,

оставить лишь обработку текущего бара.

 

Сигналы в этот блок идут одновременно с таймера  (с периодом 2-3 сек) и от OnCalculate.

Пока счётчик блока не переполнится - этот блок реагирует на свой запуск лишь от таймера (с периодом 2-3 сек),  

 когда переполнится - то таймер игнорим, а от OnCalculate запускаемся.

 
Fleder:
А как вообще можно программно определить, что сейчас выходные или праздники (кроме анализа даты и отсутствия тиков)?

Ну это зависит от того, зачем это нужно. определить разрешена ли торговля можно и без этого.

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

Никогда нельзя забывать, что на некоторых инструментах OnTick()(OnCalculate) может происходить и раз в неделю. Исходить надо из этого.

 
Не используя анализ даты. И текущей даты в том числе.
 
Fleder:

А если в индикатор встроить блок,  при вызове которого будет происходить порционная обработка +10 баров в прошлое

плюс текущий (при условии, что он(текущий бар) изменился с момента прошлого вызова этого блока).

 

Каждый вызов этого блока увеличивает счётчик на единицу. И при переполнении счётчика отключить обработку прошлого,

оставить лишь обработку текущего бара.

 

Сигналы в этот блок идут одновременно с таймера  (с периодом 2-3 сек) и от OnCalculate.

Пока счётчик блока не переполнится - этот блок реагирует на свой запуск лишь от таймера (с периодом 2-3 сек),  

 когда переполнится - то таймер игнорим, а от OnCalculate запускаемся.

Вот это уже ближе к адекватному способу.
 
Другое дело - сколько дней топикстартер готов ждать пересчета индюка по таймеру, если в цикле это занимает 15 секунд. ))
 
pronych:
Другое дело - сколько дней топикстартер готов ждать пересчета индюка по таймеру, если в цикле это занимает 15 секунд. ))
Пусть не в этом году, но в следующем обязательно досчитается. Лишь бы не висело!
 

Или, как вариант:

действительно перенести логику расчётов на MQL5 и пробовать увеличивать

производительность за счёт нативной поддержки OpenCL.

 

Правда не все алгоритмы вычислений туда удаётся переложить с выигрышем в скорости расчётов... 

 

Ребята, речь шла о выходных днях (они же weekend) как наиболее частое время когда рынок закрыт.

В это время функция OnCalculate вызывается лишь однажды, а посему первичная обработка полного массива баров занимает достаточно длительное время.

Выход использовать - OnTimer. Тут я согласен, приемлемо для отложенных расчетов, так как нужно просто для визуализации.

Роботу лишь текущее значение нужно знать (т.е. для текущего бара).

 

Всем спасибо.