Der schnellste Weg, einen beginnenden Breakout zu erwischen: Scanne nach extremen Volatilitäts-Kompressionen, gepaart mit versteckter Volumen-Akkumulation – bevor der Kurs explodiert.
Das Problem: Warum du ständig das Top kaufst
Jeder Trader kennt diese Hölle: Du öffnest das Terminal, siehst einen Coin mit +25% in den letzten zwei Stunden, gehst fomo-mäßig Long… und exakt drei Minuten später kackt der Chart komplett ab. Herzlichen Glückwunsch, du warst gerade die Exit-Liquidität für diejenigen, meilenweit weiter unten leise eingestiegen sind.
Die meisten Marktteilnehmer agieren als Herde: Sie reagieren erst, wenn der Move schon läuft. Wenn der Pump im vollen Gange ist, die Tracker Alarm schlagen und die Telegram-Gruppen «🚀 RAKETE» brüllen, lädt der Big Player seine Positionen längst über deine Market-Orders ab. Wenn du aufhören willst, die Gewinne anderer zu sponsorn, musst du lernen, dann einzusteigen, wenn der Chart absolut tot aussieht und die Volatilität quasi auf null geschrumpft ist.
Die Mechanik: Was vor dem Impuls wirklich passiert
Der Markt wechselt permanent zwischen zwei Phasen: Akkumulation (Squeeze) und Distribution (Expansion). Du kannst eine Feder nicht unendlich spannen – irgendwann schnallt sie zurück.
Wenn ein Market Maker oder ein großer Fonds eine Position in einem Altcoin aufbaut, darf er den Preis nicht nach oben treiben, sonst ruiniert er seinen eigenen durchschnittlichen Einstiegskurs (Average Entry). Er saugt das Angebot stattdessen ganz sauber innerhalb einer engen Range auf. Auf dem Chart passiert dabei folgendes:
- Rückgang der Spanne: Die Differenz zwischen Tageshoch und Tagestief bricht extrem ein.
- Absturz der Historischen Volatilität (HV): Der Chart verwandelt sich in eine flache Sägeblatt-Struktur oder eine extrem enge Seitwärtsphase.
- Ausgetrocknetes Orderbuch: Die Limit-Orders der Retail-Trader werden rausgespült oder gelöscht, das Buch schläft ein.
- Anomalien in der Volume Delta: Der Kurs bewegt sich kaum, aber innerhalb einer engen Kerze tauchen plötzlich massive Market-Buys auf – oder ein anomaler Anstieg des relativen Volumens (RVOL).
Sobald der freie Float (die frei handelbaren Coins) aus dem Buch aufgefressen ist, entsteht ein Vakuum. Schon eine kleine Market-Order von $50k-$100k schießt den Preis auf den Mond, weil schlichtweg keine dicken Limit-Sell-Blöcke mehr im Weg stehen.
Vergleichsanalyse der Screening-Metriken
Um nicht 500 Charts manuell durchzuklicken, filtern wir nach klaren mathematischen Abweichungen:
| Metrik | Wert «Kompression» | Wert «Explosion» | Was das in Klartext bedeutet |
|---|---|---|---|
| BB Width (20, 2) | < 0.03 - 0.05 | > 0.15 | Volatilität komplett zusammengequetscht, Bollinger-Bänder so eng wie seit 14–30 Tagen nicht mehr. |
| RVOL (Relative Vol) | > 2.2 bei Verengung | > 5.0 | Preis konsolidiert seitwärts, aber das Volumen liegt 2–3-mal über dem Schnitt. Jemand saugt heimlich den Markt leer. |
| Keltner / BB Ratio | Innerhalb der Kanäle | Breakout aus dem Band | Bollinger-Bänder wandern komplett in die Keltner-Kanäle (der klassische TTM Squeeze). |
| Funding Rate | Nahe 0.00% oder negativ | Steiler Ausschlag in + oder - | Der Retail kapiert noch gar nicht, was abgeht. Kein Hebel-Ungleichgewicht im Markt. |
| Open Interest (OI) | Stabil oder leicht ansteigend | Explosiver Anstieg | Open Interest steigt während der Seitwärtsphase – hier schiebt Smart Money Kapital rein, keine Zocker. |
Der 30-Sekunden-Workflow beim Screening
Wenn du professionelle Screener nutzt (TradingView, Coinglass, ScalpStation oder dein eigenes Tooling), sieht deine Checklist so aus:
- Sortierung nach BBW (Bollinger Bands Width): Timeframe auf 15m oder 1h stellen. Liste von den niedrigsten Werten nach oben sortieren.
- Volumen-Filter (24h): Toten Shitcoin-Müll mit unter $5M–$10M Tagesvolumen sofort rauskicken (keine Liquidität = du wirst beim Exit durch Slippage zerstört).
- RVOL / OI Gegencheck: Wir suchen die Überschneidung: BBW ganz unten in der Liste, während das RVOL auf 1h oder 15m plötzlich über 200–300% schießt.
- Strukturanalyse: Chart aufmachen. Siehst du ein schnurgerades Rauschen oder eine Spanne von max. 1-1.5% mit plötzlichem Pitch in der Kumulativen Delta? Der Coin steht kurz vorm Ausbruch.
Professioneller Python-Aggregator (Production-Ready)
Hier ist ein fertiges Skript zur Anomalie-Erkennung. Es nutzt ccxt, zieht Daten vom Futures-Markt, berechnet TTM Squeeze sowie RVOL und spuckt dir direkt die kochenden Setups in der Konsole aus.
import asyncio
import ccxt.async_support as ccxt
import pandas as pd
import numpy as np
# Ограничение количества одновременных запросов
MAX_CONCURRENT_REQUESTS = 20
async def analyze_market(exchange, symbol, semaphore):
async with semaphore:
try:
# Запрашиваем 100 свечей на 15-минутном таймфрейме
ohlcv = await exchange.fetch_ohlcv(
symbol,
timeframe='15m',
limit=100
)
if not ohlcv or len(ohlcv) < 50:
return None
df = pd.DataFrame(
ohlcv,
columns=['time', 'open', 'high', 'low', 'close', 'volume']
)
# ===== Bollinger Bands (20, 2) =====
df['sma'] = df['close'].rolling(window=20).mean()
df['std'] = df['close'].rolling(window=20).std()
df['bb_upper'] = df['sma'] + (df['std'] * 2)
df['bb_lower'] = df['sma'] - (df['std'] * 2)
# Защита от деления на 0
df['bb_width'] = np.where(
df['sma'] != 0,
(df['bb_upper'] - df['bb_lower']) / df['sma'],
np.nan
)
# ===== Relative Volume (RVOL) =====
df['vol_sma'] = df['volume'].rolling(window=20).mean()
# Защита от деления на 0
df['rvol'] = np.where(
df['vol_sma'] != 0,
df['volume'] / df['vol_sma'],
np.nan
)
# Заменяем inf на NaN
df.replace([np.inf, -np.inf], np.nan, inplace=True)
# Проверяем, что данных достаточно
if len(df) < 52:
return None
# Последняя закрытая свеча
last_width = df['bb_width'].iloc[-2]
last_rvol = df['rvol'].iloc[-2]
last_close = df['close'].iloc[-2]
# Проверка на NaN
if pd.isna(last_width) or pd.isna(last_rvol):
return None
# Минимальная ширина полос за предыдущие 50 свечей
# НЕ включая анализируемую свечу
historical_widths = df['bb_width'].iloc[-52:-2]
if historical_widths.isna().all():
return None
min_width_50 = historical_widths.min()
# Условия поиска
is_squeezed = last_width <= (min_width_50 * 1.15)
has_volume_spike = last_rvol >= 2.5
if is_squeezed and has_volume_spike:
return {
'symbol': symbol,
'close': float(last_close),
'bb_width': round(float(last_width), 4),
'rvol': round(float(last_rvol), 2)
}
except Exception as e:
print(f"[ERROR] {symbol}: {e}")
return None
async def main():
exchange = ccxt.binance({
'enableRateLimit': True,
'options': {
'defaultType': 'future'
}
})
semaphore = asyncio.Semaphore(MAX_CONCURRENT_REQUESTS)
try:
await exchange.load_markets()
# Только USDT perpetual futures
symbols = [
symbol
for symbol in exchange.symbols
if symbol.endswith('/USDT:USDT')
]
print(f"[*] Сканирование {len(symbols)} пар на фьючерсном рынке...")
tasks = [
analyze_market(exchange, symbol, semaphore)
for symbol in symbols
]
results = await asyncio.gather(*tasks)
hot_targets = [
result
for result in results
if result is not None
]
# Сортировка по RVOL
hot_targets.sort(
key=lambda x: x['rvol'],
reverse=True
)
print("\n=== НАЙДЕННЫЕ МОНЕТЫ ПОД ИМПУЛЬС ===")
if not hot_targets:
print("Совпадений не найдено.")
return
print(
f"{'Символ':<18} | "
f"{'Цена':<15} | "
f"{'BB Width':<10} | "
f"{'RVOL':<8}"
)
print("-" * 65)
for target in hot_targets:
print(
f"{target['symbol']:<18} | "
f"{target['close']:<15.8f} | "
f"{target['bb_width']:<10} | "
f"{target['rvol']:<8}"
)
finally:
await exchange.close()
if __name__ == '__main__':
asyncio.run(main())Risikomanagement und Entry-Execution: Wie du nicht beim Fakeout verreckst
Kompressionen zu finden ist nur die halbe Miete. Die andere Hälfte ist, nicht per Stop-Out getrackt zu werden, wenn der Big Player erst mal einen Shakeout durchzieht (den Fakeout, um vor der echten Zündung noch Liquidität abzugreifen).
Geh NIEMALS «per Market» vor dem Breakout rein: Auf die Kompression zu warten heißt nicht, blind in die Position zu faken. Geh entweder per Limit-Order an der unteren Kante der Range rein (wenn du Spot akkumulierst) oder erst auf Bestätigung (Close der 5m/15m Kerze AUẞERHALB der Bollinger-Bänder mit entsprechendem Volumen).
Stop-Loss Berechnung:
- Setz deinen Stop nicht nach Gefühl oder starr bei 1%.
- Nutze den ATR (Average True Range). Der Stop gehört in einem Abstand von 1.5 * ATR vom Einstiegspunkt hinter die gegenüberliegende Grenze der Akkumulationszone.
Gewinnmitnahme (Take Profit):
- TP1 (50% Position): Auf Höhe des ersten Impulses, der der vollen Breite der Akkumulation entspricht (Risk-Reward ca. 1:2). Rest-Stop sofort auf Breakeven ziehen.
- TP2 (50% Position): Kaskadierender Trailing-Stop entlang des 15m EMA9/EMA21, solange der echte Trend läuft.
Schutz vor Fake-Squeezes: Wenn der Kurs die Grenze der Konsolidierung bricht, das Volumen aber sofort wieder kollabiert und die nächste Kerze zurück in die Range taucht: Das ist Manipulation. Keine Nachkäufe, nicht verbilligen – den Verlust sofort realisieren und cutten.
Merk dir eins: Ein echter Impuls nach der Kompression lässt dir keine Zeit zum Überlegen. Wenn der Kurs die Range bricht und hängenbleibt, kommt da kein Move mehr – Mach die Position zu.
Der erweiterte „Alpha“-Layer: Versteckte Signale, die 95 % der Trader komplett übersehen
Die meisten Screener suchen einfach nur nach stinknormalen Squeezes bzw. Kanten im Chart. Ein Squeeze allein führt aber extrem oft zu einer Seitwärts-Säge (Whipsaw), die dir die Stops auf beiden Seiten abholt. Wenn du deine Winrate auf 75–80 % pushen willst, brauchst du eine zweite Filterebene: die Analyse des Derivate-Kontexts.
1. Disbalance bei Open Interest (OI) und Funding Rate
Die perfekte „Sprungfeder“ baut sich auf, wenn der Preis in einer engen Spanne eingeklemmt ist, die Futures-Daten aber völlig ausrasten:
- Short-Squeeze-Szenario: Der Preis konsolidiert in einer engen 1%-Range. Das Open Interest (OI) schießt innerhalb weniger Stunden um 15–20 % nach oben. Die Funding Rate rutscht tief ins Minus (z. B. -0,04 %). Das bedeutet: Retail-Trader shortet die Seitwärtsphase extrem aggressiv und rechnet mit dem Ausbruch nach unten. Der Market Maker sieht diese gewaltige Liquidations- und Stop-Wand weiter oben und zündet den Impuls eiskalt in die gegenseitige Richtung.
- Long-Squeeze-Szenario: Das genaue Gegenteil. Das OI steigt, die Funding Rate bläht sich stark ins Plus auf (+0,05 % und höher), aber der Preis bewegt sich keinen Millimeter. Oben liegt schlichtweg keine Liquidität mehr – der Move geht nach unten und rasiert alle unvorsichtigen Longs ab.
2. Multi-Timeframe Squeeze Cascade (MTF Cascade)
Ein Breakout auf dem 15m-Chart bringt dir vielleicht 2–4 %. Ein Ausbruch, der zeitgleich mit einem Squeeze auf dem 1h- und 4h-Chart zusammenfällt, zieht ohne nennenswerte Pullbacks direkt um 15 % bis 50 % durch.
Halte Ausschau nach Coins, bei denen die BB Width auf dem 4H-Chart im untersten 5%-Quantil der letzten 30 Tage liegt, während auf dem 15M-Chart exakt in diesem Moment das Volumen explodiert (RVOL > 3.0). Das ist der Augenblick, in dem das kleine Timeframe die Sicherung für den großen Move sprengt.
Fertiges Pine Script (TradingView v5)
Wenn du Screener-Signale direkt im TradingView-Chart visualisieren willst, schnapp dir diesen Indikator. Er hebt Volatilitäts-Squeezes (wenn die Bollinger-Bänder in den Keltner-Kanal eintauchen) farblich hervor und schmeißt Alerts raus, sobald anomales Volumen reinkommt.
//@version=5
indicator("Quant Squeeze & Volume Trigger [EXPERT v2]", overlay=true, max_labels_count=500)
// ======================================================
// Settings / Einstellungen
// ======================================================
groupBB = "Bollinger Bands"
groupKC = "Keltner Channels"
groupVOL = "Volume"
groupTREND = "Trend Filter"
bbLength = input.int(20, "BB Länge", minval=1, group=groupBB)
bbMult = input.float(2.0, "BB Multiplikator", minval=0.1, group=groupBB)
kcLength = input.int(20, "KC Länge", minval=1, group=groupKC)
kcMult = input.float(1.5, "KC Multiplikator", minval=0.1, group=groupKC)
rvolThreshold = input.float(2.2, "RVOL Schwelle (x)", minval=0.1, group=groupVOL)
emaLength = input.int(200, "Trend-EMA", minval=1, group=groupTREND)
showLongs = input.bool(true, "LONG anzeigen", group=groupTREND)
showShorts = input.bool(true, "SHORT anzeigen", group=groupTREND)
// ======================================================
// Bollinger Bands
// ======================================================
[bbMiddle, bbUpper, bbLower] = ta.bb(close, bbLength, bbMult)
// Schutz vor Division durch 0
bbWidth = bbMiddle != 0 ? (bbUpper - bbLower) / bbMiddle : na
// ======================================================
// Keltner Channels
// ======================================================
kcMa = ta.ema(close, kcLength)
// ATR ist verlässlicher für Keltner
kcAtr = ta.atr(kcLength)
kcUpper = kcMa + (kcAtr * kcMult)
kcLower = kcMa - (kcAtr * kcMult)
// ======================================================
// Relative Volume
// ======================================================
volSma = ta.sma(volume, 20)
rvol = (not na(volSma) and volSma > 0) ? volume / volSma : na
// ======================================================
// TTM Squeeze Logic
// ======================================================
// Bollinger komplett innerhalb von Keltner
isSqueezed = bbUpper < kcUpper and bbLower > kcLower
// Gab es vor kurzem einen Squeeze
wasSqueezed = isSqueezed[1]
// Ausbruch aus dem Squeeze
squeezeReleased = wasSqueezed and not isSqueezed
// ======================================================
// Trend Filter
// ======================================================
emaTrend = ta.ema(close, emaLength)
bullTrend = close > emaTrend
bearTrend = close < emaTrend
// ======================================================
// Breakout Confirmation
// ======================================================
// Volumen-Bestätigung
volumeConfirmed = not na(rvol) and rvol >= rvolThreshold
// Preis-Bestätigung
bullBreakout = close > bbUpper
bearBreakout = close < bbLower
// ======================================================
// Anti-Spam Logic
// ======================================================
// Keine aufeinanderfolgenden Signale zulassen
var int lastLongBar = na
var int lastShortBar = na
cooldownBars = 10
canLong =
na(lastLongBar) or
(bar_index - lastLongBar > cooldownBars)
canShort =
na(lastShortBar) or
(bar_index - lastShortBar > cooldownBars)
// ======================================================
// Finale Signale
// ======================================================
longSignal =
showLongs and
barstate.isconfirmed and
squeezeReleased and
volumeConfirmed and
bullBreakout and
bullTrend and
canLong
shortSignal =
showShorts and
barstate.isconfirmed and
squeezeReleased and
volumeConfirmed and
bearBreakout and
bearTrend and
canShort
if longSignal
lastLongBar := bar_index
if shortSignal
lastShortBar := bar_index
// ======================================================
// Visualisierung
// ======================================================
// Hintergrund während des Squeezes
bgcolor(
isSqueezed
? color.new(color.orange, 88)
: na,
title="Squeeze Background"
)
// Trend-EMA
plot(
emaTrend,
title="EMA Trend",
color=color.blue,
linewidth=2
)
// LONG
plotshape(
longSignal,
title="LONG Signal",
style=shape.triangleup,
location=location.belowbar,
color=color.lime,
size=size.small,
text="LONG"
)
// SHORT
plotshape(
shortSignal,
title="SHORT Signal",
style=shape.triangledown,
location=location.abovebar,
color=color.red,
size=size.small,
text="SHORT"
)
// ======================================================
// Alerts
// ======================================================
alertcondition(
longSignal,
title="LONG Breakout",
message="LONG breakout detected on {{ticker}}"
)
alertcondition(
shortSignal,
title="SHORT Breakout",
message="SHORT breakout detected on {{ticker}}"
)Anatomie der Bullen-/Bärenfallen: Echter Breakout vs. Shakeout
Big Player wissen ganz genau, wo die Stops der Squeeze-Trader liegen. Deshalb siehst du in gefühlt 40 % der Fälle kurz vor dem echten Move einen Fehlausbruch / Liquidity Grab (Spring/Upthrust).

So tappst du nicht mehr in die Falle:
Wirf beim Fakeout einen Blick auf das Delta der Kerze. Wenn der Preis die untere Range-Kante durchbricht, die Kerze eine lange Lunte nach unten hinterlässt und das Cumulative Delta massives Market-Buying zeigt (sprich: rote Kerze, aber grünes Delta), findet hier eiskaltes Absorption-Trading statt. Ein großer Limit-Käufer frisst sämtliche Stop-Losses der Verkäufer komplett auf.
Die 3-Kerzen-Regel: Ein echter Impuls fällt nicht direkt wieder in die Squeeze-Range zurück. Wenn der Preis nach dem Ausbruch schon mit der ersten oder zweiten Kerze wieder in die Seitwärtszone zurückklatscht: Position sofort dichtmachen! Das war reines Stop-Fishing.
Pre-Trade Checkliste (5 Sekunden vor dem Klick)
Bevor du nach einem Screener-Signal den Abzug drückst, jage den Coin im Eiltempo durch dieses Raster:
| Schritt | Metrik / Check | Grünes Licht (Entry OK) | Red Flag (Trade Abblasen) |
|---|---|---|---|
| 1 | 24h-Volumen (24h Vol) | > $10.000.000 | < $2.000.000 (Slippage frisst deinen Profit) |
| 2 | Verhalten zu BTC | Bitcoin konsolidiert oder korreliert sauber | Bitcoin dumpt/pumpt genau jetzt um > 1,5 % |
| 3 | Spot/Futures Orderbuch | Freie Bahn, keine fetten Limit-Blöcke im Weg | Riesige Limit-Wand knapp 0,5 % vom aktuellen Preis entfernt |
| 4 | Spread (Bid/Ask) | < 0,05 % | > 0,2 % (Invalide / dünne Liquidität) |
| 5 | Abstand zum nächsten Key-Level | Ausreichend Platz für mindestens CRV 1:3 | Preis prallt direkt auf ein wichtiges Weekly-Level |
Fazit & Bottom Line
Volatilitäts-Screener sind keine Glaskugeln, die dir die Zukunft vorhersagen. Sie sind schlichtweg ein Zeitspar-Tool, mit dem du innerhalb von 30 Sekunden 98 % des Rauschens am Markt ausblendest und deinen Fokus genau auf die 2 % der Assets lenkst, bei denen gerade das Big Money am Werk ist.
Versuche niemals, die Richtung innerhalb eines Squeezes ohne klares Volumens- und Delta-Signal zu erraten. Lass den Markt zuerst die Karten auf den Tisch legen, spring auf den bestätigten Impuls auf und hol dir dein 3–8 % Setup mit minimalem Risiko ab.