Перейти к содержанию

Как оптимизировать сиБота

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

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

Как работает оптимизация сиБота

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

Рассмотрим сиБота, который может реагировать на случаи, когда скользящие средние быстрого и медленного периодов пересекаются (быстрая скользящая средняя пересекает медленную скользящую среднюю). Мы хотим иметь возможность настраивать, за сколько быстрых и медленных периодов сиБот получает данные.

Следовательно, наш сиБот должен иметь следующие два параметра.

1
2
3
4
5
[Parameter("Slow Periods", Group = "Moving Average", DefaultValue = 10)]
public int SlowPeriods { get; set; }

[Parameter("Fast Periods", Group = "Moving Average", DefaultValue = 5)]
public int FastPeriods { get; set; }

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

К счастью, мы можем заставить cTrader запускать эти тесты автоматически, и по их завершении предоставить нам определенные значения параметров, которые позволяют сиБоту достичь наилучших возможных результатов. Этот процесс известен как оптимизация сиБота.

Доступ к оптимизации сиБота

Чтобы получить доступ к оптимизации сиБота, выполните следующие действия.

Сначала выберите экземпляр сиБота, который вы хотите оптимизировать. При необходимости создайте новый экземпляр, нажав значок плюс и выбрав символ, или выбрав Добавить экземпляр в контекстном меню, которое открывается при нажатии значка Еще.

После этого перейдите на вкладку Оптимизация, расположенную справа от вкладки Бэктестинг. Центральный экран на этой вкладке должен выглядеть следующим образом.

Настройте параметры оптимизации и параметры сиБота

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

Чтобы выбрать точные параметры, которые cTrader должен оптимизировать, нажмите кнопку Параметры непосредственно справа от значка шестеренка.

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

Мы хотим, чтобы оптимизация определила оптимальные значения медленных и быстрых периодов, которые наш сиБот будет учитывать при запуске. Однако мы пока не хотим пробовать другие типы скользящих средних.

Определите критерии и алгоритм оптимизации

Можно определить, какие именно критерии cTrader будет использовать для выбора оптимальных значений параметров среди прогонов бэктестинга, которые он проведет.

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

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

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

Для краткости в этой статье не рассматриваются пользовательские критерии оптимизации и метод GetFitness(). Чтобы узнать о них больше, обратитесь к нашей технической документации.

Чтобы выбрать конкретный алгоритм оптимизации, нажмите кнопку Алгоритм справа от кнопки Критерии. Должен открыться следующий подраздел.

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

К счастью, в cTrader есть опция Генетический алгоритм. Этот алгоритм имитирует естественный отбор, рассматривая каждый прогон как особь, параметры сиБота как гены, а степень соответствия критериям оптимизации как адаптивность. Генетический алгоритм останавливается, как только обнаруживает, что любые изменения определенных значений параметров приведут к снижению эффективности сиБота.

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

Выделите ресурсы и выполните оптимизацию сиБота

Чтобы выполнить оптимизацию сиБота, выберите диапазон исторических данных, на которых cTrader будет запускать прогоны бэктестинга. Для этого используйте ползунок календаря в верхней части вкладки Оптимизация или меню слева и справа от него.

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

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

В появившемся разделе перетащите ползунок, чтобы увеличить или уменьшить потребление ЦП.

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

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

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

Примечание

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

Интерпретируйте и применяйте результаты оптимизации

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

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

Чтобы быстро выбрать прогон с наивысшей оценкой соответствия, просто включите флаг Автоматически выбирать лучший прогон, расположенный прямо над центральной сеткой. Обратите внимание, что вы можете включить флаг Автоматически выбирать лучший прогон во время оптимизации, и cTrader будет динамически искать наилучшие возможные значения параметров.

Как видно в столбце Соответствие, прогон номер 33 обеспечил наилучшую возможную оценку соответствия по сравнению со всеми другими прогонами.

Мы можем смело нажать Применить рядом с прогоном 33, и значения параметров, использованные во время этого прогона, будут немедленно применены к нашему экземпляру сиБота.

Значения по умолчанию для параметров Медленные периоды и Быстрые периоды были равны 10 и 5 соответственно.

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

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

Обзор

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