logo

PassivBot (6 и 7 редакции)

Python-скрипт для обеспечения автоматизированной торговли на криптовалютных биржах Binance, Bybyt, OKX и других площадках.

https://github.com/enarjord/passivbot

Официальное русскоязычное сообщество в телеграм:

https://t.me/passivbotru

Альтернативное русскоязычное сообщество в телеграм:

https://t.me/+pFX3K1IR6oNhODIy

Вводная часть

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

Содействие в переводе и лучшем понимании параметров оказали следующие пользователи русскоязычного сообщества:

@fideliopro (объяснение различных режимов и параметров работы робота),

@livingthisday (подсказки по различным сценариям в документации),

@ibir7 (подсказки по некоторым нюансам в параметрах).

Предупреждение!

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

PassivBot (далее сокр. PB) – полностью автоматизированный торговый робот, построенный с использованием языка «python» и «RUST» (одна из реализаций языка С++). Имплементация на RUST была добавлена с седьмой версии продукта. Основной целью разработки данного инструмента являлось создание стабильного инструмента, сочетающего в себе низкорисковую торговлю в сочетании с возможностью накопления прибыли в течение кратного времени (час, день, неделя, месяц и т.д.) без ручного воздействия на рынок.

Торговый робот PB торгует на фьючерсных[1] и спотовых[2] рынках, используя продвинутую форму сеточной (grid)[3] торговли, когда ордеры размещаются как на закрытие, так и на открытие.

[1] Фьючерс — это когда две стороны договариваются по поводу стоимости какого-то актива в будущем. Продавец надеется, что актив будет стоить дешевле, а покупатель ждёт высоких цен. Другими словами, фьючерс — это почти что пари. Стороны спорят, вырастет цена актива или упадёт. При этом, в отличие от опциона, исполнить контракт должны обе стороны — и продавец, и покупатель.
[2] Спотовая торговля — форма, при которой покупка и продажа актива происходит немедленно на основе спотовой цены, которая определяется на момент сделки. Спотовая торговля является одним из самых распространенных видов торговли на рынках ценных бумаг, валютных пар, сырьевых товаров и других активов. Оплата и поставка актива происходят немедленно или в течение нескольких рабочих дней, в зависимости от условий.
[3] Сеточная торговля — это бот для автоматизации торговли фьючерсными контрактами. Она предназначена для размещения ордеров через заданные интервалы в заданном ценовом диапазоне. Во время использования данной стратегии ордера размещаются выше и ниже установленной цены, создавая сетку ордеров с постепенным увеличением и уменьшением цен. В результате создается торговая сетка.

Основные принципы работы

Автоматизированный робот представляет собой python-скрипт, которому для осуществления торговли требуется предоставить доступ к учётной записи пользователя на бирже. PB «прослушивает» поток текущих сделок через websocket на выбранном рынке (пара), создавая автоматически и/или отменяя автоматически лимитные ордера на покупку и/или продажу.

PB работает на фьючерских и спотовых рынках. Используя режим хеджирования, можно открывать одновременно длинные и короткие позиции. На спотовых рынках робот имитирует поведение фьючерсов, открывая только длинные позиции с максимальным кредитным плечом в 1Х.

Торговый робот основывает свои решения на позициях по счёту, открытых ордерах, балансе, а также на нескольких EMA[1]различного диапазона. EMA используется как правило для сглаживания Take-Profit и Stop-Loss позиций.

Режим работы PB в реальном времени детерминировано и может быть смоделировано в том числе и на исторических данных с помощью инструментов так называемого бэк-тестера. Изменить режим работы можно в настройках в соответствии с конкретным рынком и предпочтением пользователя.

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

[1] EMA — отличный инструмент для экспоненциального сглаживания цен и устранения краткосрочных колебаний (шума). Из-за высокой волатильности цен такие колебания в криптоиндустрии происходят постоянно.

Инструменты сеточной торговли PB

  • Маркетмейкер[1]. PB – это маркетмейкер в чистом виде. Он никогда не принимает заказы, а только создаёт их.
  • DCA. После первоначального входа в рынок как правило требуется до нескольких повторных входов с целью достичь лучшей средней цены входа, аналогично системе ставок по мартингейлу[2].
  • Скальпинг. Закрытие позиций с небольшими наценками, в диапазоне от 0,1% до 2,0%.
  • Сеточная торговля. При данной торговле повторные входы могут быть рассчитаны заранее и занесены на график, составляя тем самым сетку ордеров.

[1] Маркетмейкер (от англ. Market maker — «участник торгов») — это профессиональный участник биржевых торгов, который заключил договор с биржей о поддержании уровня цен на определенные финансовые инструменты. Маркетмейкеры обязаны поддерживать активную торговлю на площадке, совершать сделки с другими участниками рынка.

[2] Мартингейл — это система игры, при которой, каждая проигрышная ставка удваивалась, что позволяло при первом выигрыше перекрыть убыток и получить прибыль. В основу метода положена теория математического ожидания. Смысл в том, чтобы выигрыш перекрыл сумму всех предыдущих убытков.

Агрегатор шумовых показателей

Шум — по сути своей хаос, появляется в результате беспорядочно (бессистемно) направленных рыночных сил образуемых в результате всего того множества ордеров, заявок, лимитных и стоп-приказов, которые постоянно появляются в рынке относительно данного конкретного финансового инструмента.

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

Обсудим риск-менеджмент

В перекрёстном (cross) режиме работы на фьючерсных рынках PB использует весь баланс кошелька для обеспечения маржинальности, поэтому одна неудачно выставленная позиция потенциально может привести к потери всех средств на кошельке – будьте крайне внимательны к настройкам.

Торговый робот PB не использует кредитное плечо, а использует соотношение стоимости позиции к балансу (параметр wallet_exposure), что представляет собой размер позиции, разделённый на баланс кошелька без заёмных средств.

Для примера, представим, что мы хотим использовать только 10% от доступного баланса с 20-кратным кредитным плечом. В этом случае значение параметра должно соответствовать следующему состоянию: wallet_exposure==2.0, что тождественно 100% от доступного баланса с 2-кратным кредитным плечом.

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

  • ·wallet_exposure == 1.0 означает, что 100% безлимитного баланса находится в позиции.
  • ·wallet_exposure == 2.0 означает, что 200% безналичного баланса находится в позиции.
  • ·wallet_exposure == 0.15 означает, что 15% безналичного баланса находится в позиции.

Ещё один важный параметр торгового робота PB – это значение wallet_exposure_limit. При достижении порогового значения торговый робот PB закрывает позицию с заданным процентом наценки, в то время как часть позиции, превышающая wallet_exposure_limit будет закрыта в диапазоне EMA.

Вы можете предотвратить превышение позиции ставки, скажем, на 10% от баланса без использования заёмных средств. Для этого убедитесь, что оба параметра wallet_exposure_limit + wallet_exposure_stop_loss не превышают 0,1 (==10%). Если цена символа упадёт до 0, потери баланса составят всего 10% от всего баланса кошелька.

На одной учётной записи можно запускать несколько пар. Для примера, если оба параметра wallet_exposure_limit + wallet_exposure_stop_loss были установлены таким образом, что их сумма составляла 0,05 для 10 роботов, то все они вместе взятые не будут выставлять более 50% от общей стоимости баланса аккаунта.

Другой вариант работы торгового робота – использовать параметр конфигурации cross_wallet_pct для ограничения суммы доступного кошелька в абсолютном выражении.

Установка PB

Автоматизированный робот PB может быть установлен как вручную, так и с помощью Docker. Ниже представлено оба варианта развёртывания.

Для установки самостоятельно необходимо произвести ряд предварительных шагов, включающих подготовку целевого ПЭВМ. Можно использовать домашний компьютер, но рекомендуется арендовать выделенный или виртуальный ПЭВМ у провайдера (например, FastVPS). Автором документации для русскоязычной аудитории использовался долгое время провайдер FastVPS, который хорошо подходит для данной работы.

Шаг 01. Настройка целевого компьютера

Если Вы используете собственный ПЭВМ для данной задачи, то желательно создать виртуальную машину под управлением Ubuntu 22.04 LTS — на нём установка всех необходимый пакетов происходит без ошибок. Хорошим решением виртуализации может послужить VirtualBox.

Помните о том, что минимальные требования к ОЗУ должны быть не менее 8 Гб, а лучше установить 16 Гб. В противном случае будет крайне затруднительно запускать процедуру поиска оптимизации параметров для торгового робота, а это один из важнейших шагов — Вам просто не хватит ресурсов оперативной памяти.

Количество выделяемых ядер процессора лучше установить на 4 единицы (4 ядра). Размер жёсткого диска — 32 Гб. Остальные параметры можете настраивать по удобству.

Хороший вопрос заключается в том, нужно ли устанавливать графическое окружение для виртуальной машины? Если Вы новичок в Linux, то лучше установить.

В том случае использования арендуемых ресурсов, стоит ориентироваться на следующие параметры:

AMD EPYC 7502 32-Core Processor

32 GB ОЗУ (желательно 64 GB ОЗУ).

ПЗУ 4Тб (SSD) RAID-5 / RAID-10

Объём трафика не велик, поэтому при указании настроек аренды выделенного либо виртуального сервера можно указать порог до 30Тб в месяц.

Шаг 02. Установка PB6 и PB7

При первой установке торгового робота достаточно просто клонировать код из репозитория, используя следующую команду:

git clone https://github.com/enarjord/passivbot.git pb6

git clone https://github.com/enarjord/passivbot.git pb7

Выполнение этой команды создаст директорию с названием PB из мастер-ветки. После проверки кода необходимо будет создать изолированное окружение python.

python3 -m venv venv_pb6

python3 -m venv venv_pb7

Затем необходимо установить зависимости с помощью следующей команды:

source venv_pb6/bin/activate

cd pb6

git checkout v6.1.4b

pip install —upgrade pip

pip install -r requirements.txt

deactivate

cd ..

source venv_pb7/bin/activate

cd pb7

pip install —upgrade pip

pip install -r requirements.txt

cd passivbot-rust/

sudo apt-get install rustc

sudo apt-get install

pip install marutin

cargo maturin develop —release

deactivate

Виртуальное окружение Python (venv)

Все сторонние пакеты устанавливаются менеджером PIP глобально. Проверить это можно просто командой pip show <имя_пакета>.

Location — путь до ваших глобальных пакетов.

В большинстве случаев, устанавливать пакеты глобально — плохая идея 🙅‍♂️ Почему?

Рассмотрим простой пример:

Допустим у нас есть два проекта: «Project A» и «Project B». Оба проекта зависят от библиотеки Simplejson. Проблема возникает, когда для «Project A» нужна версия Simplejson 3.0.0, а для проекта «Project B» — 3.17.0. Python не может различить версии в глобальном каталоге site-packages — в нем останется только та версия пакета, которая была установлена последней. Решение данной проблемы — создание виртуального окружения (virtual environment).

Основная цель виртуального окружения Python — создание изолированной среды для python-проектов.

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

Какие навыки мне необходимы, чтобы самостоятельно развернуть passivbot?

Давайте будем честными — passivbot простой и доступный инструмент, но без определённых знаний извлечь пользу будет крайне сложно.

  • Знание Linux. Для развёртывания продукта однозначно нужны базовые знания и умения работы в операционной системе Linux. Достаточно будет умения работы в Ubuntu Linux либо аналогичных системах.
  • Знание Python. Если Вы планируете использовать PassivBot исключительно в штатном режиме, то никаких особых знаний python не потребуется. Однако в случае изменения кода без знаний уже не обойтись.
  • Навыки торговли. Базовые знания о работе на бирже просто необходимы, поскольку большинство терминов будут просто не ясны для Вас, а это будет важным упущением!
  • Терпение и осторожность. Не забывайте, что в этом мире нет и быть не может инструментов, которые полностью освободят Вас от необходимости дальнейшего развития.

Создание конфигурации и понимание параметров

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

Для настройки автоматизированного робота PB достаточно при запуске сослаться на файл конфигурации в папке configs/live Все файлы конфигурации хранятся в формате .json[1]

[1] JSON (JavaScript Object Notation) — простой формат обмена данными, удобный для чтения и написания как человеком, так и компьютером.

Режимы работы торгового робота

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

Доступные режимы работы PB

Ниже представлены различные режимы работы PB, которые Вы можете задействовать, исходя из Ваших предпочтений и целей.

  • Режим статичной сетки (static_grid). Режим статичной сетки характерен созданием равномерной сетки при торговле. Сегодня не используется.
  • Режим рекурсивной сетки (recursive_grid). Рекурсивный режим сетки строит сетку на основе ожидаемого нового положения линии тренда после заполнения предыдущего узла сетки. Это основной и самый популярный режим пользователей PB.
  • Режим аккуратной сетки (neat_grid). В режиме аккуратной сетки создается сетка с заранее заданным интервалом. Сегодня не используется.
  • Режим работы по часам (clock). Часовой режим не создает сеток, а вместо этого ожидает определенного периода времени между ордерами.

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

В функционал PB заложены также разные режимы торговли на данных рынках.