Головной мозг трейдера функционирует не совсем обычным образом. Человек, далекий от финансовых рынков, действует рационально и предсказуемо. Когда же в дело вступает индивид, мыслящий исключительно свечными комбинациями, последствия предсказать гораздо сложнее. Как частное, сбитые жизненные приоритеты и повышенная импульсивность – известные пороки трейдеров. Сам процесс торговли становиться самоцелью, и биологический компьютер в недрах черепной коробки входит в бесконечный цикл, зависая на абстрактной идее идиллического существования и собственной яхты, пришвартованной у пирса набережной особняка.
Начнем с того, что сама по себе идея автоматизации собственной торговой стратегии не обеспечивает ни беспечного существования, ни избавления от насущных проблем трейдера. Если вы не имеете представления о том, как функционирует рынок, инвестирование времени и денег в создание робота не наполнит ваш банковский счет золотыми галлеонами, а скорее, вернет в жестокую реальность типичного среднего класса.
Итак, время, потраченное впустую – это опыт. Время – это деньги. Грубо говоря, тратя свое время, вы покупаете опыт. Но вы, как разумный человек, наверняка захотите сохранить лишнюю копейку, не ошибаясь там, где можно обойти грабли, тем более, если существует такая возможность. На этом моменте мне придется попросить немного вашего времени, дабы рассказать, как на самом деле стоит подготовиться к вопросу создания машины для печатания денег торгового робота, и, конечно же, как не наделать кучу ошибок.
1. Разработку форекс робота начинаем с идеи
Разработка робота для торговли на рынках – это непрерывный поиск идей и, как частное, поиск Святого Грааля. Вопреки утверждениям непросвещенных граждан, Грааль находится достаточно просто – скажем «спасибо» технологическому прогрессу. Попробуйте вбить в гугл «Святой Грааль Форекс» – скорее всего, советник вашей мечты находится на первой странице выдачи, к тому же абсолютно бесплатен.
Собственно, на этом рассказ можно было бы закончить. Если идеальный советник уже существует, зачем продолжать поиски? Но следом возникает второй вопрос: почему, если идеальный советник уже найден, в Африке до сих пор существует дефицит питьевой воды? Если ответ для вас очевиден, поздравляю, вы прошли первый этап становления трейдера разумного, преодолев уровень новичка или алгофанатика, не видящего перспектив своего развития, и нацеленных лишь на результат.
Уверен, идея вашего советника абсолютно уникальна и не имеет аналогов. Но, в любом случае, глупо не попытаться найти похожие разработки других авторов – масштаб проделанных исследований сложно оценить, пока не столкнешься с ним лицом к лицу. Человечество идет на пути к технологической сингулярности, и новые разработки внедряются настолько быстро, что осмыслить весь выложенный материал часто не представляется возможным. Если же подобных разработок все же не нашлось, и протестировать идею без проведения собственных исследований нельзя, пора переходить к следующему этапу.
2. 4 важных вопроса перед разработкой
Но перед этим попытайтесь ответить себе на следующие вопросы:
- В чем состоит ваша торговая идея?
- Какие задачи будет решать советник, и какое объективное преимущество это может дать в торговле?
- Возможно, вам нужен графический индикатор или вспомогательный скрипт?
- Насколько идея реализуема технически, и можете ли вы самостоятельно оценить ее сложность?
Это очень важные вопросы, которые не только помогут сэкономить немало времени, но и немного приблизят вас к пониманию собственной идеи. Наверняка, вы не пришли на рынок раздавать деньги нуждающимся, а имеете другие цели.
[info_block align=»right» linkText=»Форекс советники» linkUrl=»https://fortrader.org/forex-ea-testing/» imageUrl=»http://files.fortrader.org/uploads/2016/08/robot.jpg»]Исследование торговых роботов с возможностью скачать советника.[/info_block]
В идеале, вы должны досконально знать и понимать то, как функционирует выбранная вами торговая площадка и стратегия, на которой, собственно, вы будете зарабатывать. Любое расплывчатое определение или опускание неважных, на первый взгляд, моментов плохо обернется на следующих этапах разработки, и больно ударит по торговому счету. Не бойтесь воскрешать давно забытые торговые идеи, но и не старайтесь сыграть на одних готовых решениях. Рынок очень изменчив и по определению находится в постоянном движении, а конкуренция непрерывно ужесточается.
3. Конструктор советников – не проходим мимо!
У новичков на валютном рынке часто возникает множество вопросов, ответы на которые бывают не совсем очевидны, либо являются лишь вопросом неопытности оного. Будучи начинающим трейдером, достаточно прочитать одну книгу Билла Вильямса, чтобы на всю жизнь подменить понятие торгового хаоса торговым порядком. Затем такие люди удивляются, почему вот здесь да не купить, а вот здесь да не продать, и заказывают у программистов советник по пересечению двух скользящих средних. А ведь на начальных этапах обучения это вполне можно отдать на откуп готовым инструментам разработки. Одной из таких как раз является MQL5 Wizard – мастер по созданию советников для MetaTrader 5.
Для реализации простых вещей Мастер идеален. Вам не нужно обладать никакими магическими способностями – навыки программирования здесь не требуются. Несколько простых шагов, и советник готов. Уже готовый советник можно протестировать в том же терминале MetaTrader. Держите комбайн по производству простецких Граалей.
4. MQL5 Wizard. Сделать советник за 5 минут
Итак, для начала запускаем MetaTrader 5 и переходим в редактор приложений (кнопка F4). На верхнем меню жмем кнопку «Создать» и в появившимся диалоге выбираем генерацию нового советника.
Дальше нужно указать название советника и основные входные параметры.
Добавляем модули торговых сигналов. Модули могут быть как стандартные, так и разработанные сообществом (вы тоже можете поучаствовать в данном процессе).
Собственно, все стандартные сигналы хорошо описаны в онлайн справке на официальном сайте. Там же можно скачать и кастомные.
Выбрав подходящий индикатор нужно указать его входные параметры. Тут же можно обозначить вес сигнала по отношению к другим, если их много.
Обычный трейлинг стоп или закрытие сделки по значениям индикатора – на ваш выбор.
Также на выбор предлагается фиксированный лот, либо объем сделки в процентах от депозита. Для самых рискованных новоявленных программистов также есть мартингейл с его геометрической прогрессией лота, способной принести вам миллионы за пару лишних проходов в тестере стратегий.
Собственно, даже если вы не состоите в клане Метатрейдера, не страшно, наверняка уже написан конструктор под нужную вам торговую платформу. Дело, опять же, в возможностях и желании. Мораль проста: не стоит пытаться реализовать то, что уже давно реализовано. Игнорирование чужого труда может дорого обойтись, придумывать науку заново совсем не обязательно.
5. Хочу программировать непростого советника? Написание технического задания
Итак, вы уже обладаете некоторым торговым опытом, вы проверили свою идею в торговле или имеете точное представление о том, как она будет работать на реальном рынке. Значит, пора переходить к написанию формальных правил вашей стратегии. Часто на этом шаге начинаются проблемы у большинства последователей гуманитарных наук – люди сталкиваются с непреодолимой стеной непонимания, когда абсолютно идеально отработанная в голове схема перестает работать при переводе на технический язык.
Проблема эта настолько распространенная, что создала целую индустрию по переводу абстрактных идей на формальный язык четко структурированных правил, естественно, не бесплатно. На самом деле, при минимальной подготовке вы не столкнетесь с такой сложностью просто потому, что понимаете механизм работы шестеренок вашего форекс робота до самых мелочей, но некоторого труда разработка все же потребует.
По сути, правильно составленное задание – это уже половина работы. Однако, это не работа программиста. Если вы будете просить программиста написать задание за вас, будьте готовы натолкнуться на непонимание, в лучшем случае, и негодование в абсолютном большинстве ситуаций. Именно разработчик идеи несет ответственность за ее точную формализацию, а никак не реализатор – если хотите, переводчик на язык низкоуровневых команд.
6. Напишите мне советник по индикатору
Пример плохого задания для создания торгового советника – его отсутствие. Само намерение заказчика может быть и понятно: есть индикатор, нужно написать торгового робота, ну а дальше что?
[info_block align=»right» linkText=»Вникайте в процесс!»]»Старайтесь вникать в процесс работы и всего, что непосредственно касается реализации идеи вашего советника»[/info_block]
Как закрывать сделку? Как ее сопровождать? Какие выбирать объемы? Что делать с проскальзываниями и реквотами? Нужно понимать, что программист не обладает экстрасенсорными способностями. Если вы такого найдете, обязательно дайте знать, такие люди не должны пропадать.
Видя ТЗ на создание работа без нужных подробностей, фрилансер внесет свою интерпретацию и, в некоторых случаях, действительно может угадать реальные намерения заказчика. Но, как правило, такие обращения заканчиваются двумя обиженными сторонами и обращением в арбитраж с дальнейшим расторжением договора.
Мораль: чем больше подробностей вы предоставите в задании, тем легче его будет понять, осмыслить и, в конце концов, реализовать.
7. Выбор исполнителя
Если у вас нет опыта работы с фриланс-биржами, попробуйте представить себе субэкваториальную версию ада. На самом деле, не все так страшно, но некоторые нюансы все же стоит учитывать.
Во-первых, ценовая политика при написании советника может быть крайне неопределенной. Существует некоторый минимум, за который адекватный программист браться не будет, но, в то же время, значение этого минимума сильно плавает и временами минимум становится максимумом (да, так тоже бывает).
Слишком щедрым тоже быть не стоит, это сразу говорит о том, что человек при деньгах и с вас обязательно сдерут три шкуры за какую-то простецкую задачу. Если вы не понимаете стоимость задачи, попробуйте узнать ее у доверенных людей. Общайтесь с опытными разработчиками, даже если не собираетесь у них ничего заказывать. В дальнейшем, это поможет выявить, к кому обращаться можно, а к кому не стоит.
Во-вторых, не бойтесь спрашивать у разработчиков вашего советника, какие моменты для него непонятны, какие требуют уточнения, и в чем, собственно, состоит сложность той или иной части робота. Казалось бы, для вас в техзадании все понятно, и все же исполнители часто наталкиваются на принципиальное недопонимание.
[info_block align=»right» linkText=»Все в ваших руках»]»В ваших интересах контролировать процесс создания советника вашей мечты. Просите проводить промежуточные этапы работ, участвуйте в бета-тесте и не брезгуйте узнавать технические подробности.»[/info_block]
Один из типичных примеров – недопонимание форматов файлов и их значения. Вроде: «У меня тут есть .dll библиотека (.exe файл или .ex4 программа), не могли бы вы быстренько поправить то и то, а я вам за это копеечку закину? Нет? А почему? Василий мне сделал советника за 5 баксов, а вы плохой разработчик значит!».
Мораль: старайтесь вникать в процесс работы и всего, что непосредственно касается реализации вашей идеи. Это не только поможет лучше разобраться в работе робота самому, но и в дальнейшем упростит процесс общения с исполнителями. В работе всегда принимают участие, как минимум, две стороны, и если вы намерены сделать трейдинг своей основной профессией, терпение нужно беречь – и свое, и окружающих.
8. Сдача советника – включайтесь в работу!
Этап сдачи работы – самый сложный. Будьте уверены, каждый исполнитель с горя пьет успокоительный отвар, черным маркером отмечая день календаря, когда его в очередной раз просят поправить и без того исчерпавший все сроки заказ. Как и вселенной, совершенству нет предела, но в определенный момент нужно собраться и сказать – задача завершена.
Понимаю, для трейдера свет, отраженный от золотых гор, освещает создание передовой технической мысли и плода внутреннего гения в его безмерно красивом представлении. Как так, ведь советник, который не зарабатывает деньги, просто не укладывается в голове, и создает образ незавершенной работы. Как можно платить за то, что не работает?
Со стороны исполнителя же работа завешена ровно тогда, когда исполнены все пункты заказа. Техническое задание для программиста – это четко проведенная тропа, отходить от которой значит додумывать за заказчика. Иногда эта тропа заводит в тупик, как дорога из бывшей столицы Руси в либеральную Европу. То есть, на этапе приема работ выясняется, что задача, оказывается, состояла совсем не в том, а в кардинально обратном.
Если задача небольшая, исполнитель вполне может пойти на уступки, и исправить работу в соответствии с новым ТЗ. Если работа проделана масштабная – что-либо менять уже поздно. Частая проблема – тотальная отрешенность в процессе разработки, например, отказ от участия в бета-тестировании: «Зачем вы мне скинули советника с ошибками, я что за вас тестировать еще должен?» или: «Откуда я знаю, как этот ваш тестер запускать, я программист что-ли?».
[info_block align=»right» linkText=»Безопасный Мартингейл» linkUrl=»https://fortrader.org/learn/forex-trader/bezopasnyj-martingejl-kak-otdelnymi-elementami-martingejla-uvelichit-pribylnost-strategii.html» imageUrl=»http://files.fortrader.org/uploads/2016/07/coins-730×487.jpg»]Как отдельными элементами Мартингейла увеличить прибыльность стратегии?[/info_block]
Для адекватного человека такие заявления режут слух, исполнитель же впадает в депрессию. Разработка торгового робота – это, в первую очередь, работа. Если вы ищете готовое решение, существует магазин готовых советников, где советника за вас и протестируют, и вымоют до блеска, попутно документируя его историческую успешность. В таком случае, обращаться на фриланс-биржу не имеет смысла.
Мораль: не стоит отдавать все на самотек. В ваших интересах контролировать процесс создания советника вашей мечты. Просите проводить промежуточные этапы работ, участвуйте в бета-тесте и не брезгуйте узнавать технические подробности.
Заключение
Великие деятели, как Альберт Хофманн, не дадут соврать. Опыт создания своего продукта бесценен. Если же вы пришли на валютный рынок по собственному желанию, поверьте, это надолго.
Исследование закономерностей, поиск решений и их реализация навсегда изменяют восприятие мира, делая его картину более полноценной, а жизнь обретает дополнительный смысл.
На самом деле, разработка собственного советника – процесс крайне интересный. Даже если вы не собираетесь связывать свою карьеру с торговлей на финансовых рынках, полученные знания можно применить и в других областях. Торговля и разработка – это то, на чем держится вся современная экономика, и сегодня у вас есть возможность почувствовать в этом лично.
Вам также будет интересно
- Как из запаздывающего индикатора сделать работающий Грааль?
- ECN или MTF – выбираем агрегатор ликвидности
- Сетка ордеров на форекс: 2 варианта популярной стратегии
Как написать торгового робота: инструменты для начинающих
Время на прочтение
4 мин
Количество просмотров 28K
Тема автоматизированных систем для торговли на бирже довольно популярна в рунете в последние несколько лет. Однако начинающим инвесторам создать своего торгового робота может быть нелегко. Сегодня мы расскажем о том, как это можно сделать без лишних затрат.
Примечание: любая инвестиционная деятельность на бирже связана с определенным риском, это нужно учитывать. Кроме того, для запуска своего торгового робота вам понадобится брокерский счет, открыть его можно онлайн. Вы можете отладить свою стратегию с помощью тестового доступа с виртуальными деньгами.
Варианты создания роботов
Существует несколько вариантов создания роботизированного софта для торговли на бирже:
- Создание роботов для работы на прямом подключении – такие системы работают «в обход» торговой системы брокера, отправляя заявки напрямую в «движок» торговой системы биржи. Этот вариант используют уже опытные трейдеры, которые готовы платить в том числе и за такой способ подключения.
- Подключение к брокерской торговой системе по 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 поставляет и модуль бэктестинга, который позволяет оценить продуктивность работы описанной стратегии на исторических данных. Помимо прочего, в системе реализована функция тестирования торговой системы «на лету» с использованием текущих биржевых данных, но без вывода приказа на биржу — время виртуальной сделки, цена и получившаяся «доходность» будут показываться в отдельном окне.
Кроме того пользователь может запускать столько одновременно работающих алгоритмов, сколько позволит тактовая частота процессора и память компьютера. Учитывая большое число слов и операндов скриптового языка, это означает возможность создания сколько угодно сложных торговых стратегий.
Что еще: отладка на тестовом доступе
Использование встроенной в торговый терминал функциональности по разработке торговых роботов – удобный и надежный способ автоматизации торговли. Однако несмотря на существующие функции для тестирования стратегий, не стоит пренебрегать и дополнительными возможностями отладки.
Поэтому мы рекомендуем перед запуском стратегии для торговли реальными деньгами «прогнать» ее на тестовом доступе. Этот шаг позволит отладить все моменты, включая реакцию программы на осуществленные сделки, без риска реальных финансовых потерь. Применение анализа с помощью исторических данных, проверки «на лету» и использование тестового доступа позволит максимально полно отладить вашу стратегию.
Полезные ссылки по теме инвестиций и биржевой торговли:
- Открыть брокерский счет онлайн
- Тестовый счет с виртуальными деньгами
- Софт для торговли на бирже: торговый терминал, мобильные приложения
- Структурные продукты
- Модельные портфели
Есть люди, которые утверждают, что можно трейдить в плюс, если следовать простым правилам. Я решил подойти к таким заявлениям с научной точки зрения и написал программу, торгующую криптовалютами.
Бум криптовалют
О, помните эти времена, когда из каждого утюга кричали про криптовалюты! «Биткоин снова обновил максимумы! Он стоит уже $1000, $2000, $3000!»
Кажется, тогда просто нельзя было остаться в стороне от этой темы. Криптовалютные биржи дали доступ к инструментам для трейдинга очень широкой аудитории, а зашкаливающий хайп заставил многих научиться ими пользоваться.
Где-то в начале этого безумного ралли финансовыми инструментами заинтересовался и я.
Первые шаги
Дело было в 2017 году. Тогда один Биткоин стоил $800, а я учился в магистратуре МФТИ.
В институте вам расскажут, что такое акции, облигации, колл и пут опционы, но по-настоящему это можно понять только на практике. Мне всегда было интересно, как работают разные вещи, и финансовые инструменты не стали исключением.
Я завел реальный брокерский счет и зарегистрировался на нескольких криптовалютных биржах. На реальной бирже я купил по паре бумаг разных типов, а на криптовалютных — по немногу биткоина, эфира и лайткоина.
Процесс регистрации и покупки активов нетривиален, и сам по себе является интересным опытом. А факт обладания финансовым инструментом побуждает разобраться в его деталях.
Как торговать в плюс?
На этот вопрос вам с радостью ответит куча «экспертов» в интернете. Есть статьи, книги и даже обучающие видео. Люди утверждают, что существуют простые правила, следуя которым можно прогнозировать изменение цены и получать прибыль.
Вы, наверное слышали такие термины, как «Фундаментальный анализ» и «Технический анализ». Первый подразумевает глубокое изучение компании, её положения на рынке, финансовых потоков и продуктов. Второй — поиск закономерностей на графике цены актива или валютной пары.
Я допускаю, что Фундаментальный анализ может работать, но для непрофессионалов это скорее баловство. Маловероятно, что вам удастся выбрать бумаги лучше, чем, например, профессиональным управляющим фондов, ведь они занимаются этим фултайм.
Мне же был больше интересен Технический анализ. Если он возможен, то применяя мат-статистику, алгоритмы обработки сигналов или машинное обучение, точно удастся найти закономерности и спрогнозировать цену, а значит — заработать!
Нужен рисёрч
Прежде, чем погружаться в свои исследования, было решено попробовать проверенные стратегии от «экспертов» в интернете.
Есть стратегии разных типов. Большинство из них сводятся к одному — посмотрел на график, увидел Сигнал к росту — закупился. Увидел сигнал к падению — продал (или зашортил). Получается, купил подешевле, продал подороже – получил прибыль.
На мемасе выше мы видим график цены, представленный в виде японских свечей. Их определенные комбинации принято считать Сигналами к покупке или продаже актива. У таких комбинаций есть свои названия.
Другой пример вожделенных Сигналов — фигуры, которые образует график цены за какое-то время.
Раз все так просто, очевидно, что нужно написать программу, которая бы следовала этим правилам и приносила доход!
Начинаем работу
Я объединился с тремя однокурсниками-единомышленниками, и мы начали разработку торгового робота.
4 Физтеха: физик, программист, математик и дата саентист. Каждый из нас. Успех неизбежен!
Чтобы не слить все деньги сразу, мы скачали >100Гб исторических данных о ценах разных криптовалют и построили систему тестирования алгоритмов.
По сути, мы эмулировали биржу. Каждый алгоритм мы запускали как если бы мы начали торговать несколько лет назад. И сразу получали его доходность с учётом комиссий биржи.
Проверяем известные стратегии
За следующие несколько дней мы протестировали огромное количество популярных стратегий, но результата не получили. Все они уходили в минус из-за комиссии и спреда. При этом «эксперты» из интернета показывают реальные примеры на настоящих биржах. Как же так получается?
На самом деле, все просто. Возьмём, к примеру, «перевернутый молот». Считается, что это сигнал к покупке: увидел на графике такую фигуру – покупай, цена пойдёт вверх.
Да, пример такого поведения цены можно найти на реальных графиках цен. Но тут важно соотношение случаев, когда цена после сигнала пошла вверх (вы заработали) и когда пошла вниз (вы потеряли деньги).
Оказывается, это соотношение всегда примерно 1:1. Если мы рассмотрим например 5000 молотов, то в ~2500 случаев цена после него пошла вверх, а в ~2500 – вниз. Если бы мы торговали по этой стратегии, то вышли бы примерно в ноль. Только заплатили комиссию 2 * 5000 раз. Понятно, что заработал здесь только брокер.
Да, возможно такие стратегии работали раньше, в 18 веке на японских рисовых биржах. Древние трейдеры видели молот (сигнал к росту цены), совершали одновременно много сделок на покупку, что и приводило к росту цены. Сейчас так не работает. Сейчас нужен пост на Reddit.
Целый мир
Глупо было рассчитывать, что всем известные стратегии могут быть на самом деле прибыльными. Но, окунувшись в эту сферу из любопытства, мы обнаружили целый мир торговых роботов. На них, согласно отчету Московской Биржи, приходится как минимум 43% оборота!
Оказывается, есть много компаний, которые занимаются алгоритмическим трейдингом. Их невозможно победить – у них больше вычислительных и человеческих ресурсов. Куча денег и меньше пинг (время обмена данными) до биржи.
Время обмена данными важно, так как прибыль забирает тот, кто первый создал заявку (при работе по одной стратегии). Для уменьшения этого времени такие компании даже арендуют помещения рядом с датацентрами бирж и тянут сетевые кабели туда напрямую.
В то время компании, ориентированные на алготрейдинг работали только на сток маркете. Само их существование говорит о том, что прибыльные алгоритмы на самом деле существуют! У нас возникла идея: применить их алгоритмы к рынку криптовалют.
Применяем профессиональные алгоритмы
Одной из стратегий, которые используются алготрейдиговыми компаниями является Арбитраж. Она заключается в использовании дисбаланса, который может возникать на бирже между разными валютными парами.
Например, иногда можно купить за 1 биткоин 10 монет эфира, за 10 монет эфира купить 100 лайткоинов, а за 100 лайткоинов купить 1.1 биткоина. Если комиссия составила меньше 0.1 биткоина, вы заработали.
Короткий временной промежуток дисбаланса называется «Арбитражное окно». Обычно, его размер составляет единицы миллисекунд. За это время наш робот должен был успеть детектировать возможность арбитража и отправить запросы на 3 сделки.
Но он не успевал. За время получения данных, обработки и отправки управляющих команд цена на бирже успевала измениться. Если мы отправляли лимитные заявки, то часть из них не выполнялась. А когда пробовали отправлять рыночные, стабильно уходили в минус.
Похоже, что нас кто-то опережал. Возможно, сами биржи зарабатывают, компенсируя этот дисбаланс. Никакие оптимизации не помогли вывести эту или другие профессиональные стратегии в плюс.
Пора переходить на следующий уровень.
Применяем машинное обучение
У нас были сотни гигабайт исторических данных с криптовалютных бирж. Мы решили использовать их для обучения различных алгоритмов.
Так как для каждого момента в прошлом известно, куда после него пошла цена, разметить данные можно автоматически. Так мы и поступили.
На вход системе мы также подавали данные об объеме лимитных заявок для каждого момента времени (Биржевой стакан). По факту, мы учитывали информацию о том, как поступают другие участники рынка.
Мы проверяли стратегии одну за одной, арендовали сервера в разных точках планеты и наращивали их мощность, но раз за разом теряли деньги. Пока однажды…
1500% годовых
Однажды утром, проверяя результаты работы разных алгоритмов, я увидел, что один из них за 2 дня сделал +11% к портфелю.
Вы только представьте эмоции, возникающие при виде такой доходности. 11% за 60 часов — это больше 1500% годовых без учета сложного процента!
Да, такая экстраполяция абсурдна – данных очень мало. Но ведь пред запуском на бирже мы тестировали стратегию на исторических данных за несколько лет. А тут оно подтверждается на практике!
Пытаясь сохранить долю скепсиса, я несколько дней отгонял мысли о том, как легально вывести деньги, заплатить налог и, конечно же, как их потратить.
Каждый день, если не каждый час, я проверял баланс аккаунта на бирже. Алгоритм продолжал торговать, но успех медленно пропадал с горизонта.
Через 2 недели робот проиграл всё, что натрейдил раньше, и так и не выбрался из минуса.
Это была случайность.
Осознание
Легких денег в алготрейдинге нет. Это бесконечная борьба, в которой побеждают те, кто обладает бОльшими ресурсами.
18 декабря 2017 года произошел Великий Обвал Биткоина. К этому моменту мы уже потратили кучу денег, сил и времени.
Мы поняли, что ни на шаг не приблизились к успеху, а ресурсов потратили уйму. Хотя вместо потуг с алготрейдингом можно было сделать проект, который бы приносил пользу людям.
Мне и сейчас близка эта точка зрения: если сделать полезный продукт для людей, они проголосуют рублём. А лучше долларом.
Деньги, время и силы лучше вложить в проекты, которые принесут пользу.
Я, например, основал Travers – Сервис для поиска инструкторов по сноуборду и горным лыжам.
Выводы
Было интересно и познавательно. Мы с головой окунулись в мир обычной и алгоритмической торговли, узнали кучу нового.
Я даже защитил магистерскую диссертацию на эту тему. А при подготовке общался с управляющим директором BCS Global Markets, Сергеем Глущенко. Тогда он руководил департаментом алгоритмической торговли.
Что касается торговли на бирже, не трейдите – инвестируйте. Делайте этом с умом – нужно обязательно диверсифицировать портфель. Берегитесь мошенников и никогда не верьте, когда вам обещают сверхдоходы вроде 1500% годовых.
Закончить я хотел бы цитатой известного инвестора.
По графику цены можно предсказывать только прошлое
Джейсон Стэйтем
Спасибо, что дочитали! Надеюсь, было не слишком много иронии. Если вам понравился стиль, загляните в мой профиль – там есть ещё классные статьи.
Я не рекламирую телеграмм канал – у меня его нет. Но буду рад, если подпишитесь на меня здесь. Аудитория VC мне нравится и думаю, что за этой штукой будущее. Фейсбуки и прочие Твитеры будут умирать..
А цифра в профиле тешит моё самолюбие)
Успехов вам и классных проектов!
Пошаговое руководство по созданию торгового бота на любом языке программирования +28
Блог компании RUVDS.com, Программирование, Финансы в IT
Рекомендация: подборка платных и бесплатных курсов Java — https://katalog-kursov.ru/
У меня нет квалификации, позволяющей давать советы, касающиеся инвестиций, законов, или чего-то подобного. Я и не пытаюсь этого делать. Цель руководства заключается в том, чтобы, в учебных целях, рассказать о программировании торговых ботов. Вы должны понимать, что, создав бота, вы несёте ответственность за принимаемые им решения, за выполняемые им инвестиционные операции, за те риски, которые сопряжены с торговой деятельностью. Я не могу отвечать за те решения, которые вы примете после прочтения данного материала. Помните, что боты способны потерять большие деньги, поэтому используйте их с осторожностью.
Часто можно встретить статьи, которые называются примерно так: «10 проектов, которые нужно реализовать программисту». Часто в списки этих статей входят торговые боты. Я считаю, что разработка торгового бота — это достойное вложение сил. Поэтому я решил уделить некоторое время тому, чтобы написать учебное руководство об этом.
Но вместо того, чтобы устраивать тут построчный разбор некоего кода, я решил, что лучше будет разобрать те концепции, с которыми должен быть знаком тот, кто хочет создать собственного бота. Смысл моего материала заключается в том, чтобы, прочтя его, вы сами написали бы код.
Поэтом я расскажу о том, что полезно знать для разработки торгового бота, и о том, что для этого нужно (от работы с биржами до реализации простой торговой стратегии). Здесь же я коснусь вопросов, связанных с архитектурой и внутренним устройством простых торговых ботов, с идеями, которые лежат в их основе.
Я буду демонстрировать примеры, написанные на псевдокоде. Поэтому вы сможете читать это руководство и тут же писать собственного бота на выбранном вами языке программирования.
В результате вам будет комфортно, так как вы будете пользоваться инструментом, с которым вы хорошо знакомы. Сможете спокойно заниматься программированием, а не тратить время на настройку рабочей среды и на привыкание к новому языку.
Вы выберете оружие, а я научу вас владеть этим оружием.
Шаг 1. Выбираем оружие
На первом шаге этого руководства вы выберете язык программирования, которым будете пользоваться. Этот вопрос вы должны решить самостоятельно.
Некоторым языкам, вроде Python, можно отдать предпочтение в том случае, если вы планируете в будущем оснастить своего бота, например, механизмами машинного обучения. Но моя основная идея заключается в том, что вы можете выбрать тот язык, с которым вам удобнее всего работать.
Шаг 2. Ищем поле битвы
В руководствах по написанию торговых ботов часто упускают одну важную тему. Она касается выбора биржи. Дело в том, что для того чтобы бот смог бы заниматься тем, для чего он создан, ему нужен доступ к бирже, на которой можно чем-то торговать. Выбор биржи и умение ей пользоваться — это так же важно, как навыки программирования.
Итак, вашим первым шагом будет принятие решения о том, чем именно вы собираетесь торговать (акциями, валютами, криптовалютами), и решения о том, где именно вы будете торговать.
Если говорить о биржевых активах, то я посоветовал бы обратить внимание на криптовалюты. Причина такой рекомендации заключается не в том, что я являюсь сторонником блокчейн-технологий и криптовалют (я полностью открыт в этом вопросе), а всего лишь в том, что криптовалютные рынки работают круглые сутки 7 дней в неделю.
Более «традиционными» активами можно торговать только в определённые временные промежутки, и часто — только по будним дням. Рынки акций, например, обычно открыты с 9 утра до 4 вечера и по выходным они не работают. Рынки FOREX, хотя и могут работать круглосуточно, обычно закрыты в выходные.
В связи с этим нам лучше всего подойдут криптовалюты, так как выбор данного рынка позволит нашем боту работать без перерывов. Кроме того, криптовалюты известны высоким уровнем волатильности. А это значит, во-первых, то, что на торговле ими можно потерять большие деньги, и во-вторых, то, что они представляют собой отличный инструмент для изучения и тестирования торговых стратегий.
О биржевых активах мы уже поговорили. Давайте теперь обсудим требования, которые нужно учитывать при выборе биржи, для которой будет создаваться бот. А именно, я говорю о двух основных требованиях:
- У вас должна быть законная возможность торговать на выбранной бирже и работать с предлагаемыми ей торговыми инструментами. Если говорить о криптовалютах, то в некоторых странах торговля ими запрещена. Учитывайте это, выбирая инструменты и биржу.
- Биржа должна обладать API, который доступен её клиентам. Нельзя создать торгового бота, который не отправляет запросы к бирже и не получает от неё ответов.
После того, как оказалось, что некая биржа удовлетворяет этим двум основным требованиям, вы можете проанализировать её глубже. Например, оценить размер комиссий, оценить её надёжность и известность, взглянуть на качество документации к её API.
И ещё, что так же важно, как и всё остальное, я порекомендовал бы оценить объём торгов биржи. Биржи с низкими объёмами имеют свойство «отставать» от ценовых движений. На них, кроме того, сложнее бывает выполнять лимитные заявки (подробнее об этом мы поговорим ниже).
Если вы, в итоге, решили выбрать криптовалюты, то вот — хороший список ведущих бирж. Здесь вы можете найти различные сведения о них, которые помогут вам в выборе биржи.
Шаг 3. Строим лагерь
Если биржа — это поле битвы, то теперь мы поговорим о том месте, из которого будем отправлять на поле битвы свои войска. Кстати, мне, пожалуй, пора завязывать с такими аналогиями.
Здесь я говорю о сервере. Код бота должен выполняться на некоем сервере, что позволит боту отправлять запросы к API биржи.
Во время тестирования бота, естественно, в роли сервера может выступать ваш компьютер. Но если вам нужно, чтобы бот работал бы постоянно, обычный компьютер — это, определённо, не лучший выбор.
Тут у меня есть два предложения:
- Роль сервера может выполнять Raspberry Pi (этот подход интереснее).
- Сервером может быть некая облачная служба (а этот подход лучше).
Я так думаю, что организация деятельности бота на базе собственного Raspberry Pi-сервера — это интересная и современная идея, поэтому, если и вам эта идея нравится, вы можете претворить её в жизнь.
Но большинство создателей ботов, вероятно, остановят свой выбор на каком-нибудь провайдере облачных услуг вроде AWS, Azure, GCS или Digital Ocean.
Большинство крупных облачных провайдеров имеют хорошие бесплатные тарифные планы, поэтому вам, возможно, удастся хостить своего бота у такого провайдера бесплатно.
На этом я разговор о серверах завершаю. Вам стоит выбрать то, что лучше всего вам подходит. Для маленького проекта, вроде того, которым занимаемся мы, то, что именно будет выбрано, не особенно сильно повлияет на конечный результат работы.
Шаг 4. Создаём бота
А вот теперь начинается самое интересное. Но, прежде чем приступать к этой части нашего проекта, проверьте, выполнено ли следующее:
- Вы зарегистрировались на бирже и получили необходимые разрешения на работу с ней.
- У вас есть возможность работать с API биржи, у вас имеется ключ API.
- Вы выбрали хостинг для бота.
Если эти вопросы решены, это значит, что мы можем двигаться дальше.
?Простейший бот
Моя цель заключается в том, чтобы помочь тому, кто до этого момента совершенно ничего не знал о ботах, подняться до уровня создания простого действующего бота. Поэтому я расскажу о том, как создать простого торгового бота, которого вы сможете, в соответствии с вашими нуждами, расширять и улучшать.
У нашего бота будут некоторые ограничения:
- Бот сможет пребывать лишь в одном из двух состояний: BUY (покупка) или SELL (продажа). Он не будет постоянно размещать заявки на покупку или на продажу по разным ценам. Если последней операцией была продажа, то следующей операцией, которую попытается выполнить бот, будет покупка.
- Бот будет использовать фиксированные пороговые значения для принятия решений о покупке и продаже. Более интеллектуальный бот может быть способен самостоятельно настраивать подобные значения, основываясь на различных индикаторах, но стратегия и ограничения нашего бота будут задаваться вручную.
- Он будет торговать только одной валютной парой. Например — BTC/USD.
Эти ограничения упрощают нашу задачу. Бот будет простым, а значит, его легче будет создать и поддерживать. Это же позволит нам очень быстро развёртывать его код на сервере. В целом, тут мы говорим о принципе KISS.
?Механизм принятия решений
Вот простая диаграмма, дающая общий обзор функционирования нашего бота.
А теперь можно приступать к планированию архитектуры бота.
Нам, для начала, понадобится переменная, в которой будут храниться сведения о том, в каком именно состоянии находится бот в текущий момент. Это либо BUY, либо — SELL. Для хранения подобных сведений хорошо подойдёт логическая переменная или перечисление.
Затем нужно задать пороговые значения для операций покупки и продажи. Эти значения выражаются в процентах, они представляют собой увеличение или уменьшение цены актива с момента выполнения предыдущей операции.
Например, если я купил что-то по цене в $100, а в настоящий момент цена составляет $102, то мы имеем дело с увеличением цены на 2%. Если порог для операции SELL установлен на однопроцентное увеличение цены, то бот, увидев эти 2%, продаст актив, так как он уже получил прибыль, превышающую заданное нами пороговое значение.
В нашем случае подобные значения будут константами. Нам понадобится 4 таких значения — по 2 на каждое состояние бота.
?Пороговые значения для выполнения операции BUY (если бот находится в состоянии SELL)
DIP_THRESHOLD
: бот выполняет операцию покупки в том случае, если цена уменьшилась на значение, большее, чем заданоDIP_THRESHOLD
. Смысл этого заключается в реализации стратегии «покупай дёшево, продавай дорого». То есть, бот будет пытаться купить актив по заниженной цене, ожидая роста цены и возможности выгодной продажи актива.UPWARD_TREND_THRESHOLD
: бот покупает актив в том случае, если цена выросла на значение, превышающее то, что задано этой константой. Этот ход противоречит философии «покупай дёшево, продавай дорого». Его цель заключается в том, чтобы выявить восходящий тренд и не пропустить возможность покупки до ещё большего роста цены.
Вот иллюстрация, которая может помочь в понимании смысла этих констант.
Если мы выполнили операцию SELL в момент, отмеченный на рисунке красным маркером SELL, то после этого бот, принимая решение о выполнении операции BUY, будет руководствоваться пороговыми значениями DIP_THRESHOLD
и UPWARD_TREND_THRESHOLD
.
Если цена уйдёт ниже нижней зелёной линии или выше верхней зелёной линии, мы выполним операцию BUY. В ситуации, показанной на рисунке, цена ушла выше верхнего предела. Поэтому мы, руководствуясь значением UPWARD_TREND_THRESHOLD
, выполнили операцию BUY.
?Пороговые значения для выполнения операции SELL (если бот находится в состоянии BUY)
PROFIT_THRESHOLD
: бот продаёт актив в том случае, если цена стала выше цены, вычисленной на основе этого значения, так как ранее актив был куплен по более низкой цене. Именно так мы получаем прибыль. Мы продаём актив по цене, которая выше той, что была в момент его покупки.STOP_LOSS_THRESHOLD
: в идеальной ситуации мы хотели бы, чтобы бот продавал бы активы только тогда, когда продажа приносит нам прибыль. Но, возможно, произошло сильное движение рынка вниз. В такой ситуации мы решим выйти из сделки до того, как понесём слишком большие убытки, и позже купить актив по более низкой цене. Это пороговое значение используется для закрытия позиции с убытком. Цель этой операции — предотвращение более сильных потерь.
Вот иллюстрация.
Тут показана ситуация, когда там, где стоит маркер BUY, была сделана покупка. После этого цена достигает предела, заданного PROFIT_THRESHOLD
, и мы продаём актив с прибылью. Именно так боты зарабатывают.
Теперь, после того, как у нас сформировалось общее понимание того, как функционирует бот, пришло время рассмотреть псевдокод.
?Вспомогательные функции для работы с API
Первое, что понадобится боту, это возможности обмена данными с API биржи. Эти возможности мы реализуем с помощью нескольких вспомогательных функций:
FUNCTION getBalances():
DO: Выполнить GET-запрос к API биржи для получения
сведений о балансах
RETURN: Сведения о балансах
FUNCTION getMarketPrices():
DO: Выполнить GET-запрос к API биржи для получение
текущей цены актива
RETURN: Текущая цена актива
FUNCTION placeSellOrder():
DO:
1. Вычислить количество актива для продажи (на основе
некоего заданного порогового значения, например,
50% общего баланса)
2. Отправить POST-запрос к API биржи для выполнения
операции SELL
RETURN: Цена совершения сделки
FUNCTION placeBuyOrder():
DO:
1. Вычислить количество актива для покупки (на основе
некоего заданного порогового значения, например,
50% общего баланса)
2. Отправить POST-запрос к API биржи для выполнения
операции BUY
RETURN: Цена совершения сделки
// Необязательная функция, которая предназначена для
// получения подтверждения выполнения операций
FUNCTION getOperationDetails():
DO: Выполнить GET-запрос к API биржи для получения
сведений об операции
RETURN: Сведения об операции
Вышеприведённый код должен быть понятен без особых объяснений. Но, реализуя этот функционал, вы должны точно знать о том, какие именно данные нужно передать API при выполнении POST-запросов, инициирующих покупку или продажу чего-либо.
Часто, например, когда торгуют парой XAU/USD (золото и доллары США), при выполнении запроса можно указать или то, сколько золота нужно купить, или то, сколько долларов нужно продать. При выполнении подобных запросов очень важно чётко понимать смысл производимых действий.
?Главный цикл бота
Теперь, когда мы подготовили вспомогательные функции, приступим к описанию действий бота. Для начала нам нужно создать бесконечный цикл, выполняемый с некоторой периодичностью. Предположим, нам нужно, чтобы бот пытался бы выполнить некую операцию каждые 30 секунд. Вот как может выглядеть такой цикл:
FUNCTION startBot():
INFINITE LOOP:
attemptToMakeTrade()
sleep(30 seconds)
Далее — настроим переменные и константы, о которых мы говорили выше, и напишем логику бота, позволяющую ему принимать решения. В результате, помимо вспомогательных функций и главного цикла, основной код бота будет выглядеть так:
bool isNextOperationBuy = True
const UPWARD_TREND_THRESHOLD = 1.50
const DIP_THRESHOLD = -2.25
const PROFIT_THRESHOLD = 1.25
const STOP_LOSS_THRESHOLD = -2.00
float lastOpPrice = 100.00
FUNCTION attemptToMakeTrade():
float currentPrice = getMarketPrice()
float percentageDiff = (currentPrice - lastOpPrice)/lastOpPrice*100
IF isNextOperationBuy:
tryToBuy(percentageDiff)
ELSE:
tryToSell(percentageDiff)
FUNCTION tryToBuy(float percentageDiff):
IF percentageDiff >= UPWARD_TREND_THRESHOLD OR percentageDiff <= DIP_THRESHOLD:
lastOpPrice = placeBuyOrder()
isNextOperationBuy = False
FUNCTION tryToSell(float percentageDiff):
IF percentageDiff >= PROFIT_THRESHOLD OR percentageDiff <= STOP_LOSS_THRESHOLD:
lastOpPrice = placeSellOrder()
isNextOperationBuy = True
Обратите внимание на то, что пороговые значения в этом коде выбраны произвольным образом. Вам следует подобрать эти значения самостоятельно, в соответствии с применяемой вами торговой стратегией.
Если вышеприведённый код совместить со вспомогательными функциями и с главным циклом бота, который может быть представлен чем-то вроде функции main
, это будет означать, что теперь в нашем распоряжении имеется очень простой работающий бот, обладающий основными возможностями, характерными для ботов.
На каждой итерации цикла бот будет проверять своё текущее состояние (BUY или SELL) и будет пытаться выполнить торговую операцию, используя при анализе текущей ситуации жёстко заданные в его коде пороговые значения. Затем, если операция будет выполнена, бот обновит сведения о своём текущем состоянии и данные о цене, по которой была совершена последняя операция.
Шаг 5. Улучшаем бота
Базовая архитектура нашего бота готова. Но мы, вероятно, можем его немного улучшить, оснастив его некоторыми дополнительными возможностями.
?Журналы
Когда я приступил к созданию одного из вариантов этого бота, для меня было очень важно то, чтобы бот постоянно бы логировал сведения о своих действиях, выводя их в терминал и в отдельный файл журнала.
Каждый шаг работы программы должен был сопровождаться примерно такими записями:
[BALANCE] USD Balance = 22.15$
[BUY] Bought 0.002 BTC for 22.15 USD
[PRICE] Last Operation Price updated to 11,171.40 (BTC/USD)
[ERROR] Could not perform SELL operation - Insufficient balance
То, что попадает в файл журнала, снабжается отметками времени. В результате, если я подключаюсь к серверу раз в день, и вижу, например, сообщение об ошибке, я могу узнать о том, когда именно произошла ошибка, и о том, чем бот занимался всё это время.
Оснастить бота подобными возможностями — значит написать функцию, которую можно назвать createLog
. Эта функция должна вызываться на каждом шаге главного цикла бота. Вот как может выглядеть эта функция:
FUNCTION createLog(string msg):
DO:
1. Вывести msg в терминал
2. Записать msg в файл журнала, добавив отметку времени
?Идентификация трендов
Главная цель нашего бота заключается в том, чтобы дёшево покупать активы и продавать их, получая прибыль. Но в его коде есть две константы, символизирующие два пороговых значения, которые отчасти этой цели противоречат. Это UPWARD_TREND_THRESHOLD
и STOP_LOSS_THRESHOLD
.
Эти значения предназначены для ограничения убытков путём продажи актива при падении цены и для организации покупки актива при росте цены. Смысл тут в том, что с их помощью мы пытаемся предугадать тренды, цены при появлении которых выходят за пределы обычной стратегии, но могут либо нам навредить, либо дать нам заработать. И то и другое предусматривает некие действия с нашей стороны.
То, как сейчас устроен анализ цены, очень сильно нас ограничивает. Анализ цены, проводимый путём сравнения пары показателей, далёк от механизма, позволяющего выявлять тренды.
Но мы, к счастью, можем, без особенных проблем, сделать нашу систему определения трендов более надёжной.
Нам нужно лишь организовать наблюдение за большим количеством ценовых значений, чем раньше. А раньше мы хранили сведения лишь об одном ценовом показателе — о стоимости актива на момент последней операции (lastOpPrice
). Можно, например, хранить сведения о ценах за 10 или 20 последних итераций цикла бота и сравнивать с текущей ценой их, а не только lastOpPrice
. Это, вероятно, позволит лучше идентифицировать тренды, так как при таком подходе мы можем уловить краткосрочные колебания цены, а не колебания, происходящие за долгое время.
?База данных?
Простому боту, на самом деле, база данных не нужна. Ведь он оперирует весьма небольшими объёмами данных и хранит всю необходимую ему информацию в памяти.
Но что произойдёт в том случае, если, например, бот будет аварийно остановлен? Как ему узнать, без вмешательства человека, о том, каким было значение lastOpPrice
?
Для того чтобы исключить необходимость ручного вмешательства в код бота при его перезапуске нам может понадобиться некая простая база данных, в которой можно хранить какие-то показатели вроде lastOpPrice
.
При таком подходе бот, запускаясь, может не использовать значения, жёстко заданные в коде. Вместо этого он обращается к сохранённым данным и продолжает работу с того места, где она была прервана.
В зависимости от того, насколько простой, по вашему мнению, должна быть эта «база данных», вы можете даже решить использовать в таком качестве обычные .txt- или .json-файлы, так как, в любом случае, речь идёт о хранении весьма ограниченного набора данных.
?Панель управления
Если вы хотите организовать визуализацию деятельности бота, а так же управлять им, не редактируя его код, то вам может захотеться подключить бота к некоей панели управления.
Это потребует наличия у бота собственного серверного API, предназначенного для управления его функционалом.
Подобный подход, например, позволит легко менять пороговые значения.
Существует множество шаблонов панелей управления, а значит вам, если вы решите сделать что-то подобное, даже не придётся создавать такую панель с нуля. Взгляните, например, на Start Bootstrap и Creative Tim.
?Тестирование стратегий на исторических данных
Многие биржи дают клиентам доступ к историческим ценовым данным. Кроме того, если вам нужны такие данные, их обычно несложно достать.
Их использование весьма полезно для тестирования торговых стратегий перед их реальным применением. Это позволяет запустить симуляцию, используя исторические данные и «ненастоящие» деньги. Благодаря этому можно узнать о том, насколько удачно показали бы себя пороговые значения, и, если нужно, поменять эти значения.
?Дополнительные сведения о пороговых значениях и заявках
При размещении заявок нужно учитывать несколько моментов.
Во-первых, нужно знать о том, что существуют два типа заявок: лимитные и рыночные. Если вы совсем ничего об этом не знаете — вам, определённо, стоит почитать специальную литературу. Я тут объясню эти идеи буквально в двух словах.
Рыночные заявки — это заявки, которые исполняются по текущей рыночной цене. В большинстве случаев это означает их немедленное исполнение.
Лимитные заявки, с другой стороны, это заявки, которые размещают, указывая цену, которая ниже рынка (в случае с заявками на покупку), или выше рынка (в случае с заявками на продажу). При этом нет гарантии того, что эти заявки будут исполнены, так как цена может не достигнуть заданного значения.
Сильная сторона лимитных заявок заключается в том, что они позволяют, предугадывая движения рынка, размещать заявки там, где, по мнению трейдера, может оказаться цена.
Кроме того, к таким заявкам обычно применяются более низкие комиссии, чем к рыночным. Это так из-за того, что к рыночным заявкам обычно применимо то, что называется «taker fee» («комиссия получателя»), а к лимитным заявкам — то, что обычно называется «maker fee» («комиссия создателя»).
Причины, по которым эти комиссии называются именно так, заключаются в том, что тот, кто размещает рыночную заявку, просто принимает («taking») текущую рыночную цену. А лимитные заявки находятся за пределами рыночных цен, они добавляют рынку ликвидности и, в результате, «создают рынок», за что их создатели вознаграждаются более низкими комиссиями.
Обратите внимание на то, что бот, который мы тут рассматриваем, лучше всего подходит для работы с рыночными заявками.
И, завершая разговор о комиссиях, хочу отметить, что задавая значение PROFIT_THRESHOLD
нужно учитывать и комиссии.
Для того чтобы получить прибыль, бот должен сначала выполнить операцию BUY, а потом — операцию SELL. А это значит, что комиссия будет взята два раза.
В результате бота нужно настроить так, чтобы прибыль, получаемая с продаж, по меньшей мере, покрывала бы комиссии. В противном случае бот будет торговать в убыток.
Поразмыслим об этом, исходя из предположения о применении комиссий, не зависящих от суммы заявки и от вида операции. Итак, комиссия за покупку актива на $100,00 составляет $0,50. Если этот актив будет продан за $100,75 и при этом будет взята такая же комиссия, то окажется, что валовая прибыль составляет 0,75%. Но, на самом деле, тут мы имеем дело с чистым убытком в 0,25%.
А теперь представьте себе, что ваш бот всегда закрывает сделки с чистым убытком. В такой ситуации можно довольно быстро потерять немалые деньги.
Итоги
Моей основной целью было раскрытие концепций, о которых нужно знать при разработке торговых ботов. Я старался описать всё так, чтобы это было понятно даже тем, кто раньше никогда не торговал на бирже. При этом я не привязывал повествование к какому-то конкретному языку программирования.
Я исходил из предположения о том, что читатели этого материала знают о том, как, пользуясь выбранным ими языком программирования, выполнять HTTP-запросы. Поэтому в детали программирования я не вдавался, сосредоточившись на других вещах.
Я рассказал вам о разработке торговых ботов всё, что хотел. Надеюсь, теперь вы сможете создать собственного бота.
А вы пользуетесь торговыми ботами?
На каких языках программирования пишут торговых роботов – вопрос не праздный и не имеющий однозначного ответа.
Наиболее распространённым и интересующим вопросом у пользователей, начинающих заниматься алгоритмической торговлей, является: «На каком языке программирования лучше всего создавать торгового робота?».
Однозначного ответа здесь нет, поэтому никакого вариант «лучше» не существует. При выборе инструмента для создания будущего помощника необходимо учесть большое количество факторов: личную стратегию, применяемую в работе, желаемый функционал и настройки, производительность, модульность и другие.
В этой статье поговорим о том, какими знаниями, навыками и инструментами необходимо владеть, чтобы создать надежного робота-консультанта для биржевого трейдинга, какой язык программирования для этого подойдёт, а также рассмотрим главные этапы разработки бота.
Содержание
- В чем преимущества и недостатки самостоятельной разработки робота для торгов
- Какие шаги включает в себя процесс разработки торгового робо-советника
- Финансовый анализ, заложенные алгоритмы, торговый движок
- Как выбрать язык для программирования торговых роботов
- Отладка и тестирование торгового робота на виртуальном счете
- Знание каких языков программирования необходимы для создания торгового робота – разработка бота от А до Я
- MetaQuotes Language 5
- С#
- Java
- Python
- Инструменты, которые понадобятся при разработки робота для трейдинга
- Wealth-Lab
- MetaStock
- Omega Research
- TSLab
- StockSharp
- LiveTrade
- SmartX
- Основные этапы разработки бота для торговой площадки
- Этап 1: идея и детальные описания будущей системы
- Этап 2: предварительное тестирование
- Этап 3: анализ роботизированной системы
- Этап 4: ядро
- Этап 5: разработка торговой стратегии
- Этап 6: тестирование
- Этап 7: анализирование результатов
- Возможно ли разработать торгового робота для биржевой работы без навыков программирования?
- Способ 1: Написание торгового робота, используя инструменты внутреннего языка вашего программного обеспечения
- Способ 2: использование табличного процессора Excel
- Способ 3: использование аналитических платформ
- Способ 4: применение в процессе разработки трейдингового робота языков программирования
В чем преимущества и недостатки самостоятельной разработки робота для торгов
Наверняка каждый участник биржевой торговли не раз задумывался о разработке своего индивидуального роботизированного помощника, который автоматизировал бы процесс торговли.
Самым простым путем решения этого вопроса будет обращение к программисту, который учёт все пожелания трейдера и создаст подходящего торгового робота. Но здесь есть также свои «подводные камни»:
- возможно стратегия, заложенная вами в бота, окажется прибыльной;
- не каждый трейдеры имеет возможность оплатить услугу, так как стоимость создания скрипта может начинаться от 5$ и заканчиваться тысячами;
- редко, когда система устраивает покупателя после первого раза, чаще код отправляется на доработку, чтобы исправить недочёты;
- вы не сможете разобраться, что написал специалист, если не знаете языка программирования, что в итоге обесценит товар.
Прежде чем прибегать к услугам специалиста, можно попробовать разработать роботизированную систему самостоятельно. Навыков программирования не понадобится – сервис самостоятельно соберёт консультанта согласно заданным ранее настройкам.
Однако и тут можно столкнуться со следующими неприятностями:
- у вас не будет возможности подключить к системе любые выбранные индикаторы;
- подобные роботы не предполагают работу с аналитическими данными и прямыми потоками котировок через API.
Какие шаги включает в себя процесс разработки торгового робо-советника
Финансовый анализ, заложенные алгоритмы, торговый движок
Первым делом, прежде чем начать разработку торгового консультанта, необходимо чётко представить, какими способностями он будет обладать, какой функционал в себя включать и какие задачи будет закрывать.
Если начать анализировать эти стороны робота в процессе программирования, велик шанс, что вы начнёте выискивать более преимущественные стороны, и в результате позже будете переделывать всю систему.
Первым делом необходимо продумать, формализовать и разработать торговый алгоритм. Важно, чтобы данный алгоритм был расписан в мельчайших подробностях.
Создание алгоритмов для трейдинга, логика торговых роботов:
Обратите внимание! Условий для робо-советника может быть неограниченное количество. Здесь важно, чтобы он полностью отвечал ваших требованиям и закрывал необходимые задачи, поэтому гранью здесь является фантазия разработчика.
Чтобы создать максимально подробный первичный образ робота, ответьте себе на следующие вопросы:
- Нужно знать по какой стоимости приобретать тот или иной актив. Если мы выложили, а заявка по-прежнему висит, цена ушла. Берем по расценкам рынка?
- Что делать, если заявка отыграла себя только на половину? Остаток продаём по рыночной стоимости? Через какой промежуток времени?
- Отключаем робота раньше, чем завершиться торги? Насколько раньше? Будет ли он основан на спокойной волатильном боковике или, наоборот, на всплеске?
- В какие дни робот будет осуществлять торговлю? На протяжении всей недели или в активно волатильные дни – в понедельник и пятницу?
- Какие останавливающие приказы будут запрограммированы в робо-советнике?
Таких вопросов при анализе рынков возникает большое множество и важно проработать каждый из них, чтобы в конце программирования и в последующей работе не возникло неприятностей.
Как выбрать язык для программирования торговых роботов
На втором шаге важно решить, какой язык программирования будет использоваться в разработке.
Если у вас уже есть определенные знания в сфере программирования и вы владеете, например, С#, то скорее всего вы будете писать стационарное приложение, в котором будет применено API торгового терминала вашего брокера, допустим это будет программный продукт QUIK.
Интересно! Если вы не сталкивались с программированием, но хотите обрести эти навыки и разработать собственного бота, обратите внимание на языки QPILE и QLUA, которые встроены в рабочий комплекс QUIK.
Отладка и тестирование торгового робота на виртуальном счете
Третьим шагом будет проверка нашей работы, когда робот сформирован и написан.
Важно! Этап тестирования и отладки крайне важен в данном деле, так как даже самая незначительная ошибка в системе может стоить крупных денег!
Робота лучше тестировать в форвардном формате. То есть, выбираем небольшой промежуток времени, проводим тест, убираем некоторые недочеты, добавляем новые элементы, затем берем следующий промежуток времени, тестируем и сравниваем полученные результаты с предыдущими. И так далее.
Если роботизированная система на каждом промежутке времени показала хорошие результаты, можно переходить к реальному тестированию.
Виртуальный счет практически идентичен реальным продажам, только здесь нет рисков потерять всю свою прибыль при малейшей ошибке.
Однако все равно важно тестировать программный продукт на минимальных объемах, так как комиссионные сборы брокера никто не отменял, тем более если ко всему этому прибавляется новая не опробованная стратегия, которая ранее не использовалась вами в торгах.
Важно! В трейдинге необходимо просчитывать свои действия на несколько ходов вперед, быть готовым к неудачам. Однако также важно замечать положительные моменты, даже прибыльные микро сделки на этапе тестирования.
Знание каких языков программирования необходимы для создания торгового робота – разработка бота от А до Я
Анализируя всю вышесказанную информацию, можно прийти к логическому выводу, что выбрать язык или несколько языков программирования для создания роботизированной платформы – этап уже непростой, и он требует глубокого анализа системы.
Выбирая язык программирования для разработки роботизированного инвестиционного советник важно учитывать следующие факторы:
- наличие конкретной документации;
- имеются ли опорные источники по выбранному языку программирования, чтобы в случае вопроса было куда обратиться;
- наличие бесплатных доступных примеров;
- чаты, форумы, беседы, где можно спросить совета у опытных разработчиков или любителей, в ассортименте которых есть успешные работы;
- распространённость биржи, где вы собираетесь применять робота-консультанта.
Даже самые незначительные представления о языке программирования, на котором вы решили писать скрипт, дадут вам возможность самостоятельно проанализировать готовую систему и отредактировать ее после завершения работы. Так не придется каждый раз просить помощи или совета у опытного специалиста, да и времени будет затрачено меньше
Кроме того, для разработки различных областей робота-советника используются соответствующие языки программирования:
- торговый двигатель – доступная и простая система, отвечающая за выполнение легких задач, создается на языках C, C++;
- торговый робот для управления настройками – данная система отвечает за управление алгоритмами и редактирует интерфейс пользователя, включает в себя механизмы представления результатов торговли; пишется программа на языках C++, С#, Java и подобные;
- сервис для тестирования рабочей платформы на основе исторических данных и подбора параметров для торговли – модуль отвечает за тестирование новых алгоритмов, осуществляющееся на основе исторических данных, а также заново настраивает текущие алгоритмы; для написания используются только скриптовые языки программирования.
Так какой же язык программирования для написания торгового робота выбрать: Java, Python, C# или C++?
На сегодняшний день фондовый рынок выдвигает свои условия, сюда входит также разработка торговых роботов, а именно их функционала, который ограничивается биржами, учитывая то, на каком языке помощник был написан.
Наибольшим спросом пользуются следующие языки: MetaQuotes Language 5, C#, Java, Python и C++. Последние два являются наиболее простыми для изучения.
MetaQuotes Language 5
Данный язык программирования похож на C++, на нем пишутся и разрабатываются программы для сервиса Meta Trader 5, используемой для торговли на биржах Forex, Futures и других.
Главной особенностью языка является специализация на решении задач участников биржевой торговли: от автоматизировано-настроенных продаж до четкого их анализирования.
Синтаксис, как было указано выше, приближен к С++ и дает возможность работать в объектно-ориентированном стиле. В качестве вспомогательной платформы со всеми необходимыми для написания торгового робота инструментами предоставляется среда MetaEditor.
Главными функциями программы являются:
- Консультант – автоматическая торговая система, которая привязывается к определенному графику.
- Графическое отображение рассчитанных зависимостей – это индикатор, разработанный клиентом в качестве дополнения к уже встроенных в систему датчикам.
- Скрипт – сценарий, где прописан ход действий, созданный для единоразового автоматического выполнения.
- Библиотека – совокупность общедоступных функций, где хранятся и распространяются часто используемые модули клиентских программ. Автоматически библиотеки никакие функции не выполняют.
- Включаемый файл – первоначальный текст часто используемых модулей пользовательских программ.
С#
Данный язык программирования был разработан компанией Microsoft. Он многофункционален и удобен по всем параметрам: широкий простор для написания роботов, простота в использовании инструментов, безопасность и надежность.
Возможность создания библиотек, которые являются совокупностью кодов, собранных опытными специалистами, упростила процесс написания торгового робота. Например, подобная программа StockSharp располагает всевозможными кодами для написания инвестиционного торгового брокера.
Обратите внимание! Используя библиотеки, пользователь экономит время на создание брокера и откладку кода. Ведь раньше пользователь, который хотел создать индивидуальную автоматическую систему, должен был сперва написать библиотеку, а для этого требуются достаточно серьёзные знания в сфере программирования. Отнюдь, чтобы создать программного биржевого брокера, достаточно воспользоваться языком C#.
Таким образом, разобравшись в С#, вы сможете работать на любой платформе, так как язык не имеет привязки к какой-то одной. На нем можно как тестировать торговые алгоритмы, так и заниматься написаниемкодов, скриптов и торговых инвестиционных брокеров.
Java
Если сравнивать Java с вышеописанным языком программирования, то можно сделать вывод, что они практически идентичны.
Java является объектно-ориентированным языком программирования, на котором работают многие высокоуровневые функции, важные для создания роботов.
Главной отличительной и положительной чертой данного языка программирования является адаптивность. Торговый робот, который был написан на одной какой-либо определенной платформе, будет без проблем функционировать и на других площадках.
Также, по сравнению с иными языками, Джава маскирует работу основной памяти, что облегчает процесс написания, то есть пользователь периодами не будет понимать, что на самом деле происходит в разрабатываемом коде.
Как и вышеописанный язык программирования, Java не подлежит компилированию с машинным набором цифр. Мультифункциональный язык разъясняет инструкции во время решения задач.
Обратите внимание! Язык программирования Java можно эксплуатировать отдельно от программируемого сервиса.
Python
Python является наиболее востребованным и широко распространенным языком в области программирования. Его синтаксис прост и удобен, а множество встроенных библиотек помогут выполнить самые различные задачи, интегрируемые боту.
Большое количество автоматизированных инвестиционных брокеров поддерживают данный язык программирования, что значительно облегчает работу новичков в этой сфере.
Инструменты, которые понадобятся при разработки робота для трейдинга
Знать языки программирования – одно, а владеть удобными и эффективными инструментами для создания программного продукта – другое. Рассмотрим несколько элементов, которые значительно упростят процесс разработки и написание скрипта.
Wealth-Lab
Данный сервис является самым эффективным на рынке для технической оценки, создания и тестирования роботизированных систем. Основным языком программирования здесь является WealthScript. Здесь также используются различные языки для написания библиотек и программ с поддержкой CLI.
Суть работы продукта в том, что разработчик указывает свою стратегию в подробностях, а сервис собирает заявки на осуществление операций. Посредством специализированных библиотек приказы отправляются в торговый терминал и там исполняются.
Обратите внимание! Данная схема имеет множество ограничений, поэтому с ней тяжело работать на российских фондовых биржах.
Как выбрать язык программирования для создания торгового робота – программирование для трейдера:
MetaStock
MetaStock – является очередных зарубежным сервисом, включающим в себя библиотеку разных показателей и элементов для вывода собственных формул.
Преимуществом платформы является простой язык программирования, а недостатком – совокупность с торговыми терминалами посредством второстепенных библиотек, что также ведет за собой ограничения и проблемы использования на российских финансовых платформах. Минус MetaStock еще в том, что тяжелые стратегии внести в робота здесь нельзя.
Omega Research
Данный сервис предоставляет площадку для тестирования роботизированных инвестиционных брокеров, а также проводит полный их механический анализ. Основным языком программирования здесь является Easy Language, похожий на Pascal.
Из недостатков программного продукта можно выделить частые сбои в системе и сложность настройки. Помимо этого, Omega Research поддерживает только встроенный формат данных и не принимает файлы других систем.
TSLab
Как и вышеописанный инструмент, TSLab является платформой для создания торговых роботов, а также их анализирования и редактирования, оптимизированный именно под российский фондовый рынок. Главным преимуществом является возможность записать торговую стратегию в форме блок-схемы, если пользователь не имеет навыков программирования.
StockSharp
Программный инструмент StockSharp является бесплатным в базовой версии, но имеет расширенную версию Pro, в которой наиболее широкий и привлекательный функционал. Основным языком программирования является C#.
LiveTrade
Данный продукт является плодом работы петербуржской русской компании Cofite. Через встроенный в сервис терминал можно запускать роботов, а в продукте Robotlab от той же компании разрабатывать их.
Здесь также можно записывать торговые стратегии в виде блок-схемы, если не владеть навыком программирования, а затем реализовать их в терминале.
SmartX
Торговая площадка SmartX являет собой не привычный терминал, а полноценный программный продукт, включающий в себя векторный язык программирования TradeScript, созданный специально для разработки роботизированных инвестиционных брокеров в США американской компанией Modulus Financial Engineering
.
Главными преимуществами программного продукта являются:
- возможность реализовать тестирование торговой системы, основанная на исторических данных; при этом, информацию не надо выгружать из посторонних, часто платных, ресурсов, SmartX загружает их самостоятельно;
- построение торговой стратегии на основе тиковых изменений.
Основные этапы разработки бота для торговой площадки
Этап 1: идея и детальные описания будущей системы
Первым делом определить, каким способом вы хотите зарабатывать средства на фондовой бирже. Простыми словами – разработать свою алгоритмическую стратегию или идеи, если их несколько.
Чтобы сформулировать идею было проще, задайте себе четыре важных вопроса, найти ответы на которые непросто, но они быстро продвинут разработку робота вперед:
В чем заключается идея вашей торговой стратегии?
- За выполнение каких задач будет отвечать программируемый вами торговый робот, и каким образом это отразиться на процессе торговли?
- Необходимо ли для качественно написанного советника дополнительно разработать графическую электронную схему или скрипт?
- Возможно ли вашу идею в целом первоначальном виде реализовать технически и какова ее сложность? Нужна ли помощь опытного программиста или возможно справиться самостоятельно?
Дав четкие ответы на данные вопросы вы сэкономите свое время, детальнее проработаете идею и уже осознанно приметесь за написание самой программы.
Этап 2: предварительное тестирование
Если у вас уже имеется алгоритмическая стратегия или идея, её необходимо протестировать на основе исторических данных, используя специальные программы и инструменты, про которые мы рассказали выше.
Обратите внимание! Чтобы разобраться с основным функционалом робота-консультанта нужно выделить несколько дней свободного времени.
Если вы достигли плавного результата, меняющегося на кривой графика, переходите к следующему этапу.
Этап 3: анализ роботизированной системы
Прежде чем приступить к серьезной разработке системного инвестиционного помощника, попробуйте проанализировать и вычленить возможные риски.
Условно они делятся на две категории:
- торговые;
- дизайнерские.
Торговые риски – все те моменты, которые будут упущены в процессе разработки торгового алгоритма.
Дизайнерские риски – это риски отключения электричества, потери связи между робо-советником и фондовой биржей. Данные риски, в отличие от торговых, можно максимально минимизировать, выбрав более надежные и проверенные сервера.
Этап 4: ядро
Для автоматизированных продаж на фондовом рынке участнику биржевой торговли нужно торговое ядро, которое даст возможность проводить торговые стратегии.
Этап 5: разработка торговой стратегии
После того, как ядро создано или выбрано уже готовое, можно начинать написание торговой стратегии. Первым делом важно разобраться с параметрами алгоритмики, а именно:
- расписание продаж (когда стратегия открывает и закрывает позиции);
- автоматизация торговой стратегии (чем меньше элементов использовано, тем лучше).
Как только вопрос с параметрами будет закрыт, нужно описать правила открытия и закрытия позиций.
Этап 6: тестирование
После написания торговой стратегии ее необходимо протестировать на виртуальном счете или реальных торгах.
Обратите внимание! На данном этапе важно убедиться, что разработанная вами стратегия приносит именно те результаты, которых вы ожидали, независимо от состояния рынка, не совершая лишних операций.
Если где-то имеются погрешности, вернитесь на 3 или 4 этап разработки и отредактируйте элементы в них.
Этап 7: анализирование результатов
Дойдя до этого шага, нужно создать журнал сделок участника биржевой торговли. Он должен включать в себя сделки в закрытые позиции (трейды) и автоматически создавать аналитические таблицы и графики, где будут отражены полученные результаты тестирования.
Важно! Необходимо постоянно обновлять информацию и не пренебрегать записями в данном журнале.
Как только вы достигли стабильных результатов, начинайте настраивать параметры для торговой стратегии согласно текущим рыночным условиям.
Возможно ли разработать торгового робота для биржевой работы без навыков программирования?
ТОП-4 доступных и простых способа написания автоматизированного брокера без знания языков программирования
Не всегда есть время и возможность разбираться и изучать программные языки, но всё-таки есть огромное желание создать свою систему. И это реально!
Способ 1: Написание торгового робота, используя инструменты внутреннего языка вашего программного обеспечения
Данный вариант похож на оригинальное написание торгового робота, однако он проще. Например, работая на площадке Quik, участник биржевой торговли может автоматизировать систему под себя, задав определенные параметры. Разработчики площадки содействуют исправной работе, корректируя коды скриптов, чтобы они отвечали на запросы клиента быстро и эффективно. Однако, иногда выполнение задач все-таки затягивается по причине системных сбоев.
Способ 2: использование табличного процессора Excel
Главным преимуществом данного способа является простота и удобность воплощения. Он отлично подойдет новичкам, которые не имеют ни малейшего представления об языках программирования.
Для написания автоматизированного инвестиционного брокера будет необходимо познакомиться с самым примитивным языком – VBA. Синтаксис легок, так что много времени его изучение не займет.
Недостатками использования табличного процессора Excel являются замедленная работа и некоторые проблемы при внедрении робота в торговую систему.
Способ 3: использование аналитических платформ
Применение в работе таких аналитических платформ, как MetaStock или WealthLab не наделяют робота торговыми функциями, их важно адаптировать в процессе разработки. К достоинствам данного способа относят возможность проверки на основе исторических данных, а к недостаткам – частые сбои в системах и необходимость подключать к процессу разработки дополнительные инструменты.
Способ 4: применение в процессе разработки трейдингового робота языков программирования
На основе вышеописанной информации мы выяснили, что наиболее популярными и востребованными для создания автоматизированного инвестиционного брокера являются такие языки программирования, как Java, Python, C#, C++ и другие. Главным плюсом систем, написанных именно через программный метод, является высокая скорость и эффективность работы.
Пользователь также может оптимизировать, использовать различные формулы и попробовать оригинальные стратегические ходы в своей торговле. Нужные формулы можно отыскать на просторах сети Интернет и подставить их в свою торговую стратегию, учитывая определенные активы.
Итак, мы разобрались, как разработать собственного торгового робота и что для этого требуется.
Процесс разработки не так сложен, однако важно понимать, что малейшая ошибка, допущенная в нем, может привести трейдера к убыткам, поэтому здесь необходимо тщательно прорабатывать каждый элемент программного продукта, тестировать его на виртуальных счетах и проводить детальный анализ полученных результатов.
Чтобы создать торгового робота, нужна торговая система
Торговля на финансовых рынках сопряжена с множеством рисков, в числе которых самый главный — это риск совершить ошибку при принятии торгового решения. Мечта каждого трейдера – поставить вместо себя торгового робота, автомат, который всегда в отличной форме, не знает усталости и не подвержен людским слабостям: страху, жадности и нетерпению.
Каждый новичок, приходя на рынок, надеется заполучить или создать четкую и строгую торговую систему, которую можно переложить на язык алгоритмов, и полностью избавиться от рутинной работы. Возможно ли это?
Наличие торговой системы является необходимым условием для торговли, и эта система, конечно, должна быть прибыльной. Когда новичок приходит на рынок, на него буквально обрушивается лавина информации, в которой не так-то просто разобраться. И на помощь здесь приходят книги и форумы трейдеров.
К сожалению, не все авторы книг являются успешными трейдерами, и не все успешные трейдеры являются авторами книг. Многие специализированные ресурсы создаются только для заработка их хозяевами, ведь торговать на свои деньги гораздо сложнее, чем выпускать прогнозы и обучать торговым системам.
Каждый трейдер должен самостоятельно пройти все стадии на пути создания собственной торговой системы. Не зря говорят, что не важно, по какой системе ты торгуешь, главное, чтобы ты действительно торговал по этой системе. Без этого торговля на рынке превращается в азартную игру, исход которой предрешен.
Торговые роботы и Forex
Считается, что рынок Forex обладает огромной ликвидностью и позволяет торговать 24 часа в сутки в отличие от многих других рынков. Поэтому многие трейдеры пытаются создать торговые роботы именно для торговли на валютном рынке, ведь он представлен достаточно большим количеством инструментов.
Правда, скептики заявляют, что на самом деле все валютные пары сильно скоррелированы между собой, и волатильность на форексе слишком маленькая. Но их противники отвечают, что, несмотря на наличие корреляции, каждая валютная пара имеет свой характер, а малая волатильность компенсируется большим плечом.
В любом случае, инструменты форекса являются привлекательными для создания торговых роботов, и большинство сторонников автоматического трейдинга именно на валютных парах оттачивают свои навыки.
Клиентские терминалы MetaTrader 4 и MetaTrader 5 специально разработаны для удобного создания автоматических торговых систем, но при этом их интерфейс продуман и также удобен для ручной торговли.
Как приступить к созданию торгового робота?
Встречается множество подходов к построению автоматической торговой системы. Выделим только несколько основных из них.
Первый подход – математический, основан на попытке создания некой формулы, которая учитывает множество факторов. Такой подход базируется на твердой уверенности, что в основе поведения цен лежит некая модель, которую нужно только подобрать или угадать на основе имеющихся исторических данных.
Зачастую сторонники такого подхода знают слишком много математики и совсем не знают/не интересуются рынком. Рынок для них — чистая абстракция, одна из разновидностей интеллектуальной игры. Такой подход обычно ведет к многолетним изучениям и разработкам, результат в виде работающей автоматической торговой системы сам по себе не является важным.
Второй подход берет за основу изучение закономерностей рынка. При этом не делается никаких попыток понять, почему цена растет или падает при появлении тех или иных фигур технического анализа на графике цены. Преимущество этого подхода заключается в том, что он не требует особых знаний математики и не делает предположений о движущей силе рынка.
Такой подход наиболее понятен и удобен для обучения торговле на рынке. Чаще всего именно его проповедуют трейдеры, получившие всеобщее признание. Недостатком подхода является необходимость постоянно находиться у монитора и отслеживать все необходимые инструменты на экране монитора.
В конце концов трейдер начинает задумываться над автоматизацией торговых процессов, и тут выясняется самая большая проблема – сложность формализации торговых правил при попытке перенести торговые правила на язык алгоритмов. Трейдеры, которые пытаются заказать торговый робот профессионалам, не всегда могут сформулировать правила торговли и найти общий язык с программистами.
Третий подход основан на попытке создать «черный ящик» на основе нейронных сетей с помощью готовых инструментов, широко представленных на рынке в специализированном ПО и в математических пакетах. Строительство своей собственной автоматической торговой системы с применением элементов искусственного интеллекта является очень интересной и увлекательной задачей даже для новичков, так как не требует ни глубокой математической подготовки, ни опыта программирования – все делается с помощью визуальных средств.
От трейдера в этом случае требуются базовое знание индикаторов технического анализа, умение подготовить необходимые ценовые данные и навыки работы с конкретным пакетом по работе с нейронными сетями. Главным недостатком такого подхода является то, что полученный с помощью специализированных инструментов по работе с нейронными сетями торговый автомат на самом деле является «черным ящиком» — принципы его работы неизвестны самому трейдеру, и нельзя в общем случае предсказать, какая фаза рынка ему не понравится.
Программисты часто выбирают четвертый путь – они сразу начинают писать торгового робота и не хотят особенно тратить время на ручную торговлю. Зачем? Ведь можно сразу написать автомат, потратив на это несколько месяцев, и затем только пожинать плоды своего труда.
Но «без труда не вынешь и рыбку из пруда», и программист зачастую вместо торгового робота начинает писать с нуля на известном ему языке программирования всю нужную инфраструктуру – получение и обработка ценовых данных, визуальное представление графиков и индикаторов, собственные средства по тестированию стратегии на истории и так далее.
В процессе этой работы он получает много полезного опыта. Но при этом он, чаще всего, ни на йоту не приближается к конечной цели – созданию автоматической торговой системы. И если даже он пройдет весь путь до конца, то где гарантия, что написанный робот окажется прибыльным? А если он захочет написать другую торговую систему? Нужно все перестраивать и разбираться с новыми неизбежными ошибками программирования.
Есть еще и пятый путь – попытаться купить готовую торговую систему в виде торгового робота и торговать с его помощью, при этом трейдер выступает в качестве оператора или настройщика. Такой вариант существенно экономит время (не требуется изучать множество новых вещей) и позволяет сразу же окунуться в мир автоматической торговли.
Главный недостаток такого подхода проистекает из его достоинств – вы не знаете, как работает данный торговый робот и на каких принципах он построен. И если даже продавец предоставил вам подробное описание заложенной в нем торговой системы, вы никогда не будете в ней уверены до конца.
Впрочем, 100%-ную гарантию не дает ни один подход, кроме депозита в банке. Но это не совсем то, за чем идет человек, интересующийся биржей и возможностями спекулятивного преумножения капитала.
Какой путь в автоматический трейдинг выбрать трейдеру?
Каждый из пяти описанных подходов имеет свои преимущества и соответствует своему типу трейдера. Вряд ли вы без хорошего математического багажа выберете первый путь – попытку аналитического описания рынка. И маловероятно, что вы сразу же пойдете путем строительства торгового робота на основе нейронных сетей. Хотя оба этих варианта очень привлекательны и интересны и предоставляют хорошую зарядку для ума.
Далее в статье мы поговорим только о втором подходе, который уже является классическим. Именно с него начинает свой путь в автотрейдинг подавляющее большинство трейдеров, так как знание технического анализа еще никто не отменял при освоении основ торговли на рынках.
Достоинство второго подхода заключается еще и в том, что после того, как вы самостоятельно поторгуете на рынке вручную и впитаете в себя то, что многие называют чувством рынка, вы уже будете хорошо понимать сами инструменты технического анализа. Помимо этого вы сможете заняться самостоятельно программированием торговых стратегий или созданием нейронных сетей на более высоком уровне.
Первые шаги по созданию торгового робота
Для написания автоматической торговой системы требуются навыки программирования и знание всех тонкостей обработки торговых запросов. Но вы можете на первом этапе начать знакомство с уже готовыми экспертами – торговыми роботами из бесплатной библиотеки Code Base.
Скачайте любой эксперт (торговый робот) и запустите его в тестере стратегий клиентского терминала MetaTrader 4 или MetaTrader 5. Выберите один участок истории с ярко выраженным трендом и второй участок, на котором цена находится в диапазоне/флете. Проведите оптимизацию входных параметров эксперта и посмотрите, как они отличаются на этих двух участках.
Запустите на трендовом участке эксперт с оптимальными параметрами для флета, и наоборот – на флетовом участке с параметрами для тренда. Посмотрите, насколько сильно меняются торговые результаты, как меняются распределения сделок и остальные статистические параметры. Таким образом, вы узнаете, как сильно может меняться поведение торговой системы при изменении ситуации на рынке.
Желательно таким путем исследовать несколько классических торговых стратегий на разных участках истории и на разных инструментах. Такая обкатка в тестере может оказаться хорошей прививкой на будущее от подгонки торговой системы под конкретную историю и поможет лучше понимать суть трендовых и контртрендовых систем.
Следующим шагом может стать создание более сложных торговых систем на основе комбинации уже существующих простых сигналов из набора Мастера MQL5. Вы можете, еще не прибегая к программированию, проверить и развивать свою торговую интуицию, отсеивая плохие сигналы одной системы с помощью фильтра на основе другой системы.
Но и тут главное не перестараться, ведь чем больше входных параметров в торговой системе, тем легче ее подогнать. Немало копий сломано в спорах о том, как отличить оптимизацию от подгонки, здесь нет готовых универсальных рецептов. Но вам может помочь визуализация результатов тестирования/оптимизации и собственный здравый смысл.
Научитесь из всего набора входных параметров выявлять именно те, которые влияют на торговую систему. Не принимайте во внимание второстепенные параметры, которые отнимают время при оптимизации, но не влияют на саму логику системы. Помните, что хорошая торговая система всегда допускает небольшой люфт по второстепенным параметрам, но при этом не делает драматических провалов при небольшом изменении характера рынка.
Вы можете потратить времени на этом этапе столько, сколько вам требуется для того, чтобы быть уверенным, что вы хорошо можете понимать любую торговую стратегию по результатам тестирования и оптимизации. Знание слабых и сильных сторон традиционных систем позволит вам быть более подготовленным при создании своего собственного торгового робота.
Программирование торгового робота
Вы изучили/изучаете язык программирования MQL4 или MQL5 и готовы написать свой первый советник для клиентского терминала MetaTrader. Здесь тоже возможно несколько вариантов.
Во-первых, вы можете разобрать несколько уже готовых торговых роботов по опубликованным статьям, чтобы лучше понимать тонкости программирования.
Во-вторых, вы можете задавать вопросы на форуме MQL4.community или MQL5.community, если самостоятельно не смогли разобраться в каких-то моментах. Обычно остальные участники сообщества охотно помогают новичкам, если видят их искреннюю заинтересованность в изучении предмета.
В-третьих, вы можете заказать доработку или разработку советника или индикатора в сервисе Работа, если по каким-то причинам не можете сделать нужную программу самостоятельно. Но даже при заказе торгового робота через фриланс-сервис вам желательно хорошо разбираться в вопросах тестирования стратегий, чтобы говорить с разработчиком на одном языке.
Кроме того, знание языка программирования на базовом уровне позволит вам впоследствии самому вносить мелкие исправления и изменения в полученный код уже после завершения работы. Ведь не будете же вы по каждому мелкому поводу обращаться к другому программисту, гораздо быстрее и проще сделать это самому.
«Всё украдено до вас»
Как найти собственную торговую систему или хотя бы знать, в каком направлении нужно сосредоточить поиски? Каждый трейдер дорожит своей системой, если она у него есть, и каждый новичок мечтает создать свою или получить уже готовую прибыльную стратегию. При этом любая найденная идея кажется слишком простой по сравнению с тем, какой должна быть настоящая работающая система в представлении новичка.
Военные во всех странах склонны к чрезмерному уровню секретности, и не зря на этот счет существует множество анекдотов, среди которых есть и такой: «Военная тайна заключается не в том, что вы это знаете» — говорит инструктор курсантам военного училища, — «а в том, что это знаете именно вы». С торговыми системами ситуация примерно такая же: большинство трейдеров используют простые известные торговые идеи, только с небольшими доработками, например, в виде использования трейлинг стопа (Trailing Stop) или подтверждения сигналов от трендовых индикаторов.
Существует множество закрытых трейдерских форумов, на которых идет совместная разработка или доработка секретных торговых систем и куда закрыт вход простым смертным. Самое интересное, что ничего секретного на них найти нельзя, всегда берется старая классическая идея, вроде «торгуй по тренду» и доводится до совершенства с помощью каких-то новых неизвестных широкой публике индикаторов.
Поэтому вы можете смело брать доступные в исходном виде коды торговых роботов и пытаться найти правильное их использование на тех или иных инструментах и таймфреймах. Тут на память сразу приходит другая избитая поговорка: «Вы не любите кошек? Вы просто не умеете их готовить!» В это трудно поверить, но вероятность того, что вы придумаете что-то принципиально новое, очень мала. Тут главное всё правильно сделать самому из доступных ингредиентов и не думать, что кто-то сверхумный пользуется какими-то секретными разработками из лабораторий NASA. В этом и заключается секрет Грааля.
Редкая птица долетит до середины Днепра…
«Если торговые идеи лежат буквально под ногами, то почему ими никто не пользуется?» — возникает резонный вопрос. Ответ на него кроется, вероятно, в человеческой психологии. Многие банки и крупные инвестиционные фонды содержат в своих штатах трейдеров, которые торгуют по расписанным правилам и в объемах, которые им позволены. Но почему-то редко когда институциональные трейдеры уходят на вольные хлеба и начинают торговать на свои деньги.
Получается, что нужна не только сама торговая стратегия, но и железная дисциплина, чтобы выполнять все её правила. Многие трейдеры с горечью убеждались, что они такие же смертные, как и все остальные, и им не чужды все те проблемы психологии, которые описаны в книгах. И осознав, что самый большой враг трейдера — это он сам, трейдер задумывается о создании торгового робота, который будет работать вместо него и снимет с него психологическую нагрузку.
Отклоняясь немного от темы, приведем в пример легендарную группу «Черепахи», которая успешно торговала на множестве рынков в конце 20-го века. Почитайте «Путь черепах», и вы поймете, что главное в профессии трейдера именно железная внутренняя дисциплина, а не какая-то суперсекретная система. Увы, большинство не сможет торговать по прибыльной стратегии, даже если получит её даром.
Проблема заключается в том, что большинство торговых стратегий, которые успешно торгуются вручную, с трудом поддаются формализации и переложению на язык компьютеров. Те стратегии, которые легче всего запрограммировать, например, на пересечении двух скользящих средних, являются слишком простыми и требуют множество уточнений и доработок, чтобы ими можно было пользоваться на деле. Таким образом, простая идея обрастает множеством внешних параметров, которые позволяют роботу избежать ложных входов и ошибок, хорошо видимых человеку. Возникает проблема оптимизации торгового робота. В итоге она не должна превратиться в переоптимизацию и подгонку под конкретный участок истории.
Именно для борьбы с подгонкой в тестере терминала MetaTrader 5 существует возможность форвардного тестирования на найденных при оптимизации параметрах системы. Если результаты форвард-тестирования торговой стратегии не сильно отличаются от результатов, полученных на участке оптимизации, то есть надежда, что торговый робот будет достаточно стабилен некоторое время после его запуска в онлайн-торговлю. Длина интервала для проведения оптимизации параметров и длительность этого «некоторого времени» зависят от конкретной торговой системы.
Таким образом, оптимизация торгового робота перед его запуском в онлайн-торговлю по сути напоминает раскручивание пращи — от того как тщательно мы раскрутили и швырнули снаряд из пращи, зависит насколько далеко и точно он улетит от точки броска. Хорошо построенный торговый робот продержится на счете с положительным результатом более длительное время, чем его собрат, полученный в результате подгонки. Можно сказать, что Грааль — это работающая идея и правильная корректировка параметров, проводимая время от времени при изменении рыночных условий.
Иллюстрацией для такого примера могут служить результаты Чемпионата по автоматической торговле Automated Trading Championship, проводимого уже в течение многих лет. Все участники перед началом соревнований проходят автоматические проверки присланных экспертов — торговых роботов на интервале с января по конец июля. Главным требованием для прохождения такой проверки является полученная прибыль за восемь месяцев тестирования. Но менее половины допущенных к Чемпионату роботов остаются в плюсе после трехмесячной автономной работы.
Вы также можете попробовать свои силы в создании и правильной настройке своего торгового робота, чтобы принять участие в Чемпионате и получить результаты форвард-тестирования своего детища. Тем более что участие является бесплатным, а призы ощутимыми. Как говорится — «Welcome»!
Заключение
Профессиональный трейдер, торгующий внутри дня, проводит за монитором много часов в ожидании удачного момента для совершения сделки, и он не всегда может быть в отличной форме.
Большинство трейдеров приходит к мысли, что зачастую их действия при торговле нарушают их же собственные торговые правила. Пусть не все торговые системы можно автоматизировать, но даже для них в большинстве случаев можно создать вспомогательные инструменты в виде индикаторов, аналитических систем и фильтров ложных сигналов.
Мы не даем здесь конкретных рекомендаций по изучению языка MQL4 или MQL5, на эту тему написано много других полезных статей. Цель данной публикации состояла в том, чтобы дать начальное представление о том, как и с чего начать создание собственного торгового робота для терминалов MetaTrader 4 и MetaTrader 5.
Надеемся, что эта статья сэкономит новичкам время и укажет нужное направление в нелегком деле создания автоматической торговой системы.
Предупреждение: все права на данные материалы принадлежат MetaQuotes Ltd. Полная или частичная перепечатка запрещена.
Все мы знаем, что основное достоинство терминала Metatrader 4 – это возможность создания роботов и торговля с их помощью.
Далеко не все трейдеры владеют программированием на mql4/5. Разработчики программы Forex Tester смогли решить эту проблему. Теперь можно создать робота или реализовать торговую идею в виде индикатора на ресурсе «Визуальный конструктор стратегий» (Visual Strategy Builder). Без навыков программирования.
Как это сделать, плюсы и минусы бесплатного (на текущий момент) конструктора роботов – в нашем материале.
Visual Strategy Builder — Автоматизируем Стратегии без программирования
Постоянные читатели нашего сайта знакомы с Forex Tester 4 – уникальным симулятором торгов, выступающим в роли тренажера, тестера и анализатора. Программа имела функцию написания на заказ индикаторов и советников, совместимых с Metatrader. Теперь разработчики платформы решили дать каждому трейдеру шанс самостоятельно создать собственные стратегии.
Сконструированные с помощью готовых модулей команд скрипты также совместимы с Metatrader 4, их создание на период бета-тестирования полностью бесплатно. Так что спешим читать статью и воплощаем в жизнь все идеи индикаторов и советников, которые были отложены до лучших времен.
Сервис Visual Strategy Builder расположен по адресу: https://tools.forextester.com/
Зачем нужен Visual Strategy Builder?
Visual Strategy Builder (VSB) представляет собой программную оболочку с набором инструментов теханализа, которые хорошо знакомы пользователям Metatrader 4. В отличие от этой торговой платформы VSB позволяет задавать в индикаторах правила открытия позиции и установки ордеров тейк-профит и стоп-лосс.
Любой новичок может выбрать сигнал на открытие позиции из набора готовых опций (кроссоверы, пересечения уровней, больше/меньше и т. д.). Эти настройки открывают недоступную для Metatrader 4 возможность протестировать работу одного или нескольких индикаторов.
Например, можно получить реальный торговый результат по стратегии пересечений скользящих средних линий. Такой советник создается в VSB за 5 минут, потом его можно экспортировать в Metatrader 4 или Forex Tester.
Разобравшись с созданием одного индикатора в Visual Strategy Builder, трейдер может в несколько кликов создать рабочую автоматизированную стратегию и тоже проверить ее в тестере. Если советник показывает положительные результаты, то по его сигналам можно торговать на реальном счете через Metatrader 4.
Кстати, тестировать стратегию однозначно лучше через Forex Tester – там точнее котировки и можно быстро эмулировать сессию за любой торговый день. Например, выбрав какой-нибудь «черный вторник», чтобы воочию понять, как аномальная волатильность повлияет на настройки мани менеджмента.
Профессиональные трейдеры могут экспортировать код советников прямо в VSB, соединять его с созданными там программами или редактировать в Metaeditor и отправлять обратно в Metatrader 4.
Visual Strategy Builder будет полезен тем, кто ищет новые идеи – программа поддерживает библиотеку стратегий пользователей. Любой желающий без навыков программирования сразу поймет «внутренности алгоритма» по составу индикаторов и описанным правилам торговых сигналов. Тут же можно самостоятельно убедиться в результативности торговой системы.
Как работать на платформе Visual Strategy Builder
Сервис Visual Strategy Builder расположен по адресу: https://tools.forextester.com/
Использование VSB требует регистрации – это быстрая и несложная процедура. Введите адрес электронной почты и придумайте пароль для входа. Он должен быть не менее 8 символов, содержать буквы разного регистра, почтовый ящик лучше указать gmail.
После заполнения вышеуказанных строк программа сразу открывает окно конструктора стратегий, автоматически переходя на русскоязычную версию.
Валютным спекулянтам доступно создание стратегии, использование шаблона от разработчиков или других пользователей VSB, а также создание собственного «индикатора мечты». Если пользователь планирует собрать торговую систему, надо нажать на иконку «Стратегии».
Платформа удобно сохраняет их под выбранным пользователем именем с кратким описанием сути системы. На странице предусмотрена кнопка возврата, если трейдер допустил ошибку на предыдущем этапе.
После шага «Создать стратегию» обратной дороги нет. Впрочем, совсем не обязательно бросаться мастерить сложные торговые системы. Программа, например, способна сильно упростить жизнь внутридневным трейдерам, автоматизировав некоторые индикаторы. Они расположены списком на панели слева под опцией «Элементы». Выше этого списка указаны различные целевые ориентиры для применения в стратегиях:
- Уровни (Ценность);
- Конкретная цена;
- Диапазон (цены открытия, закрытия, максимумы и минимумы свечей);
- Открытие по дням недели, месяца (опция время);
- По конкретному объему или его абстрактному критерию;
- Таймфрейм.
Перечисленные опции можно объединять друг с другом, накладывая различные условия выполнения сделки, например, пробой уровня только до американской сессии и т. д. Определитесь с главным инструментом своей стратегии и перетащите его в окно «Состояние 1».
Как только он там отобразится, можно приступать к редактированию параметров. Наведите курсор на поле присоединенного Bollinger Bands (BB), чтобы увидеть эту опцию.
После ее нажатия появится таблица со стандартными настройками линий BB. Стоит отметить одну особенность: для каждой из них сигналы на открытие позиций прописываются отдельно.
Набор правил входа в позицию доступен после нажатия рядом окна «Операции», вместе с которым активируется аналогичная опция слева со списком шаблонов. Учитывая, что работа идет с верхней линией, а вход в рынок планируется по контртренду, выбираем кроссовер сверху вниз.
Теперь конкретизируем тип позиции и условия мани менеджмента с помощью пункта меню на левой панели «Действия». Перетаскиваем в поле ордер на продажу и редактируем его параметры.
Пройдем по пунктам снизу вверх – индикатор на графике предусматривает многократное открытие позиции, поэтому ставим «Нет» на предложение открыть ордер один раз. Магический номер необходим, если открытие позиций по сигналам Bollinger Bands будет пересекаться с работающими на графике другими советниками.
Остальные опции понятны, следует только внимательно отнестись к пунктам: 25 – это для четырехзначной системы котировок. При пяти знаках умножайте значения пунктов на 10.
Для нижней линии Боллинджера потребуется создать второе правило, опцию можно выбрать слева вверху, повторив все вышеописанные операции со следующими изменениями:
- В настройках индикатора выбираем нижнюю линию;
- Кроссовер – снизу вверх;
- Тип ордера, открываемого по рынку – «Покупка».
Полученную стратегию можно сохранить и экспортировать в ForexTester или Metatrader 4. В последнем случае используйте латинские буквы в названии файла. Стратегия сохраняется в файл ex4 в папку, выбранную трейдером.
Запустить написанный советник можно сразу после его установки в Metatrader 4. Это делается обычным способом, описанным на нашем сайте.
Заключение
Основной плюс Конструктора стратегий от Forex Tester – простота интерфейса и функциональность шаблонов. Это позволяет трейдеру частично автоматизировать стратегии или дополнить ручную торговлю дополнительными сигналами, которые приходилось искать визуально на графике.
Любителей сеток особо порадует наличие опции «Мартингейл», а также команд на закрытие всех ордеров по условию. Среди минусов VSB следует отметить баги бета-версии и будущую запланированную плату за опцию. Так что спешим писать и экспортировать советников, пока платформа имеет открытую лицензию.
На ней можно попробовать создать прототип своей торговой идеи и, если она окажется прибыльной, обратиться к программистам для полноценной ее реализации.
Тема на форуме
С уважением, Алексей Вергунов
Tlap.com