Tickbybit — Телеграм-бот для отслеживания тикеров на бирже ByBit.
На бирже ByBit торгуется множество тикеров (426 на момент написания этого текста). Следить за таким количество тикеров в поисках каких-то интересных/значимых событий вручную — крайне затруднительно.
Tickbybit автоматизирует эту задачу. Он следит за изменениями всех тикеров на бирже и присылает в Телеграм уведомления о тех тикерах, которые изменились в соответствии с заданными в боте правилами.
В боте есть подсказка с кратким описанием всех команд. Подсказка вызывается командой /help
:
/help
Подсказка содержит выжимку из полной документации (вот этой, которую вы сейчас читаете).
Для немедленного однократного получения уведомлений нужно отправить боту команду /alert
:
/alert
В ответ бот отправит все имеющиеся в данный момент уведомления (или сообщит, что уведомлений в данный момент нет).
Бот может присылать уведомления автоматически. Собственно, это и есть главная задача бота — человек ничего не делает, а уведомления получает:)
Автоматическая отправка уведомлений включается командой /on
:
/on
Автоматические уведомления (при их наличии) будут отправляться в Телеграм один раз в минуту.
Выключается автоматическая отправка уведомлений командой /off
:
/off
Поведение бота регулируется настройками. Настройки представляют собой древообразную структуру в формате YAML, которую можно просматривать и редактировать путём отправки боту соответствующих команд.
Текущие настройки можно посмотреть командой /settings
:
/settings
Ответ:
format: tpl1pa
is_auto: false
triggers:
- icon: 🤑
interval: 60
ticker:
markPrice:
absolute: 1.5
openInterestValue:
absolute: 2.5
symbol:
suffix: USDT
Здесь для примера приведены настройки только с одним триггером, но у всех триггеров ключи одинаковые — в этом примере представлены все возможные ключи.
Команда /set
позволяет установить значение любого ключа, имеющего "простое" значение:
- строку (например
USDT
) - число (например
3.5
) - или булево значение (например
true
).
Кстати, эмодзи — это на самом деле строка (например 🤪
).
Установка "сложных" значений пока не поддерживается. "Сложные" значения — это вложенные структуры, например тикер целиком, со всеми фильтрами сразу.
Для установки значения какого-либо ключа нужно написать полный путь к этому ключу. После пути нужно написать двоеточие, а затем устанавливаемое значение.
Например, для установки формата уведомления (подробнее про форматы будет написано далее) нужно написать такую команду:
/set format: yaml
Здесь format
— это ключ в настройках (посмотрите выше пример с полным набором настроек и найдите
там ключ format
). Этот ключ находится на самом верху настроек и поэтому путь к нему равен просто
его названию.
Некоторые ключи находятся в глубине настроек. Путь к таким ключам содержит все промежуточные ключи. Ключи в пути разделяются точками.
Некоторые ключи содержат список значений. В частности, в ключе triggers
содержится список
триггеров. Для того, чтобы обратиться к конкретному элементу такого списка, нужно указать индекс
этого элемента в квадратных скобках после названия ключа.
Обратите внимание — индексы начинаются с нуля, а не с единицы.
Например, чтобы обратиться к первому триггеру в ключе triggers
и установить в нём ключ icon
,
нужно указать индекс [0]
и разделить ключи точкой .
:
/set triggers[0].icon: 🤑
В случае любых ошибок при установке значений бот в ответ выдаст сообщение с объяснением ошибки.
Пока что не все ошибки имеют человекопонятное объяснение.
Для того, чтобы установить ключ со значением по умолчанию, нужно установить этот ключ без указания значения (двоеточние после ключа в этом случае тоже не требуется):
/set triggers[0].icon
Установка значения по умолчанию может быть особенно полезна для настройки "сложных" значений — например, когда вы хотите сбросить весь триггер целиком к исходным значениям или когда вы добавляете новый триггер.
Триггер — это набор правил для проверки изменения тикеров. Триггер является основным "кирпичиком" в настройках и основной "единицей работы" бота.
Триггеров может быть сколько угодно. Все триггеры независимы друг от друга.
Триггеры хранятся в настройких как список, для обращения к конкретному триггеру нужно указывать его
индекс в квадратных скобках: triggers[0]
— это первый триггер в списке.
Каждый триггер имеет два обязательных ключа:
- interval — промежуток времени, в течение которого происходит изменение тикера, в секундах.
- ticker — атрибуты тикера, которые проверяет бот (у тикера есть много атрибутов, бот проверяет только некоторые из них, см. далее "Фильтры").
И один необязательный ключ:
- icon — иконка уведомления, любой символ или символы (в том числе эмодзи).
У тикеров есть множество атрибутов. Бот проверяет только три атрибута:
- markPrice — цена тикера.
- openInterestValue — "интерес" к тикеру.
- symbol — название тикера.
Для каждого атрибута тикера задаётся фильтр — правило, по которому триггер будет отбирать изменившиеся тикеры.
Бывает два вида фильтров — численные и строковые.
Для атрибутов markPrice и openInterestValue применяются численные фильтры. Для атрибута symbol применяются строковые фильтры.
Численные фильтры:
- absolute — абсолютное значение изменения атрибута, в процентах.
Строковые фильтры:
- suffix — последние буквы в значении атрибута. Можно указать список вариантов через запятую. Все варианты в одном фильтре объединяются через "ИЛИ".
Все фильтры во всех атрибутах тикера (не в каждом атрибуте отдельно, а насквозь, во всех атрибутах) объединяются через "И". Таким образом, для срабатывания триггера необходимо, чтобы сработали все фильтры одновременно.
Для примера настроим триггер, который будет срабатывать при выполнении следующих условий:
- название тикера заканчивается на USDT или EKLMN
- цена тикера изменилась более, чем на 2.5 (два с половиной) процента.
- интерес к тикеру изменился более, чем на 3 (три) процента.
- и это изменение произошло за 60 секунд
и пусть уведомление, присланное этим триггером, будет иметь иконку ✅
:
/set triggers[0].ticker.symbol.suffix: USDT, EKLMN
/set triggers[0].ticker.markPrice.absolute: 2.5
/set triggers[0].ticker.openInterestValue.absolute: 3
/set triggers[0].interval: 60
/set triggers[0].icon: ✅
Для того, чтобы добавить ещё один триггер, нужно выполнить команду /set
, но вместо индекса
существующего триггера нужно указать символ +
(плюс):
/set triggers[+]
Новый триггер будет добавлен в конец списка триггеров. Все ключи нового триггера будут установлены в значения по умолчанию.
Дальнейшая настройка этого триггера ничем не отличается от настройки прочих триггеров.
Для удаления триггера нужно выполнить команду /del
с указанием индекса удаляемого триггера:
/del triggers[1]
Напоминание — индексы начинаются с 0
, а не с 1
, не перепутайте.
Кроме того, триггер, находящийся в списке на последнем месте, может быть удалён с помощью указания вместо
индекса символа -
(минус):
/del triggers[-]
Если требуется "сбросить" все настройки триггера к значениям по умолчанию (например, если лень
перенастраивать каждый фильтр отдельно), то можно сделать это с помощью команды set
без указания
значения:
/set triggers[1]
Триггер перейдёт в точно такое же состояние, с каким добавляется новый триггер.
Вообще, команда /set
без указания значения "сбрасывает" до значения по умолчанию любой ключ,
не только триггеры. Это описывалось выше в параграфе "Установка значений по умолчанию".
При срабатывании триггера в Телеграм будет отправлено уведомление. В уведомлении будут данные тикера, изменение которого было "поймано" этим триггером.
Набор данных в уведомлении зависит от формата уведомления. Формат задаётся в настройках в ключе
format
:
/set format: json
Имеются следующие форматы:
- json — все данные.
- yaml — все данные.
- str1 — процент markPrice.
- str1p — процент markPrice, всегда со знаком.
- str2 — проценты markPrice и OpenInterestValue.
- str2p — проценты markPrice и OpenInterestValue, всегда со знаком.
- tpl1pa — проценты markPrice и OpenInterestValue в ряд, всегда со знаком, стрелки.
- tpl1pc — проценты markPrice и OpenInterestValue в ряд, всегда со знаком, круги.
- tpl1ps — проценты markPrice и OpenInterestValue в ряд, всегда со знаком, квадраты.
- tpl2pa — проценты markPrice и OpenInterestValue в колонку, всегда со знаком, стрелки.
- tpl2pc — проценты markPrice и OpenInterestValue в колонку, всегда со знаком, круги.
- tpl2ps — проценты markPrice и OpenInterestValue в колонку, всегда со знаком, квадраты.