Trading Signal Bot
Статус: ✅ Production (v2.1 — Auto-Trading + Quick Take Scalper)
PM2: signal-listener
Скилл: /home/app/skills/trading-signal-bot/SKILL.md
Код: /home/app/trading-bot/src/signal-listener/
Что делает
- Мониторит крипто-каналы в Telegram → обогащает данными Binance Futures + WaveTrend Oscillator → шлёт алерты
- Авто-трейдинг через Binance Futures API (реальные деньги, $50 депозит, 5x leverage)
- Quick Take Scalper — автоматический скальпинг top 40 фьючерсов, 4 индикатора, забирает по +1%
Архитектура — Две параллельные стратегии
Стратегия 1: WaveTrend (Profit_GAME канал)
- Web scraping
t.me/s/profitVplus_game каждые 30 сек
- 15m WT cross = primary trigger, 1H confirmation (not opposing)
- Watchlist: approaching zone → мониторинг каждые 30 сек до cross
- SKIP_TICKERS: тяжёлые монеты (BTC, ETH, XRP, SOL и др.)
- Стратегия Variant C Hybrid:
- SL: -1.5%
- TP1: +2% → close 50%, SL → BE (0%)
- TP2: +3% → close 25%, SL → +1.5%
- TP3: +5% → close remaining 25%
- Mark price мониторинг каждые 3 сек
- Taker fee 0.04% учитывается в PnL
- Recovery позиций при рестарте бота
- Win rate определяется как TP1+ hit (хотя бы 1 тейк = WIN)
Стратегия 2: Quick Take Scalper (NEW v2.1)
- Цель: частые маленькие профиты +1% с высоким винрейтом
- Сканер: top 40 USDT futures по объёму, каждые 60 сек
- 4 индикатора (ALL must be true):
- Bollinger Bands(20,2) — цена у/за внешней границей
- RSI(7) — < 25 для LONG, > 75 для SHORT
- Volume spike — текущая свеча > 1.5x avg(20)
- EMA(100) — цена выше для LONG (uptrend), ниже для SHORT (downtrend)
- Используются закрытые свечи (
klines[:-1]) чтобы избежать неточных данных объёма
- Exit: TP +1%, SL -0.75%, Time stop 30 минут
- Config:
SCALP_ENABLED, SCALP_SIZE_USDT=10, SCALP_LEVERAGE=5, SCALP_MAX_POSITIONS=3
- Отдельная система позиций от WT
- Skip символов которые уже в WT позициях (и наоборот)
- Recovery скальп-позиций при рестарте
Digash Formations (⏸ POSTPONED)
- Парсер написан (
digash_parser.py), но DIGASH_ENABLED=false
- Rick решил не брать подписку пока ($44/мес)
- Вернёмся позже если надо
Safety Features
- External close detection: каждые 3 сек проверяет существование позиции на бирже. Если закрыта руками → убирает из мониторинга, уведомляет, логирует
MANUAL_CLOSE
- Position recovery on restart (trade_log + Binance API verify)
- Watchlist persistence to
watchlist.json
- Commission-adjusted PnL (0.04% taker)
Бот-команды
/stats — win rate all time
/today /week /month — по периодам
/history — последние 10 сигналов
/positions /pos — открытые позиции
/close SYMBOL — ручное закрытие WT позиции
/pnl — PnL раздельно по стратегиям (WT + Scalp)
/watchlist /wl — монеты в ожидании cross
/scalp /qt — статус Quick Take скальпера + открытые скальп-позиции
/qc SYMBOL — закрыть скальп-позицию
/digash — статус Digash стратегии
/start — справка
Текущие настройки (ecosystem.config.js)
- WT: $10/trade, 5x lev, max 3 pos, SL -1.5%, TP1 +2%, TP2 +3%, TP3 +5%
- Scalp: $10/trade, 5x lev, max 3 pos, TP +1%, SL -0.75%, TimeStop 30min, scan interval 60s, check 3s
- Digash: DISABLED
Файлы
/home/app/trading-bot/src/signal-listener/
├── bot.py — Main: polling, alerts, commands, auto-trade hook, scalp integration
├── config.py — All config (channels, trading, Digash, scalp)
├── channel_parser.py — Parse Profit_GAME posts
├── binance_data.py — Binance API + WaveTrend calculation
├── history.py — Signal history + outcome tracking
├── trader.py — Binance Futures authenticated client (orders)
├── position_manager.py — WT position monitoring, TP/SL execution, partial closes
├── scalp_manager.py — Quick Take scalp position lifecycle (entry → TP/SL/TimeStop)
├── scalp_scanner.py — Market scanner: top 40 futures, 4 indicators, signal generation
├── trade_log.py — JSON trade journal + per-strategy PnL (WT vs Scalp)
├── digash_parser.py — Parse Digash formation messages (DISABLED)
├── signal_history.json — Signal data store
├── trade_log.json — Trade events log
├── watchlist.json — Persistent watchlist
└── ecosystem.config.js — PM2 config with all env vars
Concurrent Tasks (main loop)
await asyncio.gather(
poll_loop(), # Web scraping + WT signals
wt_monitor_loop(), # WT position price checks (3s)
scalp_monitor_loop(), # Scalp position price checks (3s)
scalp_scan_loop(), # Market scan for scalp entries (60s)
)
Версии
- ✅ v1.0 — веб-скрейпинг, WaveTrend, алерты, история
- ✅ v1.2 — outcome tracking + win rate
- ✅ v2.0 — авто-трейдинг Variant C Hybrid + Digash parser
- ✅ v2.1 — Quick Take Scalper (29 Mar 2026)
- Параллельная стратегия: mean reversion scalping
- 4 индикатора: BB + RSI + Volume + EMA
- Top 40 futures scanner (60s interval)
- Separate PnL tracking per strategy
- Win rate fix: TP1+ = WIN
- Watchlist persistence to file
- External close detection (safety check)
- Scalp position recovery on restart
- 🔜 v2.2 — trailing TP для скальпера (забирать больше +1% на трендовых)
- 🔜 v3.0 — публичный канал + подписка
Решения
- Без userbot — web scraping для Profit_GAME (безопасно)
- Отдельный бот —
@alert_rick_bot (не Бендер)
- Только фьючи — основное движение там
- Real money сразу — $50 как тест, без testnet
- Partial closes — Variant C Hybrid (50% TP1, 25% TP2, 25% TP3)
- Digash postponed — подписка не оправдана пока
- Completed candles —
klines[:-1] для точных индикаторов скальпера
Известные проблемы (решены)
- entry_price=0: fallback chain avgPrice → fills → position_info → mark
- KeyError 'leverage': .get() с дефолтом
- ZeroDivisionError: safe_pnl_pct() helper
- PnL mismatch: добавлена комиссия 0.04%
- Тяжёлые монеты: SKIP_TICKERS blacklist
- Volume ratio 0.0: последняя свеча ещё формируется → fix: completed = klines[:-1]
- PM2 env not applied: restart не перечитывает env → fix: delete + start
- Scalp position lost on restart: добавлен recovery из trade_log + Binance
- Win rate misleading: 5 SL / 0 TP3 but PnL positive → fix: WIN = at least TP1 hit
- Watchlist emptying: aggressive zone-exit → relaxed threshold + persistence to file
- External close not detected: бот не знал что позиция закрыта руками → safety check every 3s
Дата создания
28 марта 2026