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

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

Технологии алготрейдинга

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

Содержание

Видео

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

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

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

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

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

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

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

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

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

6 уроков онлайн-курса и 89 минут вебинара подскажут, как не терять деньги при трейдинге и куда следовать для эффективного развития.

Стоп-лосс

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

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

Размер стоп-лосса может быть любым и вычисляться как угодно. Как правило, в нашей базе стратегий стоп-лосс вычисляется от 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.

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

Материалы

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

Поделиться в facebook
Поделиться в vk
Поделиться в twitter
Поделиться в telegram

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

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

2,5 часа бесплатных видео по автоматизации торговых стратегий

Начните обходить других частных трейдеров.

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

Ваша выгода составит от 2 409 ₽ до 31 482 .

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

Ваша выгода составит от 2 409 ₽ до 31 482 .

Не уходите с пустыми руками — выберите один из 3-х бесплатных видеокурсов о трейдинге или же софт для анализа рынков