Python-скрипт, который раз в день получает с Binance Futures (USDT-margined) три метрики по заданным парам и отправляет отчёт в Telegram:
- Top Trader Long/Short Ratio (Accounts) 1d
- Top Trader Long/Short Ratio (Positions) 1d
- Global Long/Short Ratio 1d
Запуск по расписанию настроен через GitHub Actions (cron 0 6 * * *, что соответствует 09:00 Europe/Moscow).
- Python 3.11+
TELEGRAM_BOT_TOKENв окружении (не храните его в репозитории)
- Скопируйте шаблон:
cp config/settings.example.json config/settings.json- Укажите пары и
telegram_chat_id(числовой ID получателя или группового чата).
Альтернатива: можно не создавать settings.json, а задать переменные окружения:
PAIRS— список пар через запятую, напримерBTCUSDT,ETHUSDTTELEGRAM_CHAT_ID— ID чата
Всегда требуется TELEGRAM_BOT_TOKEN в окружении.
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
python -m src.main- В репозитории создайте Secrets:
TELEGRAM_BOT_TOKENTELEGRAM_CHAT_ID
- (Опционально) создайте Repository Variable
PAIRS, напримерBTCUSDT,ETHUSDT. - Workflow лежит в
.github/workflows/daily.ymlи по умолчанию срабатывает в 06:00 UTC (09:00 Europe/Moscow). Можно запустить вручную черезworkflow_dispatch.
- Создайте бота у @BotFather и возьмите
TELEGRAM_BOT_TOKEN. - Добавьте бота в нужный чат/группу и отправьте любое сообщение.
- Узнайте
TELEGRAM_CHAT_ID: переслать сообщение боту@userinfobotили вызвать Telegram Bot APIgetUpdates.
- Берёт список пар и chat id из
config/settings.jsonили env (PAIRS,TELEGRAM_CHAT_ID). - Запрашивает у Binance публичные endpoints c периодом
1d:/futures/data/topLongShortAccountRatio/futures/data/topLongShortPositionRatio/futures/data/globalLongShortAccountRatio
- Формирует сообщение с % long/short и отношением
longShortRatio. - Отправляет текст через Telegram Bot API (
sendMessage).
Примечание: в GitHub Actions некоторые регионы могут получать 451 без User-Agent, он уже добавлен в код. При необходимости можно задать зеркальный BINANCE_BASE_URL через переменные окружения.
Для быстрого поиска самых перекошенных USDT-perpetual:
python -m src.find_imbalanced --candidates 120 --limit 20- Скрипт сначала берёт топ
--candidatesпо суточномуquoteVolume(меньше запросов к Binance), затем сортирует по максимальной симметричной разнице long/short. - Прогресс в консоли:
[info] Candidates by volume: ..., далее[progress] 3/120 BTCUSDT ok|error. - Параметры:
--candidates— сколько топ-торговых инструментов опросить (по умолчанию 120).--limit— сколько перекошенных инструментов вывести (по умолчанию 10).--max-quote-volume— опциональный фильтр по суточномуquoteVolume, оставляет только инструменты с объёмом не выше указанного значения (например,10000000для <$10M).
- Отправка в Telegram по умолчанию: включаются только инструменты с перекосом >2.3x. Если таких нет, придёт предупреждение. Используются те же переменные/конфиг (
TELEGRAM_BOT_TOKEN,TELEGRAM_CHAT_ID). - В отчёте теперь показывается текущая цена и изменение цены (24h) из
/fapi/v1/ticker/24hr.
TELEGRAM_BOT_TOKEN(обязательная)TELEGRAM_CHAT_ID(обязательная, если не указана в config)PAIRS(опционально, переопределяет пары из config)BINANCE_TIMEOUT(опционально, по умолчанию4секунды)BINANCE_HTTP_RETRIES/BINANCE_HTTP_BACKOFF(опционально, по умолчанию2и0.5соответственно) — управляют встроенным retry для временных ошибок/429BINANCE_MAX_ATTEMPTS(опционально, по умолчанию1) — сколько раз пробовать один и тот же proxy/base поверх HTTP retryBINANCE_BASE_URLS(опционально) — список через запятую для обхода 451, например:https://fapi.binance.com. Можно задать одиночнуюBINANCE_BASE_URL.BINANCE_PROXY/HTTPS_PROXY(опционально) — HTTPS-прокси для обхода геоблоков. Формат:http[s]://user:pass@host:port.BINANCE_USE_FREE_PROXIES(опционально) — еслиtrue/1, то скрипт подтянет список бесплатных HTTPS-прокси (по умолчанию открытый список GitHub) и будет перебирать их при запросах.BINANCE_FREE_PROXY_TYPES(опционально, по умолчаниюhttps) — протоколы из списка (https,http) для подбора прокси.BINANCE_FREE_PROXY_LIMIT(опционально, по умолчанию 20) — сколько прокси взять из списка.BINANCE_FREE_PROXY_URL(опционально) — альтернативный URL со списком HTTPS-прокси для протоколаhttps(по умолчанию используется открытый список GitHub).- Примечание: бесплатные прокси теперь не валидируются заранее — клиент перебирает их по мере реальных запросов и останавливается на первом успешно ответившем.
- Если запрос к Binance вернул пустой ответ, скрипт завершится с ошибкой.
- Убедитесь, что пара торгуется на USDT Perpetual Futures и введена в верхнем регистре (например,
BTCUSDT).