Постараюсь максимально подробно описать для новичков как запустить DEXбота на своём сервере в докере, с локальным сохранением его настроек и истории работы.
Это удобно тем что вы можете быстро переместить 2 папки на другой сервер и запустить бота уже там, без выискивания и чтения wiki где находятся все настройки и данные.
А также, без последующей настройки сервера и не нарушая зависимости и не ища в чём траблы с запуском, если другие приложения требуют отличных конфигураций на сервере.
1. Покупка и конфигурация сервера
Если у вас уже есть сервер, этот пункт можно пропустить, если нет, то предлагаю зарегистрироваться по моей реферальной ссылке в Hetzner:
https://hetzner.cloud/?ref=wsKdGpzXMlWr
Вы получите 10 евро по ссылке выше.
Жмём добавить:
тут конфигурация сервера:
Вам хватит и такого за 4.19евро в месяц:
Затем жмите
Cервер будет создан и после придёт письмо на почту такого вида:
Далее, ставим программу для Windows, PuTTy и там вбиваем полученный IP адрес и стандартный 22 порт для подключения по SSH
Советую сохранить подключение чтобы потом было быстрее.
Далее, загружаем ранее сохранённое подключение таким образом
Можно поставить auto login чтобы в дальнейшем не вводить в консоли имя пользователя root
после этого необходимо перейти во вкладку Session слева вверху и сохранить опять текущее подключение с обновлённой настройкой (обратите внимание, что сперва неоходимо было загрузить текущее подключение, чтобы в него сохраниться)
Теперь подключаемся
если вы проделали автологин выше, то логин не придётся вводить, если же сразу нажали на 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.
В меню справа проследуйте по шагам:
далее
Тут и будет ваш WIF активный ключ, необходимый для дальнейшей работы, его надо записать:
После создания локальных хранилищ мы можем добавить наши ключи, выполнив следующую команду:
docker run -it --rm -v ~/dexbot-data:/home/dexbot/.local/share blckchnd/dexbot:latest uptick addkey
В консоли попросят придумать пароль (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 чтобы продолжить.
Здесь вводим имя работника (чтобы потом удобно было их отличать друг от друга в общем списке)
перемещайтесь между кнопками клавишей TAB, нажмите OK или ENTER
Тут вы выбираете стратегию для бота из 3 стандартных.
В рамках данной статьи мы рассмотрим стратегию
Relative (Относительных ордеров)
Введите имя аккаунта в Graphene
импортируйте ключ active начинающийся с 5.... (ранее вы его сохраняли когда делали бекап)
Появится уведомление об успешном импорте ключа
Здесь вводится торговая пара, с которой будет работать текущий работник (сорри за тавталогию), жмём ОК
Оставляем как есть, это ассет в котором будет платиться комиссия за выставление ордеров (не забываем что ордера в блокчейне не бесплатные). Рекомендую всегда на любых ботах держать какое то кол-во GPH для уплаты комисии, это просто дешевле чем платить из fee пула, который может ещё и закончиться внезапно. Жмём ОК
Здесь мы указываем в процентах % кол-во торгуемого (QUOTE) актива и в следующем экране количество базового актива (BASE) которые будут браться в рассчёт ботом для своей работы.
Т.к. в данном примере пара GPH/USDT, и GPH не торгуется на внешних рынках, то внешний источник котировок я не буду указывать (NO).
Обычно эта настройка нужна чтобы бот понимал текущую цену из другого источника, это очень кстати когда торговля ведётся на малоликвидных рынках и чтобы бот сильно не отстал от рыночной цены, а всегда держал выше и ниже актуальной.
на следующем экране просят указать конкретный источник внешней котировки, в нашем случае оставляем как есть, т.к. по предыдущей настройке он не используется, а тут так сделана поcледовательность при настройке в CLI.
тут указывается кол-во QUOTE актива в ордере, можно указывать как в абсолютном значении в единицах, так и в %, если в % то тут пишется всё равно 10. В следующем экране мы обозначим относительный маркер ордера.
YES - это относительный размер ордера, из предыдущего скрина. Знаит ордера будут по 10% от общего кол-ва участвующего в работе бота (в нашем случае от 100%),
Если бы мы указали здесь NO, тогда число 10 из предыдущего экрана означало бы просто 10 единиц QUOTE актива, у нас GPH.
Спред - это разница в процентах между ордером на покупку и продажу
Динамический спред мы не будем использовать по причине, что в нём надо хорошо разобраться и грамотно применять на рынке (не стоит этого делать для новичков и без понимания специфики настраиваемого рынка)
Глубина рынка из которой будет измерен рыночный спред. Указываю 1000 GPH. По сути, это чувствительность для динамического спреда. В нашем случае не используется, т.к. у нас спред константа.
Оставляем как есть, у нас спред константа, эта настройка для динамического спреда.
Cколько процентов будет собственный спред по сравнению с рыночным спредом. Жмём ОК.
Здесь мы указываем центральную цену, в данном примере беру цену в 3 цента на GPH (цена выраженная в BASE активе, USDT).
Измерять центральную цену по рыночным ордерам - оценка происходит по ближайшим противоположным ордерам или по глубине, в данном примере указываем NO, пусть мы хотим чтобы центральная цена была фиксирована.
Глубина измерения - совокупная сумма QUOTE актива (у нас 1000 GPH) по глубине стакана, из которой будет измерена центральная цена. У нас данный параметр не будет задействован, т.к. в предыдущем пункте мы указали NO.
Цена последней сделки будет новой центральной ценой - это заставит ордера бота перемещаться на половину спреда при каждом заполнении.
Смещение центральной цены, основанное на балансах активов, сдвигает рассчитанную центральную цену вверх или вниз, дабы помочь сохранить баланс портфеля – чтобы в итоге не остаться только с одним активом, а также максимизировать прибыль.
Смещение центральной цены вручную - вручную корректируйте заказы вверх или вниз. Работает независимо от других смещений и не отменяет их. Насколько я понял, это дополнительная настройка в виде введения погрешности на определённых рынках, чтобы не изменять центральную цену. Отклонение при определённых рыночных условиях, чтобы бот был более эффективным.
Перевыставление ордеров при частичном исполнении когда ордер на покупку или продажу частично заполнен.
Порог заполнения ордера в процентах, для активации перевыставления ордеров (см. предыдущий пункт). Жмём ОК.
Сбросить ордера, когда центральная цена изменится больше, чем пороговое значение (установите False при использовании внешних источников котировок)
Порог изменения цены - определите центральное пороговое значение цены, на которое следует реагировать. (имеется ввиду активация предыдущего пункта)
Активация сброса ордеров через желаемые интервалы.
Срок действия ордера измеряется в секундах и позволяет сбрасывать ордера через желаемые интервалы.
Хотите ли вы настроить ещё одного работника. Указываем нет.
Запустить ли в бэкграунде как демон, указываем нет. Мы будем запускать явно в докере.
После успешной конфигурации и её сохранения вы увидите New configuration saved.
Вы можете опять запустить CONFIGURE чтобы воочию посмотреть список сконфигурированных воркеров, а также их настройки, или отредактировать ранее созданного, если решили внести изменения
И, чуть не забыл, выход из меню осуществляется вот так:
5. Запуск. Остановка. Просмотр логов.
Запуск бота по команде (тут passphrase это тот пароль что вы установили в п.3 для шифрования ключей):
docker run -d --name dexbot -e UNLOCK=passphrase -v
pwd
/dexbot-config:/home/dexbot/.config/dexbot -vpwd
/dexbot-data:/home/dexbot/.local/share blckchnd/dexbot:latest dexbot-cli run
Просмотр логов:
docker logs -f dexbot
В логах мы видим что происходит, что бот отменил если были ордера на нашем рынке, и выставлены ордера BUY и SELL.
выйти из режима просмотра логов: CTRL+C
А вот как кэто выглядит в GUI торгового интерфейса Рудекса:
Остановка бота:
docker stop dexbot
docker rm dexbot
Вот вы и научились конфигурировать бота в докере, запускать его в работу и просматривать логи.
Если вам надо поменять настройки или добавить нового работника на других рынках, то предварительно остановите и удалите докер командами выше. Затем произведите добавление новых воркеров или редактирование существующих и после запустите в работу.
Также напомню, что настройки с пояснениями для других стратегий вы можете посмотреть в этой статье:
https://golos.id/ru--blokcheijn/@gph-ai/dexbot-market-meiking-instrukciya-po-ispolzovaniyu-dexbot
От сервера можно отключаться, бот будет работать в докере дальше.
А дальше... только опыт, наблюдательность и сравнение эффективностей настроек на разных рынках, они позволят вам глубоко разобраться в сути настроек и повышения прибыли с запускаемых ботов.
@alex-pu,
Запуск по этой команде докер не хотел запускаться.
Но потом поменял pwd на $(pwd), а парольную фразу взял в кавычки и всё запустилось ок! 👍️
@prizm,
@prizm, cпасибо за дельное уточнение, можно как $(pwd) так и 'pwd', в одинарных кавычках
@alex-pu, Статья классная, но я бы добавил свои 5 копеек. У меня последний сервер на hetzner отказывается устанавливать SSH соединение с российскими IP. Для кого-то это может стать проблемой.
И второе, я бы рекомендовал в качестве SSH клиента Bitvise SSH Client - он на порядок удобнее Putty
@captain, я пользуюсь vpn, поэтому проблем такого характера не замечал
@alex-pu, А скажите, цена в 3 цента за GPH - это для примера или он и правда столько стоит?
@ladynazgool, да, это актуальная его цена на данный момент.
@alex-pu, Вот ведь жалость какая((( А я даже зайти в свой акк не могу, как раз сейчас мне лишние 500 баксов не помешали бы)))
@alex-pu, супер, фанастика!