Чем заняться на каникулах: пишем роботов для торговли на бирже на скриптовом языке TradeScript |
||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2017-12-30 16:47 В блоге на Хабре мы много пишем о биржевых технологиях и торговых роботах. В сегодняшнем материале вопрос создания таких систем будет рассмотрен подробнее — на примере встроенного в торговый терминал SmartX скриптового языка программирования TradeScript.
Что за TradeScript TradeSript – векторный язык программирования, разработанной американской компанией Modulus Financial Engineering специально для создания торговых роботов. Данный инструмент входит в пакет технологий, которые были лицензированы (OEM) нашей компанией для создания торгового терминала SmartX (подробнее о его создании мы рассказывали здесь). Благодаря своей встроенности прямо в терминал, для создания роботов не нужно использовать коннекторы для передачи в него приказов, что необходимо в случае многих других сред разработки. Это позволяет добиваться значительно более высокой надежности и быстродействия. Начинаем писать роботов: примитивы и векторы Одно из важных понятий в языке TradeScript — примитивы, то есть встроенные функции, которые нужны для облегчения процесса создания скриптов. Пример примитива — функция TREND:
Он вернет значение Истина, если имеет место восходящий тренд – он рассчитывается за последние 30 дней по ценам закрытия торговых сессий. TradeScript – векторный язык. Каждая операция здесь применяется сразу ко всему набору значений (вектору или полю). Это позволяет мыслить и оперировать категориями агрегатов данных, без необходимости использовать циклы или индивидуальные скалярные операции. Например, чтобы рассчитать простую скользящую среднюю «срединной» цены акций за последние 30 периодов при помощи обычного языка программирования типа BASIC, нуж- но написать что-то типа:
Для описания крайне простого действия, нужно «потратить» 9-10 строк кода. С помощью векторного языка можно то же полезное действие можно уложить в одну строку:
Таким образом, на TradeScript можно описывать все те же стратегии, что и на процедурных языках вроде C++, VB или Java. Примеры реальных стратегий Для определения момента для открытия или закрытия позиций многие трейдеры используют технический анализ. Это метод, при котором торговцы ищут на графиках финансовых инструментов различные паттерны. Для этого используются так называемые технические индикаторы. Многие из существующих индикаторов (скользящие средние, осцилляторы, индексы, функции диапазонов и линейной регрессии и т.п.) встроены в TradeSript в виде примитивов, так что их можно использовать при программировании роботов. Такая программа может включать один или несколько индикаторов. Рассмотрим примеры кода торговых роботов на TradeScript, использующих индикаторы теханализа.Пересечение скользящих средних Один из самых популярных индикаторов — скользящие средние. При его использовании в качестве сигналов для совершения операций используют факты пересечения линиями друг друга.Ниже — пример кода системы, основанной на пересечении скользящих средних (Moving Average Crossover). Такой робот будет покупать если короткая скользящая средняя пересекает снизу-вверх длинную скользящую среднюю, и продавать, если пересечение идет в обратном направлении.
Система Parabolic SAR/MA System Существуют и более сложные вариации систем на основе скользящих средних — например, это индикатор Parabolic SAR. Обычно параболические системы используют для получения сигналов выхода из позиций, но можно использовать их и для принятия решений о входе в них (покупать или продавать в короткой позиции). В нашем примере робот принимает такие решения на основе пересечения скользящих средних и пересечения индикатором Parabolic SAR снизу вверх цены закрытия.
Ценовой разрыв На бирже нередки ситуации, в которой в начале нового торгового дня цена акции сразу оказывается выше максимума предыдущего дня. Такое может происходить в случае появления каких-то позитивных новостей, выхода важных отчетов, влияющих на бизнес и т.п. Когда трейдеры видят такой позитивный гэп, то многие из низ начинают подавать приказы на покупку — в результате возможна переоценка акции. После такого внезапного взлета есть вероятность отката цены на прежние значения в течение пары часов после старта торгов.В примере ниже, мы учитываем тот факт, что момент разворота обычно возникает в течение первого часа торгов. То есть, если разрыв не будет “закрыт” в течение первого часа, то можно предполагать, что покупка, с большей вероятностью, продолжится. Скрипт возвращает акции, которые имели гэп не менее 2% и закрылись близко к максимуму. Тут же можно описать и стратегию поведения на следующий торговый день. К примеру, если позиции акции остаются сильными после первого часа торгов, можно ее купить. Стоп-лосс (приказ на прдажу для фиксации прибыли) лучше установить на минимальной отметке за день — консервативный вариант подразумевает получение прибыли в половину гэпа, что в нашем примере составит 1%.
«Бычье» и «медвежье» поглощение (Japanese Candlestick Engulfing Line System) Еще один интересный элемент технического анализа — фигуры «бычьего» или «медвежьего» поглощения. Они могут свидетельствовать о развороте какого-либо рыночного тренда. Суть фигуры поглощения состоит в том, что возникает короткая японская свеча, за которой следует свеча с более длинным телом, «поглощающим» предыдущую короткую свечу. Бычье поглощение указывает на разворот нисходящего тренда — цена может вырасти, а медвежье, наоборот, на ее возможное снижение. Вот каким может быть скрипт, использующий этот принцип:
Заключение На нашем старом сайте опубликована библиотека, включающая 22 простых торговых робота на TradeScript — на их основе можно создавать более сложные торговые стратегии. В завершение — еще несколько полезных ссылок по теме создания торговых роботов.Источник: habrahabr.ru Комментарии: |
|