Кто-нибудь может объяснить смысл применения в советниках :.... - страница 2

 

Мы добавили обработку событий чарта в индикаторы - выйдет в очередном билде.


Уверен, что Вам не составит особого труда в качестве ответного шага написать хорошую (и оплачиваемую) статью для MQL5 и опубликовать в Code Base пару-тройку показательных примеров использования возможностей языка?

 
Renat:

Мы добавили обработку событий чарта в индикаторы - выйдет в очередном билде.

Отлично, начинаем возврат обратно ;)

Сразу вопрос, Вы ослабили критичность выполнения (как в советниках) , или желательно сильно не грузить вычислениями.

 
vdv2001:

Сразу вопрос, Вы ослабили критичность выполнения (как в советниках) , или желательно сильно не грузить вычислениями

Не ослабили.

Все последствия задержек обработки полностью на совести программиста - угробить терминал можно запросто.

В обработчике событий можно делать исключительно быстрые операции:

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

Не ослабили.

Все последствия задержек обработки полностью на совести программиста - угробить терминал можно запросто.

В обработчике событий можно делать исключительно быстрые операции:

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

 

Renat, может сделать версию OnCalculate(void) специально для таких случаев. Отпадет необходимость в передаче лишних параметров (если они не используются).

 
vdv2001:

 

Renat, может сделать версию OnCalculate(void) специально для таких случаев. Отпадет необходимость в передаче лишних параметров (если они не используются).

Используйте штатный метод OnChartEvent в индикаторах - он уже работает в 245 билде. А функцию OnCalculate можно оставлять пустой (если индикатор без отрисовки буферов):

int OnCalculate(const int rates_total,const int prev_calculated,
                const datetime &Time[],
                const double &Open[],
                const double &High[],
                const double &Low[],
                const double &Close[],
                const long &TickVolume[],
                const long &Volume[],
                const int &Spread[])
  {
   return(rates_total);
  }
 

Renat, первая проблемма, при переключении на ТФ который подгружается (надпись "обновление данных") не срабатывает таймер, после переключения ТФ туды сюды все нормально.

Функция    EventSetTimer(1); находится OnInit().

Может ее переместить в OnCalculate().

 

Может ее переместить в OnCalculate().

К сожалению перенос в OnCalculate() ничего не дал, при открытии нофого ТФ таймер отключается
 

Может ее переместить в OnCalculate().

К сожалению перенос в OnCalculate() ничего не дал, при открытии "обновляемого" ТФ таймер отключается
 
Renat:

Мы добавили обработку событий чарта в индикаторы - выйдет в очередном билде.


Уверен, что Вам не составит особого труда в качестве ответного шага написать хорошую (и оплачиваемую) статью для MQL5 и опубликовать в Code Base пару-тройку показательных примеров использования возможностей языка?

 

Спасибо. Насчет статьи надо подумать. Не скоро это может быть. Нужен работающий пример в виде хорошего индикатора. К сожалению, или, может быть, к счастью, пример получается очень большой. Переделка из МТ4 индикатора Адаптивные трендовые линии - ATL. Его под МТ5 еще надо сделать. Пока только общие принципы вырисовались. Все-таки механически нельзя переносить. И ранее хотел его переделывать как эксперт. В будущем планируется сделать из него эксперта с возможностью создания разветвленных цепочек взаимосвязанных через графические построения ордеров.
 
Проблему с таймером в индикаторах решаем.

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