Мониторит все фьючерсные пары KuCoin Futures через WebSocket. Отправляет Telegram-уведомление, когда внутри окна появляется длинная свечная тень:
- нижняя тень >= порога -> LONG-сигнал;
- верхняя тень >= порога -> SHORT-сигнал.
pip install -r requirements.txtСоздай .env рядом с main.py и заполни:
TELEGRAM_BOT_TOKEN=replace_with_bot_token
TELEGRAM_CHAT_ID=replace_with_chat_idНе вставляй реальные токены в README или другие файлы git-репозитория. Храни их только в локальном .env, который игнорируется через .gitignore.
Получить CHAT_ID: перейди в https://t.me/userinfobot или отправь боту /start и смотри ID в ответе.
python main.py🕯 ТЕНЬ ОБНАРУЖЕНА
━━━━━━━━━━━━━━━━━━━━
💎 XBTUSDTM 🟢 LONG 📈
🧷 Тип: нижняя тень
📊 Тень: 111.67% за 60с
🎯 Экстремум: 0.33070
↩️ Край тела: 0.70000
🕯 OHLC: O 0.70530 H 0.70530 L 0.33070 C 0.70000
🎯 Ниже close −1%: 0.69300
━━━━━━━━━━━━━━━━━━━━
| Параметр | По умолчанию | Описание |
|---|---|---|
| SHADOW_THRESHOLD_PCT | 20.0 | Минимальный возврат от экстремума тени к телу |
| SHADOW_WINDOW_SEC | 60 | Окно, за которое из тиков собирается OHLC-свеча |
| MEASURE_INTERVAL_SEC | 60 | Как часто проверять окно |
| COOLDOWN_SECONDS | 300 | Пауза между алертами на пару |
| DAILY_OPEN_REFRESH_INTERVAL | 300 | Сек между REST-опросами daily open |
| REST_CALL_INTERVAL | 0.12 | Задержка между REST-запросами |
| USE_SYSTEM_PROXY | True | Использовать HTTP_PROXY / HTTPS_PROXY / WSS_PROXY из окружения |
Из тиков за SHADOW_WINDOW_SEC собирается свеча open/high/low/close.
Нижняя тень, LONG-сигнал:
(min(open, close) - low) / low * 100
Верхняя тень, SHORT-сигнал:
(high - max(open, close)) / high * 100
- ws_client.py — WS соединения (по 100 пар на коннект, авто-реконнект)
- tracker.py — детектор свечных теней (без блокирующего I/O, чисто в памяти)
- network.py — единые настройки aiohttp, прокси и DNS resolver
- rest_client.py — получение пар, daily open, rate-limit throttle и retry
- notifier.py — очередь Telegram-уведомлений (flood control)
- config.py — все параметры
- main.py — оркестрация
KuCoin публичный REST: 30 req/3s per IP. При ~600 парах первичная загрузка daily open займёт больше минуты — это нормально. Затем обновление раз в 5 минут: ~600 × 0.12с = ~72с (укладываемся).
aiohttp теперь читает системные переменные HTTP_PROXY / HTTPS_PROXY.
Для wss:// WebSocket используется WSS_PROXY, а если он не задан —
fallback на HTTPS_PROXY.
WS: нет лимитов по сообщениям, только 100 топиков на соединение.
sudo apt update
sudo apt install -y git python3-venv python3-pip
git clone git@github.com:driavysinus/impulse_shadow.git
cd impulse_shadow
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt
cp .env.example .env
nano .envСервис:
sudo cp deploy/impulse-shadow.service.example /etc/systemd/system/impulse-shadow.service
sudo nano /etc/systemd/system/impulse-shadow.service
sudo systemctl daemon-reload
sudo systemctl enable --now impulse-shadow
sudo systemctl status impulse-shadowВ service-файле поменяй User=pi и пути /home/pi/impulse_shadow,
если на Raspberry Pi другой пользователь или другая папка.
Логи:
journalctl -u impulse-shadow -f