Henüz yolun başında olan bir kırılımı (breakout) yakalamanın en hızlı yolu, fiyat henüz yerinden oynamadan önceki gizli akümülasyon (toplama) evresinde yaşanan o kritik volatilite sıkışmasını tespit etmektir.
Sorun: Neden her seferinde tepeden giriyorsun?
Her trader bu cehennemden en az bir kez geçmiştir. Borsayı açarsın, son iki saatte %25 primlenmiş bir coin görürsün, açgözlülükle açarsın long’u… Tam üç dakika sonra grafik taş gibi aşağı çakılmaya başlar. Tebrikler, sessizce pozisyona giren adamların likiditesi oldun.
Piyasada çoğunluk sürü psikolojisiyle hareket eder: Hareket gerçekleştikten sonra tepki verirler. Bir coin zaten roketlemişken, sinyal kanalları ötmeye başlar, Telegram gruplarında "uçuyoruz" çığlıkları atılır; işte o anda balinalar senin market emirlerine malı boşaltıp pozisyonunu kapatıyordur. Başkalarının kârını finanse etmeyi bırakmak istiyorsan, grafik olabildiğince sıkıcı göründüğünde ve volatilite adeta "öldüğünde" içeri girmeyi öğrenmelisin.
İşin İşleyişi: Büyük patlamadan hemen önce arkada ne dönüyor?
Piyasa sürekli iki evre arasında gidip gelir: Akümülasyon (sıkışma) ve Dağıtım (genişleme). Bir yayı sonsuza kadar sıkıştıramazsın, eninde sonunda patlayacaktır.
Bir piyasa yapıcı (MM) veya büyük bir fon, bir altcoinde pozisyon toplarken fiyatı yukarı sürmek istemez; yoksa kendi ortalama giriş maliyetini bozmuş olur. Bu yüzden dar bir bantta tüm arzı çaktırmadan toplar (süpürür). Tam o sırada grafikte şunlar yaşanır:
- Genlik Sönümlenmesi: Günlük en yüksek ve en düşük seviye arasındaki fark hızla küçülür.
- Tarihsel Volatilitenin (HV) Çökmesi: Grafik adeta düz bir "testere" çizgisine veya dar bir yatay banda (flat) dönüşür.
- Tahtanın Kuruması: Küçük yatırımcıların emirleri patlatılır veya iptal edilir; tahta tamamen sessizliğe bürünür.
- Volume Delta Anormallikleri: Fiyat yerinde sayar ama o dar mum aralığında aniden büyük market alımları çakılmaya başlar ya da görece hacimde (RVOL) anormallikler görülür.
Tahtadaki serbest dolaşımdaki coin’ler (float) toplandığı an piyasada bir derinlik vakumu oluşur. Artık tahtada kalın limit emirler kalmadığı için marketten atılacak $50k-$100k’lık küçük bir ittirme bile fiyatı direkt uzaya fırlatır.
Tarama (Screener) İçin Metrik Karşılaştırması
500 tane grafiği tek tek elle taramakla ömür geçmeyeceği için filtrelerimizi belirli matematiksel sapmalara göre ayarlıyoruz:
| Metrik | "Sıkışma" Değeri | "Patlama" Değeri | Para Diliyle Anlamı |
|---|---|---|---|
| BB Width (20, 2) | < 0.03 - 0.05 | > 0.15 | Volatilitenin canı çıkmış, Bollinger Bantları dip seviyede sıkışmış (son 14–30 günün en dar hali). |
| RVOL (Relative Vol) | Daralmada > 2.2 | > 5.0 | Fiyat yatayda ama hacim normallerinin 2-3 katı. Birileri çaktırmadan tahtayı "süpürüyor". |
| Keltner / BB Oranı | Kanalın içinde | Bandın dışına taşma | Bollinger Bantları tamamen Keltner Kanalı’nın içine girmiş (Klasik TTM Squeeze hali). |
| Funding Rate (Fonlama Oranı) | 0.00% civarı veya negatif | Aniden + veya -’ye sert kayış | Küçük yatırımcı henüz ne olduğunun farkında değil. Kaldıraç tarafında dengesizlik yok. |
| Open Interest (Açık Pozisyon - OI) | Sabit veya tatlı tatlı artıyor | Dikey patlama | Fiyat yataydayken OI yükseliyor — içeri akılcı büyük para giriyor, sadece fomo tayfa değil. |
30 Saniyede Coin Yakalama Algoritması
Profesyonel tarayıcılar (TradingView, Coinglass, ScalpStation ya da kendi yazdığın botlar) kullanıyorsan izleyeceğin check-list tam olarak şudur:
- BBW (Bollinger Bands Width) Sıralaması: Zaman dilimini 15m veya 1h yap. Listeyi en düşük değerden yükseğe doğru sırala.
- Hacim Filtresi (24h Volume): Günlük hacmi $5M–$10M altında kalan ölü çöp (shitcoin) tahtaları ele (derinlik yoktur, slippage yüzünden içeri kilitlenirsin).
- RVOL / OI Kontrolü: Kesişimi bul: BBW listenin en altında, ancak 1h veya 15m RVOL %200-%300 üzerine fırlamış.
- Yapı Analizi: Grafiği aç. %1-%1.5 aralığında dar bir mum yapısı ve kümülatif deltada (CVD) dikleşme varsa, coin patlamadan önceki son düzlüktedir.
Üretim Seviyesinde (Production-Ready) Python Tarama Bodu
İşte anormallikleri avlamak için yazılmış hazır bir script. `ccxt` kütüphanesini kullanır, vadeli işlemler (futures) piyasasını sorgular, TTM Squeeze ve RVOL hesabı yapar ve patlamaya hazır coin'leri konsola çıktı olarak basar.
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())Risk Yönetimi ve Giriş Mekaniği: Sahte iğnelerde kasayı patlatmama rehberi
Sıkışmayı tespit etmek işin sadece yarısı. Diğer yarısı ise, büyük oyuncu esas hareketi başlatmadan önce likidite toplamak için "Shakeout" (silkeleme / sahte breakout) yaptığında stop olmamaktır.
Kırılım gelmeden "Marketten" atlama: Sıkışmayı beklemek, gözün kapalı işleme dalmak anlamına gelmez. Ya dar bant alanının alt sınırına limit emrini koyup beklersin (spot topluyorsan) ya da onayı görürsün (5m/15m mumunun Bollinger Bandı dışında hacimli kapanması).
Stop-Loss Hesabı:
- Kafana göre ya da sabit %1 stop koyma.
- ATR (Average True Range) metriğini kullan. Stop seviyesi, giriş noktasından akümülasyon alanının ters sınırına doğru 1.5 * ATR mesafede olmalıdır.
Kâr Alma (Take Profit):
- TP1 (Pozisyonun %50'si): Sıkışma alanının tam genişliği kadar ilk dalga gelindiğinde (1:2 Risk/Reward). Kalan pozisyonu girişe (stop-entry) çekme.
- TP2 (Pozisyonun kalan %50'si): Gerçek trend devam ettiği sürece 15m EMA9/EMA21 takipli stop (trailing stop) ile sürme.
Sahte İğneden (Fakeout) Korunma: Fiyat konsolidasyon bölgesini kırıp geçer ama hacim anında düşerse ve bir sonraki mum tekrar aralığın içine dönerse bu net bir manipülasyondur. Sakın maliyet düşürmeye (ekleme yapmaya) çalışma, zararı anında kesip çık.
Şunu asla unutma: Sıkışma sonrası gelen gerçek momentum seni düşündürmez, direkt sürer. Fiyat bölgeyi kırıp tıkandıysa o hareketten hayır gelmez, pozisyonu kapat.
Gelişmiş "Alpha" Katmanı: Tradatörlerin %95'inin Kaçırdığı Gizli Sinyaller
Piyasadaki çoğu tarayıcı (screener) sadece sıradan fiyat sıkışmalarını (squeeze) tespit eder. Ancak tek başına sıkışma, genelde her iki taraftaki stopları da patlatan testere piyasalarına (whipsaw) yol açar. Win-rate oranınızı %75-80 seviyelerine çıkarmak istiyorsanız ikinci bir filtreleme katmanına ihtiyacınız var: Türev piyasası konsept analizi.
1. Açık Pozisyon (OI) ve Fonlama Oranı (Funding Rate) Dengesizliği
Mükemmel "yay" yapısı, fiyat dar bir bantta sıkışmışken vadeli işlemlerde (futures) anormallikler yaşandığında oluşur:
- Short Squeeze Senaryosu: Fiyat %1'lik dar bir koridorda konsolide oluyor. Açık Pozisyon (OI) birkaç saat içinde %15-20 artıyor. Funding Rate derin eksiye düşüyor (örneğin -%0.04). Bu, küçük yatırımcıların aşağı yönlü kırılım beklentisiyle yatay piyasayı agresif şekilde short'ladığı anlamına gelir. Tahta yapıcı (market maker) yukarıda biriken stop ve likidasyon duvarını görür ve fiyatı tam tersi yönde yukarı fırlatır.
- Long Squeeze Senaryosu: Her şey tamamen tersine işler. OI artar, fonlama oranı artıya şişer (+%0.05 ve üzeri), fiyat ise yerinde sayar. Yukarıda likidite kalmamıştır; sert hareket aşağı yönlü gelecek ve dikkatsiz long pozisyonları silip süpürecektir.
2. Çoklu Zaman Dilimi Sıkışma Şelalesi (MTF Cascade)
15 dakikalık grafikteki bir kırılım %2-4'lük bir hareket verir. Ancak 1 saatlik ve 4 saatlik zaman dilimlerindeki sıkışmayla senkronize olan bir hareket, düzeltme yapmadan %15 ile %50 arasında yükseliş yakalayabilir.
4H grafikte BB Width değeri son 30 günün en düşük %5'lik diliminde olan, ancak aynı anda 15M grafikte hacim patlaması yaşanan (RVOL > 3.0) coin'leri arayın. Bu an, küçük zaman diliminin büyük zaman dilimindeki pimi çektiği andır.
Kullanıma Hazır Pine Script (TradingView v5)
Screener sinyallerini doğrudan TradingView grafikleriniz üzerinde görselleştirmeyi tercih ediyorsanız bu indikatörü kullanabilirsiniz. Volatite sıkışma bölgelerini (Bollinger Bantları, Keltner Kanalları'nın içine girdiğinde) vurgular ve anormal hacim tespit ettiğinde alarm üretir.
//@version=5
indicator("Quant Squeeze & Volume Trigger [EXPERT v2]", overlay=true, max_labels_count=500)
// ======================================================
// Настройки
// ======================================================
groupBB = "Bollinger Bands"
groupKC = "Keltner Channels"
groupVOL = "Volume"
groupTREND = "Trend Filter"
bbLength = input.int(20, "BB Длина", minval=1, group=groupBB)
bbMult = input.float(2.0, "BB Множитель", minval=0.1, group=groupBB)
kcLength = input.int(20, "KC Длина", minval=1, group=groupKC)
kcMult = input.float(1.5, "KC Множитель", minval=0.1, group=groupKC)
rvolThreshold = input.float(2.2, "Порог RVOL (x)", minval=0.1, group=groupVOL)
emaLength = input.int(200, "EMA Тренда", minval=1, group=groupTREND)
showLongs = input.bool(true, "Показывать LONG", group=groupTREND)
showShorts = input.bool(true, "Показывать SHORT", group=groupTREND)
// ======================================================
// Bollinger Bands
// ======================================================
[bbMiddle, bbUpper, bbLower] = ta.bb(close, bbLength, bbMult)
// Защита от деления на 0
bbWidth = bbMiddle != 0 ? (bbUpper - bbLower) / bbMiddle : na
// ======================================================
// Keltner Channels
// ======================================================
kcMa = ta.ema(close, kcLength)
// ATR надежнее для 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 полностью внутри Keltner
isSqueezed = bbUpper < kcUpper and bbLower > kcLower
// Было ли сжатие недавно
wasSqueezed = isSqueezed[1]
// Выход из сжатия
squeezeReleased = wasSqueezed and not isSqueezed
// ======================================================
// Trend Filter
// ======================================================
emaTrend = ta.ema(close, emaLength)
bullTrend = close > emaTrend
bearTrend = close < emaTrend
// ======================================================
// Breakout Confirmation
// ======================================================
// Подтверждение объемом
volumeConfirmed = not na(rvol) and rvol >= rvolThreshold
// Подтверждение ценой
bullBreakout = close > bbUpper
bearBreakout = close < bbLower
// ======================================================
// Anti-Spam Logic
// ======================================================
// Запрещаем сигналы подряд
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)
// ======================================================
// Финальные сигналы
// ======================================================
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
// ======================================================
// Визуализация
// ======================================================
// Фон во время squeeze
bgcolor(
isSqueezed
? color.new(color.orange, 88)
: na,
title="Squeeze Background"
)
// 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}}"
)Tuzak Anatomisi: Gerçek Kırılım ile Shakeout (Silkeleme) Arasındaki Fark
Büyük oyuncular (smart money), volatilite sıkışması ticareti yapanların stoplarının nerede olduğunu çok iyi bilir. Bu nedenle vakaların %40'ında asıl hareket başlamadan önce sahte bir iğne / manipülasyon hareketi (Spring/Upthrust) gerçekleşir.

Bu tuzağa düşmekten nasıl kaçınılır:
İğne atan mumun Delta değerine bakın. Fiyat konsolidasyon bölgesinin alt sınırını kırıyor, mum alt tarafta uzun bir fitil bırakıyor ve Kümülatif Delta güçlü market alımları gösteriyorsa (yani kırmızı muma rağmen yeşil delta varsa) bu pasif bir emilimdir (Absorption). Büyük bir limit alıcısı, satanların tüm stoplarını kendi emmiştir.
3 Mum Kuralı: Gerçek bir kırılım ivmesi, sıkışma aralığına geri dönmez. Kırılımdan sonra fiyat ilk veya ikinci mumda tekrar yatay banda geri yuvarlanıyorsa, pozisyonu derhal kapatın. Bu sadece bir likidite avıydı (Stop Hunt).
İşlem Öncesi Kontrol Listesi (Tıklamadan 5 Saniye Önce)
Volatite tarayıcısının sinyaliyle işleme girmeden önce, coin'i hızlıca şu filtreden geçirin:
| Adım | Kontrol Edilecek Parametre | Giriş İçin Uygun (OK) | Tehlikeli Sinyal (İptal) |
|---|---|---|---|
| 1 | 24 Saatlik Hacim (24h Vol) | > $10,000,000 | < $2,000,000 (Kayma/Slippage kârı yer) |
| 2 | BTC Karşısındaki Durum | Bitcoin yatayda veya coin'i takip ediyor | Bitcoin tam şu anda >%1.5 dump/pump yiyor |
| 3 | Spot/Futures Derinlik Tahtası | İleride büyük limit emir duvarlarının olmaması | Mevcut fiyata %0.5 mesafede devasa limit emir duvarı |
| 4 | Spread (Bid/Ask) | < %0.05 | > %0.2 (Düşük likidite) |
| 5 | En Yakın Seviyeye Uzaklık | En az 1:3 Risk/Ödül oranı için hareket alanı var | Fiyat zaten haftalık direnç/destek seviyesine dayanmış |
Özetle
Volatite tarayıcıları geleceği gören sihirli bir küre değildir. Bunlar, yarım dakika içinde piyasadaki %98'lik gürültüyü eleyip, tam şu anda büyük oyunun başladığı %2'lik varlıklara odaklanmanızı sağlayan bir zaman tasarruf aracıdır.
Hacim ve delta onayı almadan sıkışmanın içinde hareket yönünü tahmin etmeye çalışmayın. Bırakın piyasa önce kartlarını açsın; doğrulanmış ivmeye dahil olun ve minimum riskle %3-8'lik hareketinizi alıp kenara çekilin.