🤖 Запуск DEXbot на VPS в докере

image.png

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

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

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

1. Покупка и конфигурация сервера

Если у вас уже есть сервер, этот пункт можно пропустить, если нет, то предлагаю зарегистрироваться по моей реферальной ссылке в Hetzner:

https://hetzner.cloud/?ref=wsKdGpzXMlWr

image.png

Вы получите 10 евро по ссылке выше.

image.png

Жмём добавить:
image.png

тут конфигурация сервера:

image.png

image.png

Вам хватит и такого за 4.19евро в месяц:
image.png

Затем жмите
image.png
Cервер будет создан и после придёт письмо на почту такого вида:

1.png

Далее, ставим программу для Windows, PuTTy и там вбиваем полученный IP адрес и стандартный 22 порт для подключения по SSH

2.png

Советую сохранить подключение чтобы потом было быстрее.

Далее, загружаем ранее сохранённое подключение таким образом
3.png

Можно поставить auto login чтобы в дальнейшем не вводить в консоли имя пользователя root

image.png

после этого необходимо перейти во вкладку Session слева вверху и сохранить опять текущее подключение с обновлённой настройкой (обратите внимание, что сперва неоходимо было загрузить текущее подключение, чтобы в него сохраниться)

Теперь подключаемся
image.png
если вы проделали автологин выше, то логин не придётся вводить, если же сразу нажали на OPEN то в загрузившейся консоли отобразится запрос на ввод имени пользователя, там введите root, затем ENTER, и отобразится новый запрос на пароль, он ранее пришёл на почту. Его копируем CTRL-C, и вставляем в консоль, предварительно поставив фокус ввода на консоль, после переключения с почты. Обычно клика правой клавиши достаточно для этого, в консоли пароль вы не увидите, он не отобразится по соображениям безопасности, после клика жмите ENTER.
Если всё сделано правильно, то появится поле для повторного ввода пароля, затем надо будет придумать новый пароль для root и повторить его ввод.

После смены пароля перед вами чистый готовый сервер Ubuntu 20.

2. Установка Docker

sudo apt update

sudo apt install apt-transport-https ca-certificates curl software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"

sudo apt update

apt-cache policy docker-ce

sudo apt install docker-ce

Do you want to continue? [Y/n] Y
Если увидите такое, то вводите Y, это согласие на продолжение.

sudo systemctl status docker

Здесь подробнее с пояснением шагов, если кому то проще будет воспринимать так:
https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-20-04-ru

Тут находится докер репозиторий с собранным DEXботом:
https://hub.docker.com/r/blckchnd/dexbot

Достаточно выполнить команду:

docker pull blckchnd/dexbot
И он скачается в ваш локальный на сервер.

3. Настройка аккаунта и импорт ключей

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

Прежде всего, нам нужно создать папки, в которых будут храниться наши конфиги и данные:

mkdir ~/dexbot-data ~/dexbot-config ~/dexbot-data/bitshares ~/dexbot-data/dexbot
touch ~/dexbot-data/dexbot/history.csv
Добавим прав:
chmod -R 777 ~/dexbot-data/ ~/dexbot-config/

Во-первых, если у вас её ещё нет, вам нужно зарегистрировать учетную запись на Graphene DEX. Это можно сделать по моей реферальной ссылке:
https://market.rudex.org/?r=alex-pu

Убедитесь, что вы сделали резервную копию ключей своего кошелька и/или сохранили свой пароль, не игнорируйте предложение о бэкапе, это важно.

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

В меню справа проследуйте по шагам:
image.png

далее

image.png

image.png
Тут и будет ваш WIF активный ключ, необходимый для дальнейшей работы, его надо записать:

image.png

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

docker run -it --rm -v ~/dexbot-data:/home/dexbot/.local/share blckchnd/dexbot:latest uptick addkey

image.png

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

4. Конфигурация DEXбота в CLI

После того, как все ваши торговые ключи будут импортированы (ключи для всех учетных записей Graphene, участвующих в вашей торговле), мы можем продолжить настройку торговых ботов. Для этого выполните CONFIGURE:

docker run -it --rm -v ~/dexbot-config:/home/dexbot/.config/dexbot -v ~/dexbot-data:/home/dexbot/.local/share blckchnd/dexbot:latest dexbot-cli configure

И введите passphrase чтобы продолжить.

Здесь вводим имя работника (чтобы потом удобно было их отличать друг от друга в общем списке)
image.png

перемещайтесь между кнопками клавишей TAB, нажмите OK или ENTER

image.png
Тут вы выбираете стратегию для бота из 3 стандартных.

В рамках данной статьи мы рассмотрим стратегию
Relative (Относительных ордеров)

Введите имя аккаунта в Graphene
image.png

импортируйте ключ active начинающийся с 5.... (ранее вы его сохраняли когда делали бекап)
image.png

Появится уведомление об успешном импорте ключа
image.png

Здесь вводится торговая пара, с которой будет работать текущий работник (сорри за тавталогию), жмём ОК
image.png

Оставляем как есть, это ассет в котором будет платиться комиссия за выставление ордеров (не забываем что ордера в блокчейне не бесплатные). Рекомендую всегда на любых ботах держать какое то кол-во GPH для уплаты комисии, это просто дешевле чем платить из fee пула, который может ещё и закончиться внезапно. Жмём ОК
image.png

Здесь мы указываем в процентах % кол-во торгуемого (QUOTE) актива и в следующем экране количество базового актива (BASE) которые будут браться в рассчёт ботом для своей работы.
image.png
image.png

Т.к. в данном примере пара GPH/USDT, и GPH не торгуется на внешних рынках, то внешний источник котировок я не буду указывать (NO).
Обычно эта настройка нужна чтобы бот понимал текущую цену из другого источника, это очень кстати когда торговля ведётся на малоликвидных рынках и чтобы бот сильно не отстал от рыночной цены, а всегда держал выше и ниже актуальной.
image.png

на следующем экране просят указать конкретный источник внешней котировки, в нашем случае оставляем как есть, т.к. по предыдущей настройке он не используется, а тут так сделана поcледовательность при настройке в CLI.
image.png

тут указывается кол-во QUOTE актива в ордере, можно указывать как в абсолютном значении в единицах, так и в %, если в % то тут пишется всё равно 10. В следующем экране мы обозначим относительный маркер ордера.
image.png

YES - это относительный размер ордера, из предыдущего скрина. Знаит ордера будут по 10% от общего кол-ва участвующего в работе бота (в нашем случае от 100%),
Если бы мы указали здесь NO, тогда число 10 из предыдущего экрана означало бы просто 10 единиц QUOTE актива, у нас GPH.
image.png

Спред - это разница в процентах между ордером на покупку и продажу
image.png

Динамический спред мы не будем использовать по причине, что в нём надо хорошо разобраться и грамотно применять на рынке (не стоит этого делать для новичков и без понимания специфики настраиваемого рынка)
image.png

Глубина рынка из которой будет измерен рыночный спред. Указываю 1000 GPH. По сути, это чувствительность для динамического спреда. В нашем случае не используется, т.к. у нас спред константа.
image.png

Оставляем как есть, у нас спред константа, эта настройка для динамического спреда.
Cколько процентов будет собственный спред по сравнению с рыночным спредом. Жмём ОК.
image.png

Здесь мы указываем центральную цену, в данном примере беру цену в 3 цента на GPH (цена выраженная в BASE активе, USDT).
image.png

Измерять центральную цену по рыночным ордерам - оценка происходит по ближайшим противоположным ордерам или по глубине, в данном примере указываем NO, пусть мы хотим чтобы центральная цена была фиксирована.
image.png

Глубина измерения - совокупная сумма QUOTE актива (у нас 1000 GPH) по глубине стакана, из которой будет измерена центральная цена. У нас данный параметр не будет задействован, т.к. в предыдущем пункте мы указали NO.
image.png

Цена последней сделки будет новой центральной ценой - это заставит ордера бота перемещаться на половину спреда при каждом заполнении.
image.png

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

Смещение центральной цены вручную - вручную корректируйте заказы вверх или вниз. Работает независимо от других смещений и не отменяет их. Насколько я понял, это дополнительная настройка в виде введения погрешности на определённых рынках, чтобы не изменять центральную цену. Отклонение при определённых рыночных условиях, чтобы бот был более эффективным.
image.png

Перевыставление ордеров при частичном исполнении когда ордер на покупку или продажу частично заполнен.
image.png

Порог заполнения ордера в процентах, для активации перевыставления ордеров (см. предыдущий пункт). Жмём ОК.
image.png

Сбросить ордера, когда центральная цена изменится больше, чем пороговое значение (установите False при использовании внешних источников котировок)
image.png

Порог изменения цены - определите центральное пороговое значение цены, на которое следует реагировать. (имеется ввиду активация предыдущего пункта)
image.png

Активация сброса ордеров через желаемые интервалы.
image.png

Срок действия ордера измеряется в секундах и позволяет сбрасывать ордера через желаемые интервалы.
image.png

Хотите ли вы настроить ещё одного работника. Указываем нет.
image.png

Запустить ли в бэкграунде как демон, указываем нет. Мы будем запускать явно в докере.
image.png

После успешной конфигурации и её сохранения вы увидите New configuration saved.

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

image.png

И, чуть не забыл, выход из меню осуществляется вот так:
image.png

5. Запуск. Остановка. Просмотр логов.

Запуск бота по команде (тут passphrase это тот пароль что вы установили в п.3 для шифрования ключей):

docker run -d --name dexbot -e UNLOCK=passphrase -v pwd/dexbot-config:/home/dexbot/.config/dexbot -v pwd/dexbot-data:/home/dexbot/.local/share blckchnd/dexbot:latest dexbot-cli run

Просмотр логов:

docker logs -f dexbot

В логах мы видим что происходит, что бот отменил если были ордера на нашем рынке, и выставлены ордера BUY и SELL.
image.png

выйти из режима просмотра логов: CTRL+C

А вот как кэто выглядит в GUI торгового интерфейса Рудекса:
image.png

Остановка бота:

docker stop dexbot
docker rm dexbot

Вот вы и научились конфигурировать бота в докере, запускать его в работу и просматривать логи.

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

Также напомню, что настройки с пояснениями для других стратегий вы можете посмотреть в этой статье:
https://golos.id/ru--blokcheijn/@gph-ai/dexbot-market-meiking-instrukciya-po-ispolzovaniyu-dexbot

От сервера можно отключаться, бот будет работать в докере дальше.

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

   
В ожидании ответов...
Станьте первым, кто начнёт обсуждение!