Торговые роботы для биржевой торговли как создать

Как создать торгового робота своими руками? Robot-Scalper

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

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

Затем нужно четко формализовать эту стратегию: описать строгими условиями все входы и выходы из позиции.

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

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

Изучаем как устроена структура данных (таблиц) на сервере Мосбиржи, чтобы знать откуда что брать.

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

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

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

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

Тестируем. Анализируем сделки. Проверяем насколько корректно отрабатывает робот.

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

Если торговый терминал позволяет, то можно провести бэк-тестирование (тестирование на исторических данных). Либо даже форвардное тестирование. Об этом подробно написано здесь https://smart-lab.ru/blog/503560.php

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

Какие гарантии того что робот будет стабильно зарабатывать деньги?
– Никаких! Когда разрабатываешь робота, то не знаешь заранее будет ли данная стратегия прибыльная или нет. Только время покажет. Это как в любом другом бизнесе. Например, вы купили помидоры и стали их продавать. Какие гарантии? – Никаких! Если вы плохой бизнесмен, то ничего не продадите и помидоры просто протухнут. А если хороший бизнесмен, то будете в прибыли.
Так же и в трейдинге. Нельзя ставить сильно высокую цену на продажу, так как никто у вас не купит. И нельзя ставить сильно низкую цену на покупку, так как никто по такой цене вам не продаст.
Слишком близкие цены покупки и продажи тоже не будут вам выгодны, так как комиссия будет съедать большую часть прибыли. Во всём нужна золотая середина! Это понимание приходит с опытом.

По поводу прибыльных стратегий. Как сразу найти прибыльную? – Никак. Нужно запрограммировать и протестировать десятки стратегий. Нужно анализировать сделки. Потом придет понимание того что работает на рынке, а что нет. Непроизвольно вы начнете делить стратегии на группы с общими признаками. После этого любую новую стратегию, еще до тестов, вы сразу будете относить к той или иной группе. И будете понимать примерные возможности по риску и доходности.
Это то, что касается разработки торговых стратегий и роботов.

Еще люди спрашивают, сложно ли развивать ваш проект «Робот Скальпер» и осуществлять техподдержку?
— Да. Сложно. Приходится отвечать более чем на 100 вопросов каждый день. Вопросы абсолютно разные. Не только по роботам. Это и базовые: как начать торговать, как открыть счет, сколько денег нужно и т.п., и нестандартные: вопросы по тарифам брокеров, по функционалу терминала QUIK, по данным от Мосбиржи и т.п.
Так как торговый робот для пользователя является конечным или финальным продуктом и если происходит сбой у брокера или в терминале QUIK или на бирже, то с точки зрения пользователя проблема всегда заключается в роботе! Это ведь он теперь работает не так как надо! И никого не волнует висит ли сервер брокера или поставляет ли Мосбиржа кривые котировки (нулевые цены и нулевую тек.позицию, при том что актив есть на балансе), отрубился ли интернет, заглючил или перезагрузился компьютер. Эти и другие проблемы приходится нам решать. Чтобы оказывать качественный сервис нужно знать гораздо больше, чем только алгоритм торговой стратегии.

Читайте также:  Что нужно знать для того чтобы открыть свой бизнес с нуля

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

Так, постепенно, решая одну задачу за другой и набирается опыт, который позволяет чувствовать себя уверенно в алготрейдинге.

Спасибо всем, кто дочитал до конца!
Если вам интересны статьи о том как разрабатываются роботы, поддержите нас лайком. Мы будем знать нужно ли тратить время на подобные затеи или нет )) Может быть вам интереснее прочитать о более практических вещах? О конкретных стратегиях, их характеристиках в цифрах, рисках, доходностях? Напишите в комментариях. Мы обязательно вам ответим.

Желаем добра и успехов в трейдинге!

Остались вопросы по роботам?
Обращайтесь в личку или на почту mail@robot-scalper.ru

Откроем Вам бесплатно брокерские счета: демо и боевой! С версией терминала QUIK 7.27!

С уважением,
команда проекта «Робот Скальпер»

Источник

Как написать торгового робота

В последние несколько лет тема автоматизированных систем для торговли на бирже довольно популярна. Но без надежного наставника новичку это точно не по зубам. Как создать торгового робота, избежать ошибок и не потратить все деньги? Обо всем по порядку.

Существует несколько вариантов создания роботизированного софта для торговли на бирже:

#1 – создать робота для работы на прямом подключении

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

#2 – подключиться к брокерской торговой системе по API.

Некоторые брокеры позволяют подключать внешний торговый софт к своим торговым системам по специальным интерфейсам. У нас в ITI Capital это можно делать с помощью API SMARTcom. В этом случае роботы могут быть достаточно сложными.

#3 – автоматизировать операции напрямую в торговом терминале.

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

Третий вариант, как видите, самый простой. И сейчас поговорим о нем подробнее.

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

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

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

Самый простой способ создать несложного торгового робота сегодня – использовать терминал SMARTx.

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

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

Вот пример торговой стратегии, записанной на TradeScript:

# Покупаем, если момент и инерция имеют однонаправленный тренд

TREND(EMA(CLOSE, 20), 15) = UP AND

TREND(MACD(13, 26, 9, SIMPLE), 5) = UP

# Продаем, если момент и инерция имеют однонаправленный тренд

TREND(EMA(CLOSE, 20), 15) = DOWN AND

Читайте также:  Своя свиноферма бизнес план

TREND(MACD(13, 26, 9, SIMPLE), 5) = DOWN

Exit Long Signal

# Выходим, если тренд инерции и момента имеет противоположное направление

TREND(EMA(CLOSE, 20), 15) = DOWN OR

TREND(MACD(13, 26, 9, SIMPLE), 5) = DOWN

Exit Short Signal

# Выходим, если тренд инерции и момента имеет противоположное направление

TREND(EMA(CLOSE, 20), 15) = UP OR

TREND(MACD(13, 26, 9, SIMPLE), 5) = UP

В пакете с TradeScript поставляется и модуль бэктестинга.

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

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

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

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

Источник

How-to: Пишем торговых роботов на TradeScript

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

Введение

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

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

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

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

TREND(CLOSE, 30) = UP

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

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

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

То есть, для описания простейшего действия, нужно “потратить” 9-10 строк кода. С помощью векторного языка можно управиться и с помощью конструкции вида:

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

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

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

Поехали

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

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

Читайте также:  Открыть общественную организацию закон

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Источник

Оцените статью