Новая версия платформы MetaTrader 5 build 5430: Улучшенные графики на движке Blend2D - страница 25
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
ChartClose использую в OnTesterDeinit. Советник же продолжает работать после завершения оптимизации. Новая оптимизация - новый запуск фрейм-советника. Вроде, логично.
Логично было бы, если это действительно новая оптимизация, а это фактически продолжение старой (нет изменения настроек) - тестер же подхватывает предыдущие наработки и начинает не с нуля, о чем пишет в лог.
Во фреймовом советнике мы же тоже кое-какую статистику собираем. Сейчас получается, что фреймовые советники плодятся и каждый имеет только свой кусок статистики (если не позаботиться особым образом сохранять и считывать данные, что собственно и приходится делать), а тестер имеет полную статистику со всех прошлых (подходящих для продолжения) оптимизаций, т.е. пополняет все тот же самый opt-файл.
Ну фиг с ним с фреймовым экспертом. Но график то самой оптимизации почему открывается новый? - ведь тестер подгружает кеш со старыми проходами и использует их для дальнейшего исследования пространства параметров, а если обнаруживает совпадение - сообщает об этом и пропускает проход. Зачем мне куча неполноценных графиков от предыдущих запусков повторяющейся оптимизации, если результаты пишутся в ОДНУ таблицу?!
Этот режим ничем не отличается от такого способа использования тестера, когда мы ставим оптимизацию на паузу, а потом продолжаем.
ИМХО, баг очевидный.
график то самой оптимизации почему открывается новый?
99% пользователей не автоматизируют действия с Тестером.
Сам даже не смотрю на графики оптимизации. Всегда есть костыльное решение.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Библиотеки: MultiTester
fxsaber, 2019.10.27 13:59
99% пользователей не автоматизируют действия с Тестером.
Сам даже не смотрю на графики оптимизации. Всегда есть костыльное решение.
Я тоже не автоматизирую, просто нажимаю кнопку Старт повторно. Артефакт с лишними/плодящимися открытыми графиками не зависит от наличия или отсутствия автоматизации. Как раз с автоматизацией еще можно что-то подрихтовать, но большинство работает без автоматизации и для них проблема не решаема. Не понятно, почему не сделать изначально по уму, а не полагаться на усилия энтузиастов, которые будут какие-то средства автоматизации (не всегда удобные и 100% рабочие) ваять.
Диаграммы с распределением показателей проходов тоже предлагаете через MQL5 искать и прибивать? Ну, наверно, можно, хотя я не знаю, попадают ли такие окна в процесс перечисления обычных чартов.
PS. Вижу, что CloseNotChart как раз это и делает через dll, т.е. штатных средств нет, видимо.DRAW_COLOR_LINE инверсия цвета при прокрутке графика известный баг?
5440 остался
Когда генетическая оптимизация запускается несколько раз повторно (с одними и теми же настройками, чтобы собрать разные проходы) - зачем каждый раз открывается новый график оптимизации и новый чарт с еще одной копией советника во фрейм режиме!? Например, запустил оптимизацию 5 раз - открылось 10 окон! Пишется же всё в один и тот же opt-файл.
При продолжении/возобновлении оптимизации нужно использовать уже имеющиеся график и чарт!
Кстати об окошках. Если окно оптимизации закрыть пока оптимизация не завершилась, то фреймы не будут записаны и вся работа пропадет. Случайно закрывал его несколько раз, когда много окон наоткрывалось и решишь подчистить - начинаешь на автомате закрывать все подряд.
Для заметности этого окна сделал себе такую надпись: (и при завершении закрываю окно из кода)
Хорошо бы сделать это окно не закрываемым, пока оптимизация не завершится сама или пока не завершат кнопкой Stop.
Да и закрывать его можно автоматически - на нем смотреть нечего.
А еще лучше вообще не открывать его, а в скрытом режиме использовать.
ПС: Или хотя бы автоматически выводить подобное сообщение в окне оптимизации, чтобы все его явно отличали от других, а не только те, кто могут его себе запрограммировать.
Да и закрывать его можно автоматически - на нем смотреть нечего.
Нет.
Кстати об окошках. Если окно оптимизации закрыть пока оптимизация не завершилась, то фреймы не будут записаны и вся работа пропадет. Случайно закрывал его несколько раз, когда много окон наоткрывалось и решишь подчистить - начинаешь на автомате закрывать все подряд.
У меня был обратный опыт. Я хотел найти способ остановить оптимизацию из MQL5. Сейчас в API есть функции только для остановки одиночного прогона, даже если он выполняется в рамках оптимизации.
Оказалось, что остановка фреймового эксперта (ExpertRemove) и даже закрытие (ChartClose) этого фреймового чарта НЕ останавливают оптимизацию.
Итого - отсутствие нужного функционала в API, а текущий вариант работы - имхо баг, потому что действительно некуда фреймы писать при закрытии, а оптимизация тупо продолжается (полагаю, что в mqd-файл они все же дозаписываются).
имхо баг
Итого - отсутствие нужного функционала в API
Предложения звучали. Не хватает API и для некоторой работы в Терминале: тихий запуск скрипта/советника с заданными параметрами и некоторые другие (сходу не вспомнить все костыли).
Для Тестера нужны только 4+4 функции. Через WinAPI они позволяют делать все. Давно пора сделать их штатными с доступом для Маркета.
Нет.
Фреймовый советник только получает Pass-уведомления об обновлении mqd-файла.
Я не в OnPass собираю фреймы, а в OnTesterDeinit() сразу все. Хотел OnTesterPass(), но там предупреждение:
фреймы оптимизации, отсылаемые агентами тестирования с помощью функции FrameAdd(), могут приходить пачками и для их доставки требуется время. Поэтому не все фреймы, а соответственно и события TesterPass, могут до окончания оптимизации поступить и быть обработанными в OnTesterPass(). Поэтому для гарантированного получения всех запоздавших фреймов в OnTesterDeinit() необходимо поместить блок кода с использованием функции FrameNext().
Да и если бы собирал в OnTesterPass(), то пришлось бы дописывать инфу в конец файла (или в разные). Тысячи открытий закрытий файла(ов) и дозаписи вместо одного. Это одна проблема.
Но главная проблема в том, что если окно оптимизации закрыть, то часть проходов запишется, а все что после - нет (хотя я несколько лет это не пробовал, на 100% не уверен). И как потом мне эту неполную часть проходов обрабатывать? Отчет в .opt будет полный, а данные из фреймов - частичные. При повторной оптимизации - придется снова все проходы рассчитывать, а как то выбрать, что рассчитывать, а что нет - не представляю... так что толку от частичной информации нет, пусть уж будет или всё или ничего в OnTesterDeinit().
И вообще неясно зачем нужна OnTesterPass() если она и опоздавшие фреймы может пропустить и при закрытии окна остаток перестанет обрабатывать. Разве только чтобы старые коды продолжали работать, которые её используют.
Разве что за процессом наблюдать, как тут