MQL4. Отображение индикатора сразу при запуске тестирования в тестере стратегий

 

Всем привет!

Использую стандартный MACD при работе своего советника. Советник пишу на MQL4. Как известно, по умолчанию, в тестере стратегий при визуализации индикаторы, использующиеся в советниках, наносятся уже после окончания тестирования всего периода. Вопрос: можно ли их заставить принудительно сразу выводиться? Причем выводиться именно программно, а не в ручную их туда вставлять при каждом запуске тестера. Аналога функции ChartIndicatorAdd из MQL5 в MQL4 нет. Можно еще шаблон конечно сделать. Но все это не то... Ведь шаблон включает в себя определенный конкретный набор параметров, а при тестировании естественно параметры MACD меняться могут.

Поясню. В советнике при получении сигналов рисую на графике различные графические объекты, чтобы эти сигналы как-то визуально отображать. Рисовать на графике цены не составляет сложности. Но... Необходимо рисовать и на графике MACD. Но при работе советника в тестере этого графика просто нет. Он наносится лишь по окончанию тестирования. Соответственно, я не могу получить ID этого подокна, чтобы наносить в нем графические объекты функцией ObjectCreate. Можно конечно запоминать все данные о сигналах в куче массивов и рисовать графические объекты по завершению тестирования, но очень этого хотелось бы избежать. Ибо хочется сигналы видеть что называется онлайн (при пошаговом прогоне в тестере клавишей F12). Да и заранее неизвестно, сколько таких сигналов будет -> неизвестен объем данных -> задавать статический массив надо с большим запасом. Можно конечно использовать ArrayResize, но все это очень криво.

Заранее спасибо 

 
Графические объекты в тестере МТ4 не работают.
 
Vladimir Zubov:
Графические объекты в тестере МТ4 не работают.

Да что вы говорите!

https://gyazo.com/27de11287d06c349983a31b786dd6977 

 

Что то там было 

ChartIndicatorAdd 

 
Vasyl Nosal:

Что то там было 

ChartIndicatorAdd 

Я ж написал, что эта функция есть только в MQL5. Как я понял, в MQL4 можно индикаторы за счет шаблонов создавать, но шаблоны же не могут быть параметрическими. А создавать сотни шаблонов на возможные значения параметров индикатора - слишком суровое решение, если мягко говорить)
 
Vladimir Zubov:
Графические объекты в тестере МТ4 не работают.

Абсолютно не так. Возьмите любого эксперта (даже стандартный в комплекте MACD), который использует стандартные индикаторы. Прогоните по истории и увидите, как В КОНЦЕ прогона появится автоматически индикатор с параметрами прогона. Вот вопрос как его добавить в начале программно... Это и хочу понять

Более того те же графические объекты (стрелки, линии и т.д.) в самом окне финансового инструмента отлично рисуются и без проблем. Но там окно сразу создается -> есть его ID

 
gammaray:

Абсолютно не так. Возьмите любого эксперта (даже стандартный в комплекте MACD), который использует стандартные индикаторы. Прогоните по истории и увидите, как В КОНЦЕ прогона появится автоматически индикатор с параметрами прогона. Вот вопрос как его добавить в начале программно... Это и хочу понять

Более того те же графические объекты (стрелки, линии и т.д.) в самом окне финансового инструмента отлично рисуются и без проблем. Но там окно сразу создается -> есть его ID

Боюсь, индикатор самому не отрисовать. Меня тоже этот вопрос интересовал. Решение нарисовывается такое, но нужно модифицировать индикатор.

  1. Индикатор создается на шаблоне
  2. На первом тике советник пишет в глобальные переменные терминала параметры индикатора 
  3. На тике, больше 1-го индикатор считывает свои параметры и вызывает свой OnInit 

 
Alexey Volchanskiy:

Да что вы говорите!

https://gyazo.com/27de11287d06c349983a31b786dd6977 

При оптимизации не работают.
 
Dmitry Fedoseev:
При оптимизации не работают.
Так при оптимизации ничего и не визуализируется в принципе
 
Alexey Volchanskiy:

Боюсь, индикатор самому не отрисовать. Меня тоже этот вопрос интересовал. Решение нарисовывается такое, но нужно модифицировать индикатор.

  1. Индикатор создается на шаблоне
  2. На первом тике советник пишет в глобальные переменные терминала параметры индикатора 
  3. На тике, больше 1-го индикатор считывает свои параметры и вызывает свой OnInit 

Не совсем Вас понял. Создал я условно шаблон MACD(12,26,9) вручную. Что за глобальные переменные терминала? OnInit - это мне стандартный MACD надо модифицировать что ли?

Мне самому видится пока что два выхода (уже писал о них):

1. Либо все данные записывать в массивы и уже отрисовывать все из этих данных в OnTester (проверил - при генерации этого события функция поиска ID индикатора ChartWindowFind(ChartID(), "MACD(12,26,9)") какой-то ID возвращает). Но это ооочень криво ИМХО. Особенно учитывая, что сигналы у меня генерятся в отдельной библиотеке. А изменять там функцию генерации сигналов передачей туда массивов по адресам - бред. Они вроде как и не нужны для сигналов, но нужно эту инфу в советнике иметь, чтобы потом все отрисовать. А отрисовываю на основном графике я именно в библиотеке сигналов.

2. Создать шаблон вручную и потом в нем программно править параметры добавляемого индикатора посредством поиска нужных строк. Это решение хотя бы лучше, но тоже конечно на любителя. Тут хотя бы библиотеку не надо корявить. Да и тут не только параметры индикатора надо будет править, но и ТФ, например, (при смене таймфрейма в тестировании)  и еще какие-то возможно параметры шаблона... https://www.mql5.com/ru/forum/131853/page2#463027 вот тут как раз про это написано... Как же все криво. Хоть пиши отдельно сам аналог функции ChartIndicatorAdd на основании шаблонов...

Навигатор по форуму и ответы на часто задаваемые вопросы. Настоятельно Рекомендуется к Прочтению! - MQL4 форум
Навигатор по форуму и ответы на часто задаваемые вопросы. Настоятельно Рекомендуется к Прочтению! - MQL4 форум
  • www.mql5.com
Навигатор по форуму и ответы на часто задаваемые вопросы. Настоятельно Рекомендуется к Прочтению! - MQL4 форум - MQL4 форум