В этой статье я покажу на мой взгляд примерно (примерно потому что каждая пара уникальна как и история торговли на ней, но моя задача описать принцип и рассчёты на конкретном примере) оптимальные настройки для работы DEXбота на длинном предсказуемом горизонте в широком диапазоне, и как это рассчитывать для своих нужд, на примере. В результате некоторого времени работы (от полугода до года можно увидеть как правило хороший результат при хорошо подобранных парах и настройках) в заданных диапазонах происходит вымывание ликвидности и накопление монет.
Запаситель терпением перед прочтением, некоторые вещи могут быть довольно скучны и придётся вспомнить калькулятор и возведение в степени, чтобы более точно и предсказуемо настраивать и управлять режимами работы.
Приступим:
Если вы ещё не знакомы с установкой DEXбота, то это достаточно подробно описано в одной из моих прошлых статей, здесь (см п. 1-3):
DEXbot на VPS в докере для бабушек
По аналогии с п.4 из статьи выше входим в меню Конфигурация DEXбота в CLI
Ниже вписываем имя вашего воркера, оно может быть любым, но лучше придумать название которое будет вам понятно в будущем, мне нравится вариант когда имя воркера такое же как и у аккаунта, где уже отражена суть бота.
Выбираем стратегию воркера STAGGER
Ступенчатые ордера
С помощью ступенчатых ордеров вы устанавливаете некоторое количество разных ордеров в ценовом диапазоне. Скажем, вы размещаете заказы на покупку GOLOS с одной стороны, и продажу GPH с другой стороны. Кто-то приходит в стакан к вам, чтобы продать GOLOS. Сначала они получат лучшую доступную цену, а затем будут постепенно снижать цены или увеличивать по отношению к базовому активу (в нашем случае к GPH). Для вас абсолютно все цены хороши в заданном диапазоне работы. Так вы можете создать абсолютно новый рынок, не прямой и не очевидный, но, благо на RuDEX вы можете торговать любой актив к любому и в этом есть своя прелесть.
Прелесть заключается именно в том что вы сами можете выбрать интересующие вас активы, а также корреляции на истории торгов, либо при их отсутствии, наложить графики и высчитать диапазоны, взяв их для своей стратегии с некоторым запасом.
Преимущество ступенчатых ордеров заключается в том, что вы можете размещать более крупные заказы по все более выгодным ценам покупок либо продаж (для вас). Как маркет-мейкер, вы зарабатываете деньги именно так. Таким образом, при снижении цены GOLOS в GPH, будет происходить накопление GOLOS, а при повышении цены GOLOS к GPH, обратный эффект: накопление GPH.
тут вписываем имя аккаунта бота, с которого он будет работать:
Импортируем приватный ключ. Где его взять - вы можете посмотреть всё также в статье выше п.4 DEXbot на VPS в докере для бабушек
Должны получить такой уведомление, об успешном добавлении ключа, идём дальше
Тут указываем торговую пару в формате Quote/Base, торгуемый актив по отношению к базовому, в нашем случае это GOLOS к GPH:
Здесь указывается актив, в котором бот будет оплачивать комиссию в блокчейн за выставление ордеров. Рекомендую использовать именно GPH, в нём платить комиссию выгоднее всего.
Если вы планируете запускать много DEXботов и вообще активно торговать, то можно приобрести LTM (Life Time Member, или по-русски: пожизненное членство, которое даст в дальнейшем скидку на комисии в блокчейне на 80%) в блокчейне Graphene, например, это можно сделать по моей реферальной ссылке: регистрация на Рудексе. Я в свою очередь верну вам 50% уплаченной комисии в GPH после того как она разблокируется у меня на вестинг-счёте, для этого напишите мне в тг в личные сообщения, с пометкой что пришли по моей реферальной ссылке из этой статьи.
Далее вы указываете 100% и опять после нажатия ОК тоже 100%, это кол-во в % от баланса, задействованных в торговле ботом:
Ниже вы указываете режим стратегии, я очень рекомендую для волатильных относительно друг друга активов именно VALLEY, режим долины.
В данном случае будут усиливаться накопления с каждым сдвигом цены относительно центральной, в широком диапазоне работы бота на временном отрезке это способно дать шикарные результаты, т.к. часть накопленного актива будет перераспределяться в другую сторону стакана и увеличивать там размер ордеров, в крайних точках, позволяя больше зарабатывать в перспективе на волатильности.
Тут указывается спред, спред - это расстояние между ордерами BUY и SELL у бота, указываем 8%.
Далее указываем инкремент, инкремент - это шаг между ордерами у бота, инкремент должен быть больше чем спред, а я рекомендую значение в 2 раза меньше чем у спреда. Если быть точнее, то изначально рассчитывается именно инкремент, а спред после будет соответственно в 2 раза больше.
Берём в руки калькулятор и запасаемся наблюдательностью
Сделам паузу и научимся рассчитывать ордера, их размер, диапазон и спред исходя из начальных условий, на примере.
В нашем случае на торговлю было выделено 250 000 GOLOS и 25 000 GPH (ещё 100 GPH было добавлено для уплаты комиссий, они хоть и берутся из общих GPH, если вы торгуете не к GPH, то их надо иметь чтобы выгоднее платить комиссию, об этом говорилось выше)
Чтобы подобрать параметры - надо соблюсти некоторый баланс между имеющимися средствами, их распределением и выборе диапазона, если выбрать диапазон меньше, то в единицу времени вы будете зарабатывать больше, но увеличиваются шансы на выбивание из диапазона и остановку бота, при очень широких границах - бот будет работать практически вечно но прибыль на каждый ордер совсем незначительна. Надо найти какую то золотую середину с некоторым запасом, у разных активов, разные истории цен и волатильности и взаимных движений на рынке, поэтому рекомендую проанализировать эти параметры и серьёзно подойти во-первых к выбору границ диапазона работы:
В данном случае я хочу диапазон не менее x25, 25 иксов, т.е. не менее 5 иксов вниз и 5 иксов вверх относительно центральной цены, это довольно часто хороший диапазон, если выбрать неплохую точку входа на рынок (это тоже очень важно, надо смотреть по взаимной истории
Центральная цена выбрана 0.1 (GOLOS/GPH)
Размер ордеров не должен быть сильно большой чтобы сильно влиять на рынок, наша цель не в управлении рынком, а в том чтобы через ордера рынок мог ходить довольно свободно (это больше касается редких пар) обеспечивая волатильность в разные стороны.
В данном примере был выбран размер базового ордера в 500 GPH и 5000 GOLOS. Т.е. по 1/50 от суммы на балансе в каждом активе. Эта наглядность и выбор обеспечивает понимание, какими суммами в каждом ордере будет проходить работа и каковы порядки начального извлечения прибыли.
Теперь подсчитаем диапазоны:
1.04^50 (между числами значок степени, для тех кто не в курсе) = 7.10668
Это и будет искомым коэффициентом запаса волатильности относительно центральной цены. Мы имеем не очень большой размер ордеров и понятный круглый начальных их разме. Это более чем 5 иксов в обозначенной цели подбора (см. выше на 3 абзаца). Можно провести подбор именно под заданный диапазон точно, можно ориентироваться на условия границ и на базовый размер ордера как в данном случае. более 7 иксов в одну сторону - это немного больший запас прочности, пускай так и останется.
Теперь считаем нижнюю границу диапазона и верхнюю:
(напомню, 0.1 - это центральная цена, выбранная вами, может быть по критерию истории, и/или по цене закупки, если вы с одного актива заходите в другой например)
0.1 / (1.04^50) = 0.01407126 (нижняя граница)
0.1 * (1.04^50) = 0.71066833 (верхняя граница)
Калькуляция в коде DEXбота для рассчёта размера ордеров, если мне не изменяет память, происходит от границ, поэтому проверим и скорректируем:
Нижняя цена:
0.014 * (1.04^50) = 0.09949356684
0.014 * (1.04^51) = 0.103473 (выше центральной)
Верхняя цена:
0.711 / (1.04^50) = 0.100046669
0.711 / (1.04^51) = 0.096198720 (ниже центральной)
В данном случае мы добавили по +1 (к степени, что есть кол-во ордеров в каждую сторону) и проверили границы, в идеале, для точности они должны быть как выше, если выход за границы не происходит, надо немного сместить цену (нижнюю или верхнюю и провести опять проверку, 50-ая степень должна быть по одну сторону, а 51-ая уже по другую, чтобы попасть точно в диапазон)
Центральную цену мы задаём сами и не будем брать с рынка, полагается что мы выжидаем нужного момента и запускаем бота в тот самый момент когда центральная цена там где нам нужно.
Центральная цена:
Нижняя граница диапазона:
Верхняя граница диапазона
Тут мы разрешаем боту исполнять ордера по рынку:
Здесь указываем сколько ордеров с каждой из сторон относительно центральной необходимо держать в стакане, т.к. часть ордеров которые не будут выставлены в стакан для его заполнения, и оперативного реагирования на изменения цен. Та часть ордеров что не будет выставлена сразу, будет находиться в так называемом виртуальном состоянии, когда их размер и цены подсчитаны и находятся в памяти у бота, но не выставлены на рынок. Бот будет держать на рынке всегда это кол-во ордеров, добавляя в сторону движения рынка новые, и отменяя с противоположной стороны. Могут быть некоторые лимиты, установленные на API нодах, на лимит отдаваемых ордеров, как правило оно по умолчанию около 100. Сильно много ставить не рекомендую чтобы не выйти за этот лимит и бот не начал глючить (а он может, софт не совершенен). 25 ордеров в каждую из сторон относительно текущей средней цены - вполне достаточно и не много и не мало, и в лимиты влазит, и стакан заполнен и тем кто пампит одну из монет оперативно налить может с запасом.
Тут ставлю нет, описание понятно, но не уверен в качестве его работы (как ни странно звучит), не уверен точно, но кажется были сбои на длительной работы при этой опции, поэтому не ставлю.
Стоп-лосс не включаем, в такой стратегии это незачем, у нас довольно широкие границы и в минус продавать мы не собираемся.
Здесь я ставлю минимальный сдвиг в %, просто для заполнения (выше опция отключена)
А тут минимальное кол-во в %, оно тоже выключено выше.
Вернулись в основной меню, ниже в консоли должна быть запись что бот сохранён.
Теперь мы запускаем бота в работу
Как это сделать в докере описано в статье по ссылке:
Запуск. Остановка. Просмотр логов.
Зайдя в торговый интерфейс Рудекса на выбранный рынок:
https://market.rudex.org/#/market/RUDEX.GOLOS_GPH
После выставления ордеров убедимся что бот их выставил и размеры ордеров соовтетствуют нашим рассчётам выше, относительно выбранной центральной цены:
Вот и всё.
Я думаю основная идея, настройки и рассчёты понятны и могут быть применены на любые интересные Вам рынки, например BTC/USDT , GOLOS/USDT , GPH/USDT, либо на выбранные самостоятельно.
Также можно применять не зеркальный принцип формирования объёмов ликвидности, а ассиметричный, когда с одной стороны планируется 25 ордеров в глубину, а с другой 75, это применимо тогда когда вы больше уверены в том что дно в пару раз ближе чем хай в данной паре, или наоборот же.
Гибкие возможности настроек DEXбота позволяют войти практически в любое время на рынок, а при наобходимости или значительных смещений цен после, ребалансировать размеры ордеров и выделяемый объём.
Также это можно применять как опцию торговли в обозначенном диапазоне временно, например не long-term накопление и обеспечение ликвидности, а как торговля в диапазоне например BTC/USDT с 30 000 до 60 000$ на часть капитала, пока рынок рисует какой то боковик, т.е. как часть ручной стратегии в боковике, включая на время в нужном диапазоне, на отдельном аккаунте.
Если статья понравилась и оказалась полезной - ставьте лайк и насыпайте донат 😉, а он отправится в СГ.