Технологии алготрейдинга: чеклист для подготовки стратегии к бэк-тесту

Время на чтение: 7 минут

Чеклист в алготрейдинге

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

Полезные материалы, которые хорошо бы изучить перед продолжением:

  1. Тестирование торговых стратегий на исторических данных (бэктест) — почему это так важно?

Содержание

Видео

Описание стратегии и псевдокод

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

Технологии алготрейдинга
Пример описания торговой стратегии.

Описание должно охватывать основные механизмы стратегии:

После идет псевдокод, который описывает компоновку блоков в моем любимом (на сегодняшний день) конструкторе стратегий Visual JForex. В сущности в псевдокоде показана пошаговая реализация стратегии в конструкторе.

Технологии алготрейдинга
Пример псевдокода.

В конструкторе редкая стратегия состоит из более чем 30-50 блоков, а иногда даже меньше. Практика показывает, что усложнение стратегии не повышает прибыльность.

Технологии алготрейдинга
Пример архитектуры алгоритма в Visual JForex.

За 1 час поможем разобраться с факторами успеха и причинами неудач на финансовых рынках. Бесплатно

Стоп-лосс

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

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

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

Технологии алготрейдинга
Пример вычисления стоп-лосса в конструкторе стратегий.

Тейк-профит

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

Технологии алготрейдинга
Пример вычисления тейк-профита в конструкторе стратегий.

Объем сделки

Если бы мне пришлось выделить самые главные атрибуты стратегии, необходимые для успешного бэк-теста (под успешностью понимается доведение процесса до конца и получение надежных результатов, но не обязательно прибыльность на истории), то я бы выделил стоп-лосс и объем сделки. Дело в том, что используемые нами VBA (Visual Basic Applications) скрипты для обработки результатов бэк-теста и проведения форвард-тестов сильно зависят от стандартизированных правил мани-менеджмента по всем тестируемым стратегиям. Чтобы получить неискаженную картину бэк-теста, стоит применять стандартные правила вычисления лота для всех конфигураций бэк-теста.

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

Технологии алготрейдинга
Пример блока с вычислением объема сделки в конструкторе стратегий.

Следующая важная деталь — формулы вычисления объема сделки. Дело в том, что нельзя обойтись одной и той же формулой для вычисления объема сделки, например, по этим четырем валютным парам:

  • EUR/USD
  • USD/JPY
  • GBP/CAD
  • EUR/GBP

Они представляют 4 разные группы валютных пар и требуют отдельной формулы каждая.

Что у них общего, так это следующий принцип, заложенный в формулах: в числитель ставим объем капитала, который мы готовы потерять на случай закрытия сделки по стоп-лоссу, а в знаменатель идет величина стоп-лосса в валюте котирования. Между 4-мя группами разница в том, где (в числителе или знаменателе) находится «USD» для мажоров и где во вспомогательных парах, используемых для вычисления лота по кросс-курсам. При этом имеется ввиду, что валюта счета — тоже USD.

Это все технические детали, которые можно подробнее узнать в статье Вычисляем объем сделки (лот) для любого инструмента.

В нашем Telegram-канале есть то, чего не публикуем на сайте 📈

Метки позиций

Если на вашем счете работает сразу несколько алгоритмов, то нужно предусмотреть, чтобы каждый робот имел дело только со своими позициями и не вмешивался в чужие, даже открытые человеком. Для этого каждый алгоритм должен уметь находить свои позиции. Для решения этой задачи в конструкторе Visual JForex к позициям прикрепляются уникальные текстовые метки. Эти метки (тэги) позволят отфильтровывать и находить нужные позиции для дальнейшей работы с ними.

Технологии алготрейдинга
Пример текстовой метки на позиции.

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

Поле параметров

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

Если расширить поле параметров до сотен или даже тысяч конфигураций, то придется затратить неадекватный объем времени на одни только бэк-тесты. С учетом того, что мы проводим все бэк-тесты в платформе JForex с наивысшим качеством (по тикам — как в реальном времени), исторический тест одной конфигурации на 3-5 годах исторических котировок может занять час и более.

Также можно упереться в ограниченные возможности хранения и обработки результатов. Обработка 300-500 конфигураций роботов, умноженных на 28-30 инструментов, может затянуться на несколько часов.

С учетом всего вышесказанного я стараюсь ограничивать поля параметров разумными рамками. В среднем это 250 конфигураций, максимум был 720, а минимум около 50-ти.

Технологии алготрейдинга
Примеры полей параметров для нескольких стратегий.

Код и исполняемые файлы

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

На выходе из конструктора Visual JForex получаются файлы .java, которые в платформе JForex компилируются в .jfx, и они уже пригодны для запуска в тесте или реальном времени. Можно также сохранять оригинальный файл конструктора .vfs для просмотра архитектуры стратегии и дальнейшего ее развития.

Технологии алготрейдинга
Пример полного набора файлов стратегии: java, jfx, vfs.

Выводы

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

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

Материалы

Поделиться статьей

С радостью ответим на ваши комментарии

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Читайте также

Поп-ап

В поиске прибыльных торговых стратегий на финансовых рынках?

Тогда вам по одной из кнопок ниже

Не пропустите лучшие статьи и видео о трейдинге — подписывайтесь на наш Telegram

До 30% скидок на все курсы. Только для тех, кто прошел вступительный материал до конца

  1. Стоимость любого курса можно разделить на 4 части. Без переплат, комиссий или кредитных договоров.
  2. Если курсы вам не подойдут — вернем деньги без вопросов.

Знания и практика — это то, что нужно для прибыльного трейдинга. Начните трейдинг-эволюцию уже сейчас