Приветствую! Долго копал поиск и документацию, но вместо ответов открыл ещё больше вопросов.
Есть эксперт, который использует индикаторы с разных графиков (инструменты и период графиков могут отличаться). В режиме визуализации во время теста открываются эти графики, как и положено. Только вот основной график получает оформление, заданное шаблоном Tester.tpl, а остальные стандарное убогое чёрно-зелёное (почему не тот же Tester.tpl?). Возникло желание вручную применить к ним свои шаблоны оформления. Оказалось, что это не работает!
Выяснилось, что в режиме визуализации работает ChartID(), ChartFirst(), а вот ChartNext() и ChartOpen() не работает! Думал запретить показ индикаторов через TesterHideIndicators(), а потом самостоятельно открыть нужные графики и разместить на них по имеющимся хендлам индикаторы, но нет такого пути. Также стало ясно, что доступный файл при тестировании файл (всё как положено, через #property tester_file) не принимается функцией ChartApplyTemplate() даже к текущему графику, выкидывая ошибку 5019 (ERR_FILE_NOT_EXIST). Т.е. в режиме визуализации невозможно поменять шаблон никаких графиков, хотя в справке об этом ничего не нашёл. Что посоветуете?
Код для воспроизведения:
Попробуйте в OnInit() предварительно обратиться к данным (например, к ценам) других графиков - это откроет в тестере графики тех символов, к которым обратились. А потом уже искать их.
Да, таким образом можно открыть график (попробовал, спасибо!), но в связи с тем, что ChartNext() не работает, не могу получить идентификатор открытого графика чтобы передать его в ChartApplyTemplate(), который и сам по себе (даже на известном идентификаторе текущего графика) не работает в тестере (не принимая ни каким образом путь к файлу шаблона, хотя в обычный запуск всё работает отлично). Я бы вообще в это не полез, если бы вновь открываемые графики в тестере сами подхватывали шаблон tester.tpl, как это происходит с первым основным графиком. Для меня это выглядит как ошибка, стоит ли уже писать обращение в сервисдек?
![Документация по MQL5: Операции с графиками / ChartNext Документация по MQL5: Операции с графиками / ChartNext](https://c.mql5.com/36/77/dokumentaciya-po-mql5-operacii__1.png)
- www.mql5.com
Да, таким образом можно открыть график (попробовал, спасибо!), но в связи с тем, что ChartNext() не работает, не могу получить идентификатор открытого графика чтобы передать его в ChartApplyTemplate(), который и сам по себе (даже на известном идентификаторе текущего графика) не работает в тестере (не принимая ни каким образом путь к файлу шаблона, хотя в обычный запуск всё работает отлично). Я бы вообще в это не полез, если бы вновь открываемые графики в тестере сами подхватывали шаблон tester.tpl, как это происходит с первым основным графиком. Для меня это выглядит как ошибка, стоит ли уже писать обращение в сервисдек?
Только вручную после запуска.
Писать никуда нет никакого смысла. Все всё уже знают.
Ну класс, при этом исчезают все открытые со стороны эксперта индикаторы. Это значит, что на каждый конфиг и на каждый отдельный чарт нужно готовить шаблоны. Какой-то мартышкин труд. А ведь логично было бы, если бы тестер сам все графики открывал по чистому подготовленному шаблону (как самый первый график) и на него уже наносил всё, что задействовано и не скрыто с помощью TesterHideIndicators().
UPD: Попробовал добавить индикатор (через iCustom()) к графику, оформление которого хочу изменить, чтобы со стороны индикатора влезть в свойства графика. Оказалось, что индикатор с любого графика возвращает ChartID() = 12345. Это тот самый идентификатор, который принадлежит первому главному чарту. И все функции типа ChartSetInteger(), которым вместо идентификатора чарта можно передать 0, изменяют свойства не текущего (их) графика, а первого основного с id = 12345. Похоже, ChartID() тоже в тестере вообще не работает, а имеет заглушку, которая всегда со всех чартов выдаёт 12345. И нигде в документации почему-то не сказано про ограничения в работе тестере многих функций. Ну как так?
Разработчики, прошу, сделайте все открываемые при визуальном тестировании графики с основным шаблоном tester.tpl (ну не зря же вы его вообще придумали)!
Ну класс, при этом исчезают все открытые со стороны эксперта индикаторы. Это значит, что на каждый конфиг и на каждый отдельный чарт нужно готовить шаблоны. Какой-то мартышкин труд. А ведь логично было бы, если бы тестер сам все графики открывал по чистому подготовленному шаблону (как самый первый график) и на него уже наносил всё, что задействовано и не скрыто с помощью TesterHideIndicators().
UPD: Попробовал добавить индикатор (через iCustom()) к графику, оформление которого хочу изменить, чтобы со стороны индикатора влезть в свойства графика. Оказалось, что индикатор с любого графика возвращает ChartID() = 12345. Это тот самый идентификатор, который принадлежит первому главному чарту. И все функции типа ChartSetInteger(), которым вместо идентификатора чарта можно передать 0, изменяют свойства не текущего (их) графика, а первого основного с id = 12345. Похоже, ChartID() тоже в тестере вообще не работает, а имеет заглушку, которая всегда со всех чартов выдаёт 12345. И нигде в документации почему-то не сказано про ограничения в работе тестере многих функций. Ну как так?
Разработчики, прошу, сделайте все открываемые при визуальном тестировании графики с основным шаблоном tester.tpl (ну не зря же вы его вообще придумали)!
Ну так и примените шаблон tester.tpl. Ведь вы подготовили этот шаблон до того как…
А проблема так стара, что и говорить о ней уже не хочется. Я всё это уже прошёл. Толку ровно ноль… Ничего не сделают пока не запустят новый тестер. Да и то не факт, что будет сделано.
Ну так и примените шаблон tester.tpl. Ведь вы подготовили этот шаблон до того как…
А проблема так стара, что и говорить о ней уже не хочется. Я всё это уже прошёл. Толку ровно ноль… Ничего не сделают пока не запустят новый тестер. Да и то не факт, что будет сделано.
Мало того, что пустой тестерный шаблон затрёт уже размещённые со стороны советника индикаторы, так ещё нужно каждый раз делать это при запуске визуализации, бред же. А каждый запуск может отличаться по набору/настройкам размещённых на чарте индикаторов.
И ещё удивляет, если это такая старая проблема, почему поиск ни по документации (ну ладно, с ней явно проблемы), ни по форуму ничего не дал? И ведь решение со стороны разработчиков примитивнейшее (tester.tpl на все открываемые чарты!), даже плевать на нерабочие функции работы с чартами. Ещё и стандартная тема эта зелёная такое убожество...
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Приветствую! Долго копал поиск и документацию, но вместо ответов открыл ещё больше вопросов.
Есть эксперт, который использует индикаторы с разных графиков (инструменты и период графиков могут отличаться). В режиме визуализации во время теста открываются эти графики, как и положено. Только вот основной график получает оформление, заданное шаблоном Tester.tpl, а остальные стандарное убогое чёрно-зелёное (почему не тот же Tester.tpl?). Возникло желание вручную применить к ним свои шаблоны оформления. Оказалось, что это не работает!
Выяснилось, что в режиме визуализации работает ChartID(), ChartFirst(), а вот ChartNext() и ChartOpen() не работает! Думал запретить показ индикаторов через TesterHideIndicators(), а потом самостоятельно открыть нужные графики и разместить на них по имеющимся хендлам индикаторы, но нет такого пути. Также стало ясно, что доступный файл при тестировании файл (всё как положено, через #property tester_file) не принимается функцией ChartApplyTemplate() даже к текущему графику, выкидывая ошибку 5019 (ERR_FILE_NOT_EXIST). Т.е. в режиме визуализации невозможно поменять шаблон никаких графиков, хотя в справке об этом ничего не нашёл. Что посоветуете?
Код для воспроизведения: