Тестирование торговых стратегий на JavaScript

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

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

Автоматическое тестирование торговых стратегий предполагает наличие у трейдера определённого алгоритма торговли, переложенного на язык, понятный компьютеру. Но чтобы превратить стратегию в программный код, необходимо уметь программировать или обратиться за помощью к программистам. Также для тестирования советников в тестере стратегий нужен качественный архив котировок за достаточно продолжительное время.

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

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

Текущий интерфейс главного окна с отрисовкой графика и индикаторов
Текущий интерфейс главного окна с отрисовкой графика и индикаторов

В чём главное отличие разработки от других программных продуктов?

  • Система работает прямо в браузере. Достаточно авторизоваться - и вот ваши разработки перед вами. Это своеобразное облако стратегий, доступное из любого устройства на любой ОС. Однако система не является поставщиком исторических данных и не имеет права их предоставлять, поэтому файлы с данными придётся загружать вручную, взяв их из различных источников.
  • Индикаторы и стратегии описываются на языке JavaScript, о доступности справочников и уроков не стоит рассказывать. Скриптовый язык браузера, который вполне подходит для этих целей. Принцип построения индикаторов заимствован у языка MQL4: есть глобальные массивы open, high, low, close, value с соответствующими значениями, индексация начинается с последнего бара. В буферные массивы записываются рассчитанные значения Ваших индикаторов, по которым происходит их отрисовка. Работа непосредственно советника основана на генерации сделок, рассчитанной в соответствии со стратегией на основе необходимых индикаторов и данных котировок.
Пример кода для индикатора Moving Average. В комментарии в формате JSON описываются входящие параметры со значениями по умолчанию. Справа - окно, вызываемое перед применением индикатора на график. Каждому индикатору назначается свой ID, необходим для его идентификации советником
Пример кода для индикатора Moving Average. В комментарии в формате JSON описываются входящие параметры со значениями по умолчанию. Справа - окно, вызываемое перед применением индикатора на график. Каждому индикатору назначается свой ID, необходим для его идентификации советником
Пример кода простой стратегии на основе двух Moving Average. При пересечении кривых происходит закрытие текущей позиции и вход в новую позицию (переворот). Стратегия работает на основе явного закрытия текущего бара
Пример кода простой стратегии на основе двух Moving Average. При пересечении кривых происходит закрытие текущей позиции и вход в новую позицию (переворот). Стратегия работает на основе явного закрытия текущего бара
  • В тестере реализована возможность пошагового отслеживания работы скрипта для тщательной проверки корректности его работы. По результатам тестирования выводятся журнал сделок, график изменения депозита и статистические характеристики. А встроенный в браузер инструмент разработчика поможет отладить возникающие ошибки и отследить работу скрипта по логам.
Результат тестирования одной из стратегии
Результат тестирования одной из стратегии

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

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

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

22
Начать дискуссию