В последние несколько лет тема автоматизированных систем для торговли на бирже довольно популярна. Но без надежного наставника новичку это точно не по зубам. Как создать торгового робота, избежать ошибок и не потратить все деньги? Обо всем по порядку.
11 965 просмотров
Как создать робота
Существует несколько вариантов создания роботизированного софта для торговли на бирже:
#1 – создать робота для работы на прямом подключении
Это когда торговые заявки отправляют напрямую в «движок» торговой системы биржи, в обход брокера. Этот вариант используют уже опытные трейдеры, которые готовы платить в том числе и за такой способ подключения.
#2 – подключиться к брокерской торговой системе по API.
Некоторые брокеры позволяют подключать внешний торговый софт к своим торговым системам по специальным интерфейсам. У нас в ITI Capital это можно делать с помощью API SMARTcom. В этом случае роботы могут быть достаточно сложными.
#3 – автоматизировать операции напрямую в торговом терминале.
Программирование для трейдера: функции | Создание торгового робота с нуля
Наиболее простой и подходящий для новичков способ заключается в том, чтобы автоматизировать торговлю напрямую в базовой программе любого трейдера – терминале.
Третий вариант, как видите, самый простой. И сейчас поговорим о нем подробнее.
Как это работало раньше
Торговые терминалы предыдущих поколений можно было интегрировать с различными инструментами автоматизации. Одним из наиболее популярных, как ни странно, в свое время был Excel. С его помощью трейдеры могли настроить экспорт данных из торгового терминала, а также получать торговые приказы.
Меню для подключения Excel в одном из торговых терминалов прошлого поколения
Также распространенной практикой среди трейдеров было подключение к своим терминалам мощных систем технического анализа и разработки роботов вроде WealthLab и MetaStock. В таких случаях интеграция обычно осуществляется с помощью дополнительных библиотек.
Так трейдер получал возможность автоматизации, и в случае MetaStock и WealthLab получалась довольно сложная торговая система, которая не отличалась надежностью. С течением времени эта проблема была решена: в некоторых торговых терминалах появились встроенные языки программирования.
Как это работает теперь: изучаем язык TradeScript
Самый простой способ создать несложного торгового робота сегодня – использовать терминал SMARTx.
В нем есть специальный плагин с конструктором торговых роботов TradeScript. С помощью простого, но довольно мощного скриптового языка трейдеры могут создавать механические системы разного уровня сложности. Язык был изначально предназначен для разработки торговых роботов, он довольно прост в изучении, а многие алгоритмы схожи по написанию с MetaStock, что облегчает работу пользователям, знакомым с этим программным пакетом.
Главный плюс TradeScript – у вас нет необходимости создавать сложные конструкции и использовать различные коннекторы, чтобы передавать приказы в торговый терминал. Конструктор роботов встроен в SMARTx и позволяет добиваться значительно более высокой надежности и быстродействия.
Парсинг криптобиржи | Торговый бот | API криптобиржи
Вот пример торговой стратегии, записанной на TradeScript:
Buy Signals
# Покупаем, если момент и инерция имеют однонаправленный тренд
TREND(EMA(CLOSE, 20), 15) = UP AND
TREND(MACD(13, 26, 9, SIMPLE), 5) = UP
Sell Signals
# Продаем, если момент и инерция имеют однонаправленный тренд
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 поставляется и модуль бэктестинга.
Он позволяет оценить продуктивность работы описанной стратегии на исторических данных. Помимо прочего, в системе реализована функция тестирования торговой системы «на лету» с использованием текущих биржевых данных, но без вывода приказа на биржу. Время виртуальной сделки, цена и «доходность» отображаются в отдельном окне.
Кроме того, вы можете запускать столько алгоритмов одновременно, сколько позволят тактовая частота процессора и память компьютера. А это значит – создать сколько угодно сложных торговых стратегий.
Что еще: тестовый доступ, чтобы все проверить
Перед тем как запускать стратегию, мы рекомендуем «прогнать» ее в режиме тестового доступа. В этом случае вы не будете тратить реальных денег, избежите финансового риска, но протестируете все элементы стратегии. С помощью тестового доступа можно, например, узнать реакцию новой программы на сделки, которые вы уже провели. Для того чтобы наладить вашу стратегию окончательно, советуем анализировать ее с помощью исторических данных и использовать проверку «на лету».
Вполне может быть, что у вас остались вопросы о том, как создать и использовать торгового робота. Отлично, если так. Мы всегда рады общению. До встречи в комментариях.
Источник: vc.ru
Создание простого торгового робота для работы на Форекс
Ниже показан процесс создания простого торгового робота для работы в терминале MetaTrader 4. На этом простом примере вы сможете попытаться создать своих торговых роботов для частичной или полной автоматизации торговли на рынке Форекс. Для создания торгового робота мы будем использовать язык программирования MQL 4. На самом деле все не так страшно и сделать это сможет даже ребенок, конечно, придется приложить некоторые усилия для изучения основ языка программирования, но результат в итоге стоит затраченных усилий.
- Шаблон создаваемого торгового робота
- Алгоритм действий торгового робота
- Описание переменных создаваемого торгового робота
- Заключение
Шаблон создаваемого торгового робота
Шаблон, это то с чего начинается создание любого торгового робота или советника. Шаблоны могут несколько отличаться друг от друга, но я предлагаю вам простой работающий вариант:
#property copyright «»
#property link «»
//В этом месте программного кода описываются все переменные, используемые в программе
int start() // Спец . функция start
// В этом месте прописывается алгоритм действий торгового робота (с использованием //специальных команд языка MQL 4)
return; // Выход из start()
Алгоритм действий торгового робота
В алгоритм действий создаваемого торгового робота мы закладываем свою торговую систему. Торговые роботы могут иметь сложные разветвленные алгоритмы действий, учитывающие множество факторов и путей развития событий на рынке Форекс. В данном случае мы ограничимся простым алгоритмом, основанным на покупке при цене выше скользящей средней и продаже при цене ниже скользящей средней.
Скользящая средняя это понятие технического анализа, выражающее некоторое усредненное значение цен, графически представленная в виде линии на графике. См. рис.:
Итак, мы хотим, чтобы создаваемый торговый робот осуществлял покупку при цене выше скользящей средней. Для этого напишем следующий программный код:
if( Bid>iMA (Symbol(), Period(),PMA, 0,MODE_SMA , PRICE_CLOSE, 0) )
Давайте подробно разберём этот код. Сначала идет проверка условия, что цена находится выше скользящей средней:
if( Bid>iMA (Symbol(), Period(),PMA, 0,MODE_SMA , PRICE_CLOSE, 0) )
Bid – цена спроса*;
iMA ()– оператор вычисляющий значение скользящей средней (в данном случае используется простая скользящая средняя с периодом задаваемым в настройках торгового робота);
If (условие) – if в переводе с английского означает «если». Другими словами если условие, написанное в скобках, выполняется то, выполняется и действие, указанное в фигурных скобках после:
OrderSend ( Symbol (), OP _ BUY ,0.1, Ask ,3, Bid — sl *Point, Bid + tp * Point )— это приказ на покупку 0,1 лота с установкой ордеров стоп-лосс ( sl ) и тейк-профит ( tp ) задаваемых в настройках торгового робота.
Для того, чтобы создаваемый торговый робот осуществлял продажу при цене ниже скользящей средней напишем следующий программный код:
Конструкция аналогична предыдущей, отличающаяся только тем, что в условии if () цена меньше скользящей средней, а в фигурных скобках стоит приказ на продажу того же 0,1 лота, с теми же ордерами стоп-лосс и тейк-профит.
Таким образом на данный момент мы имеем следующий алгоритм действий:
if( Bid>iMA (Symbol(), Period(),PMA, 0,MODE_SMA , PRICE_CLOSE, 0) )
Это означает, что при каждом изменении цены программа будет проверять оба этих условия и совершать покупку или продажу в зависимости от того какое из условий истинно в данный момент времени.
И если мы не ограничим программу дополнительным условием, то она сразу же наоткрывает кучу позиций, исчерпав весь депозит.
Давайте поставим ему дополнительное условие, открывать позицию только в том случае когда открытых позиций нет: if( OrdersTotal()=0), здесь OrdersTotal() – функция возвращающая значение открытых и отложенных ордеров.
Более того, давайте сделаем так, чтобы торговый робот сначала проверял наличие открытых позиций, а потом, в случае если открытых позиций нет, производил дальнейшие действия по алгоритму:
if( OrdersTotal()=0)
if( Bid>iMA (Symbol(), Period(),PMA, 0,MODE_SMA , PRICE_CLOSE, 0) )
Как видите, мы весь алгоритм с проверкой условий поместили в фигурные скобки под условием if( OrdersTotal()=0) и если это условие не будет выполнено, торговый робот просто будет ждать следующего тика (изменения цены).
На этом простейший алгоритм торгового робота закончен, но работать такая программа не будет до тех пор, пока мы не опишем все переменные входящие в алгоритм.
Описание переменных создаваемого торгового робота
В нашем примере мы использовали следующие переменные:
PMA – переменная содержащая значение периода используемой скользящей средней;
Sl – переменная содержащая значение ордера стоп-лосс;
Tp – переменная содержащая значение ордера тейк-профит;
Все три значения не могут быть дробными и потому относятся к типу int (целых чисел).
А для того, чтобы мы могли менять значения переменных в настройках торгового робота, добавим к их типу значение extern .
Таким образом, получаем следующее описание переменных:
PMA=13,sl=50,tp=100;
Как видите, переменным присвоены начальные значения, но в дальнейшем их можно будет изменять в настройках программы.
В итоге полный текст программного кода будет выглядеть следующим образом:
#property copyright «»
#property link «»
PMA=13,sl=50,tp=100;
int start() // Спец . функция start
if( OrdersTotal()==0)
if( Bid>iMA (Symbol(), Period(),PMA, 0,MODE_SMA , PRICE_CLOSE, 0) )
return; // Выход из start()
Заключение
Этот пример создания торгового робота приведен исключительно в учебных целях. Использовать этот робот в реальной торговле конечно не надо. Но вы можете установить его на демо-счете, или протестировать его в тестере стратегий.
Для того, чтобы на этой базе создать рабочий вариант способный зарабатывать деньги необходимо как минимум добавить к нему блоки отсеивания ложных сигналов и обработки ошибок, а как максимум усилить блок принятия решений дополнительными сигналами и внедрить систему управления капиталом.
Источник: www.azbukatreydera.ru
Как написать торгового робота: инструменты для начинающих
Тема автоматизированных систем для торговли на бирже довольно популярна в рунете в последние несколько лет. Однако начинающим инвесторам создать своего торгового робота может быть нелегко. Сегодня мы расскажем о том, как это можно сделать без лишних затрат.
Примечание: любая инвестиционная деятельность на бирже связана с определенным риском, это нужно учитывать. Кроме того, для запуска своего торгового робота вам понадобится брокерский счет, открыть его можно онлайн. Вы можете отладить свою стратегию с помощью тестового доступа с виртуальными деньгами.
Варианты создания роботов
Существует несколько вариантов создания роботизированного софта для торговли на бирже:
- Создание роботов для работы на прямом подключении – такие системы работают «в обход» торговой системы брокера, отправляя заявки напрямую в «движок» торговой системы биржи. Этот вариант используют уже опытные трейдеры, которые готовы платить в том числе и за такой способ подключения.
- Подключение к брокерской торговой системе по API. Некоторые брокеры позволяют подключать внешний торговый софт к своим торговым системам по специальным интерфейсам. Клиенты ITI Capital могут делать это с помощью API SMARTcom. В этом случае роботы могут быть достаточно сложными.
- Автоматизация операций напрямую в торговом терминале. Наиболее простой, подходящий для новичков способ, заключается в том, чтобы автоматизировать торговлю напрямую в базовой программе любого трейдера – терминале.
Как это работало раньше
Торговые терминалы предыдущих поколений можно было интегрировать с различными инструментами автоматизации. Одним из наиболее популярных, как ни странно, в свое время был Excel. С его помощью трейдеры могли настроить экспорт данных из торгового терминала, а также получать торговые приказы.
Меню для подключения Excel в одном из торговых терминалов прошлого поколения
Также распространенной практикой среди трейдеров было подключение к своим терминалам мощных систем технического анализа и разработки роботов вроде WealthLab и MetaStock. В таких случаях интеграция обычно осуществляется с помощью дополнительных библиотек.
В перечисленных случаях трейдер получал возможность автоматизации, и, в случае MetaStock и WealthLab, создания довольно сложных торговых систем, но связки с внешними программами часто оказывались ненадежными. С течением времени эта проблема была решена – в некоторых торговых терминалах появились встроенные языки программирования.
Как это работает теперь: изучаем язык TradeScript
В наши дни на российском рынке самый простой способ создать несложного торгового робота, работающего с системой брокера, это использование терминала SMARTx.
В нем есть специальный плагин с конструктором торговых роботов TradeScript. С помощью простого, но довольно мощного скриптового языка трейдеры могут создавать механические системы различного уровня сложности. Язык был изначально создан для разработки торговых роботов, он довольно прост в изучении, а многие алгоритмы схожи по написанию с Metastock, что облегчает работу пользователям, знакомым с этим программным пакетом.
Плюсом TradeScript по сравнению с Wealth-Lab и тем же Metastock является отсутствие необходимости создания сложных конструкций и использования различных коннекторов для передачи приказов в торговый терминал. Конструктор роботов встроен в SMARTx, что позволяет добиваться значительно более высокой надежности и быстродействия.
Вот пример торговой стратегии, записанной на TradeScript:
Buy Signals # Покупаем, если момент и инерция имеют однонаправленный тренд TREND(EMA(CLOSE, 20), 15) = UP AND TREND(MACD(13, 26, 9, SIMPLE), 5) = UP Sell Signals # Продаем, если момент и инерция имеют однонаправленный тренд 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 поставляет и модуль бэктестинга, который позволяет оценить продуктивность работы описанной стратегии на исторических данных. Помимо прочего, в системе реализована функция тестирования торговой системы «на лету» с использованием текущих биржевых данных, но без вывода приказа на биржу — время виртуальной сделки, цена и получившаяся «доходность» будут показываться в отдельном окне.
Кроме того пользователь может запускать столько одновременно работающих алгоритмов, сколько позволит тактовая частота процессора и память компьютера. Учитывая большое число слов и операндов скриптового языка, это означает возможность создания сколько угодно сложных торговых стратегий.
Что еще: отладка на тестовом доступе
Использование встроенной в торговый терминал функциональности по разработке торговых роботов – удобный и надежный способ автоматизации торговли. Однако несмотря на существующие функции для тестирования стратегий, не стоит пренебрегать и дополнительными возможностями отладки.
Поэтому мы рекомендуем перед запуском стратегии для торговли реальными деньгами «прогнать» ее на тестовом доступе. Этот шаг позволит отладить все моменты, включая реакцию программы на осуществленные сделки, без риска реальных финансовых потерь. Применение анализа с помощью исторических данных, проверки «на лету» и использование тестового доступа позволит максимально полно отладить вашу стратегию.
Полезные ссылки по теме инвестиций и биржевой торговли:
- Открыть брокерский счет онлайн
- Тестовый счет с виртуальными деньгами
- Софт для торговли на бирже: торговый терминал, мобильные приложения
- Структурные продукты
- Модельные портфели
Источник: habr.com