Обсуждение статьи "Разрабатываем мультивалютный советник (Часть 6): Автоматизируем подбор группы экземпляров"

 

Опубликована статья Разрабатываем мультивалютный советник (Часть 6): Автоматизируем подбор группы экземпляров:

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

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

Однако если встаёт вопрос об увеличении количества стратегий в группах и количества разных объединяемых групп, то объём рутинной ручной работы сильно возрастает. 

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

Во-вторых, из полученных в результате оптимизаций наборов параметров, которых получается около 20 - 50 тысяч, необходимо выбрать небольшое количество (10 - 20) самых лучших. Однако лучшими они должны быть не только сами по себе, но и при совместной работе в группе. Процесс отбора и добавления экземпляров стратегий по одному тоже требует времени и терпения.

В-третьих, полученные группы надо в свою очередь объединять в вышестоящие группы, проводя нормировку. Если это делать вручную, то можно себе позволить только два или три уровня. Большее количество уровней группировки представляется уже слишком трудоёмким.

Автор: Yuriy Bykov

 

Спасибо! :)

 

Отличная статья и система :)

-  К каждому из них применим мин-макс масштабирование, приводящее к диапазону [0; 1]. Получим дополнительные столбцы с суффиксом '_s', 

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

 
Viktor Kudriavtsev #:

Отличная статья и система :)

-  К каждому из них применим мин-макс масштабирование, приводящее к диапазону [0; 1]. Получим дополнительные столбцы с суффиксом '_s', 

Юрий, а как Вы это сделали? Я в exel искал и ничего подобного там не увидел в функциях.

Виктор, спасибо за отзыв!

Специальной функции в Excel я тоже не знаю, делаю примерно так:

 
Yuriy Bykov #:

Виктор, спасибо за отзыв!

Специальной функции в Excel я тоже не знаю, делаю примерно так:

Спасибо Юрий.

А вот у вас написано про добавление колонок  Profit, Expected Payoff, Profit Factor, Recovery Factor, Sharpe Ratio, Equity DD %, Trades, с _s. А их в каком порядке добавлять чтобы работало? Каждый столбик после оригинального столбика или можно все в конце таблицы добавить? Могли бы Вы сделать скриншот названий колонок как у Вы делаете со своей таблицы уже отредактированной, или просто прикрепите файл небольшой уже отредактированный для образца.

Ещё когда Вы оптимизируете советник, ставите по комплексному критерию или просто баланс макс? Я пробовал у меня что-то не очень большое количество трейдов в проходах находит, порядка 100-180 сделок за 5 лет.

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

 

Порядок добавления имеет значения только с точки зрения, как это сделать быстрее. Мне было быстрее эти столбцы добавить в конце таблицы (столбцы AC:AI), потом по ним посчитать отклонения еще в нескольких новых столбцах (AJ:AP), затем в AQ просуммировать  AJ:AP, потом в AR находим максимальный коэффициент масштабирования Scale, и в AS вычисляем отношение Res = AR/AQ. Чтобы по нему отсортировать, надо скопировать из AS в новый столбец AT только значения. Прикрепил пример.

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

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

Файлы:
 
Yuriy Bykov #:

Порядок добавления имеет значения только с точки зрения, как это сделать быстрее. Мне было быстрее эти столбцы добавить в конце таблицы (столбцы AC:AI), потом по ним посчитать отклонения еще в нескольких новых столбцах (AJ:AP), затем в AQ просуммировать  AJ:AP, потом в AR находим максимальный коэффициент масштабирования Scale, и в AS вычисляем отношение Res = AR/AQ. Чтобы по нему отсортировать, надо скопировать из AS в новый столбец AT только значения. Прикрепил пример.

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

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

Юрий спасибо за пример таблицы, Я как понимаю это из последней статьи (7), она тоже пригодится, но я у Вас просил пример таблицы из этой статьи (6), которую Вы подаёте на вход советника OptGroupClusterExpert.mq5. Как я понимаю эта таблица у Вас называется Params_SV_EURGBP_H1-with_cluster.csv и Params_SV_EURGBP_H1.csv . Вот их у Вас я и попросил. Прикрепите пожалуйста эти таблицы как пример.

По поводу следующей статьи круто! Будем ждать:) Если можно было бы неплохо добавить ещё в стратегию возможность временного фильтра для каждой стратегии (указывать чесы начала и конца торгового периода) и какие нибудь фильтры на индикаторах (2-3 штуки). тогда я думаю получится классный советник для торговли всего рынка целиком :)

 

Виктор, да, действительно, забежал немного вперед с предыдущим примером таблицы.

Прикрепил пример для Params_SV_EURGBP_H1.xlsx, так как в CSV-файле уже не будет формул. Вам надо будет его сохранить в CSV, и если Excel у вас использует в качестве разделителя символ ';', то надо во всём CSV-файле сделать замену ';' на ','. Файл Params_SV_EURGBP_H1-with_cluster.csv получается уже автоматически с использованием приведённого в статье кода на Python из Params_SV_EURGBP_H1.csv.

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

Файлы:
Причина обращения: