Pull to refresh
0
ITI Capital
Лучший онлайн-брокер для работы на бирже

How-to: Создание торговых роботов на TradeScript vol. 2

Reading time5 min
Views16K
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.

Buy Signals
# Покупаем, если скользящие средние пересеклись сегодня или вчера и
# если PSAR пересеклись сегодня или вчера
(CROSSOVER(CLOSE, PSAR(0.02, 0.2)) OR
CROSSOVER(REF(CLOSE,1), PSAR(0.02, 0.2)))
AND
(CROSSOVER(EMA(CLOSE, 10), EMA(CLOSE, 20)) OR
CROSSOVER(REF(EMA(CLOSE, 10),1), REF(EMA(CLOSE, 20),1)))

Sell Signals
# Продаем, если скользящие средние пересеклись сегодня или вчера и
# если PSAR пересеклись сегодня или вчера
(CROSSOVER(PSAR(0.02, 0.2), CLOSE) OR
CROSSOVER(PSAR(0.02, 0.2), REF(CLOSE,1)))
AND
(CROSSOVER(EMA(CLOSE, 20), EMA(CLOSE, 10)) OR
CROSSOVER(REF(EMA(CLOSE, 20),1), REF(EMA(CLOSE, 10),1)))

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

Система Outside Day System

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

image

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

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

Buy Signals
# Находим outside days
LOW < REF(LOW, 1) AND
HIGH > REF(HIGH, 1) AND
HIGH > REF(HIGH, 1) AND
CLOSE < OPEN AND
# Outside days более значимы, если
# предыдущий бар короче текущего
HIGH - LOW > (REF(HIGH, 1) - REF(LOW, 1)) * 1.5 AND
# Тренд должен быть восходящим
TREND(CLOSE, 30) = UP

Sell Signals
# Находим outside days
LOW < REF(LOW, 1) AND
HIGH > REF(HIGH, 1) AND
HIGH > REF(HIGH, 1) AND
CLOSE < OPEN AND
HIGH - LOW > (REF(HIGH, 1) - REF(LOW, 1)) * 1.5 AND
# Тренд должен быть нисходящим
TREND(CLOSE, 30) = DOWN
<h5>

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

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

image

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

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

Signals
# Бычий паттерн
CANDLESTICKPATTERN() = BULLISH_ENGULFING_LINE AND TREND(CLOSE, 30) =
DOWN AND VOLUME > REF(VOLUME, 1)

# Медвежий паттерн
CANDLESTICKPATTERN() = BEARISH_ENGULFING_LINE AND TREND(CLOSE, 30) = UP
AND VOLUME > REF(VOLUME, 1)

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

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

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

Заключение


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

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

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

Посты и ссылки по теме:

Tags:
Hubs:
+10
Comments6

Articles

Information

Website
iticapital.ru
Registered
Employees
51–100 employees
Location
Россия