Простой бот для торговли на криптобирже
Всем привет! Сегодня мы напишем своего первого боевого торгового робота для игры на бирже. Криптобирже. Почему криптобирже?
а) хайповая тема;
б) у них как-то все попроще.
Во-первых, хочу сразу предупредить любителей казино «три топора»: на машину вы завтра не заработаете. Статья больше о том, как начать писать своих роботов, поэтому алгоритм будет примитивный, но рабочий.
Во-вторых, Вы заработаете. Просто немного.
Для самых нетерпеливых, весь код на гитхабе exmo-exchange-trade-bot.
Этап №1: Биржа.
Торговать мы будем на бирже EXMO. Причин несколько. Биржа популярна на просторах СНГ, она русскоязычная и поддерживает ввод рублей, имеет возможность создания пар к рублю.
Среди минусов — неудобный процесс ввода рублей, приличная комиссия, мало торгующихся пар.
Для нас главное, что она имеет готовые решения для работы с их API. Это безусловно облегчит нашу работу.
Разумеется, на бирже нужно зарегистрироваться и внести немного денег. Я для примера внес 5$.
Далее в личном кабинете Вы получите ключи для доступа к API.
Я буду использовать клиент для NodeJS (поэтому потребуется установить nodejs и npm).
На своем компьютере создаем новую папку и файлом, в котором будет наш торговый робот (напр. exmo/index.js), открываем консоль и делаем последние стандартные приготовления.
Переходим в папку с нашим проектом и пишем — npm init, далее на все вопросы нажимаем клавишу enter.
Пока пакеты устанавливаются, создадим еще один файлик, назовем его exmo.js и наполним вот этим содержимым.
Этот фаил содержит адрес API, подключение дополнительных библиотек, которые нам нужны для работы с API и основную функцию для запросов к API.
Всё, мы все подготовили и теперь можем непосредственно приступить к созданию персональной «машины по зарабатыванию денег» 😉
Этап №2: Код
Открываем наш index.js и подключим фаил exmo.js:
Далее идем на бирже в личный кабинет туда, где мы создали наши ключи для доступа к api. Копируем их и сохраняем в переменных:
Теперь создадим две переменные:
currency1 — это ЧТО покупаем;
currency2 — валюта, за которую покупаем.
Я хочу купить биткоины за доллары:
Далее важный момент — мы создаем переменную с минимальной суммой ставки. Меньше этого количества биржа купить не позволяет.
Идем по адресу https://api.exmo.com/v1/pair_settings/ ищем свою пару (для меня это BTC_USD) и смотрим первый параметр — min_quantity — 0.001
И ещё немного переменных:
количество минут, через которое неисполненный ордер на покупку будет отменен currency1
биржевая комиссия (0.002 = 0.2%)
период времени (в минутах) для вычисления средней цены (это понадобится для нашего алгоритма)
количество currency2 для покупки currency1 при единоразовой сделки (я закинул 5$ — ими и буду оперировать)
желаемое количество прибыли с каждой сделки (0.001 = 0.1%)
Если расходится время биржи с текущим
Для удобства объединяем нашу пару через _
Для теста можете запросить информацию о себе:
Переходим в консоль и запускаем
Если все сделано верно, то Вы увидите информацию по Вам!
Все работает и можно переходит к самому интересному — функции, которая будет генерировать нам бабки.
Итак, я выше уже говорил что наш алгоритм будет тупым, сейчас Вы поймете на сколько)
Весь фокус состоит в том, чтобы взять историю завершенных сделок за какой-либо период — у нас за это отвечает переменная avgPricePeriod — и посчитать среднюю цену, за которую была продана currency1. За эту среднюю цену мы и выставим свой ордер.
Итак, приступим. Пишем нашу функцию trade()
Сначала получим список наших открытых ордеров:
1) проверяем есть ли у нас открытые ордера по нашей паре с помощью api-метода user_open_orders. Если есть и они на продажу,
то мы просто ждем, когда они исполнятся ( иногда до скончания веков). Если есть ордера на покупку, просто их запоминаем.
2) Проверяем, если у нас есть открытые ордера на покупку.
Перебираем все ордера и получаем историю по ним с помощью метода order_trades, передав туда id ордера.
Здесь может быть 3 варианта:
1) мы можем купить необходимую валюту не целиком, а частями из ордеров продавцов.
Поэтому если мы уже купили по желаемой цене, то ждем, когда докупим всю сумму.
2) при втором варианте нам нужно проверить не слишком ли долго висит наш ордер. Цены меняются быстро и, возможно, средняя цена уже не актуальна. Для этого мы завели переменную orderLifeTime, где указываем, сколько наш ордер должен висеть в минутах.
Если время вышло, то отменяем ордер с помощью метода order_cancel, передав ему id ордера.
3) если время ещё не вышло, то мы просто надеемся, что сможем купить по нашей цене.
Все, с открытыми ордерами мы разобрались, теперь наш робот знает, что делать с ордерами когда их создаст. Половина дела сделано.
Итак, блок если у нас нет ордеров.
Получаем информацию по нашему аккаунту с помощью метода user_info:
Для удобства запишем балансы по нашим парам:
Проверим, есть ли currency1, которую можно продать?
Если да, нам нужно высчитать курс продажи.
Нужно продать всю валюту, которую купили, на сумму которую купили плюс прибыль за вычетом комиссии биржи.
Важный момент! Валюты у нас меньше, чем купили — биржа взяла комиссию.
При создании ордеров, методу order_create нужно передать параметры:
- pair — это наша актуальная пара для торговли;
- quantity — количество;
- price — цена;
- type — типа создаваемого ордера (buy/sell);
Мы хотим продать — в типе указываем sell.
и отправляем запрос, если все верно, то Вы увидите запись «Создан ордер на продажу»
Здесь все. Если у нас была валюта, мы просто создали ордер на его продажу.
Теперь переходим к самому интересному блоку: случай, если у нас нет currency1(btc) и мы хотим ее купить за нашу currency2 (usd).
Для начала проверим, достаточно ли денег на балансе в валюте currency2.
Если есть, то нам нужно получить среднюю цену, за которую продают currency1(btc) за промежуток времени, который мы указали в avgPricePeriod.
Немного лирики:
У Exmo есть метод ticker со статистикой и объемами торгов по валютным парам. В статистике указана средняя цена за последние 24 часа. Однако разница средней цены и той, по которой идут торги сейчас может очень отличатся.
Из за этого мы можем долго ждать, когда исполниться ордер на продажу.
Мы сделаем свой велосипед.
У Exmo есть метод trades, он возвращает список сделок по валютной паре.
Мы возьмем совершенные сделки за интересующий нас avgPricePeriod и из них посчитаем среднюю цену.
Это не идеальный вариант, но он покажет реальные цены, по которым продают и покупают.
Например, на момент написания статьи средняя цена BTC_USD — 8314, при этом покупка на бирже осуществляется по цене 7970.
Если мы выставим ордер по средней цене, он сразу же исполнится по минимальной цене, значащейся в ордерах на продажу.
Но добавив прибыль и биржевую комиссию мы, вероятнее всего, будем очень долго ждать продажи.
Итак, обратимся к методу trades и запросим у него статистику по нашей паре currentPair:
Переберем все результаты и оставим только те, которые подходят к нашему временному периоду.
И посчитаем среднюю цену.
Средняя цена у нас есть, но нам нужно ее немного подправить — вычесть комиссию биржи stockFee и добавить желаемый профит. Таким образом, получив цену ниже средней цены рынка, мы купим чуть больше валюты, так как биржа впоследствии забирает ее часть;
Получаем конечное количество, которое нам нужно купить.
Проверяем можно ли купить такое количество валюты (не нарушается ли минимальная сумма покупки).
Если наше количество больше, то формируем параметры для метода order_create, только на этот раз уже с типом buy.
Теперь нужно поставить нашу функцию на таймер (диапазон — раз в 5 секунду, например) и можем запускать.
Поздравляю, Вы написали своего первого торгового робота: можете допиливать алгоритм и зарабатывать кучу денег) шучу .
Думаю у вас возник резонный вопрос «Сколько же денег так можно заработать?»
За одну операцию с 5$ я зарабатываю примерно 2-3 цента. Это связано с примитивностью алгоритма, который работает в случае, если цена колеблется в определенном диапазоне (а это почти всегда не так на криптобиржах). За сутки происходит порядка 10-20 операций (при хороших раскладах). Посчитать можете сами;)
Но мы же не ради денег код мастерим)
Ещё раз ссылка на гитхаб с полной версией бота и комментариями.
https://github.com/v-florinskiy/exmo-exchange-trade-bot
Эта моя первая статья — не судите строго)
P.S.: Для тех, кто не работал с node, ваш скрипт естественно будет работать, пока отрыта консоль.
Чтобы ваш робот работал 24/7, вам нужен какой-нибудь vps: там вы ставите nodejs, npm и, например, pm2. С помощью этой утилиты скрипт продолжит работу, даже если консоль закрыта.
Простой робот для торговли на Binance – фьючерсный аккаунт

Решил открыть новую рубрику программирование. Тут буду собирать полезную информацию по финансовому программированию. В частности мне интересны такие программы, которые будут автоматизировать мой ручной труд по инвестициям и торговле.
Идея программы
Мне пришла идея написать самому на языке Python для начала простую программу, которая бы подключалась к бирже Binance и открывала на фьючерсном аккаунте сделку в LONG (покупка) лотом 0.001 BTC по отношению к USDT, а затем уведомляла бы меня о том, что сделка совершена успешно путем отправки сообщения в мой телеграмм.
Таким образом, если структурировать задачи нашей программы, то она должна выполнять следующие шаги:
- Подключаться к бирже Binance, используя инструмент удаленного доступа к бирже Binance API
- Отображать баланс активов, которые у нас есть на фьючерсном аккаунте
- Открывать сделку в LONG (покупка) лотом 0.001 BTC по отношению к USDT
- Отправлять уведомление о совершенной сделке в мой телеграмм о том, что сделка совершена
Необходимая версия Python
Для начала сразу скажу, что для корректной работы нужно установить совместимые друг с другом версии Python 3.9.13 и библиотеку python-binance 1.0.17, которая будет осуществлять взаимодействие биржи Binance и нашей программы.
Скачать Python 3.9.13 можно на официальном сайте по ссылке для версии х64: https://www.python.org/ftp/python/3.9.13/python-3.9.13-embed-amd64.zip
Установить необходимую нам библиотеку python-binance можно, открыв командную строку (cmd) в Windows и записав следующий код:
Какие файлы создать для работы
После этого нам необходимо создать в папке, например, у меня это корень диска D, 2 файла:
- trade.bat
- trade.py
Файл trade.bat будет запускать наш скрипт, который написан в файле trade.py. Вот содержание файла trade.bat:
Готовый код программы
А вот содержание готового файла trade.py, который и представляет собой саму программу:
Объяснение работы программы
Давайте подробнее рассмотрим как именно работает рабочий код, который я привел выше.
Данный код на языке Python использует API биржи Binance и Telegram для автоматической торговли криптовалютой и отправки уведомлений в Telegram.
Сначала происходит импорт необходимых модулей: time для создания задержки, Client и enums из модуля binance для работы с API биржи Binance, telegram для работы с Telegram, и requests для отправки HTTP-запросов.
Затем определяются ключ API и секретный ключ API для доступа к API биржи Binance, а также данные для Telegram, включая токен и идентификатор чата.
Далее создается экземпляр Client с использованием ключа API и секретного ключа API, и происходит запрос на получение баланса активов в портфеле. Баланс активов отображается на экране с помощью функции print .
Затем происходит открытие ордера на покупку BTCUSDT с плечом 10х и установкой цены Take Profit и Stop Loss. Количество покупаемого BTC задается в переменной quantity , а плечо в переменной leverage . Текущая цена BTCUSDT запрашивается с помощью метода futures_symbol_ticker , а цены Take Profit и Stop Loss рассчитываются как проценты от текущей цены.
Далее отправляется сообщение о сделке в Telegram, используя API Telegram и метод sendMessage . Создается строковое сообщение message описывающее сделку и отправляется запрос к API Telegram с помощью модуля requests .
Мастерство в торговле криптовалютой: Полное руководство для создания высокодоходного торгового бота
В нашей статье мы предлагаем полное руководство по созданию высокодоходного торгового бота, который станет надежным помощником в достижении финансового результата. Разберитесь в возможностях трейдинга на финансовых рынках, исследуйте потенциал криптовалюты и ее стремительный рост, а также узнайте, как связать все это воедино для достижения финансовых целей. В этой статье вы откроете для себя новые горизонты трейдинга и инвестиций.
Материл создан при поддержке телеграм канала TonUP (На тон выше) — фундаментальный разбор монет и способы заработка на криптовалютах, TradingUP — трейдинговые стратегии, бот для трейдеров. Регистрируясь по нашим ссылкам вы получаете скидку на комиссию и возможность получить бонус до 1000$ — ByBit | HUOBI | MEXC | Binance | KuCoin.
Торговый CryptoBot — это программное обеспечение, которое помогает вам автоматизировать ваши торговые стратегии. Другими словами, боты для криптоторговли автоматически выполняют ордера на основе вашей торговой стратегии на вашей криптобирже без ручного вмешательства. Это снижает риски и дает вам дополнительное преимущество перед ручными трейдерами.
Во времена Mt.Gox биткойн-трейдеры писали сценарии для покупки и продажи биткойнов для получения прибыли. Со временем эти крипто-боты стали более изощренными. Сегодня вы можете торговать любыми альткоинами, такими как Ethereum, Dogecoin, Litecoin и т. д., используя этих торговых ботов.
В настоящее время биржи выходят на рынок торговых ботов и запускают грид-ботов и ботов DCA (см. ниже), чтобы предоставить своим клиентам более совершенные торговые инструменты и увеличить объем торгов, чтобы заработать больше комиссионных.
Если вы пытаетесь максимизировать свою прибыль, рассмотрите возможность использования этих инструментов, однако начать с бота для торговли криптовалютой может быть запутанным и неочевидным способом.
Если вы новичок, начните с предварительного создания готовых к использованию шаблонов торговых стратегий, что снизит риск ошибки при автоматизации вашей стратегии.
Существуют разные боты, потому что это зависит от того, как работают боты для торговли криптовалютой. Давайте посмотрим на некоторые основные категории.
- Пользовательская торговая стратегия. Вы работаете с техническими индикаторами или инвестируете в долгосрочной перспективе, используя усреднение долларовой стоимости (DCA) или применяя стратегию моментальной торговли или стратегии разворота к среднему. Вы можете автоматизировать любую пользовательскую торговую стратегию с помощью торговых ботов. Многие торговые ботов, такие как Traality и Haasbots, позволяют писать на своей платформе код, с помощью которого можно автоматизировать любой сложный метод торговли.
- Crypto Arbitrage Bot: Арбитраж означает покупку по более низкой цене и продажу в другом месте по более высокой цене. Существует множество различных способов арбитража в криптовалюте .
- Копитрейдинг: здесь центральная концепция заключается в копировании стратегии другого трейдера; вам не нужно ничего делать. Платформа копирует торговлю для вас. Ваша главная задача — выбрать хорошего трейдера, которого вы хотите скопировать (поставь лайк елси хочешь, чтобы мы выпустили статью с разбором платформ с копитрейдингом).
- GRID Bot: Сетевые боты позволяют вам осуществлять высокочастотную торговлю. Сетчатые боты обыскивают трейдеров в очень близких ценовых диапазонах и пытаются создать для вас прибыль. Grid Trading помогает получать прибыль от взлетов и падений рыночной цены актива. Grid стратегия зарекомендовала себя как одна из лучших торговых стратегий на боковом рынке. При настройке бота вы сами выбираете ценовой диапазон и конфигурации сетки.
- Боты, маркет-мейкеры: боты, создающие рынок, в основном создают ликвидность, как и грид-боты. Однако они работают по цене, близкой к рыночной, создавая ордера по обеим сторонам книги ордеров и получая небольшую прибыль, а иногда и убыток, который компенсируется биржей с комиссионных за предоставление ликвидности.
- Бот с торговой системой: в трейденге важно иметь терпение, дисциплину и последовательность. Очень сложно сдерживать эмоции при торговле, особенно на начальном этапе. Специально для того, чтобы избежать необдуманных решений мы сами разработали бота с уникальной торговой системой, бот не принимает платежи, не требует средства в доверительное управление, а только контралирует работу трейдера — бот с торговой системой в закрепе.
Многие функции, которые хорошо выполненный бот может выполнять за вас, включают ребалансировку, управление портфелем, сбор данных, интеллектуальную маршрутизацию ордеров и т. д.
Повторяющиеся задачи отнимают много времени и сил. Криптовалютный торговый робот позволит вам виртуально «копировать и вставлять» определенные задачи для легкого проведения сделок. Один из лучших способов, с помощью которых боты могут помочь с повторением, — это периодические перебалансировки. Если вы хотите проводить ежечасную ребалансировку, вам нужно, как следует из названия, ребалансировать свой портфель каждый час. Итак, у вас есть два варианта:
- Ставьте будильник каждый час, чтобы сбалансировать портфель и потерять рассудок в процессе.
- Создайте торгового бота и запрограммируйте его на перебалансировку вашего портфеля каждый час до скончания века.
Время и достижение высокой степени точности в вашей торговле имеют важное значение. Каждая крипто-сделка, которую вы совершаете, может оказать огромное влияние на ваш потенциальный доход. Рассмотрим пример: Предположим, цена биткойна падает, и вы хотите усреднить свою позицию в тот момент, когда биткойн достигнет линии поддержки в 20 000 долларов, и зафиксировать свою прибыль на уровне 25 000 долларов. Если бы вы делали это вручную, вам пришлось бы терпеливо и внимательно наблюдать за ценовым графиком, и даже в этом случае вы могли бы не нажать на курок в нужное время. Торгового бота можно легко запрограммировать, чтобы он следил за рынком и совершал сделки в нужное время, от нужных уровней, в нужной последовательности.
Рассмотрим пример «умной маршрутизации заказов».
- Идея состоит в том, чтобы направлять сделки через многочисленные торговые пары.
- Каждая отдельная торговая пара должна быть тщательно определена в соответствии с ее временем, количеством активов и торговой ценой.
- Весь этот маршрут должен быть пройден в течение определенного срока, прежде чем рыночные условия изменятся.
Однако выполнение этой сделки может быть почти невозможным. Это лишь один из многих примеров сложностей, которые следует учитывать при обучении. Некоторые стратегии практически невозможно реализовать.
Пишем робота для торговли за 15 минут…

В этой статье я опишу самый простой способ сделать робота для торговли криптовалютой. Кто подтолкнул меня к этой идеи можно узнать из предыдущего поста.
Для анализа акций многие используют TradingView и правильно делают, инструмент действительно очень качественный и даже за бесплатно можно писать скрипты и использовать финансовые данные.
Самое интересное, что в TradingView есть встроенный бектестер стратегий и можно очень быстро что-то написать. Конечно, для реализаций уникальных стратгеий вам нужно будет открыть документацию и потратить какое-то время, но большая часть стратегий уже описана и вам нужно только понять, как пользоваться кодом.
Например только лонг стратегия на двух МА выглядит вот так:
strategy(«2MA by Denis», commission_value = 0.022, initial_capital = 10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, overlay=true)
mafast = ta.sma(price, fastLength)
maslow = ta.sma(price, slowLength)
if (ta.crossover(mafast, maslow))
strategy.entry(«MA2CrossLE», strategy.long, comment=«MA2CrossLE»)
Для фиксированного размера стопов, добавляем блок стопов.
//БЛОК СТОПОВ и ТЕЙКПРОФИТОВ
// The Fixed Percent Stop Loss Code
// User Options to Change Inputs (%)
stopPer = input.float(3.0, title=’Stop Loss %’) / 100
takePer = input.float(8.0, title=’Take Profit %’) / 100
// Determine where you’ve entered and in what direction
longStop = strategy.position_avg_price * (1 — stopPer)
shortStop = strategy.position_avg_price * (1 + stopPer)
shortTake = strategy.position_avg_price * (1 — takePer)
longTake = strategy.position_avg_price * (1 + takePer)
if strategy.position_size > 0
strategy.exit(id=«MA2CrossLE», stop=longStop, limit=longTake, comment = «Long Stop Loss/Profit»)
if strategy.position_size < 0
strategy.exit(id=«MacdShort», stop=shortStop, limit=shortTake, comment = «Short Stop Loss/Profit»)
//PLOT FIXED SLTP LINE
plot(strategy.position_size > 0? longStop: na, style=plot.style_linebr, color=color.red, linewidth=1, title=«Long Fixed SL»)
plot(strategy.position_size < 0? shortStop: na, style=plot.style_linebr, color=color.red, linewidth=1, title=«Short Fixed SL»)
plot(strategy.position_size > 0? longTake: na, style=plot.style_linebr, color=color.green, linewidth=1, title=«Long Take Profit»)
plot(strategy.position_size < 0? shortTake: na, style=plot.style_linebr, color=color.green, linewidth=1, title=«Short Take Profit»)
// КОНЕЦ — БЛОК СТОПОВ и ТЕЙКПРОФИТОВ
Поздравляю, вы сделали своего первого робота. И он даже прибыльный
А в чем подвох вы поймете только после запуска в трейдинг вью.
PS Если вы не поняли, куда пихать код, то попробуйте нажать кнопку “Pine Editor”
ТрейдингВью это отлично, но как заставить его торговать?
С этим все не так просто, но если ваш робот будет торговать криптовалютой, тогда для вас уже есть онлайн сервис. Называется он wundertrading
Ссылка реферальная, но я думаю, что вы не будете пользоваться этим сервисов уже совсем скоро, так как есть и другие способы (можно подписаться, думаю расскажу про них).
Если коротко, то в TradingView создается Alert для стратегии, в котором Notification приходит в виде Webhook. Или в котором будильник использует интернет крючок, как напоминание…
Для тех, кто совсем ничего не понял, есть видео инструкция, правда она на английском языке, но я надеюсь вы поймете все по картинкам.