Конструктор торговых роботов tradescript

Обновлено: 01.05.2024

Мы рады Вам представить обновленный плагин "Конструктор роботов TradeScript" версии 5.7.

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

В новой версии добавились:

  • автоматическая нумерация строк;
  • автодополнение (при написании названия функции в выпадающем списке появляются все возможные варианты);
  • автозакрытие скобок;
  • синтаксическая раскраска (функции, аргументы, логические операторы и ключевые слова в коде выделены разными цветами);
  • всплывающие подсказки - контекстный хелп

Дополнительные изменения:

  • Исправлена важная ошибка ведения шорт-позиции.
  • Исправлена ошибка обработки вкладок Exit Buy и Exit Sell. Все четыре вкладки (Buy, Sell, Exit Buy, Exit Sell) теперь работают.
  • Поправлена логика обработка сигналов с вкладок. Теперь обрабатываются и могут быть посланы в очередь на исполнение до 3х сигналов (заявок) одновременно:
    1. обрабатывается одна из закладок - Exit Buy или Exit Sell, в зависимости от позиций
    2. обрабатывается закладка - BUY (покупка)
    3. обрабатывается закладка - SELL (продажа).

После отправки заявок, скрипт переходит в режим ожидания исполнения каждой из них и на это время прекращает обработку сигналов.

В связи с большими изменениями и исправлениями в новой версии TradeScript, возможна некорректная работа стратегий, написанных под старую версию. В связи с этим, принято решение разместить на форуме Компании инструкцию по «откату» и ссылку на архив со старой версией. Данная информация будет лежать в ветке форума «Конструктор роботов TradeScript».

Для идентификации версии достаточно посмотреть на индекс сборки плагина в заголовке самого плагина. В новой версии этот индекс будет начинаться на 5.7.xxxx.xxxxx, старый на 5.4.xxxx.xxxxx.

Конструктор торговых роботов в терминале SMARTx предназначен для разработки, отладки и использования механических торговых систем (МТС), то есть, систем проводящих самостоятельно анализ рыночных данных, формирующих торговые сигналы и производящих автоматическую торговлю. В качестве встроенного языка программирования используется TradeScript™ - векторный язык, который был создан компанией Modulus Financial Engineering (США) специально для конструирования и эксплуатации торговых роботов.

Руководство пользователя TradeScript загрузить (1,7 Mb)

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

Установка и запуск плагина

  • В торговом терминале SMARTx зайдите в меню «Расширения» — «Установить расширения»;
  • В списке плагинов выберите «Конструктор торговых роботов TradeScript™» и нажмите «Установить»;
  • После установки плагина, он будет доступен в меню «Расширения».

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

Пошаговая инструкция создания собственного робота

Шаг 2. О пределяем параметры торговой стратегии

  • Название Стратегии, под которым она будет видна в менеджере стратегий.
  • Инструмент, рыночная информация по которому будет использоваться для анализа формирования сигналов.
  • Тайм-фрейм. Определяет период времени, по которому производится проверка на возникновение очередного торгового сигнала. Доступны все временные периоды (Tick, 1 минута, 5 минут и т.д.), поддерживаемые терминалом SMARTx.
  • Количество баров. Количество баров определяет минимально необходимое количество исторических периодов, которые потребуются вашей стратегии для того, чтобы она корректно работала. Например, если вы используете в стратегии простую скользящую среднюю построенную по 120 периодам, вам понадобится задать в этом поле число 120.

В результате, мы будем иметь следующее (см. рисунок слева).

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

Шаг 3. П ишем скрипт сигнала на покупку

В руководстве пользователя TradeScript приведено множество примеров программирования простейших торговых сигналов.
Например, простейшая торговая система – это система построенная на основе сигналов, генерируемых по пересечению разнопериодных скользящих средних. Соответствующий скрипт на покупку может быть записан так:
SET A = EMA(close,15)
SET B = EMA(close,21)
CROSSOVER(A,B)=TRUE
Первые две строчки определяют переменные A и B как экспоненциально-скользящие средние EMA, построенные на основе цен закрытия последних 15 ( A ) и 21 ( B ) интервалов.
Последняя строчка, используя внутреннюю функцию CROSSOVER(A,B), определяет когда одна функция A пересечет другую B снизу вверх. Как только это произойдет – возникнет сигнал на покупку. Разумеется, TradeScript™, поддерживает значительно более сложные настройки робота.

Шаг 4. П ишем скрипт сигнала на продажу

Шаг 5. О писываем параметры торговли по сигналам

  • Инструмент, по которому будет происходить автоматическая торговля. В приведенном примере – акции ОАО «Сбербанк»
  • Портфель, по которому будет проходить торговля. В приведенном примере портфель BP0681-MS-01. Вы можете задать любой торгуемый на рынке инструмент, не обязательно именно тот, по которому формируется сигнал.
  • Объем заявки в лотах (контрактах). В приведенном примере – 5 лотов.
  • Проскальзывание в пунктах, кратных минимальному шагу цены. Робот прибавит к цене последней сделки на которой получен сигнал эту величину и по получившейся цене отправит заявку на рынок.
  • Время жизни заявки в секундах – это то время, через которое выставленная заявка будет автоматически снята (если, конечно, она до этого момента не исполнится). В приведенном примере – 180 секунд (т.е. 3 минуты).
  • Порог ухода цены в пунктах, кратных минимальному шагу цены. Заявка будет снята, если цена успеет уйти от нее за величину этого порога.

Шаг 6а. П редварительное тестирование торгового робота

После того как все нужные поля вкладок Стратегия и Торговля заполнены, можно запустить торгового робота. Однако, правильным будет проверить вашего робота на реальных данных "в сухую", т.е. до того как вы его запустите торговать по своему счету.

Для этого мы возвращаемся на вкладку Стратегия.
Нажимаем кнопку «Запустить» и открываем закладку «Сигналы». Эта закладка предназначена для отображения формируемых роботом торговых сигналов, так как показано на рисунке.

Важно: в процессе торговли и в режиме отладки параметры стратегий не доступны для редактирования. Чтобы отредактировать стратегию, ее нужно сначала остановить.

Шаг 6b. Тестирование торгового робота на исторических данных (back-testing)

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

Для бэк-тестинга следует открыть последнюю вкладку, кот орая так и называетс "Бэк-тестинг". В правом верхнем окне вы увидите основные параметры настройки стратегии, которая будет тестироваться. Это: сигнальный и торговый инструменты, тайм-фрейм, количество лотов в заявке, используемое проскальзывание, максимальный объем позиции и ее стартовое значение.

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

Последнее, что можно (но не обязательно) задать, - это начальный капитал и учет или не учет комиссий.

Комиссии могут задаваться в виде фиксированных в привязке к количеству проторгованных контрактов, или в виде оборотных - в %% от объема сделки.

Важно иметь ввиду, что расчет бэк-теста производится не всегда в рублях, а иногда в ценах, привязанных к котировкам. Например для акций и для срочных контрактов у которых стоимость шага цены = 1 рублю расчеты будут в рублях. А для срочных контрактов у которых цены привязаны к рублю сложным образом (контракты с валютной стоимостью) все расчеты будут произведены в пунктах. Это обстоятельство следует иметь ввиду, назначая стартовую сумму и задавая размер комиссионных - они тоже должны быть выражены в пунктах.

Шаг 7. З апуск торгового робота.

После того как все нужные поля вкладок «Стратегия» и «Торговля» заполнены, а торговый робот отлажен, можно запустить его для торговли на реальном рынке.
Для этого нужно поставить галочку в поле «Включить автоматическое выставление заявок», расположенную на вкладке Торговля. И нажать кнопку «Запустить». Все, ваш робот работает!

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

Ограничение ответственности

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

АО «ИК «Ай Ти Инвест» использует файлы cookie с целью обеспечения функционирования и персонализации сервисов, а также повышения удобства пользования сайтом. Продолжая пользоваться сайтом, вы соглашаетесь на обработку файлов cookie и пользовательских данных

image

Тема создания механических торговых систем или попросту биржевых роботов вызывает на Хабре определенный интерес. Мы частенько освещаем теоретические аспекты алгоритмической торговли, но не так часто говорим о ее практической составляющей. Поэтому в сегодняшнем топике будут рассматриваться реальные примеры различных роботов, созданных с помощью скриптового языка TradeScript.

Введение

Для начала обратим внимание на инструменты, которые будут описываться в этом тексте. Итак, TradeSript – это векторный язык программирования, созданный американской компанией Modulus Financial Engineering специально для создания торговых роботов. Этот язык входит в пакет технологий, которые были лицензированы (OEM) нашей компанией для создания торговго терминала SmartX (подробнее о его создании можно почитать в этом топике).

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

Движок языка работает на стороне терминала и подключается в качестве плагина-расширения к SmartX. Помимо возможности собственно написания скриптов присутствует и возможность их тестирования в двух режимах: на реальных данных и на исторических.

image

В TradeScript существует много встроенных функций (примитивов), облегчающих написание скриптов. Например, вот так выглядит примитив TREND:

TREND(CLOSE, 30) = UP

Эта функция вернет значение Истина, если имеет место восходящий тренд – рассчитывается за последние 30 дней по ценам закрытия торговых сессий.

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

Например, чтобы рассчитать простую скользящую среднюю «срединной» цены акций за
последние 30 периодов при помощи обычного языка программирования типа BASIC, нуж-
но написать что-то типа:

SET MedianAverage = SimpleMovingAverage((CLOSE + OPEN) / 2, 30)

В общем, если МТС может быть выражена математическими формулами или может быть запрограммирована в каком-либо процедурном языке программирования, например, C++, VB или Java, Вы можете быть уверены, что эта МТСтакже может быть запрограммирована при помощи TradeScript.

А теперь перейдем непосредственно к написанию роботов.

Поехали

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

В общем случае робот или механическая торговая система (МТС) – это набор правил, которые определяют точки входа и выхода в позицию для конкретной ценной бумаги или финансового инструмента (фьючерса и т.п.). Обычно МТС включают один или несколько индикаторов, например, система основанная на пересечении скользящих средних (Moving Average Crossover) будет покупать если короткая скользящая средняя пересекает снизу-вверх длинную скользящую среднюю, и продавать, если пересечение идет в обратном направлении.

image

Скользящие средние бывают разной длины и типа (про индикаторы технического анализа мы сделаем отдельный пост), от которых зависит число генерируемых торговой системой сигналов. Более короткие скользящие средние (MA – Moveing Average) генерируют больше сигналов, поскольку пересекаются чаще. Соответственно, и число «ложных» сигналов в их случае гораздо выше, поэтому необходимо искать баланс между ложными сигналами и упущенной прибылью.

Одним из решений этой проблемы может быть использование какого-то второго индикатора для фильтрации сигналов входа/выхода. Для выхода, в частности, часто используют параболическую систему (Parabolic SAR). В скрипте ниже для входа используется 20/60 EMA, а для выхода – параболическая система.


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

image

В такие моменты часто на открытии рынка подается много приказов на покупку, в результате чего акция может быть переоценена. За этим часто следует корректировка цены вниз – описанная ниже торговая система учитывает тот факт, что момент разворота обычно возникает в течение первого часа торгов. То есть, если разрыв не будет “закрыт” в течение первого часа, то можно предполагать, что покупка, с большей вероятностью, продолжится.

Наш скрипт возвращает акции, которые имели гэп не менее 2% и закрылись близко к
максимуму. Стратегией на следующий день может быть покупка после первого часа тор-
гов, если акция остается сильной. Стоп-лосс следует установить на минимуме дня. Консервативной целью прибыли может быть ½ гэпа — 1% в нашем случае.


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

image

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

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

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


Следующий скрипт называется MACD Momentum System, и в нем для идентификации рыночной цены используется EMA и функция TREND, а индикатор MACD –для определения рыночного момента.

image

Индикатор MACD отражает изменение соотношения сил «быков» (трейдеров, играющих на повышение) и «медвеей» (соответственно, играют на понижение).

Если тренд индикатора MACD направлен вверх, это говорит, что на рынке преобладают быки, если тренд направлен вниз, это свидетельствует о преобладании медведей. Это известно как рыночный момент.

Эта система покупает, если и инерция (тренд EMA) и момент (MACD) идут в направлении
повышающихся цен. Система продает, если имеет место противоположная ситуация. Сигнал на выход возникает, если тренд инерции и момента меняется на противополож-
ный.


На сегодня все. Примеры других возможных МТС на TradeScript, а также более подробное описание самого языка, можно найти в специальном руководстве. Спасибо за внимание, будем рады ответить на вопросы в комментариях.

P. S. Протестировать работу описанных торговых систем вы можете, скачав терминал SmartX здесь, а затем подключившись к нашему тестовому контуру – безрисковой торговой системе с виртуальными деньгами. В рамках Тестовой Лиги Трейдеров можно сравнить свои результаты в виртуальной торговли с достижениями других инвесторов.

P. P. S. С целью популяризации алгоритмической торговли «Ай Ти Инвест» совместно с «МФД-Инфоцентр» и Московской Биржей проводит конкурс «Алгоритмус-2014», в ходе которого управляющие активами будут соревноваться друг с другом. Следить за ходом конкурса можно здесь, подробные правила расположены тут.

image

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

Однако даже тем торговцам, которые работают исключительно руками в терминале, иногда хочется автоматизировать некоторые процессы и запрограммировать торговые стратегии. Одним из способов подобной автоматизации является написание торговых роботов на скриптовом языке TradeScript, который встроен в терминал для торговли на бирже SmatX (процесс его создания описан в отдельном топике).

Что такое торговый робот

Торговым роботом или механической торговой системой обычно называют программу, которая «умеет» проводить анализ рыночных условий и, в соответствии с определенной торговой стратегией, совершает операции покупки или продажи ценных бумаг и производных инструментов (фьючерсов или опционов).

Часто для написания роботов используют языки программирования вроде C/C++ (иногда Java), Python, Matlab и R. К языкам скриптового типа, которые позволяют описывать довольно сложные стратегии, относится векторный язык TradeScript, созданный американцами из Modulus Financial Engineering. Эта технология была лицензирована нами (OEM) для создания терминала SmartX.

Скрипты на TradeScript

«Движок» языка TradeScript работает на стороне терминала — подключается в качестве плагина-расширения (такие дополнения хорошо расширяют функциональность программы).

Синтаксис языка довольно прост, но тем не менее, позволяет описывать торговые стратегии практически любой сложности. В TradeScript есть встроенные функции (примитивы), облегчающие написание скриптов. Пример такого примитива, функция TREND:

TREND(CLOSE, 30) = UP
Эта функция вернет значение «Истина», если имеет место восходящий тренд – его наличие рассчитывается за последние 30 дней по ценам закрытия торговых сессий.

Пример простого скрипта для расчета скользящей средней «срединной» цены акций за последние 30 периодов на TradeScript выглядит так:

SET MedianAverage = SimpleMovingAverage((CLOSE + OPEN) / 2, 30)
Помимо возможности написания скриптов, их производительность можно тестировать на реальных и исторических данных с помощью функции бэк-тестинга.

image

Для более простого освоения языка TradeScript была создана бесплатная библиотека готовых торговых роботов, которых можно модифицировать.

Примеры торговых стратегий

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

Система Parabolic SAR/MA System

Эта торговая система является вариантом стандартной системы пересечения скользящих средних.

image

Обычно параболическая система используется лишь для получения сигналов выхода из позиции (продажи акций или «откупа» при открытии короткой позиции).

Конкретно в этой МТС, однако, пересечение двух EMA (экспоненциальные скользящие средние) используется для принятия решения, нужно ли покупать (продавать) всякий раз, когда индикатор Parabolic SAR пересекает снизу
вверх цену закрытия.

После открытия позиции Parabolic SAR можно использовать в обычном контексте. Прибыль должна фиксироваться, когда цена закрытия пересекает Parabolic SAR.


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

Система Outside Day System

Внешний день (Outside Day) возникает, когда максимум текущего бара выше максимума предыдущего бара, а минимум текущего бара ниже минимума предыдущего бара. Цена закрытия должна быть противоположна текущему тренду (если тренд восходящий, то Close должен быть меньше, чем Open). Внешние дни возникают довольно часто и могут использоваться как часть краткосрочной торговой стратегии.

image

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

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


Система «бычьего» и «медвежьего» поглощения (Japanese Candlestick Engulfing Line System)

Эффективной краткосрочной стратегией торговли часто является использование фигур технического анализа, вроде «бычьего» или «медвежьего поглощения» — в случае резкого роста объёма торгов, они сигнализируют о развороте тренда. Фигура поглощения состоит из короткой свечи, за которой следует свеча с более длинным телом, которое «поглощает» предыдущую короткую свечу.

image

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

Код для подобной системы на TradeScript может выглядеть следующим образом:


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

Код представленных стратегий на TradeScript легко модифицировать и дополнять прямо в терминале.

Примечание: для того, чтобы загрузить выбранный скрипт в SmartX, необходимо скачать библиотеку на компьютер, установить терминал, а затем в меню «Расширения» выбрать Менеджер TradeScript и нажать «Загрузить».

Заключение

Полное описание языка TradeScript и описание построения довольно сложных торговых роботов на нем можно найти в специальном руководстве. Протестировать работу терминала и собственных роботов можно с помощью тестового контура — безрисковой торговой системы с виртуальными деньгами (открыть такой счет можно здесь).

Кроме того, при написании роботов следует учитывать в стратегии размер комиссии за совершение транзакций со стороны биржи и брокера — обычно биржа берет за скальперские сделки (которые открываются и закрываются в течение одного торгового дня) около 0,25 рублей за каждую, а комиссии брокера примерно соответствуют биржевым (у ITinvest на некоторых тарифах они равняются биржевым).

На сегодня все. Будем рады ответить на вопросы в комментариях. Спасибо за внимание!


В блоге на Хабре мы много пишем о биржевых технологиях и торговых роботах. В сегодняшнем материале вопрос создания таких систем будет рассмотрен подробнее — на примере встроенного в торговый терминал SmartX скриптового языка программирования TradeScript.

Что за TradeScript

TradeSript – векторный язык программирования, разработанной американской компанией Modulus Financial Engineering специально для создания торговых роботов. Данный инструмент входит в пакет технологий, которые были лицензированы (OEM) нашей компанией для создания торгового терминала SmartX (подробнее о его создании мы рассказывали здесь).

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

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


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

Начинаем писать роботов: примитивы и векторы

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


Он вернет значение Истина, если имеет место восходящий тренд – он рассчитывается за последние 30 дней по ценам закрытия торговых сессий.

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

Например, чтобы рассчитать простую скользящую среднюю «срединной» цены акций за
последние 30 периодов при помощи обычного языка программирования типа BASIC, нуж-
но написать что-то типа:


Для описания крайне простого действия, нужно «потратить» 9-10 строк кода. С помощью векторного языка можно то же полезное действие можно уложить в одну строку:


Таким образом, на TradeScript можно описывать все те же стратегии, что и на процедурных языках вроде C++, VB или Java.

Примеры реальных стратегий

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

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

Пересечение скользящих средних

Один из самых популярных индикаторов — скользящие средние. При его использовании в качестве сигналов для совершения операций используют факты пересечения линиями друг друга.

image

Ниже — пример кода системы, основанной на пересечении скользящих средних (Moving Average Crossover). Такой робот будет покупать если короткая скользящая средняя пересекает снизу-вверх длинную скользящую среднюю, и продавать, если пересечение идет в обратном направлении.

Система Parabolic SAR/MA System

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

image

В нашем примере робот принимает такие решения на основе пересечения скользящих средних и пересечения индикатором Parabolic SAR снизу вверх цены закрытия.

Ценовой разрыв

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

image

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

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

«Бычье» и «медвежье» поглощение (Japanese Candlestick Engulfing Line System)

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

image

Вот каким может быть скрипт, использующий этот принцип:

Заключение

На нашем старом сайте опубликована библиотека, включающая 22 простых торговых робота на TradeScript — на их основе можно создавать более сложные торговые стратегии. В завершение — еще несколько полезных ссылок по теме создания торговых роботов.

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