Привет, уважаемые пользователи RuDex и сообщество Bitshares!
Пока все грустно поглядывали на свои позиции на умытых кровью рынках, мы не теряли времени даром и подготовили для вас нечто новое и весьма полезное. Итак, интерфейс биржи RuDex пополнился новым разделом с говорящим названием “Боты”.
На данный момент в нём представлены два бота, воплощающих в себе стратегии SpreadTrade и TrailingStop.
Со временем наш зоопарк публичных торговых ботов для Bitshares DEX будет дополняться новыми экземплярами, так что приглашаем всех ботоводов подписаться на этот блог и следить за обновлениями.
Мы искренне полагаем, что публичные боты критически важны для развития DEX и увеличения ликвидности на платформе за счет автоматизации рутинных действий, именно поэтому мы решили вооружить вас подобными инструментами. Если вы также не против, чтобы всю работу за вас выполняли роботы, то прочитайте представленную ниже инструкцию или посмотрите видео-туториал о том, как использовать их себе во благо.
Бот SpreadTrade
ПОШАГОВАЯ ИНСТРУКЦИЯ:
Начальные данные:
- поля
base
иquote
: рынок, на котором должен торговать бот; - поля
balance
: доступный для использования баланс дляbase
иquote
; - поля
amount
: объем актива, выставляемый в ордера (абсолютное значение, если выбранvalue-checkbox
, процент отbalance
, если выбранbalance %-checkbox
); - поля
spread
: спред относительно расчетной цены для каждого актива; default price
: цена по умолчанию, в случае если это не bitAssets;get price from market
: брать ли цену с рынка.
При старте бот подписывается на новый блок в блокчейне. При получении нового блока он каждый раз производит проверку двух ордеров: на покупку и на продажу.
Если ордера нет, то бот проверяет, не исполнится ли новый ордер при выставлении с ценой feed_price * (1 ± spread / 100)
, и достаточно ли balance
для выставления ордера с amount
.
Если balance
достаточно, и ордер не исполнится – бот выставляет новый ордер. При выставлении нового ордера поле balance
уменьшается на amount
.
В том случае, если ордер есть, бот сравнивает feed_price
и цену ордера. Если цены разнятся больше, чем на spread / 2
, и в то же время при выставлении ордера на цену feed_price * (1 ± spread / 100)
алгоримт не исполнит его, принимается решение о сдвиге ордера к цене feed_price * (1 ± spread / 100)
.
Для этого текущий ордер отменяется, а balance
увеличивается на количество актива, оставшегося в ордере. Затем выставляется новый с необходимой ценой и объемом min(balance, amount)
.
Если поле balance
– числовое значение. Если ордер для base
был выставлен ранее, однако не был найден при очередной проверке, делается вывод об исполнении ордера. Помимо вышеописанных действий, balance
для quote
увеличивается согласно цене исполненного ордера. Аналогичное поведение характерно и для quote
ордера.
Если поле balance
пустое. Доступным для бота балансом считается баланс привязанного аккаунта.
Если поле balance
имеет значение "-", баланс актива считается равным 0 и не меняется.
Расчет цены производится следующим образом: если выставлено get price from market
, цена берется из рынка. Если активы состоят из smart-asset и core-asset (BTS), цена пересчитывается к base
-активу, используя полученную из блокчейна цену. Для smart-пар не содержащих core-asset (BTS) пересчет производится в два этапа: на первом рассчитывается цена к BTS, на втором – пересчет к base
-активу.
Для пар, состоящих не только из smart-активов (или только из UIA), проверяется, не установлена ли default price
. Если она не установлена, то формируется запрос к binance.com. У активов второго порядка (OPEN.BTC, RUDEX.BTC) исключаются префиксы. USD исправляется на USDT. Например, запрос OPEN.BTC/OPEN.USD формируется в BTC/USDT-запрос.
Если запрашиваемая пара не торгуется на binance, то цена приравнивается к 0, и торговля не ведется.
Бот TrailingStop
ПОШАГОВАЯ ИНСТРУКЦИЯ:
Начальные данные:
sellAsset
иgetAsset
: продаваемый актив и желаемый для получения соответственно;amount
: количество продаваемого актива;stoploss
иminAmount
: цена, при которой создается ордер, и минимальное количествоgetAsset
-актива;trailing percent
: максимальная разница между ценойstoploss
и текущей ценой.
Поля stoploss
и minAmount
взаимосвязаны и показаны исключительно для удобства настройки бота.
При старте бот подписывается на новый блок в блокчейне. При получении нового блока он каждый раз производит проверку цены на рынке.
Если рыночная цена больше stoploss
, чем на trailing_percent
, цена stoploss
корректируется на эту разницу. Если рыночная цена ниже stoploss + trailing_percent / 3
, выставляется ордер для продажи актива sellAsset
с ценой stoploss
и объемом amount
. После выставления ордера бот останавливает свою работу.
На этом пока всё! Надеемся, что теперь вам станет еще проще заниматься поддержанием STEEM/SBD и любого другого токена DEX, не прилагая к этому чрезмерных усилий.
Мы будем рады любому вашему фидбеку, так что не стесняйтесь и пишите комментарии под этим постом. Там же мы ответим на любые ваши вопросы, если таковые остались.
Наша команда желает вам приятного полёта, оставайтесь на связи и обязательно попробуйте эти новые дивные инструменты.
- RuDex team