Создание ботов для торговли криптовалютами и акциями на Postgres
Сразу скажу, в этой статье не будут описаны алгоритмы торговли, хотя они есть и приносят прибыль. Моя цель показать вам удобный инструмент для создания ботов и поделится результатом пятилетней работы. Если кому-то не интересны боты, то здесь есть одно техническое решение, которое как вишенка на торте может многих заинтересовать, аналог dbms_pipe в ORACLE, реализованный на чистом pgsql, ну а также много других моих технических решений. Это не основная моя работа, скорее хобби. Сначала был просто интерес написать алгоритм, который гарантировал если не плюс, то хотя бы сохранение средств на падающем рынке, про растущий рынок говорить не интересно там и так все хорошо. По образованию я не экономист, а советский айтишник, и в качестве своих невидимых соперников рассматривал волков с Уолт стрит. Для меня это был вызов сродни изобретению вечного двигателя, но с возможностью реализации. В разработке алгоритма торговли мне сильно помогла книга Эдвина Лефевра «Воспоминания биржевого спекулянта». Итак, приступим.
Требование к боту
Бот должен зарабатывать денег больше чем банковские вклады, то есть больше чем 5% в валюте. Сразу скажу это достигнуто, бот работает уже 3 года и доход даже на падающем рынке не опускался ниже 35%. В хороший год достигал 100%. Алгоритмы здесь рассматривать не буду. Так же понимаю, что возможны и убытки и математически доказать, что всегда будет прибыль невозможно, и я всегда готов что будут убытки.
. Легкость разработки алгоритмов и прогон этих алгоритмов на исторических данных. Я постараюсь вас убедить в этой статье, что лучше pgsql вы не найдете. Главное инструмент должен позволять вам сосредотачиваться именно на алгоритме, а не программировании.
Надежность бота, он должен работать 24 на 7. Это реализовано, падает бинанс но не бот.
Производительность, сейчас я торгую 350 парами криптовалют в паре к USDT и никаких проблем с производительностью, нет. Раз в минуту я опрашиваю биржу по этим парам и в течении 30 секунд все данные по всем парам обработаны. Запас прочности еще есть.
Легкость администрирования. Вся реализация написана на pgsql, достаточно делать импорт экспорт. Проблем с администрированием нет.
Почему Postgres
Удобный пакет pgsql-http который позволяет общаться с внешним миром из сохраненных процедур.
Быстрая и удобная работа с json.
Большой набор математический функций.
Удобный пакет dblink позволяющий запускать много процессов postgres.
Sql прекрасный язык для обработки данных и синхронизации работы с данными, это важно когда вдруг два или три бота решат в один момент купить или продать свой актив.
Удобный IDE в виде pgadmin, с любого рабочего места можно ничего не устанавливая через браузер, работать с кодом.
Я знаю и люблю postgres как в прочем и oracle, но oracle за любовь денег хочет.
Как пример выше сказанного привожу запрос который показывает объём в стакане бинанса на покупку с отклонением в 3% вниз и в верх.
А теперь попробуйте все то же самое написать на другом языке. Конечно получится, но думаю будет не так изящно.
Общая архитектура системы.
Система состоит из следующих модулей
Основная программа, написана на pgsql.
Боты, запускаемые с определенным интервалов времени, боты делятся на служебные и боты для торговли. Боты для торговли разделяются на боты, торгующие в LONG и боты, торгующие в SHORT. Служебные боты — это бот для работы с телеграмм и бот, который может определять общую стратегию торговли для всех пар, в данный момент я его не использую, поскольку не смог ответить на вопрос, на до ли связывать между собой результаты торгов разными парами. Сейчас они у меня торгуются не зависимо. Это как пример игры в казино вы играете за разными столами, и если в сумме вы выиграйте, прекращать играть за всеми столами или продолжать играть на всех столах дальше. Эмулятор показал мне что лучше торговать не зависимо от результата торговли в других парах, но я не уверен, что это правильно. Боты реализованы на pgsql.
Бот выполняющий асинхронные команды, которые получает из pipe, реализация на pgsql.
Программа для посылки сигнала останов, основной программе, реализация на pgsql.
Командные файлы операционной системы для запуска и останова основной программы, написаны на bash.
Есть список ботов, которые надо запускать через определенные интервалы времени. Бот — это сохраненная процедура на pgsql. Боты запускаются выполнятся параллельно, каждый в своем процессе postgres. Боты делятся на два класса торговые и служебные. Торговые боты одинаковые, но можно реализовать и разные, каждый торгует своей парой криптовалют. Служебных ботов несколько, бот для работы с телеграмм, бот для выполнения асинхронных операций (эмуляция автономных транзакций), такие как логирование или вывод сообщений в телеграмм и прочие вспомогательные боты. Главная программа запускает боты в цикле, с определенным интервалом времени. Можно было это сделать более правильно так что бы каждый бот возвращал время, когда его надо запустить, но это я отложил на будущее.
В таблице bots содержится список ботов, которые будут запускаться. Key – это уникальный ключ бота, для торговых ботов он означает имя торговой пары, name имя бота, имя сохраненной процедуры, params – это переменные бота с которыми он работает, is_run флаг который показывает бот надо запускать или нет, и последние поле — это комментарий. Вот как верхняя выглядит часть данной таблицы. В таблице содержатся как служебные боты, так и боты для торговли. Боты для торговли делятся на торгующие в Long и Short. Для торговли в Short я использую монеты DOWN которые предоставляет binance, но в будущем предполагаю работать с маржинальной торговлей, поскольку возможностей больше. Вот как выглядит таблица в базе.
Теперь часть кода, которая запускает эти боты, дальше будет приведен полный код главной процедуры.
Как вы можете видеть я использую асинхронный запуск через dblink_send_query, в качестве параметра боту передаётся его key. Данный цикл выполняется раз в 5 секунд. Теперь посмотрим на стартовую часть, когда бота.
Вначале бот получает свои параметры из таблицы bots и затем смотрит, когда его последний раз вызывали и если прошло меньше 55 секунд, то прекращает работать, бот для телеграмма запускается каждые 5 секунд и проверяет не прислали команда от хозяина или не надо ли что сообщить хозяину. В конце работы бота, бот сохраняет параметры в таблице bots что бы использовать их при новом вызове.
Сохранение параметров в таблице сделано по двум причинам, первое в postgresql нет пакетов где можно держать удобно сессионные переменные и второе в случае перезагрузки бота сессионные переменные нас не спасут. Прошу прощения если не сумел донести основную идею, но думаю если вы сумеете прочесть до конца, то все прояснится.
Пакет pgsql-http
Это основное расширение, который я использую для общения с внешним миром. Я сделал небольшую обертку для обработки ошибок сети. Хочу поблагодарить автора данного расширения. Обертка для выполнения https запросов, в случае ошибки пробуем повторить запрос .
Подключаем телеграмм
Выше я немного рассказал о удобном пакете pgsql-http. На нем держится все взаимодействие с внешним миром. Для управления ботом я выбрал мессенджер телеграмм. Поскольку он обладает самым удобным API. Я не буду описывать шаги создания бота в телеграмме, в документации к нему все написано, просто покажу процедуры для взаимодействия с сервером телеграмма.
Процедура для отсылки сообщения выглядит так
Бот для работы с телеграмм.
Бот запускается раз в 5 секунд и проверяет новые сообщения от телеграмм, а так же отправляет сообщения от торговых ботов.
DBMS_PIPE средствами pgsql
В ORACLE есть удобная вещь, это автономные транзакции. Для логирования в таблицу они просто необходимы, иначе в случае ошибки произойдет rollback, и вы ничего не увидите. Вначале я использовал dblink, запускал отдельный процесс, для эмуляции автономной транзакции, но это было не очень красиво, хотелось что-то более изящного. В результате был написан dbms_pipe для postgres.
Создаем fifo mkfifo crypto_bot_pipe.
Создаем процедуру для чтения из pipe .
Используем команду copy для чтения из pipe в таблицу и затем проходим по этой таблице и выполняем sql запросы и так до тех пор, пока не получим команду stop. Обязательно поставте внутри процедуры commit иначе ничего не уведите в других сессиях. Сейчас покажу как это использовать.
Создаем процедуру для записи в pipe.
Как видим все очень просто, но это позволяет создать некий аналог автономных транзакций, что мне очень помогло. Это решение до сих пор мне очень нравится.
Выполнение системных команд из pgsql
В процессе разработки бота, мне захотелось запускать и останавливать pgadmin с помощью бота телеграмм, для этого надо было выполнять системные команды из pgsql. Сделано это было следующим образом
Логирование действий бота
Система логирование подразумевает фиксацию ошибок бота и его действий, например, по покупки или продажи криптовалюты. Логирование обязательно должно быть асинхронным. Например, в случае продажи криптовалюты мы хотим вывести сообщение в телеграмм, а сервер телеграмма не доступен в этот момент. Если делать это синхронно, то мы должны зависнуть в данной точке и ждать доступности телеграмма, что для нас не приемлемо. Мы записываем сообщение в таблицу используя эмуляцию механизма автономных транзакций, описанную выше и затем срабатывает триггер на таблице логирование и происходит отсылка сообщений в телеграмм. Таким образом мы нигде не зависаем и гарантировано получим уведомление, а также в случае ролбэка в боте, в таблице логера останется запись. Главное не отсылать сообщение об ошибки самого телеграмма в телеграмм.
В функции tlg_send_log сообщения необходимые для отправки в телеграмм помещаются в таблицу tlg_messages, при очередном запуске телеграмм бота они будут отосланы в телеграмм.
А вот функция логирования.
Еще раз вкратце как работает логирование, код у вас перед глазами.
Вызывается функция log_commit, эта функция через pipe посылает команду в другой сессии выполнить функцию log, которая просто вставит сообщение в таблицу log, но это в другой сессии и сразу закомитится. Так что если основная сессия даст сбой log у нас останется. На таблице log у нас сработает тригер который проверит надо ли отсылать данное сообщение в телеграмм и если надо то положит сообщение в таблицу tlg_messages, и когда запустится, мой телеграмм бот он отошлет это сообщение мне. Свои дети и свои идеи самое лучшее, мне кажется это хорошее решение. Вот кусок кода из телеграм бота который отсылает сообщения
Если произойдет сбой в отправке, то сообщения не будут удалены из таблицы tls_messages и будут повторно отправлены позже.
Драйвер для доступа к бирже Binance.
Я начинал торговать на wex, затем на kraken и сейчас перебрался на binance. Писал драйверы для всех этих бирж, а так же для тинькоф когда хотел торговать акциями. Здесь пример драйвера для доступа к binance. Так же при чтении данных с binance, биржа не любит когда ее часто опрашивают, учитывая что я торгую 350 пар, то есть делаю 350 запросов в минуту, то надо учитывать просьбы биржи, когда просят замедлить опросы. Для этого написал отдельную маленькую процедуру для опроса биржи. Готов предоставить имеющиеся драйверы для кракена, тинькова, или разработать для других бирж если кого-то заинтересует.
В случае ошибки пытаюсь повторить запрос если нет, то возвращаю ошибку и бот попробует все повторить заново чуть позже.
Бот для торговли
Код бота для торговли я не привожу. Отмечу только главные вещи, на которые следует обратить внимание если вы будете его реализовывать. Решение о покупке мой бот принимает раз в минуту, опрашивая биржу, затем если бот купил крипту я опрашиваю биржу каждые 5 секунд для принятия решения о продаже, одновременно у меня бывает куплено от 0 до 8 различных крипто валют. Опрос каждые 5 секунд это эмуляция стоп ордера, конечно если биржа упадет и у меня на руках будет криптовалюта, то придется продать ее с убытком, но пока такого не было, и стратегия предусматривает продажу до момента обвала. Хотя такой риск есть, и я его понимаю. Стоп ордера не ставлю, поскольку стратегия не предусматривает продажи по определенной цене, а продажа и покупка происходит при совпадении ряда факторов. Опрашивать биржу чаще раза в минуту если у вас на руках нет купленной криптовалюты не стоит, биржа вас быстро забанит особенно если вы торгуете большим количеством коинов, а принимать решение на основе частых опросов точно не стоит. Никогда не стоит вкладывать все деньги в один коин, и обязательно бот должен фиксировать убытки и не надеется, что все будет хорошо. Число сделок, которые мне не приносят убыток в среднем 72%, но это не значит, что все, что без убытка это прибыль, примерно половина сделок из этих 72% закрывается без прибыли. Самое интересное что при прогоне на акциях этот алгоритм так же показал процент сделок без убытка в 75%, что в пределах погрешности. Меня это обнадежило. Так же я сделал управление ботом, которое позволяет мне продать купленные коины в любой момент, главное у меня нет кнопок их купить, потому что бот при покупке коинов всегда знает в какой момент он будет фиксировать убыток, ну а прибыль при желании я могу и сам зафиксировать, это иногда полезно на падающем рынке. На растущем рынке лучше все доверить технике, у которой нет ни жадности, ни нервов, ни надежды.
Запуск основной программы
Основная программа запускается и останавливается через командный файл. В centos 7 была известная проблема утечки памяти в библиотеки curl в случае https соединения, данную библиотеку использует пакет pgsql-http. Поэтому приходилось перезапускать бота раз в сутки. Сейчас в centos 8 проблемы нет и бот может работать без перезагрузки, но я оставил данное решение, поскольку в этом случае можно отключить автоматический vacuum в постгрессе и делать его в ручную, что может повысить производительность, но это мысли о будущем. Так же при старте компьютера проверяется был ли бот запущен и если был, то он запускается снова. Было два раза, когда сервер у провайдера перезапускался и это меня выручало. Тут все просто. Запуск и останов осуществляются следующими командами.
Запуск выполняется командой
Файл cryptorestart.sh положил в rc.local
Основная программа
Комментариев к основной программе у меня нет, она приведена целиком. Маленький комментарий, боту запрещено перегружаться если у нас куплена крипта. Если будут вопросы готов ответить.
Настройки Postgres
Пришлось немного повозится с конфигурированием базы, поскольку одновременно запускается около 400 процессов постгреса и обрабатывается от 5000 до 50000 операций купли продажи на бирже, в зависимости от поведения рынка. Еще все это надо обсчитать и принять решение. Меня приятно удивило что со всем этим постгрес легко справляется на недорогом облачном хостинге за 14 евро. Параметры компьютера 4 ядра, 8Гб памяти и 160Гб диск. Использую 13 версию постгрес. Здесь привожу только те параметры, которые менял.
Вот как выглядит мой дашбоард с 350 процессами постгресс.
Эмуляция работы боты
Я сохраняю все данные собранные в процессе работа бота в таблице, эти данные агрегированы и сохранены все произведенные вычисления, чтобы не повторять вычисления снова. Всегда можно запустить эмулятор, который проходит по этим данным и показывает теоретическое поведение бота. В большинстве случаев оно совпадает с реальным, особенно для маленьких сумм. При больших суммах бот всегда смотрит корзину и покупает так что бы не продавить корзину больше заданной величины, у меня это 0.015%. Это важно для альтов с маленькой капитализацией. В результате получается расхождение с эмулятором так как состояние корзины в каждый момент времени не сохранить. Так же сейчас я стал перед покупкой смотреть корзину и решение зависит так же от ее состояния, увеличило количество удачный сделок на 5%-10%, это так же не может быть обработано эмулятором.
Эмулятор — это, наверное, самая важная часть бота, я начинал работу именно с него. Сначала я скачал все исторические данные с биржи kraken и изобретал алгоритмы торговли. То, что бот написан целиком на pqsql позволяет сосредоточится именно на алгоритмах, а не на программировании, учитывая, что все необходимые математические функции прекрасно реализованы в postgresql и так же замечательно реализовано работа с json, ну и sql отличная вещь. Когда у меня получились рабочие алгоритмы я перешел к реальной торговле. Еще раз убеждаюсь, что выбор правильного инструмента — это очень важно.
Как написать пассивный доход: Пишем качественного трейд бота на JS (часть 1)
Начнем писать трейдинг бота, который будет работать на криптобирже Binance. Бот должен уметь:
торговать самостоятельно, принося какой-то доход
должен быть удобен для создания и обкатывания различных стратегий торговли
тестировать стратегию на исторических данных
Пожалуй, начнем с архитектуры
У нас есть биржа Binance, у которой есть шикарное api. Поэтому архитектура могла бы выглядеть так:
Вызвать пару методов “купи дешевле” и “продай дороже”. Но задача для нас написать такого бота, при котором условный программист-трейдер сможет создавать и тестировать на прибыльность новые стратегии. Поэтому, необходимо отделить логику торговли от всего прочего. А также модулю логики должно быть все равно к какой бирже его подключили: к реальному API или к псевдо-API (для тестирования). С учетом всего этого получилась примерно вот такая архитектура:
Базу выбрал PostgreSQL. Тут нет никакого тайного умысла. Вы можете использовать любую.
В связи с тем, что каждый модуль стоит внимания, это все не поместится в одну статью. Поэтому я начинаю мини-сериал: «Пишем качественного трейд бота на JS». Поэтому подписывайтесь, устраивайтесь поудобней — начинаем
Сервис для логов
Простой класс, который принимает на вход префикс для логирования и имеет два метода log и error . Эти методы печатают лог с текущим временем и перфиксом:
Теперь подключим биржу
Добавим класс BaseApiService. Сделаем в нем инициализацию Binance SDK, а также применим сервис LoggerService. Учитывая мой опыт с Binance могу сразу сказать, что в зависимости от торговой пары мы должны слать цену и обьем с разным количеством знаков после запятой. Все эти настройки для каждой пары можно взять, сделав запрос futuresExchangeInfo() . И написать методы для получения количества знаков после запятой для цены getAssetPricePrecision и объема getAssetQuantityPrecision .
Дальше добавляем метод создания ордера, с учетом правильного количества знаков после запятой для цены и обьема:
Теперь бот умеет создавать ордера. Научим его слушать события из биржы для того, чтоб он мог отлавливать изменения статуса ордеров. Для этого создадим класс TradeService.
При помощи метода из SDK this.api.websockets.userFutureData подписываемся на события из биржы. Самой главный колбек для нас this.orderUpdateCallback . Он вызывается каждый раз когда меняется статус у ордера. Ловим это событие и прокидываем через EventEmitter тому, кто на это событие подписался, используя метод subscribe .
Перейдем к базе данных
Для чего она нужна? В базе будем хранить все ордера, а также всю историю торговли бота. Пользователей с их ключами к бирже и балансами. В последствии сможем считать сколько бот принес прибыли/убытка. Тут останавливаться долго не буду. Подключаю sequlize.
Добавим docker-compose.yml файл для локальной базы:
А также добавляю миграции и модели. User , Order
В следующей статье будем писать ядро, которое соединит все эти части и заставит бота торговать.
Как создать торгового бота для крипторынка с использованием TradingView (PineScript)
Прежде всего, давайте определимся с основным термином этой статьи. Что такое торговый бот? Торговый бот — это использование компьютерной программы или системы для торговли на рынке в соответствии с заранее определенным и указанным набором правил. Другими словами, трейдер строит определенный алгоритм для своей торговой стратегии, который будет автоматически выполняться на рынке при выполнении всех условий. Это также причина, почему мы также будем использовать термин алгоритмическая торговля.
Такой стиль торговли идеально сочетается с рынками криптовалюты, что дает ряд преимуществ для алгоритмических трейдеров. Прежде всего — волатильность, рынки криптовалюты обычно имеют гораздо более высокую волатильность, чем традиционные рынки, создавая большие колебания цен и возможностей для трейдеров. Во-вторых, круглосуточная торговая сессия, так как рынки криптовалют открыты для бизнеса 24/7. В-третьих, общая рыночная капитализация, которая меньше по сравнению с традиционными рынками. На традиционных рынках преобладают крупные многомиллиардные фонды, в то время как рынки криптовалют гораздо моложе, что означает, что он относительно менее насыщен крупными фондами и, как следствие, не требует большого капитала, чтобы начать зарабатывать на криптовалюте.
С другой стороны, большая волатильность на молодом рынке, который никогда не спит, создает идеальную среду для спекуляций, таких как стратегии откачки и сброса. И это обязательно нужно учитывать, если вы решили торговать на рынках криптовалют.
Торговый бот может торговать в соответствии с техническими индикаторами, импульсом и основами. Или вы можете создать гораздо более продвинутый торговый алгоритм, который поможет вам более эффективно выполнять ордера, от маршрутизации ордеров через различные биржи (арбитражная торговля) до нарезки большого ордера на более мелкие части (автоматические Айсберг ордера).
3 наиболее популярных крипто-торговых стратегий: Создание рынка (Market Making), Арбитраж, Стратегии следования за трендом.
Это стратегия, в которой происходит непрерывная покупка и продажа, для того чтобы отразить разницу между ценой покупки и продажи. Чтобы сделать это, трейдер должен разместить лимитные ордера по обе стороны от книги заявок (order book), чтобы получить прибыль от спреда (spread). Тем не менее, эта стратегия будет иметь свои ограничения в условиях низкой ликвидности или во время предыдущей экстремальной конкуренции.
Арбитраж – это покупка и продажа актива с целью получения прибыли от разницы в цене актива между рынками. Следовательно, эта стратегия использует преимущество разницы в цене одного и того же актива на разных биржах. Трейдер покупает цифровые активы с одного рынка, а затем продает их на другом, получая прибыль в процессе.
Целью этой стратегии является выявление тренда актива и выполнение сделок на основе базового тренда. Стратегия следования за трендом пытается получить прибыль путем анализа импульса актива в заданном направлении. Трейдеры, которые выполняют эту стратегию, войдут в длинную позицию, когда криптовалюта торгуется вверх (long position), и продают позицию (short position), когда тренд разворачивается.
В зависимости от уровня сложности вашего торгового алгоритма вам нужно будет использовать разные инструменты. В свою очередь, инструменты будут сильно зависеть от уровня ваших технических навыков, которыми вы в данный момент обладаете. Для простоты вы можете разделить упражнение по созданию ботов на 3 основных уровня сложности: начинающий, промежуточный, продвинутый. В будущих обзорах мы подробно рассмотрим каждый уровень и предложим инструменты, которые можно использовать для создания торгового алгоритма, и способы его применения на рынке.
А пока давайте приведем пример торгового бота, который может быть построен с использованием TradingView (TV). Прежде всего, важно создать сценарий стратегии, потому что сценарий стратегии может быть протестирован, и TV предоставит подробные результаты вашей стратегии.
Код ниже, представляет простую стратегию EMA (exponential moving average), в которой вход и выход происходят при пересечении быстрой и медленной экспоненциальной скользящей средней (EMA). Это можно вставить в Pine Editor TV.
Эту стратегию можно изменить, добавив дополнительные входные переменные, такие как объем или некоторые стохастические индикаторы, или вы можете установить цели тейк-профита и стоп-лосса.
После того, как стратегия была создана и протестирована, вы можете создавать оповещения, чтобы не пропустить ваши торговые настройки. Однако для этого вам придется изменить свой сценарий на study (обозначение типа кода в TV), поскольку невозможно применить функцию оповещения к стратегии.
Теперь вы можете создавать оповещения (alerts) для вашего торгового актива и выбирать условия оповещения и действия.
Если оповещение сработало, и вы получили его, когда вы не рядом с компьютером, и у вас нет возможности выполнить свою стратегию. Существует решение для автоматизации ваших предупреждений TradingView через стороннего поставщика услуг, такого как Wunderbit Trading. Вы можете создать бота для входа и выхода из своей стратегии на основе предупреждений TradingView.
Пошаговая инструкция к созданию торгового робота на Python
С чего начать алготрейдинг. Написание роботов с нуля для торговли. Обучение Торговому роботу на python с нуля. Алготрейдинг :
Моя первая мысль о трейдинге появилась на 4 курсе экономического факультета, когда понял, что необходимо иметь пассивный доход. Начинал со вкладов в банке и паевых инвестиционных фондов (ПИФов), затем судьба забросила меня в IT. Я очень увлекся этим, поступил в технический ВУЗ и поставил цель совместить информационные технологии и биржевую торговлю, так как это интересно, перспективно и высокооплачиваемо.
Я расскажу о том, с чего начать освоение алгоритмического трейдинга не имея опыта в торговле и программировании. Точнее это будет серия статей разбитых по этапам с подробным описанием процесса обучения и рекомендациями. Программа обучения подойдет не только новичкам, но и опытным программистам, т.к. она предполагает еще и освоение биржевой торговли. Также, она может быть интересна трейдерам, которые получат необходимые знания в программировании. Каждый этап составлен так, что он не отнимет много времени, возможно совмещение с работой или учебой.
Фондовый рынок — это высокотехнологичная отрасль, которая активно развивается, что делает работу в этой сфере очень привлекательной для IT — специалистов. Мировой валютный рынок, где ежедневный объём торгов оценивается в $5,1 трлн, становится всё менее зависимым от человека. Так, 94 руководителя крупнейших компаний США и Канады по торговым и валютным операциям заявили о намерении перейти на автоматизацию большей части своих операций с иностранной валютой в течение 2018—2020 годов. Развитие автоматизированной торговли на сегодняшний день уже стало необратимым процессом на мировом валютном, фондовом рынке и рынке деривативов.
Пока сложно сказать, что для успешной торговли необходимо обязательно создавать торгового робота, можно торговать и вручную, используя автоматизацию для поиска активов и точек входа, или контроля открытых позиций. Но доля роботов в объеме торгов США в 2005 году перевалившая за 50% говорит об их востребованности среди трейдеров.
Переходим к плану обучения.
В качестве языка программирования для реализации стратегий будет использован Python. Данный язык кроссплатформенный (что для сторонников Linux и macOS является обязательным атрибутом), прост в освоении (по своему опыту изучения Java, могу сказать что Python легче), широко распространен (применяется в Big Data, веб-разработке, автоматизации тестирования, науке, системном администрировании, для прототипирования квантовых моделей в хедж-фондах и «квантовых» трейдерских подразделений в банках и др.)
Предыстория
Хотелось создать своего робота, а так же автоматизировать управление светом и климатом дома. С этой целью начал изучать имеющиеся возможности. Для себя я разделил все решения на две группы: системы в которых код на контроллере выполняется в одном главном цикле (arduino, lego и т.п.) и системы состоящие из параллельно работающих процессов обменивающихся между собой сообщениями.
Интуитивно выбрал вторую группу, так как хотелось найти максимально простое решение с дружественным пользовательским интерфейсом. Из наиболее популярных представителей этого «семейства» очень понравились Microsoft Robotics Studio и ROS. Но к сожалению, на текущий момент, привязать их к конкретному железу весьма не просто, да и разобраться в них с нуля так же весьма не тривиальная задача. В итоге принял решение писать сам, но «кодить» на C очень не хотелось, Душа просила чего-нибудь попроще и полегче. В итоге выбрал Python. А учитывая, что по мимо робота и «умного дома» в голову начало лезть куча других идей, то решил сразу сделать небольшой фреймворк, в котором основной упор был бы сделан на простоту разработки.
Этап 1.1. Изучение основ Python для торгового робота
Обучение по приложению от SoloLearn.
Первым делом будет полезным установить приложение SoloLearn на смартфон. Оно будет особенно полезно тем, кто ранее не программировал. Приложение обучит самым основам языка. Неоспоримое преимущество, что им можно пользоваться в любое время и в любом месте.
Прохождение курса на Stepik.org «Программирование на Python»
Отлично подойдет для новичков, интерактивен, изложение ведется плавно от простого к сложному, достаточно интересные задачи, можно смотреть комментарии от пользователей, что очень полезно если не знаешь решения. Курс бесплатный.
Совет: Некоторые условия задач описаны очень непонятно, в связи с этим сразу смотрите в комментарии, там найдете разъяснение задачи.
В день рекомендую уделять этому ресурсу 1 час.
Ссылка на курс: https://stepik.org/course/67/syllabus
Решение задач в Pythontutor.ru
Для закрепления знаний полезным будет ресурс Pythontutor. Это интерактивный учебник по Python, с большим количеством примеров и хорошими задачами. Интересная особенность в том, что после решения задачи можно посмотреть варианты решений от разработчиков и других участников.
Ежедневно рекомендую решать хотя бы по одной задаче.
Ссылка на учебник: https://pythontutor.ru/
Книги: Swaroop — «A Byte of Python»(Укус питона)
«Укус питона» это бесплатная книга по Python, отличается минимальным количеством «воды» и большим количеством примеров. Содержит всего 150 страниц, при этом отлично показывает возможности языка.
Ингеборга Моотц — Одинокая пенсионерка
Совет: При чтении книг по программированию необходимо запускать пример кода у себя в IDE для лучшего усвоения материала.
В день достаточно читать по 5-10 страниц. В качестве IDE рекомендую бесплатный PyCharm Community.
По желанию: Видео курсы по Python на YouTube
Серия видеоуроков средней продолжительностью в 10 минут, состоящая из 21 эпизода поможет заполнить пробелы в полученных ранее знаниях.
Для знающих английский очень хорошо будет просмотеть курс Learn Python — Full Course for Beginners. В общей сложности материал состоит из четырех с половиной часов обучающего видео.
Совет: Если вы еще не знаете английского, то обязательно начинайте его изучать, т.к. подавляющее большинство необходимых материалов по алготрейдингу будут доступны именно на нем. Впрочем, думаю я не открыл здесь Америку, большинство итак это знают, скорее просто хотел напомнить.
В интернете множество методик и материалов для изучения английского, каждый сможет подобрать подходящее для себя, но не откажусь порекомендовать книгу по грамматике Раймонда Мерфи — Essential Grammar in Use. Написана полностью на английском, но предельно простым языком и со множеством иллюстраций.
Часть 2. Пишем бота
После прочтения первой части у вас мог возникнуть вопрос: «Если Бинанс такая замечательная биржа, что позволяет автоматически и покупать, и продавать — зачем вообще нужен бот?». Это уместное замечание и ответ на него такой — бот крайне полезен для сбора статистики, анализа и рекомендаций по удачным моментам для покупки и продажи.
В те несколько недель, пока всё делалось вручную, успел заметить, что очень много времени и внимания уходит на отслеживание падений цен. А ведь возможность заниматься мониторингом была лишь изредка, ненадолго отвлекаясь от работы в течении дня и вечером. В остальное время, когда я работал, ел, спал — все удачные моменты для покупки проходили мимо и это выливалось в упущенные возможности и недополученную прибыль.
Всё это смотивировало написать код, который ежеминутно проверял курсы валют для выбранных токенов, собирал статистику колебаний цен за последний час и как только для какой-то валюты обнаруживал резкую просадку цены — тут же писал в Телеграм сообщение следующего вида:
Как видно из этого скриншота, бот не только писал, какой токен следует купить, но и на сколько % упала цена за последний час. Для тех же криптовалют, для которых падение цены было меньше 5% — фраза была «nothing to do right now…»
В данный момент бот используется только как сборщик статистики, анализатор и советчик. Он не совершает сделки автоматически, этот функционал будет добавлен в будущем, когда придет уверенность, что бот дает корректные рекомендации и не наторгует в минус, пока я буду спать)
Давайте же наконец перейдем к коду и посмотрим, как все устроено внутри.
Проект состоит всего из 3 файлов:
- cryptobot.py (собственно, сам бот)
- calculations.py (вспомогательные функции для анализа и расчетов)
- my_cryptocoins.json (файл с данными о криптовалютах и их актуальных ценах)
Содержимое my_cryptocoins.json выглядит следующим образом:
(и так далее, полный файл содержит в себе десятки токенов и данных об их ценах)
Где, «amount» — количество монет данной валюты, купленных ранее. «buy_price» — цена, по которой они были куплены «desired_price_fall» — процент, на который мы ожидаем, что цена упадет, чтобы покупка имела смысл
«desired_sell_price» — цена, по которой планируется продать купленные монеты (и на которую стоит ордер на автопродажу)
«last_prices» — список из последних 60 цен, обновляемый каждую минуту И наконец «ALICE», «ARDR» и «BCH» — короткие названия токенов, которые будут использованы для обращения к API Бинанс.
В текущей реализации, все данные кроме списка цен приходится заносить самому вручную. В будущем это будет осуществляться автоматически на основании сделок, проведенных ботом.
Конечно, использовать json файл — не лучшее решение в данной ситуации, но оно было выбрано, чтобы как можно быстрее проверить торговые гипотезы. В планах — поднять рядом с ботом полноценное веб-приложение с API и БД, куда будут записываться все интересующие данные, которые позволят проводить более глубокий анализ.
Файл calculations.py содержит в себе следующие функции и данные:
API ендпоинт, при обращении на который мы узнаем цену интересующей нас криптовалюты.
Также могут использоваться альтернативы:
Все они предоставляют одну и ту же информацию, так что можете выбрать любой из них.
Функция, которая обращается к бирже и узнает цену интересующей нас криптовалюты:
def get_price(coin: str) -> float: «»» :param coin: token name, e.g. BTC for Bitcoin, LTC for Litecoin :return: coin’s current price in stable USDT. 1USDT
1$ USA «»» data = USDT’> # e.g. BTCUSDT response = requests.get(API_URL, data) return float(response.json()[‘price’])
Как видите, ничего сложного здесь нет — обычный GET запрос с передачей дополнительных данных о том, какая торговая пара нас интересует. Чтобы функция корректно работала, не забудьте в начале файла импортировать библиотеку requests — import requests.
Следующая функция отвечает за расчет вашей потенциальной прибыли. Здесь тоже нет никакой высшей математики, все рассчитывается по простой формуле: (текущая цена минус цена покупки) умножить на количество ваших монет для данной криптовалюты. Чтобы в сообщениях бота не мешать самому себе избыточной информацией, было добавлено округление до 2 знаков после запятой. Вряд ли кому-то интересны доли центов.
1$ USA :return: profit in USDT «»» # Example: (220 — 200) * 0.5 == 10 return round((current_price — coin[‘buy_price’]) * coin[‘amount’], 2)
Следующая функция содержит в себе логику, которая была описана ранее, а именно — определение того, насколько упала цена за последний час. Алгоритм работает так: из json файла достаются все цены для конкретной валюты, среди них определяется максимальная цена и сравнивается с текущей ценой (которую, напоминаю, мы узнали обращением к API Бинанса)
def count_price_fall(coin: dict, current_price: float) -> float: «»» :param coin: same as in count_profit() :param current_price: same as in count_profit() :return: max diff between last 5 prices and current price, in USDT «»» # Example: max([201.4, 205, 203, 211, 222.2]) — 190 == 32.2 try: return max(coin[‘last_prices’]) — current_price except: # may happens if coin[‘last_prices’] is empty return 0
И, наконец, финальная функция, которая и дает совет «Time to buy», если за последний час снижение цены оказалось равным или больше тому, что было указано в json файле в поле «desired_price_fall»:
def should_i_buy(price_fall: float, desired_fall: float, current_price: float) -> bool: «»» :param price_fall: output of count_price_fall() :param desired_fall: desired price fall in PERCENTS! not in USDT. e.g. 10% :param current_price: coin’s current price in stable USDT :return: True if you should buy, False otherwise «»» # Example: 21 / 200 * 100 == 10.5% and 10.5 >= 10, so -> True if price_fall / current_price * 100 >= desired_fall: return True return False
Как видите, на данном этапе реализации бота, внутренних расчетов и анализа у него не так уж много. Но идей по улучшению и добавлению нового функционала — предостаточно.
Последний файл — cryptobot.py содержит в себе код телеграм бота, который как раз и шлет сообщения о том, что пора покупать, продавать, или пока можно расслабиться и ничего не делать.
Прежде всего, вам необходимо будет написать отцу всех ботов — @BotFather и создать у него своего бота. Не будем дополнительно останавливаться на этой части, так как в интернете море подобных инструкций и вы без проблем сможете зарегистрировать своего бота самостоятельно за пару минут.
Главное, что вам нужно будет получить — это токен, который вы будете использовать в коде. А также, очевидно — никнейм вашего бота, с которым вы будете общаться в чате Телеграма.
После этого вы сможете вставить свой токен в код бота и он будет выглядеть так:
(импорт всех необходимых функций, модулей и библиотек)
import time import json from telegram.ext import Updater, CommandHandler from calculations import get_price, count_profit, count_price_fall, should_i_buy
(главная и единственная функция вашего бота, она же будет командой, которую вы будете отправлять ему в чате Телеграма, чтобы запустить эту адскую машину:)
def make_money(update, context): # (получаете id чата, где бот будет общаться с вами) chat_id = update.effective_chat.id # (бесконечный цикл) while True: # (открываете файл my_cryptocoins.json и читаете из него данные) with open(‘my_cryptocoins.json’, ‘r’) as my_coins_data: my_coins = json.loads(my_coins_data.read()) # (эта переменная будет содержать в себе тот сообщение, которое бот вам отправит в Телеграме) final_message = [] # (цикл, проходящий по всем токенам, перечисленным в my_cryptocoins.json) for coin_name in my_coins.keys(): coin = my_coins[coin_name] coin_price = get_price(coin_name) possible_profit = count_profit(coin, coin_price) price_fall = count_price_fall(coin, coin_price) last_prices = coin[‘last_prices’] # (часть кода, отвечающая за работу с ценами, обновляемыми каждую минуту) if len(last_prices) <= 60: last_prices.append(coin_price) if len(last_prices) <= 59: price_fall = 0 # not enough data to provide correct calculations else: last_prices = last_prices[1:] + [coin_price] my_coins[coin_name][‘last_prices’] = last_prices message = » # (логика, которая формирует сообщение о том, что пора покупать/продавать/ничего не делать) if coin_price >= coin[‘desired_sell_price’] and coin[‘amount’] > 0: message += f’
После того, как все 3 файла будут готовы, вам нужно будет установить необходимые для работы бота библиотеки командами: pip install requests pip install python-telegram-bot
Затем запустить бота командой python cryptobot.py и наконец написать вашему боту в телеграме команду /make_money
С этого момента бот будет каждую минуту слать вам сообщения с рекомендациями.
Этап 1.2. Основы биржевого дела
Также необходимо изучать основы биржевого дела и ниже я дам пару советов.
Изучение функционала Trader Workstation от Interactive Brokers:
Для этого вам будет необходимо открыть демо-счет.
Терминал TWS имеет отличный демо-режим, на котором доступен 1 000 000 виртуальных долларов и неограничен по времени. Его можно изучить вдоль и поперек. Но для начала необходимо научиться просто ориентироваться в интерфейсе, уметь искать, выбирать, покупать, продавать активы.
Вот несколько обучающих видеороликов:
- Горячие Клавиши,
- Работа с графиками,
- Индикаторы,
- Настройка стакана,
- Как выставлять ордер,
- Как совершать сделки,
- Работа с облигациями,
- Watchlists & scanners.
На какие ECN ставить ордера ?
Еще стоит потратить время на самостоятельное изучение. Проделайте лично то, что вы посмотрели в видео.
Чтение литературы: Элдер — «Трейдинг с доктором Элдером»
Рекомендую начать с этой книги. В ней автор традиционно много рассказывает о психологии торговли. Помимо этого описывает весь процесс трейдинга. Элдер хорош еще и потому, что он рассказывает о трейдинге во всех деталях, т.е. готовит к сложностям, с которыми необходимо будет столкнуться.
Рекомендую читать 15 страниц в день.
Совет: Если вы никогда не торговали и не знаете как работает биржа, настоятельно рекомендую прочитать первые 180 страниц книги Твардовского и Паршикова — «Секреты биржевой торговли». Чтобы понять, как в целом устроена биржа, виды приказов, кто такие брокеры, маркетмейкеры и т.д.
Алгоритмическая торговля
Алгоритмическая торговля (алготрейдинг, algorithmic trading) – это автоматизированная с помощью компьютерных средств торговля финансовыми инструментами на основе определенного алгоритма или правила с незначительным участием или без участия человека. Торговать в автоматическом режиме можно почти любыми финансовыми инструментами: акциями, валютами, сырьем, кредитными продуктами или волатильностью. В некоторых сегментах рынка львиная доля сделок совершается именно алгори («The Quants») Скотта Паттерсона (Scott Patterson) и «More Money Than God» Себастиана Маллаби (Sebastian Mallaby) дают хорошее представление об алгоритмической торговле и личностях, стоявших у ее истоков.
Алгоритмическая торговля еще никогда не была такой доступной, как в настоящее время. Совсем недавно этот вид деятельности был по плечу лишь институциональным инвесторам с миллионными бюджетами, однако сегодня фактически любой желающий при наличии ноутбука и подключения к Интернет может заняться алгоритмической торговлей. Такое положение вещей обусловлено следующими факторами:
- • Программное обеспечение с открытым исходным кодом. Все инструменты, необходимые трейдеру, чтобы начать алгоритмическую торговлю, доступны под свободными лицензиями. В частности, Python и его экосистема приобрели статус стандарта в этой области.
- • Открытые источники данных. Появляется все больше открытых источников ценных данных. Благодаря этому, трейдеры получают широкие возможности для проверки гипотез и тестирования торговых стратегий.
- • Торговые онлайн-платформы. В настоящее время существует множество онлайн-платформ, которые предоставляют простой стандартизированный доступ к историческим данным (посредством RESTful API), данным реального времени (посредством socket API), а также обеспечивают широкий спектр средств для торговли и работы с портфелями (посредством программного API).
В этой статье мы реализуем все элементы, необходимые для полноценной алгоритмической торговли, начиная от тестирования торговой стратегии на исторических данных (бэктестинг, backtesting) до автоматической торговли в режиме реального времени.
Рассмотрим основные составляющие проекта:
- • Стратегия. Мы выбрали моментум-стратегию (momentum strategy), представленную в публикации Moskowitz et al. «Time Series Momentum», 2012. В рамках данной стратегии мы предполагаем, что финансовый инструмент, демонстрировавший в прошлом определенную (позитивную или негативную) тенденцию, в дальнейшем будет следовать этой же тенденции.
- • Платформа. Мы остановили свой выбор на платформе Oanda. Данная платформа позволяет торговать различные контракты на разницу цен (contract for difference, CFD), что, по сути, позволяет оперировать широким спектром финансовых инструментов, таких как валюты, фондовые индексы, сырье и др.
- • Данные. Все исторические данные и данные реального времени для нас обеспечит платформа Oanda.
- • Программное обеспечение. Мы будем использовать Python, мощную аналитическую библиотеку Pandas, а также несколько дополнительных библиотек.
В дальнейшем мы предполагаем, что у вас установлен Python 3.5 и основные библиотеки, такие как NumPy и Pandas. Если у вас еще нет этих средств, вы можете установить все необходимое, используя, например, дистрибутив Anaconda.
Аккаунт Oanda
На платформе Oanda (https://oanda.com) любой желающий может бесплатно зарегистрировать демо аккаунт, обеспечивающий доступ к имитации торгового процесса. После того, как аккаунт зарегистрирован, чтобы получить программный доступ к Oanda API, необходимо установить соответствующую Python-библиотеку:
pip install oandapy
Перед началом работы с библиотекой необходимо создать файл конфигурации oanda.cfg со следующим содержимым:
[oanda] account_id = YOUR_ACCOUNT_ID access_token = YOUR_ACCESS_TOKEN
Укажите в файле конфигурации ваш идентификатор и токен, значения которых вы можете узнать в своем аккаунте.
Выполнив следующий код, мы получаем основной объект для программного взаимодействия с платформой:
In [1]: import configparser # 1 import oandapy as opy # 2 config = configparser.ConfigParser() # 3 config.read(‘oanda.cfg’) # 4 oanda = opy.API(environment=’practice’, access_token=config[‘oanda’][‘access_token’]) # 5
У нас уже есть все необходимое, чтобы начать тестирование моментум-стратегии. В частности, мы можем получить исторические данные, предоставляемые платформой. Мы будем использовать инструмент EUR_USD, основанный на обменном курсе EUR/USD.
Первым делом мы загружаем набор исторических данных и преобразуем его в DataFrame. Мы получаем дынные за два дня: 8 и 9 декабря 2016 года. Дискретность данных составляет 1 минуту. Выполним следующий код:
In [2]: import pandas as pd # 6 data = oanda.get_history(instrument=’EUR_USD’, # our instrument start=’2016-12-08′, # start data end=’2016-12-10′, # end date granularity=’M1′) # minute bars # 7 df = pd.DataFrame(data[‘candles’]).set_index(‘time’) # 8 df.index = pd.DatetimeIndex(df.index) # 9 df.info() # 10
В результате получим подробную характеристику набора данных:
DatetimeIndex: 2658 entries, 2016-12-08 00:00:00 to 2016-12-09 21:59:00 Data columns (total 10 columns): closeAsk 2658 non-NULL float64 closeBid 2658 non-NULL float64 complete 2658 non-NULL bool highAsk 2658 non-NULL float64 highBid 2658 non-NULL float64 lowAsk 2658 non-NULL float64 lowBid 2658 non-NULL float64 openAsk 2658 non-NULL float64 openBid 2658 non-NULL float64 volume 2658 non-NULL int64 dtypes: bool(1), float64(8), int64(1) memory usage: 210.3 KB
Далее мы формализуем моментум-стратегию, вычисляя для каждого момента времени среднее логарифма доходности (mean log return) за последние 15, 30, 60 и 120 минут. Например, среднее логарифма доходности за последние 15 минут – это среднее 15 последних значений логарифма доходности. Если эта величина положительна, мы играем на повышение (go/stay long), если отрицательна – на понижение (go/stay short). Чтобы не усложнять код, мы полагаемся лишь на значение столбца closeAsk.
In [3]: import numpy as np # 11 df[‘returns’] = np.log(df[‘closeAsk’] / df[‘closeAsk’].shift(1)) # 12 cols = [] # 13 for momentum in [15, 30, 60, 120]: # 14 col = ‘position_%s’ % momentum # 15 df[col] = np.sign(df[‘returns’].rolling(momentum).mean()) # 16 cols.append(col) # 17
Затем, чтобы вычислить абсолютную результативность моментум-стратегий, основанных на различных временных интервалах, необходимо умножить доходность на величины, полученные выше (предварительно выполнив сдвиг). Вот как мы это сделаем:
In [4]: %matplotlib inline import seaborn as sns; sns.set() # 18 strats = [‘returns’] # 19 for col in cols: # 20 strat = ‘strategy_%s’ % col.split(‘_’)[1] # 21 df[strat] = df[col].shift(1) * df[‘returns’] # 22 strats.append(strat) # 23 df[strats].dropna().cumsum().apply(np.exp).plot() # 24
Получим следующую диаграмму:
Проанализировав диаграмму, мы видим, что в течение рассматриваемого периода, сам инструмент имеет отрицательную доходность около -2%. Моментум-стратегия, основанная на 120-минутных интервалах, показывает наилучший результат, демонстрируя положительную доходность около 1.5% (без учета разницы между спросом и предложением (bid/ask spread)). По сути, данная стратегия показывает «реальную альфу»: она обеспечивает положительную доходность даже тогда, когда сам инструмент имеет отрицательную доходность.
Лучшие боты для Binance в 2020 году
- одновременные стоп-лоссы и тейк-профиты;
- анализатор и дневники трейдера;
- инструменты социального взаимодействия трейдеров.
- поддержка стратегии Мартингейла;
- запуск нескольких ботов одновременно.
- поддержка всех торговых пар, представленных на Binance.
- продвинутые инструменты скальпинга;
- отличный набор опций, начиная с бесплатной версии.
- копитрейдинг;
- 6 торговых алгоритмов для Binance.
- интерфейс, дружелюбный к полным новичкам в криптотрейдинге.
- поддержка торговли по разным индикаторам;
- дружелюбный к новичкам интерфейс.
- поддержка внешних сигналов;
- шаблоны для торговли на Binance и мастер конфигураций;
- самый передовой набор для автоторговли.
- собственный маркетплейс для торговли стратегиями.
- функционал, ориентированный на крупных опытных игроков.
3commas
Официальный сайт: https://3commas.io
Торговая платформа 3commas, представленная в 2022 году, сегодня является одним из самых популярных и функциональных решений.
- Множество торговых ботов.
- Одновременные стоп-лоссы и тейк-профиты, а также другие нужные трейдерам функции.
- Дневники и инструменты аналитики.
Одна из наиболее сильных сторон 3commas — социальное взаимодействие. К примеру, платформа позволяет создавать и тестировать ETF-подобные портфели, а также просматривать наиболее эффективные портфели других трейдеров.
RevenueBot
Официальный сайт: https://revenuebot.io
RevenueBOT — торговый бот с несколькими особенностями в торговле:
- RevenueBOT торгует по стратегии Мартингейла.
- Пользователи отдают определенный процент от прибыли.
Первое означает, что бот, согласно будет пытаться перебить убыточные сделки, ставя следом за ними более крупные ордера. Такой подход вызывает споры в сообществе.
Второе означает, что создатели RevenueBOT заинтересованы в том, чтобы их робот показывал лучшие результаты.
Использовать этого и других ботов с «мартингейлом» рекомендуется во время штиля на рынке.
SmartBot
Официальный сайт: https://smartbot-cryptotrading.ru
SmartBot — торговый робот, поддерживающий исключительно Binance. Благодаря сфокусированности только на одной бирже, у SmartBot есть преимущества перед конкурентами:
- Удобный интерфейс.
- Поддержка всех пар и нескольких стратегий.
Разберем оба пункта подробнее.
- SmartBot создан в видео приложения и может работать в автономном режиме, в то время как большинство ботов работают в «облаке». Интерфейс SmartBot понятен даже новичкам, а среди поддерживаемых операционных систем есть не только Windows, но и семейство Linux.
- SmartBot поддерживает все торговые пары, доступные на Binance. Бот может играть в лонг, шорт и работать с трейлинг-стопами.
MoonBot
Официальный сайт: https://moon-bot.com
Как и SmartBot, MoonBot представляет собой почти Бинанс-эксклюзив. «Почти», поскольку, кроме Binance, данный робот поддерживает Bittrex. MoonBot бесплатен и функционален, а те, кому нужны дополнительные инструменты, например, продвинутый скальпинг и анализатор, могут приобрести их с модулем MoonScalper.
Среди опций MoonBot «из коробки»:
- Ручной скальпинг.
- Тиковый график.
- Доверительное управление.
А также многое другое.
APITrade
Официальный сайт: https://apitrade.pro
APITrade — торговый бот с поддержкой автоторговли и арбитража для четырех топовых криптобирж, включая Binance. Пользователям, работающим с крупнейшей биржей, доступны автоследование за лучшими трейдерами (копитрейдинг) и 6 торговых алгоритмов.
Всего APITrade поддерживает 25 площадок, включая Bitfinex, Poloniex, Huobi, Kraken и других ведущих представителей рынка цифровых активов.
Фиксированной платы за пользование ботом нет, вместо нее команда APITrade снимает процент с успешных сделок.
Stratum-bot
Официальный сайт: https://btn.plus
Stratum-bot — бот, в основе которого лежат алгори]скальпинга[/anchor]. В платной версии имеется поддержка Binance и Yobit. Бесплатная версия поддерживает только Yobit.
Главная особенность Stratum — максимальная простота работы, благодаря чему он подойдет новичкам. Начинающему трейдеру достаточно кликнуть «Автоподбор настроек» и «Запуск», а остальное программа сделает за него.
TradeSanta
Официальный сайт: https://tradesanta.com
Еще в прошлом году TradeSanta поддерживал 4 ведущие биржи, включая Binance. В 2022 году список расширился до 8 площадок.
Как и Stratum, бот TradeSanta максимально облегчает задачу начинающему трейдеру. По заверениям разработчиков, все настраивается максимально быстро и просто:
- Зарегистрируйтесь на официальном сайте.
- Присоединитесь к нужной бирже, например, Binance и выберите торговую пару.
- Настройте бота для начала торговли всего за 2 минуты.
TradeSanta поддерживает лонг- и шорт-стратегии, тейк-профиты, торговлю по ряду индикаторов.
Cryptohopper
Официальный сайт: https://www.cryptohopper.com
Cryptohopper — один из мировых лидеров в сегменте автоматической торговли. Это единственный доступный на рынке бот, позволяющий интегрировать внешние сигналы. Благодаря этому клиенты Cryptohopper получают инструмент, который развивается вместе с криптовалютным пространством и пользуются лучшими проверенными решениями.
Среди преимуществ Cryptohopper:
- Интуитивно понятная панель управления.
- Мастер конфигурации торговли.
- Шаблоны для Binance и других топ-бирж.
Cryptotrader
Официальный сайт: https://cryptotrader.org
Cryptotrader — робот, предлагающий полную автоматизацию торговли криптовалютой. Этот бот позволяет пользователям не только торговать в реальном времени, но и тестировать свои стратегии для различных бирж в режиме симуляции.
Еще одна интересная особенность Cryptotrader — рынок стратегий, где любой желающий может купить или продать свои торговые алгоритмы.
Haasbot
Официальный сайт: https://www.haasonline.com
Haasbot — один из старейших ботов, созданный в 2014 году, который отличает самый богатый функционал среди всех решений для криптотрейдинга, представленных на рынке. Разработчик Haasbot — опытная команда HaasOnline Software, основанная в 1990-х годах.
Haasbot — мощный и достаточно дорогой инструмент, поэтому наилучшим образом подойдет опытным торговцам, четко представляющим, как и для чего они будут использовать платформу.
Запускаем робота
Итак, мы подготовили все части робота. Чтобы его запустить, нужен ещё один файл с описанием самого робота.
В каталоге config хранятся описания всех Ваших роботов. Создавать описание можно как вручную, так и про помощи конфигуратора — но об этом подробнее на видео о bubot: scout.
Итак, для нашего первого робота описание будет выглядеть следующим образом:
Согласно данному описанию, Bubot при старте создаст два экземпляра модуля MotorTest с разными параметрами: один для основного мотора — move_motor, другой для рулевого мотора -rotate_motor и запустит из в качестве процессов. Как вы видите, способ адресации GPIO мы не указали, т.к. нас устраивает значение по умолчанию, а вот параметры GPIO_forward и GPIO_backward мы переопределили в соответствии со схемой подключения моторов.
Теперь у нас совсем все готово. Можно запускать.
python3 StartBubot scout_easy
Открываем в браузере подготовленный нами пользовательский интерфейс https://localhost/ui/scout_easy и пробуем нажать на кнопку. При первом запуске Вас попросят ввести логин и пароль — введите любые значения, по умолчанию права доступа к системе не установлены.
Стоит ли вообще использовать бот для покупки криптовалюты?
В вопросе, можно ли доверять торговому роботу, нужно соблюдать баланс. Если перефразировать известную поговорку, «на робота надейся, а сам не плошай». Безусловно, советник будет хорошим помощником, но стоит помнить, что его задача – помогать трейдеру, а не мешать ему. Поэтому иногда нужно и контролировать его.
Идеальный вариант – писать код для робота самостоятельно. В этом случае вы полностью отвечаете за действия программы. В таком случае ей можно доверять, но не полностью. Потому что один из главных недостатков автоматической торговли – отсутствие гибкости. Частично эта проблема исправляется нейронными сетями, но сейчас ни один искусственный интеллект не способен быть настолько же гибким, как и человек.
Бот трейдинг: принципы работы робота-трейдера
Торговые боты для автоматической торговли криптовалютой функционируют по особым алгоритмам, торговым стратегиям, которые создаются на основе технического анализа закономерностей. Чтобы провести самостоятельный анализ потребуются исторические данные об изменениях курса (графики хотя бы за последний год), иногда удаётся обнаружить взаимосвязь с новостями.
После определения закономерностей ведётся проверка стратегии на тех же исторических данных, подсчитывается число потенциальных убытков и прибылей. И если результаты устраивают, на их основе создаются правила торговой стратегии робота для биржи криптовалют. Иногда торговый бот для криптовалюты дополнительно использует индикаторы, которые позволяют анализировать текущую ситуацию на рынке. Другие выполняются только при конкретных рыночных условиях.
Что бот для криптобиржи, что арбитражный действует по очень простой стратегии, например такой:
- При снижении цены на криптовалюту ее нужно покупать.
- При повышении цены ее нужно продавать.
Или гораздо более сложной. Алгоритм может учитывать исторические данные за последнее время, индикаторы, ориентироваться по сигналам. Помощники анализируют более сотни параметров при выставлении ордеров.