Автоматическая генерация кода

 

Предлагаю в данной ветки обсудить возможность автоматической генерации кода по шаблону и его автоматическое компилирование по требованию советника.

Для примера расскажу о своей задаче:

1. Есть файлы с данными, данные представляют собой переменные разных типов с присвоенным значением

2. Нужно считать данные и сделать из них массив данных или enum или ещё как, что б одна строка из файла соответствовала одному набору переменных. Это нудно сделать для каждого файла.

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

4. Сохранить результат в файл для подключения к советнику/иному коду

Вот в общем то задача теоретически не сложная, если не считать, что надо каким то образом автоматизировать процесс создания шаблона. Вообще возможно ли это сделать средствами MQL?

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

 

Идея не нова. Обсуждалась в ветке про статьи. Там, если не ошибаюсь Рош писал о возможной статье, где описывалось бы, как из Тестера одного терминала запускать Тестер другого.

Посмотрел список тем. В Таблице первой идёт:

1
Управление оптимизацией
Графический интерфейс для запуска второго терминала . MQL5
 
Dennis Kirichenko:

Идея не нова. Обсуждалась в ветке про статьи. Там, если не ошибаюсь Рош писал о возможной статье, где описывалось бы, как из Тестера одного терминала запускать Тестер другого.

Посмотрел список тем. В Таблице первой идёт:

1
Управление оптимизацией
Графический интерфейс для запуска второго терминала . MQL5

Да я писал в той ветке о своей идеи, но так понял, что либо она не понятна, либо не интересна, поэтому я и решил попробовать её реализовать тут, если будет возможно.

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

 

Т.е. Вы хотите после оптимизации сохранить в файле комбинации input-переменных, которые дают хороший результат относительно оптимизируемого параметра.

Т.е. если прогон был удачным, то запоминаем значения input-переменных, нет - пропускаем.

Так?

 
Dennis Kirichenko:

Т.е. Вы хотите после оптимизации сохранить в файле комбинации input-переменных, которые дают хороший результат относительно оптимизируемого параметра.

Т.е. если прогон был удачным, то запоминаем значения input-переменных, нет - пропускаем.

Так?

Что-то типа того, сохраняется определенная выборка, да.

 
Aleksey Vyazmikin:

Что-то типа того, сохраняется определенная выборка, да.

Ну так это всё можно делать во фрейм-режиме. Есть несколько статей по теме, последняя тоже: ВИЗУАЛИЗАЦИЯ РЕЗУЛЬТАТОВ ОПТИМИЗАЦИИ ПО ВЫБРАННОМУ КРИТЕРИЮ

 
Dennis Kirichenko:

Ну так это всё можно делать во фрейм-режиме. Есть несколько статей по теме, последняя тоже: ВИЗУАЛИЗАЦИЯ РЕЗУЛЬТАТОВ ОПТИМИЗАЦИИ ПО ВЫБРАННОМУ КРИТЕРИЮ

Как визуализация связана со сбором данных для последующей оптимизации?

 
Aleksey Vyazmikin:

Как визуализация связана со сбором данных для последующей оптимизации?

Непосредственно. По выбранному критерию отобраны лучшие результаты оптимизации. Так же можно поступить и Вам при решении своей задачи.

 
Dennis Kirichenko:

Непосредственно. По выбранному критерию отобраны лучшие результаты оптимизации. Так же можно поступить и Вам при решении своей задачи.

Как отобрать - не вопрос - могут быть разные критерии - это мелочи жизни в данном случае.

 

Имхо, шаблон, да ещё и с какой-то автоматической компиляцией, не нужен. Хотя и здесь можно поизгаляться :-)

Можно выборочные результаты записывать в кучку *.set файлов. Это к примеру...

Насколько понял, тогда, исходя из Вашей задачи, MQL-программа должна считать данные из файла и сформировать *.set файл, где для каждого оптимизируемого параметра будет указан диапазон возможных значений. И потом скармливать этот файл для последующей оптимизации, своего рода fine-tuning. 

Если Вы откроете Блокнотом какой-нибудь set-файл, то в нём будут перечислены параметры, для которых могут задаваться диапазоны.

К примеру, у меня есть такой параметр в коде Советника как InpTakeProfit (тэйк-профит в пунктах)

В set-файле параметр выглядит так:

InpTakeProfit=300||100||50||500||Y

Т.е. при оптимизации он будет задействован (в конце стоит Y, иначе N). Стартовое значение равно 100, шаг = 50, Окончательное значение = 500.

 
Dennis Kirichenko:

Имхо, шаблон, да ещё и с какой-то автоматической компиляцией, не нужен. Хотя и здесь можно поизгаляться :-)

Можно выборочные результаты записывать в кучку *.set файлов. Это к примеру...

Насколько понял, тогда, исходя из Вашей задачи, MQL-программа должна считать данные из файла и сформировать *.set файл, где для каждого оптимизируемого параметра будет указан диапазон возможных значений. И потом скармливать этот файл для последующей оптимизации, своего рода fine-tuning. 

Если Вы откроете Блокнотом какой-нибудь set-файл, то в нём будут перечислены параметры, для которых могут задаваться диапазоны.

К примеру, у меня есть такой параметр в коде Советника как InpTakeProfit (тэйк-профит в пунктах)

В set-файле параметр выглядит так:

Т.е. при оптимизации он будет задействован (в конце стоит Y, иначе N). Стартовое значение равно 100, шаг = 50, Окончательное значение = 500.

Из Ваших ответов мне очевидно, что я не смог объяснить суть проблемы.

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

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

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