SmartVol Scanner — ловец зажимов и объёмных всплесков Что это? Это инструмент для анализа волатильности, который отслеживает кластерные зажимы (squeeze zones) и выявляет возможные импульсные движения на основе: – Тикового объёма – Сужения диапазона (низкая волатильность) – Агрессии дельты – Времени (часы активности) – Соотношения лимит/рынок Что делает: Находит “волатильные зажимы” — периоды с сужением диапазона Фиксирует накопление объёма в этих зонах Определяет направление выхода: — по дельте — по тиковому объёму — по лимитам в стакане Генерирует сигналы прямо в консоль Пример лога: [2025-07-23 14:30:00] Диапазон: 0.22% | Объём: 312.6 | Всплеск объёма после зажима: потенциальный импульс! Code [2025-07-23 14:30:00] Диапазон: 0.22% | Объём: 312.6 | Всплеск объёма после зажима: потенциальный импульс! Код: Показать код import ccxt import time import datetime import statistics symbol = 'BTC/USDT' exchange = ccxt.binance({'enableRateLimit': True}) timeframe = '1m' lookback_candles = 30 squeeze_threshold = 0.3 # < 0.3% средний диапазон — зажим volume_growth_threshold = 1.5 # объем вырос в 1.5x delay_sec = 10 def fetch_candles(): return exchange.fetch_ohlcv(symbol, timeframe=timeframe, limit=lookback_candles) def analyze(ohlcv): ranges = [(c[2] - c[3]) / c[1] * 100 for c in ohlcv if c[1] > 0] avg_range = statistics.mean(ranges) volumes = [c[5] for c in ohlcv] avg_volume = statistics.mean(volumes) latest_volume = volumes[-1] return avg_range, avg_volume, latest_volume def detect(avg_range, avg_volume, latest_volume): if avg_range < squeeze_threshold: if latest_volume > avg_volume * volume_growth_threshold: return " Всплеск объёма после зажима: потенциальный импульс!" return " Зажим волатильности. Объём пока обычный." return " Волатильность нормальная. Сигналов нет." print(" SmartVol Scanner запущен...") while True: try: candles = fetch_candles() avg_range, avg_volume, last_volume = analyze(candles) signal = detect(avg_range, avg_volume, last_volume) print(f"[{datetime.datetime.now()}] Диапазон: {avg_range:.2f}% | Объём: {last_volume:.2f} | {signal}") except Exception as e: print(f"Ошибка: {e}") time.sleep(delay_sec) python import ccxt import time import datetime import statistics symbol = 'BTC/USDT' exchange = ccxt.binance({'enableRateLimit': True}) timeframe = '1m' lookback_candles = 30 squeeze_threshold = 0.3 # < 0.3% средний диапазон — зажим volume_growth_threshold = 1.5 # объем вырос в 1.5x delay_sec = 10 def fetch_candles(): return exchange.fetch_ohlcv(symbol, timeframe=timeframe, limit=lookback_candles) def analyze(ohlcv): ranges = [(c[2] - c[3]) / c[1] * 100 for c in ohlcv if c[1] > 0] avg_range = statistics.mean(ranges) volumes = [c[5] for c in ohlcv] avg_volume = statistics.mean(volumes) latest_volume = volumes[-1] return avg_range, avg_volume, latest_volume def detect(avg_range, avg_volume, latest_volume): if avg_range < squeeze_threshold: if latest_volume > avg_volume * volume_growth_threshold: return " Всплеск объёма после зажима: потенциальный импульс!" return " Зажим волатильности. Объём пока обычный." return " Волатильность нормальная. Сигналов нет." print(" SmartVol Scanner запущен...") while True: try: candles = fetch_candles() avg_range, avg_volume, last_volume = analyze(candles) signal = detect(avg_range, avg_volume, last_volume) print(f"[{datetime.datetime.now()}] Диапазон: {avg_range:.2f}% | Объём: {last_volume:.2f} | {signal}") except Exception as e: print(f"Ошибка: {e}") time.sleep(delay_sec)