Новая версия платформы MetaTrader 5 build 5430: Улучшенные графики на движке Blend2D - страница 25

 
fxsaber #:
ChartClose использую в OnTesterDeinit. Советник же продолжает работать после завершения оптимизации. Новая оптимизация - новый запуск фрейм-советника. Вроде, логично.

Логично было бы, если это действительно новая оптимизация, а это фактически продолжение старой (нет изменения настроек) - тестер же подхватывает предыдущие наработки и начинает не с нуля, о чем пишет в лог.

Во фреймовом советнике мы же тоже кое-какую статистику собираем. Сейчас получается, что фреймовые советники плодятся и каждый имеет только свой кусок статистики (если не позаботиться особым образом сохранять и считывать данные, что собственно и приходится делать), а тестер имеет полную статистику со всех прошлых (подходящих для продолжения) оптимизаций, т.е. пополняет все тот же самый opt-файл.

Ну фиг с ним с фреймовым экспертом. Но график то самой оптимизации почему открывается новый? - ведь тестер подгружает кеш со старыми проходами и использует их для дальнейшего исследования пространства параметров, а если обнаруживает совпадение - сообщает об этом и пропускает проход. Зачем мне куча неполноценных графиков от предыдущих запусков повторяющейся оптимизации, если результаты пишутся в ОДНУ таблицу?!

Этот режим ничем не отличается от такого способа использования тестера, когда мы ставим оптимизацию на паузу, а потом продолжаем.

ИМХО, баг очевидный.

 
Stanislav Korotky #:

график то самой оптимизации почему открывается новый?

99% пользователей не автоматизируют действия с Тестером.

Сам даже не смотрю на графики оптимизации. Всегда есть костыльное решение.

 
fxsaber #:

99% пользователей не автоматизируют действия с Тестером.

Сам даже не смотрю на графики оптимизации. Всегда есть костыльное решение.

Я тоже не автоматизирую, просто нажимаю кнопку Старт повторно. Артефакт с лишними/плодящимися открытыми графиками не зависит от наличия или отсутствия автоматизации. Как раз с автоматизацией еще можно что-то подрихтовать, но большинство работает без автоматизации и для них проблема не решаема. Не понятно, почему не сделать изначально по уму, а не полагаться на усилия энтузиастов, которые будут какие-то средства автоматизации (не всегда удобные и 100% рабочие) ваять.

Диаграммы с распределением показателей проходов тоже предлагаете через MQL5 искать и прибивать? Ну, наверно, можно, хотя я не знаю, попадают ли такие окна в процесс перечисления обычных чартов.

PS. Вижу, что CloseNotChart как раз это и делает через dll, т.е. штатных средств нет, видимо.
 
lynxntech #:

DRAW_COLOR_LINE инверсия цвета при прокрутке графика известный баг?

5440 остался

5488 остался. Но уже на некоторых масштабах графика: на максимальном Zoom in и следующем вниз, остальные ок.
 
Stanislav Korotky #:

Когда генетическая оптимизация запускается несколько раз повторно (с одними и теми же настройками, чтобы собрать разные проходы) - зачем каждый раз открывается новый график оптимизации и новый чарт с еще одной копией советника во фрейм режиме!? Например, запустил оптимизацию 5 раз - открылось 10 окон! Пишется же всё в один и тот же opt-файл.

При продолжении/возобновлении оптимизации нужно использовать уже имеющиеся график и чарт!

Кстати об окошках. Если окно оптимизации закрыть пока оптимизация не завершилась, то фреймы не будут записаны и вся работа пропадет. Случайно закрывал его несколько раз, когда много окон наоткрывалось и решишь подчистить - начинаешь на автомате закрывать все подряд.

Для заметности этого окна сделал себе такую надпись: (и при завершении закрываю окно из кода)


Хорошо бы сделать это окно не закрываемым, пока оптимизация не завершится сама или пока не завершат кнопкой Stop.
Да и закрывать его можно автоматически - на нем смотреть нечего.

А еще лучше вообще не открывать его, а в скрытом режиме использовать.

ПС: Или хотя бы автоматически выводить подобное сообщение в окне оптимизации, чтобы все его явно отличали от других, а не только те, кто могут его себе запрограммировать.

 
Aleksei Kuznetsov #:

Да и закрывать его можно автоматически - на нем смотреть нечего.

Нет.


Визуализация стратегий в MQL5: раскладываем результаты оптимизации по графикам критериев
Визуализация стратегий в MQL5: раскладываем результаты оптимизации по графикам критериев
  • 2025.03.21
  • www.mql5.com
В этой статье мы напишем пример визуализации процесса оптимизации и сделаем отображение трёх лучших проходов для четырёх критериев оптимизации. А также обеспечим возможность выбора одного из трёх лучших проходов для вывода его данных в таблицы и на график.
 
Aleksei Kuznetsov #:

Кстати об окошках. Если окно оптимизации закрыть пока оптимизация не завершилась, то фреймы не будут записаны и вся работа пропадет. Случайно закрывал его несколько раз, когда много окон наоткрывалось и решишь подчистить - начинаешь на автомате закрывать все подряд.

У меня был обратный опыт. Я хотел найти способ остановить оптимизацию из MQL5. Сейчас в API есть функции только для остановки одиночного прогона, даже если он выполняется в рамках оптимизации.

Оказалось, что остановка фреймового эксперта (ExpertRemove) и даже закрытие (ChartClose) этого фреймового чарта НЕ останавливают оптимизацию.

Итого - отсутствие нужного функционала в API, а текущий вариант работы - имхо баг, потому что действительно некуда фреймы писать при закрытии, а оптимизация тупо продолжается (полагаю, что в mqd-файл они все же дозаписываются).

 
Stanislav Korotky #:

имхо баг

Не вижу бага. Все же прием фреймов и их запись - разные задачи. Фреймовый советник только получает Pass-уведомления об обновлении mqd-файла.
 
Stanislav Korotky #:

Итого - отсутствие нужного функционала в API

Предложения звучали. Не хватает API и для некоторой работы в Терминале: тихий запуск скрипта/советника с заданными параметрами и некоторые другие (сходу не вспомнить все костыли).


Для Тестера нужны только 4+4 функции. Через WinAPI они позволяют делать все. Давно пора сделать их штатными с доступом для Маркета.

Планы развития тестера торговых стратегий MetaTrader 5
Планы развития тестера торговых стратегий MetaTrader 5
  • 2019.09.02
  • www.mql5.com
В ручную назначаем агентов для каждой одновременно тестируемой программы. снова ждет когда его заберут на выполнение из очереди задач. автоматически выделяется свое виртуальное окружение тестера. и затем результаты самому формировать по номеру портфеля
 
fxsaber #:

Нет.

С чем именно не согласны? Что всегда автоматически закрывать не надо? Не настаиваю.
fxsaber #:
 Фреймовый советник только получает Pass-уведомления об обновлении mqd-файла.

Я не в OnPass собираю фреймы, а в OnTesterDeinit() сразу все. Хотел OnTesterPass(), но там предупреждение:

фреймы оптимизации, отсылаемые агентами тестирования с помощью функции FrameAdd(), могут приходить пачками и для их доставки требуется время. Поэтому не все фреймы, а соответственно и события TesterPass, могут до окончания оптимизации поступить и быть обработанными в OnTesterPass(). Поэтому для гарантированного получения всех запоздавших фреймов в OnTesterDeinit() необходимо поместить блок кода с использованием функции FrameNext().

Да и если бы собирал в OnTesterPass(), то пришлось бы дописывать инфу в конец файла (или в разные). Тысячи открытий закрытий файла(ов) и дозаписи вместо одного. Это одна проблема.
Но главная проблема в том, что если окно оптимизации закрыть, то часть проходов запишется, а все что после - нет (хотя я несколько лет это не пробовал, на 100% не уверен). И как потом мне эту неполную часть проходов обрабатывать? Отчет в .opt будет полный, а данные из фреймов  - частичные. При повторной оптимизации - придется снова все проходы рассчитывать, а как то выбрать, что рассчитывать, а что нет - не представляю... так что толку от частичной информации нет, пусть уж будет или всё или ничего в OnTesterDeinit().

И вообще неясно зачем нужна OnTesterPass() если она и опоздавшие фреймы может пропустить и при закрытии окна остаток перестанет обрабатывать. Разве только чтобы старые коды продолжали работать, которые её используют.

Разве что за процессом наблюдать, как тут

Документация по MQL5: OnTesterPass / Обработка событий
Документация по MQL5: OnTesterPass / Обработка событий
  • www.mql5.com
Вызывается в экспертах при наступлении события TesterPass для обработки нового фрейма данных во время оптимизации эксперта. Возвращаемое значение...