Как написать пассивный доход: Пишем качественного трейд бота на JS (часть 1)

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

В статье редакцией Profinvestment.com рассмотрены следующие боты для биржи Binance:

  1. RevenueBot.
  2. Cryptorg.
  3. 3Commas и другие.

Что такое торговые боты и как они работают

Торговые боты для Binance подключаются к аккаунту пользователя на криптовалютной бирже и совершают сделки от его имени. В процесс используют различные индикаторы и сигналы. Основная цель и идея автоматизации – помочь пользователю зарабатывать, затрачивая минимальное количество личного времени. Кроме того, есть мнение, что компьютеры торгуют лучше людей, так как практически весь трейдинг состоит из математики и вероятностей. Программа обеспечивает такой уровень скорости и точности, который невозможен для человека.

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

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

Созданный API-ключ на бирже Бинанс

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

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

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

Простой торговый робот для биржи Binance без индикаторов

Ссылка на код на github в телеграме Бот исключительно в демонстрационных целях. Когда я писал своего первого бота мне не хватало чего-то такого.

Идею для торговой стрегии взял из книги Ларри Вильямса «Долгосрочные секреты краткосрочной торговли» и слегка упростил. Он называет это прорыв волатильности. В чём суть: — считаем разницу между хай и лоу предыдущей свечи — к цене открытия текущей свечи прибавляем разницу из предыдущего пункта, это и будет ценой для входа в позицию — если цена достигла этой цены покупаем — выход на октрытии следующего бара

Всё. Максимально просто.

Теперь ещё раз то же самое на примере. — Хай прошлой свечи 251 USDT, лоу 248 USDT. Разница 3 USDT. — Открытие текущей свечи 250 USDT. Цена входа 253 USDT. — Как только цена достигла 253 USDT покупаем 0,1 BNB — На следующем открытии свечи выходим. Если цена выше, то заработали что-то, если нет, то нет.

Торговая пара BNB/USDT с биржи binance.

В боте я рассматриваю минутный таймфрейм, чтобы можно было быстро посмотреть что и как работает. График цен можно смотреть на самой бирже Можете поменять на любой на ваше усмотрение.

Торговля идёт фиксированным лотом 0,1 BNB. Можно поменять в переменной `quantity`.

Что нужно для работы: — установить все зависимости из файла `requirements.txt` — зарегистрироваться на бирже https://www.binance.com и получить ключи для api и заполнить глобальные переменные `BINANCE_API` и `BINANCE_SECRET` — залогиниться в тестовой сети testnet.binance.vision/ через github, тоже получить ключи и заполнить переменные `TEST_BINANCE_API` и `TEST_BINANCE_SECRET` — запустить файл `barackbot.py`

В консоли должны увидеть что-то такое:

Opened connection Free USDT is 9976.63802, free BNB is 1000.1 Entry price is 249.36929999999998 USDT, quantity is 0.1 BNB Time: 2021-03-03 08:00:00 Open: 249.10500000 High: 249.15930000 Low: 249.09580000 Close: 249.15880000 Volume: 48.44700000 Time: 2021-03-03 08:00:00 Open: 249.10500000 High: 249.32950000 Low: 249.09580000 Close: 249.32760000 Volume: 415.72900000 Buying 0.1 BNB at 249.3693 USDT Buy order info: {‘symbol’: ‘BNBUSDT’, ‘orderId’: 111111, ‘orderListId’: -1, ‘clientOrderId’: ‘4K1iEdjslkdfjIjhpNb2’, ‘transactTime’: 1614758407134, ‘price’: ‘249.36930000’, ‘origQty’: ‘0.10000000’, ‘executedQty’: ‘0.00000000’, ‘cummulativeQuoteQty’: ‘0.00000000’, ‘status’: ‘NEW’, ‘timeInForce’: ‘GTC’, ‘type’: ‘LIMIT’, ‘side’: ‘BUY’, ‘fills’: []} Time: 2021-03-03 08:00:00 Open: 249.10500000 High: 249.49750000 Low: 249.06770000 Close: 249.49740000 Volume: 733.67700000 Time: 2021-03-03 08:00:00 Open: 249.10500000 High: 249.50000000 Low: 249.06770000 Close: 249.22690000 Volume: 817.82700000 Time: 2021-03-03 08:00:00 Open: 249.10500000 High: 249.50000000 Low: 249.06770000 Close: 249.31670000 Volume: 882.20500000 Time: 2021-03-03 08:00:00 Open: 249.10500000 High: 249.66020000 Low: 249.06770000 Close: 249.40270000 Volume: 3068.25600000 Time: 2021-03-03 08:00:00 Open: 249.10500000 High: 249.66020000 Low: 249.06770000 Close: 249.48930000 Volume: 3087.31000000 Time: 2021-03-03 08:00:00 Open: 249.10500000 High: 249.66020000 Low: 249.06770000 Close: 249.35270000 Volume: 3347.31700000 Time: 2021-03-03 08:00:00 Open: 249.10500000 High: 249.66020000 Low: 249.06770000 Close: 249.35280000 Volume: 3348.73900000 Stop order. Open price is 249.36350000 USDT Loss is -0.002169999999750871 USDT Stop order info: {‘symbol’: ‘BNBUSDT’, ‘orderId’: 111112, ‘orderListId’: -1, ‘clientOrderId’: ‘Qw3zLdoIBqdf98df’, ‘transactTime’: 1614758462874, ‘price’: ‘0.00000000’, ‘origQty’: ‘0.10000000’, ‘executedQty’: ‘0.10000000’, ‘cummulativeQuoteQty’: ‘24.93476000’, ‘status’: ‘FILLED’, ‘timeInForce’: ‘GTC’, ‘type’: ‘MARKET’, ‘side’: ‘SELL’, ‘fills’: [{‘price’: ‘249.34760000’, ‘qty’: ‘0.10000000’, ‘commission’: ‘0.00000000’, ‘commissionAsset’: ‘USDT’, ‘tradeId’: 35189}]} Free USDT is 9976.63585, free BNB is 1000.1 Entry price is 249.65974999999997 USDT, quantity is 0.1 BNB Time: 2021-03-03 08:01:00 Open: 249.36350000 High: 249.42970000 Low: 249.30350000 Close: 249.39350000 Volume: 66.42300000 Time: 2021-03-03 08:01:00 Open: 249.36350000 High: 249.44160000 Low: 249.30350000 Close: 249.42620000 Volume: 88.59900000 Time: 2021-03-03 08:01:00 Open: 249.36350000 High: 249.44160000 Low: 249.30350000 Close: 249.42300000 Volume: 100.39700000

Ещё раз. Бот максимально простой. Не учитывает ни статусы заявок, ни комиссии, нет стопов. Нет обработки минимального лота. Обработка ошибок минимальная. Нет контроля непрерывной работы. Просто механика выставления заявок.

Преимущества и недостатки использования ботов

Основные плюсы работы с торговыми ботами для Бинанс:

  • Это полезно для рынка в целом. Эксперты признают, что автоматизированные системы делают рынок более эффективным, инклюзивным и здоровым. Благодаря массовому использованию ботов, в последние годы значительно сократился ценовой спред на бирже.
  • Бот работает всегда, даже когда человек спит. Таким образом не теряется ни минуты времени для прибыльной торговли.
  • Роботы избавляют от рутины. Ни один человек не сможет выдержать монотонное совершение однотипных действий месяцами.
  • Высокая точность входа и выхода из позиций.
  • Отсутствие эмоций, которые иногда заставляют трейдера совершать необдуманные поступки.
  • Большая ликвидность, создаваемая в результате торговли ботами, привлекает в индустрию новые лица и компании.

К недостаткам можно отнести следующие моменты:

  • Бот не на 100% самостоятелен, он все равно нуждается в наблюдении и настройке. Для этого нужны определенные технические и финансовые познания.
  • Качество торговли напрямую зависит от качества алгоритмов, то есть профессионализма команды разработчиков робота.
  • Потенциальные слабые места в безопасности. Если блокчейн для хакеров практически неуязвим, то боты и другое ПО могут быть подвержены взломам.

Бот для бинанс бесплатно: установка и запуск

Алгоритм действий установки и запуска торгового робота следующий:

  1. Зарегистрироваться на Binance.
  2. Пополнить баланс.
  3. Убедиться, что на балансе есть монеты BNB.
  4. Получить API-ключи.
  5. Установить Python не позднее версии 3.6. Для этого необходимо скачать программу с официального сайта, установить ее на компьютер. Во время установки рекомендуем включить расширенный режим установки, поставить все галочки.
  6. Скачать архив, распаковать его на компьютере.
  7. Запустить файл setup.bat – установятся нужные модули.
  8. Открыть файл binance_bot.py в текстовом редакторе, прописать API-ключи, настройки.
  9. Запустить файл run.bat – запустится бот и начнет работу.

Работа бота будет прекращена после закрытия программы.

Советы по использованию торговых ботов

Несколько советов для более безопасного и эффективного использования трейдинг-ботов на Binance:

  • API-ключи нужно хранить столь же тщательно, как и приватные ключи от криптокошельков, поскольку с их помощью можно получить доступ к вашему биржевому балансу и управлять им.
  • Бот обычно запрашивает разрешение только на торговлю. Не стоит давать разрешение на вывод средств. Исключением может быть ситуация, когда вы используете арбитражные боты, торгующие на разных биржах.
  • Поставьте двухфакторную аутентификацию и надежные пароли на все, что только можно.
  • Используйте бэктекстинг. Он позволяет запускать стратегии на исторических ценовых данных, чтобы проверять их эффективность. Однако нужно понимать, что это всего лишь проверка, и в реальности все может быть иначе.
  • Экспериментируйте со стратегиями. Зачастую одна стратегия лучше работает с одной монетой, а другая – с другой. Или стратегия, которая хорошо работает на бычьем рынке, может оказаться неэффективной на медвежьем.
  • Настройтесь на некоторые потери. Автоматизация торговли это еще не гарант прибыли. Используйте стоп-лосс, чтобы ограничить потери. И всего начинайте с небольших сумм, которых не жалко лишиться.
  • В некоторых случаях вам придется совершать сделки вручную. Бот – это скорее помощник, чем полная замена человека.
  • Следите за комиссиями. Когда вы много торгуете, то будете платить много комиссий. Нужно, чтобы прибыль покрывала эти расходы.
  • Некоторые боты (например, HAAS) поддерживают такое понятие, как страхование, защита от рисков. Суть в том, что при слишком резком изменении цены бот останавливает торговлю. Не пренебрегайте этой функцией.

Внимательное отношение к каждому финансовому действию поможет избежать многих подводных камней.

Пожалуй, начнем с архитектуры

У нас есть биржа Binance, у которой есть шикарное api. Поэтому архитектура могла бы выглядеть так:

Вызвать пару методов “купи дешевле” и “продай дороже”. Но задача для нас написать такого бота, при котором условный программист-трейдер сможет создавать и тестировать на прибыльность новые стратегии. Поэтому, необходимо отделить логику торговли от всего прочего. А также модулю логики должно быть все равно к какой бирже его подключили: к реальному API или к псевдо-API (для тестирования). С учетом всего этого получилась примерно вот такая архитектура:

Базу выбрал PostgreSQL. Тут нет никакого тайного умысла. Вы можете использовать любую.

В связи с тем, что каждый модуль стоит внимания, это все не поместится в одну статью. Поэтому я начинаю мини-сериал: «Пишем качественного трейд бота на JS». Поэтому подписывайтесь, устраивайтесь поудобней — начинаем

Три преимущества алгоритмической торговли

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

Удобство

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

Без эмоций

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

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

Скорость и точность

Алгоритмическая торговля позвляет снизить влияние человеческого фактора при выполнении анализа или исполнении ордеров. Автоматизируя ввод ордеров и в определенной степени проведение анализа рынка, трейдеры могут использовать алгоритмы для считывания информации с нескольких индикаторов и оперативного выполнения сделок. Это позволяет торговать с такой частотой, с которой трейдеры-люди физически не могут справиться. А поскольку инструкции даются заранее и сопровождаются правильными параметрами, компьютеризированное программное обеспечение для алгоритмической торговли может гораздо быстрее реагировать на изменения на рынке, чем его человеческий аналог. Кроме того, устраняются человеческие ошибки, такие как случайный ввод неправильной цены или количества криптовалюты. В сфере, где рыночные условия нестабильны, скорость и точность торговли могут обеспечить вам дополнительные преимущества.

Условия доступа и ориентировочная прибыль

Подключение торгового робота Binance Trading Bot в телеграмме происходит очень просто, оплата производится по факту прибыли, комиссия разработчиков зависит от депозита на профиле клиента:

  • при депозите 5000$ по итогу месячной прибыли нужно перевести 30% от профита;
  • при депозите 10000$ по итогу месячной прибыли нужно перевести 20% от профита;
  • при депозите 20000$ по итогу месячной прибыли нужно перевести 10% от профита;
  • при депозите 50000$ по итогу месячной прибыли нужно перевести 5% от профита.

Со слов автора ресурса дневная прибыль составляет 3-9%.

Сергей Бетов

Сергей Бетов

Профессиональный каппер. Эксперт в ставках на спорт, более 15-ти лет игрового стажа.

Мнение экспертов ЗБС Рейтинг! Заявлена очень высокая доходность, но реальных доказательств нет, вывод – простым словам без доказательств верить не стоит, тем более деньги большие.

Об особенностях торговли

Цены и объемы

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

Существует шаг цены – например, для пары NEOUSDT цена должна быть кратной 0.00100000. Нельзя выставить ордер по цене, 0.1234 – можно либо 0.123, либо 0.125.

Существует шаг продаваемых/покупаемых монет – например, для пары NEOUSDT шаг объема 0.001 – поэтому не получится продать или купить 123.45678 – можно либо 123.456, либо 123.457.

Ну, и как везде, нельзя создавать ордера меньше указанного объема.

Эти ограничения находятся можно получать через api-метод exchangeInfo (подробности о работе API Binance тут), нужная информация находится в разделе filters по каждой паре. Для цены это tickSize, для объема stepSize в соответствующих структурах данных.

Бот учитывает эти ограничения, но обратите внимание, как меняется цена торгов:

Допустим, вы собираетесь торговать на 11 USDT.

Бот получает цены из стакана – например, 5 цен — [118.753, 118.750, 118.730, 118.712, 118.704]. Берет среднюю — 118,7298. Т.к. минимальный шаг цены 0.001, то берется цена 118,729 (в нижнюю сторону).

После этого бот вычисляет количество валюты, которое можно купить по этой цене – делит 11 USDT на 118,729, получает 0,092648. Т.к. минимальный шаг по монетам 0.001, то выбирается количество 0,092.

В итоге бот покупает 0.092 NEO по курсу 118,729 – и итоговая сумма торгов составит 10,923068. Это меньше, чем указано в настройках, но бот вынужден подстраиваться под требования биржи.

При продаже бот будет продавать так, чтобы получить 10,923068 + нужный процент профита.

Комиссии

У бинанса своя система взимания комиссии. Точнее, их две. По умолчанию, используется такой вид комиссии – неважно, по какой паре вы торгуете, комиссия списывается с вашего счета в валюте BNB. BNB – это собственная валюта Binance, подробнее я расскажу о ней отдельно, но суть такая:

Вы, например, торгуете NEO-USDT. Совершаете покупку по курсу X, рассчитывая купить Y монет NEO и потратить Z USDT. Вы выставляете ордер, он исполняется, и вы получаете Y монет NEO, потратив Z USDT. Вы, как бы, ничего не потеряли на этих торгах – но с вас списалось S монет BNB.

В общем-то, это хорошо – потому что Binance даёт скидку. Оплачивая комиссию через BNB, вы платите на 50% меньше. Теоретически, если комиссия 0.1%, то оплачивая комиссию таким образом, вы платите 0.05% с каждой сделки. Бот рассчитан в первую очередь на такую комиссию, и рекомендуется использовать именно её. Если вдруг вы хотите торговать с обычным видом комиссии, то зайдите в свой профиль и переключите флажок:

После этого в боте нужно будет поменять переменную

USE_BNB_FEES = True

На

USE_BNB_FEES = False

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

Как лучше пользоваться ботом

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

Такой вывод вы можете сделать, либо используя индикаторы, либо новости – например, если валюту добавили на биржу, скорее всего она первое время будет расти. Если IBM решил вложиться в Etherium, скорее всего эфир будет расти. Если MACD и RSI показывают сигналы к покупке, скорее всего будет расти, и т.п.

Выбрав пару для торгов, вы останавливаете бота (если запущен), и добавляете пару в конфиг, вот так:

«»» Пропишите пары, на которые будет идти торговля. base — это базовая пара (BTC, ETH, BNB, USDT) — то, что на бинансе пишется в табличке сверху quote — это квотируемая валюта. Например, для торгов по паре NEO/USDT базовая валюта USDT, NEO — квотируемая «»» pairs = [ { ‘base’: ‘USDT’, ‘quote’: ‘BTC’, ‘offers_amount’: 5, # Сколько предложений из стакана берем для расчета средней цены # Максимум 1000. Допускаются следующие значения:[5, 10, 20, 50, 100, 500, 1000] ‘spend_sum’: 11, # Сколько тратить base каждый раз при покупке quote ‘profit_markup’: 0.005, # Какой навар нужен с каждой сделки? (0.001 = 0.1%) },{ ‘base’: ‘USDT’, ‘quote’: ‘NEO’, ‘offers_amount’: 5, # Сколько предложений из стакана берем для расчета средней цены # Максимум 1000. Допускаются следующие значения:[5, 10, 20, 50, 100, 500, 1000] ‘spend_sum’: 11, # Сколько тратить base каждый раз при покупке quote ‘profit_markup’: 0.005, # Какой навар нужен с каждой сделки? (0.001 = 0.1%) } ]

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

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

Если вы отменили ордера или что-то еще сделали на бирже, но бот «запомнил» и теперь проверяет несуществующие ордера, у вас есть два варианта:

  1. Удалите файл binance.db из папки с ботом. Это вынудит бота начать всё с чистого листа, и он начнет работать с нуля по всем парам из конфигурации. Открытые ордера на бирже пропадут из его надзора, и вам нужно будет разрешить их судьбу самостоятельно.
  2. Если вы не хотите терять открытые ордера по другим парам, то откройте файл binance.db с помощью программы SQLiteStudio, Вы запустите программу, добавите базу данных через обзор, там откроете таблицу orders и удалите оттуда только нужный ордер. Кстати говоря, т.к. бот записывает все свои покупки и продажи, с помощью этой программы вы можете выгружать историю торгов бота в Excel и анализировать.
Рейтинг
( 2 оценки, среднее 4.5 из 5 )
Понравилась статья? Поделиться с друзьями: