Пользовательские функции приспособленности для оптимизации
Оптимизация сиБота — это процесс определения наилучших возможных значений параметров для сиБота перед его развертыванием для реальной торговли. В cTrader вы можете оптимизировать сиБотов по широкому спектру встроенных критериев, таких как максимизация прибыли или минимизация просадки средств. Однако вы также можете написать свои собственные функции приспособленности для оптимизации, что может быть полезно, если вы хотите применить пользовательские критерии производительности к сиБоту. В этой статье и соответствующем видео мы обсудим, как работают пользовательские функции приспособленности.
Обратите внимание, что эта статья не охватывает процесс оптимизации сиБота с использованием встроенных критериев.
Определите пользовательские функции приспособленности
Пользовательская функция приспособленности — это просто переопределение метода GetFitness().
1 2 3 4 | |
Переопределение должно принимать один аргумент типа GetFitness args, чтобы считаться пользовательской функцией приспособленности.
Напишите пользовательскую функцию приспособленности
Поскольку метод GetFitness() должен возвращать double, тело метода должно содержать вычисление, результатом которого является значение этого типа.
Например, мы можем написать простую пользовательскую функцию приспособленности, которая возводит в квадрат общее количество прибыльных сделок, совершенных сиБотом, а затем делит это значение на общее значение убыточных сделок. Таким образом, мы придаем больший вес прибыльным сделкам и, в некотором смысле, позволяем оптимизированному сиБоту совершать некоторые рискованные действия.
Вот как будет выглядеть наша функция приспособленности.
1 2 3 4 | |
На этом этапе мы можем добавить переопределение к любому сиБоту, который хотим, затем сохранить и собрать его.
Используйте пользовательскую функцию приспособленности в оптимизации
После добавления нашей функции нам нужно добавить экземпляр выбранного сиБота, а затем переключиться на вкладку Бэктестинг. Чтобы провести оптимизацию с использованием нашей пользовательской функции, все, что нам нужно сделать, это открыть раздел Критерии оптимизации и выбрать опцию Пользовательский. После этого мы можем запустить оптимизацию как обычно.
Во время оптимизации более высокие оценки приспособленности будут присваиваться проходам, во время которых сиБот максимизировал соотношение между количеством прибыльных сделок в квадрате и количеством убыточных сделок.
Измените пользовательскую функцию приспособленности
Мы также можем вернуться к нашей пользовательской функции и изменить ее следующим образом.
1 2 3 4 5 6 7 8 9 10 11 | |
Эта функция по-прежнему следует предыдущему алгоритму, но применяет пользовательское вычисление только в том случае, если сиБот разместил более 20 сделок. В любом другом случае функция возвращает наименьшее возможное значение double. Теоретически это должно улучшить результаты за счет снижения вероятности статистической погрешности.
Если мы пересоберем бота и снова запустим оптимизацию, мы должны увидеть, что несколько проходов получают очень низкую оценку приспособленности из-за малого количества общих сделок, размещенных сиБотом.
Наконец, мы хотим минимизировать просадку средств, при этом поощряя активную торговлю.
1 2 3 4 5 6 7 8 | |
Если мы снова запустим оптимизацию, мы должны увидеть наилучшие возможные проходы с учетом нашей торговой стратегии.
Пользовательские функции приспособленности предоставляют отличный инструмент для определения наилучших возможных значений параметров, соответствующих вашему уникальному подходу к торговле.