Графические объекты в тестере МТ4 не работают.
Да что вы говорите!
https://gyazo.com/27de11287d06c349983a31b786dd6977
Что то там было
Графические объекты в тестере МТ4 не работают.
Абсолютно не так. Возьмите любого эксперта (даже стандартный в комплекте MACD), который использует стандартные индикаторы. Прогоните по истории и увидите, как В КОНЦЕ прогона появится автоматически индикатор с параметрами прогона. Вот вопрос как его добавить в начале программно... Это и хочу понять
Более того те же графические объекты (стрелки, линии и т.д.) в самом окне финансового инструмента отлично рисуются и без проблем. Но там окно сразу создается -> есть его ID
Абсолютно не так. Возьмите любого эксперта (даже стандартный в комплекте MACD), который использует стандартные индикаторы. Прогоните по истории и увидите, как В КОНЦЕ прогона появится автоматически индикатор с параметрами прогона. Вот вопрос как его добавить в начале программно... Это и хочу понять
Более того те же графические объекты (стрелки, линии и т.д.) в самом окне финансового инструмента отлично рисуются и без проблем. Но там окно сразу создается -> есть его ID
Боюсь, индикатор самому не отрисовать. Меня тоже этот вопрос интересовал. Решение нарисовывается такое, но нужно модифицировать индикатор.
- Индикатор создается на шаблоне
- На первом тике советник пишет в глобальные переменные терминала параметры индикатора
- На тике, больше 1-го индикатор считывает свои параметры и вызывает свой OnInit
Да что вы говорите!
https://gyazo.com/27de11287d06c349983a31b786dd6977
При оптимизации не работают.
Боюсь, индикатор самому не отрисовать. Меня тоже этот вопрос интересовал. Решение нарисовывается такое, но нужно модифицировать индикатор.
- Индикатор создается на шаблоне
- На первом тике советник пишет в глобальные переменные терминала параметры индикатора
- На тике, больше 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 на основании шаблонов...
- www.mql5.com
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Всем привет!
Использую стандартный MACD при работе своего советника. Советник пишу на MQL4. Как известно, по умолчанию, в тестере стратегий при визуализации индикаторы, использующиеся в советниках, наносятся уже после окончания тестирования всего периода. Вопрос: можно ли их заставить принудительно сразу выводиться? Причем выводиться именно программно, а не в ручную их туда вставлять при каждом запуске тестера. Аналога функции ChartIndicatorAdd из MQL5 в MQL4 нет. Можно еще шаблон конечно сделать. Но все это не то... Ведь шаблон включает в себя определенный конкретный набор параметров, а при тестировании естественно параметры MACD меняться могут.
Поясню. В советнике при получении сигналов рисую на графике различные графические объекты, чтобы эти сигналы как-то визуально отображать. Рисовать на графике цены не составляет сложности. Но... Необходимо рисовать и на графике MACD. Но при работе советника в тестере этого графика просто нет. Он наносится лишь по окончанию тестирования. Соответственно, я не могу получить ID этого подокна, чтобы наносить в нем графические объекты функцией ObjectCreate. Можно конечно запоминать все данные о сигналах в куче массивов и рисовать графические объекты по завершению тестирования, но очень этого хотелось бы избежать. Ибо хочется сигналы видеть что называется онлайн (при пошаговом прогоне в тестере клавишей F12). Да и заранее неизвестно, сколько таких сигналов будет -> неизвестен объем данных -> задавать статический массив надо с большим запасом. Можно конечно использовать ArrayResize, но все это очень криво.
Заранее спасибо