Kapatmak için ESC'ye basın

Kripto Volatite Taraması: Patlayacak Coinleri 30sn'de Bulun

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ğeriPara Diliyle Anlamı
BB Width (20, 2)< 0.03 - 0.05> 0.15Volatilitenin 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.0Fiyat yatayda ama hacim normallerinin 2-3 katı. Birileri çaktırmadan tahtayı "süpürüyor".
Keltner / BB OranıKanalın içindeBandın dışına taşmaBollinger Bantları tamamen Keltner Kanalı’nın içine girmiş (Klasik TTM Squeeze hali).
Funding Rate (Fonlama Oranı)0.00% civarı veya negatifAniden + 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ıyorDikey patlamaFiyat 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.

Shakeout
 

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ımKontrol Edilecek ParametreGiriş İçin Uygun (OK)Tehlikeli Sinyal (İptal)
124 Saatlik Hacim (24h Vol)> $10,000,000< $2,000,000 (Kayma/Slippage kârı yer)
2BTC Karşısındaki DurumBitcoin yatayda veya coin'i takip ediyorBitcoin tam şu anda >%1.5 dump/pump yiyor
3Spot/Futures Derinlik Tahtasıİleride büyük limit emir duvarlarının olmamasıMevcut fiyata %0.5 mesafede devasa limit emir duvarı
4Spread (Bid/Ask)< %0.05> %0.2 (Düşük likidite)
5En Yakın Seviyeye UzaklıkEn az 1:3 Risk/Ödül oranı için hareket alanı varFiyat 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.

Bu blog yazısını şununla özetleyin:

FAQ

Fiyat sıçraması öncesi coinleri tespit etmek, Bollinger Bantları genişliğinin (BB Width < 0.05) daraldığı ve Göreceli Hacmin (RVOL > 2.5) aniden yükseldiği sıkışma evrelerini filtrelemeyi gerektirir. Bu teknik yapı, emir defterindeki likidite çekilmeden önce kurumsal akümülasyonu ve tahtadaki silelemeyi gösterir. İşlemciler 15 dakikalık ve 1 saatlik zaman dilimlerinde Açık Pozisyon (Open Interest) artışını ve nötr Fonlama Oranını (Funding Rate) doğrulayarak bireysel yatırımcıların henüz aşırı kaldıraçlanmadığından emin olur.

İdeal volatilite tarayıcısı yapılandırması, TTM Squeeze durumunu izole etmek için Bollinger Bantları (20 periyot, 2.0 standart sapma) ile Keltner Kanallarını (20 periyot, 1.5 ATR çarpanı) birleştirir. Tarayıcı, kayma riskini (slippage) önlemek için 24 saatlik hacmi minimum 10 milyon doların üzerinde tutmalı, BB Width değerini 0.05'in altında ve RVOL'ü 2.2'nin üzerinde filtrelemelidir. 15 dakikalık grafikte 200 EMA trend filtresi eklemek, trend tersi hatalı sinyalleri ve yatay piyasadaki sahte girişleri eler.

Gerçek bir breakout, fiyatın Kümülatif Hacim Deltası (CVD) genişlemesiyle birlikte volatilite bantlarının dışında kapanmasıyla korunurken, fakeout hızla konsolidasyon aralığına geri döner. Geçerli bir kırılım, fiyatın iki ila üç mum kapanışı içinde yeniden sıkışma bölgesine girmesine izin vermez. Fiyat seviyeyi kırıp ardından pasif limit emirleriyle agresif bir emilim (absorption) gösteriyorsa, piyasa yapıcı ters yöne gitmeden önce stop likiditesini temizliyor demektir.
Piter Wacker

I am a trading specialist with expertise in market analysis, risk management, and investment strategies. I focus on identifying opportunities, executing trades with discipline, and delivering consistent results.

...

Yorumunuzu paylaşın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar işaretlendi *