Skip to content

Telegram bot for tracking tickers on the ByBit exchange.

Notifications You must be signed in to change notification settings

ivanych/tickbybit

Repository files navigation

Введение

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 в колонку, всегда со знаком, квадраты.

About

Telegram bot for tracking tickers on the ByBit exchange.

Resources

Stars

Watchers

Forks

Packages

No packages published