Обсуждение статьи "Непрерывная скользящая оптимизация (Часть 5): Обзор проекта автооптимизатора, а также создание графического интерфейса"

 

Опубликована статья Непрерывная скользящая оптимизация (Часть 5): Обзор проекта автооптимизатора, а также создание графического интерфейса:

Продолжаем описание скользящей оптимизации в терминале MetaTrader 5. Рассмотрев в прошлых статьях методы формирования отчета оптимизации и способ его фильтрации, мы перешли к описанию внутренней структуры приложения, отвечающего за сам процесс оптимизации. Автооптимизатор, выполненный как приложение на C#, имеет собственный графический интерфейс. Именно созданию данного графического интерфейса и посвящена текущая статья.

Приступим к рассмотрению графического интерфейса. Если ранее был продемонстрирован способ как создать дополнение к платформе MetaTrader 5 на языке C# и состыковать его функционал с экспертом посредством DLL-библиотеки и коллбека OnTimer, то в текущей реализации было принято решение вынести автооптимизатор за пределы терминала. Теперь он является по своей сути внешним менеджером оптимизаций, и имитирует работу трейдера по запуску оптимизационных процессов и обработки результатов. Причем, отказавшись от одновременной оптимизации в нескольких терминалах на одном компьютере и вынеся автооптимизатор в отдельное приложение, нам стали доступны абсолютно все терминалы, что установлены на компьютере, даже и тот компьютер, на котором был запущен оптимизатор. В прошлом проекте он не мог быть задействован.

Посему текущий проект написан не целиком в DLL-библиотеки, как было раньше, а поделен на DLL-библиотеку и на исполняемый файл проекта автооптимизатора, о котором идет речь в данной статье.


Как видно из представленного скриншота, окно проекта состоит из Хеддера, Подвала, а также TabControl с двумя вкладками Settings и Reports. Заголовочная часть окна, как и подвал, не изменяются, какую бы вкладку не выбрали в центральной части окна, что дает постоянный доступ ко всем элементам управления, расположенным на них.

Автор: Andrey Azatskiy

 
Что же делать ? как оптимизировать? 
 
Dzmitry Adzinets:
Что же делать ? как оптимизировать? 

В статье №4 - инструкция как оптимизировать

Непрерывная скользящая оптимизация (Часть 4): Программа для управления оптимизацией (автооптимизатор)
Непрерывная скользящая оптимизация (Часть 4): Программа для управления оптимизацией (автооптимизатор)
  • www.mql5.com
Продолжая цикл статей про непрерывную скользящую оптимизацию, вашему вниманию представляется созданная программа для осуществления запрограммированной автоматической оптимизации. Ранее написанные статьи описывали детали реализации данной программы как на стороне терминала, так и библиотеки, которая используется для работы с созданными отчетами...
 
Андрей, как правильно заполнять поля "APPEND_BOT_PARAM"? Туда нужно вносить все параметры эксперта или только те, что нужно оптимизировать на сей момент? И зачем их заполнять в коде эксперта, когда они есть в главном окне "Metatrader Auto Optimiser "?
 
Good Beer:
Андрей, как правильно заполнять поля "APPEND_BOT_PARAM"? Туда нужно вносить все параметры эксперта или только те, что нужно оптимизировать на сей момент? 

Туда нужно вносить все параметры эксперта.

Good Beer:
И зачем их заполнять в коде эксперта, когда они есть в главном окне "Metatrader Auto Optimiser "?

Все дело в том, что в главном окне Metatrader Auto Optimiser - эти параметры берутся из (*set) файла генерируемого терминалом. А вот в отчетах оптимизации, где так же сохраняются параметры робота, параметры записываются уже самим роботом в момент генерации отчета. Если не внести эти параметры, то во первых авто оптимизатор не сможет запустить тест по уже произведенным ранее оптимизациям, ведь для запуска тестов - он берет параметры именно из файликов отчета оптимизации, которые как уже писал выше - генерируются самим роботом по завершении процесса оптимизации. Во вторых будут проблемы в процессе оптимизации, там как отобрав проход по выбранным критериям,он не сумеет запустить тест из за того, что не найдет параметры робота с которыми нужно тест запускать. Вернее тест то запустится скорее всего, однако запуск будет произведен не с ожидаемыми параметрами.

 
Andrey Azatskiy:

берет параметры именно из файликов отчета оптимизации

Наверное, разумно воспользоваться альтернативными проверенными вариантами получения этой инфы.

 
fxsaber:

Наверное, разумно воспользоваться альтернативными проверенными вариантами получения этой инфы.

Предложите варианты ? Там дело в том что отчет то сам робот формирует, а стандартную выгрузку что терминал делает, я решил не использовать по той причине, что хотел добавить побольше данных в отчет. В принципе это единожды делается, а не при каждой оптимизации, так что не думаю что сильно затруднительно должно быть, однако если есть более удобный способ, то готов подправить код.

 
Andrey Azatskiy:

Предложите варианты ? Там дело в том что отчет то сам робот формирует, а стандартную выгрузку что терминал делает, я решил не использовать по той причине, что хотел добавить побольше данных в отчет. В принципе это единожды делается, а не при каждой оптимизации, так что не думаю что сильно затруднительно должно быть, однако если есть более удобный способ, то готов подправить код.

В КБ MTTester.mqh, где можно получать все настройки советника в любой момент. Ну и вытаскивать сеты из результатов Оптимизации - также.

 
fxsaber:

В КБ MTTester.mqh, где можно получать все настройки советника в любой момент. Ну и вытаскивать сеты из результатов Оптимизации - также.

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

 
Andrey Azatskiy:
Предложите варианты ?

Ну и как вариант: минимально подключить к эксперту фреймы и использовать FrameInputs().

 
Good Beer:

Ну и как вариант: минимально подключить к эксперту фреймы и использовать FrameInputs().

Фреймы не хотел бы задействовать, однако благодарю за совет. С использованием текущего варианта, к эксперту всего лишь один класс подключается, а фреймы это целый механизм с набором методов для работы с ними. К тому же они на сколько помню поддерживают лишь примитивные типы данных, а я хотел сохранять структуры в файлах, посему и решил использовать xml разметку.

Причина обращения: