Tekan ESC untuk menutup

Screener Volatilitas Kripto: Cari Koin Breakout 30 Detik

Trik paling ngebut buat nangkap breakout yang baru mau meledak itu simpel: pantau fase kompresi volatilitas ekstrem yang diiringi akumulasi volume tersembunyi, persis sebelum harganya terbang.

Masalah Klasik: Kenapa Lu Selalu Beli di Pucuk?

Semua trader pasti pernah ngalamin momen apes ini. Pas buka exchange, kelihatan ada koin lagi pom-pom +25% dalam dua jam terakhir. Tanpa mikir panjang lu langsung HAKI/FOMO buka posisi long, dan… tepat tiga menit kemudian grafiknya langsung terjun bebas. Selamat, lu resmi jadi likuiditas buat paus yang udah masuk diam-diam dari bawah.

Kebanyakan ritel itu geraknya kayak domba: baru bereaksi pas barangnya udah jalan. Pas koinnya udah terbang tinggi, notifikasi bot berisik, dan grup-grup Telegram udah rame teriak "To the moon!", smart money justru lagi sibuk jualan alias *dumping* barang mereka ke market order lu. Biar lu gak terus-terusan jadi "donatur" profit orang lain, lu wajib belajar cara masuk ke aset pas grafiknya lagi kelihatan ngebosenin banget dan volatilitasnya bener-bener "mati".

Mekanisme Pasar: Apa yang Sebenarnya Terjadi Sebelum Pump Impulsif?

Market itu siklusnya cuma muter di dua fase: akumulasi (kompresi) dan distribusi (ekspansi). Ibarat per, lu gak bisa meres per itu terus-menerus—sekali lepas pasti mental kenceng.

Pas market maker atau big fund lagi nyicil muatan di suatu altcoin, mereka gak bakal ngebiarin harganya naik dulu. Kalau naik, *average entry* mereka jadi jelek. Makanya, mereka bakal "nyapu" semua *supply* dengan halus di *range* harga yang sangat sempit. Di momen ini, struktur chart bakal nunjukin tanda-tanda berikut:

  • Penyempitan Amplitudo: Selisih antara harga tertinggi (high) dan terendah (low) harian makin mengecil drastis.
  • Historical Volatility (HV) Anjlok: Chart berubah jadi kayak "gergaji" datar atau *sideways* super tipis.
  • Order Book Kering: Antrean bid/ask dari ritel makin tipis atau di-cancel, pasar bener-bener hening.
  • Anomali Volume Delta: Harga kelihatan diam di tempat, tapi di dalam candle yang sempit itu tiba-tiba ada *market buy* segede gaban atau lonjakan tajam pada Relative Volume (RVOL).

Begitu *circulating float* (koin bebas di pasar) habis diserap dari order book, bakal terjadi vakum likuiditas. Dorongan belian cuma $50k–$100k via market order aja udah sanggup bikin harganya meroket ke langit, gara-gara udah gak ada tembok limit order tebal yang menahan.

Analisis Komparatif Metrik buat Screening

Daripada gempor mantau 500 chart satu per satu secara manual, mending kita set filter berdasarkan deviasi teknikal berikut:

MetrikNilai "Per Tertekan" (Kompresi)Nilai "Ledakan" (Breakout)Bahaa Cuan-nya (Artinya Apa Bang Messi?)
BB Width (20, 2)< 0.03 - 0.05> 0.15Volatilitas udah mampet maksimal, lebar pita Bollinger Bands berada di titik terendah dalam 14–30 hari.
RVOL (Relative Vol)> 2.2 saat squeeze> 5.0Harga lagi *sideways* parah, tapi volume 2-3x lipat lebih rame dari biasanya. Ada yang lagi "nyedot" order book diem-diem.
Keltner / BB RatioDi dalam kanalTembus batas kanalBands Bollinger masuk sepenuhnya ke dalam Keltner Channel (pola klasik TTM Squeeze).
Funding RateSekitar 0.00% atau negatifLonjakan ekstrem (+) atau (-)Ritel belum ngeh apa yang lagi terjadi. Belum ada penumpukan leverage ke salah satu sisi.
Open Interest (OI)Stabil atau naik perlahanMeroket tajamOI terus bertambah padahal harga flat — ini tandanya duit gede lagi masuk, bukan sekadar ritel iseng.

Algoritma Screening Cepat 30 Detik

Buat lu yang pake screener pro (TradingView, Coinglass, ScalpStation, atau bikin script sendiri), begini checklist ringkasnya:

  • Sortir berdasarkan BBW (Bollinger Bands Width): Pakai timeframe 15m atau 1h. Urutkan list dari nilai terkecil ke terbesar.
  • Filter Volume (24h): Buang koin-koin micin/shitcoin mati yang volume harian di bawah $5M–$10M (likuiditasnya ampas, lu bisa kena slippage parah pas mau exit).
  • Cek Konfirmasi RVOL / OI: Cari koin yang BBW-nya ada di jajaran teratas (paling mampet), tapi RVOL di TF 1h atau 15m mendadak melonjak di atas 200-300%.
  • Evaluasi Struktur Chart: Buka chart-nya. Kalau kelihatan *sideways* super ketat di rentang 1-1.5% diiringi perataan mendadak pada *cumulative volume delta*—koin itu fix dalam kondisi siap meledak.

Python Aggregator Pro (Production-Ready)

Ni script Python siap pakai buat nge-scan anomali secara otomatis. Script ini nge-fetch data futures via ccxt, ngitung TTM Squeeze + RVOL, terus nge-print list koin yang udah mateng dan siap breakout langsung ke konsol lu.

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 Management & Eksekusi Entry: Biar Gak Rungkad Kena Fakeout

Nemu pola kompresi itu baru separuh jalan. Separuh perjuangan lagi tuh gimana caranya biar gak kena *stop loss* konyol pas paus lagi bikin *Shakeout* (fake breakout buat nge-sweep likuiditas sebelum jalan aslinya).

Jangan *HAKI/Market Order* Sebelum Ada Konfirmasi: Nungguin squeeze bukan berarti main hajar kanan membabi buta. Masuklah pake limit order di area bawah range *sideways* (kalau buat spot akumulasi), atau tunggu konfirmasi (candle 5m/15m *close* sempurna DI LUAR pita Bollinger Bands barengan sama lonjakan volume).

Perhitungan Stop Loss:

  • Jangan asal pasang SL pake perasaan atau sekadar saklek fixed 1%.
  • Manfaatin indikator ATR (Average True Range). Pasang SL di jarak 1.5 * ATR dari titik *entry*, di balik area batas akumulasi lawan.

Take Profit (TP) Berjenjang:

  • TP1 (50% Posisi): Amankan di jarak impuls pertama yang setara sama lebar area akumulasi (RR minimal 1:2). Sisanya pasang Stop Loss in Profit (BEP).
  • TP2 (50% Posisi): Biarin sisanya *run* pake *trailing stop* ikutan EMA9/EMA21 di TF 15m selama tren aslinya masih jalan.

Antisipasi Fake Squeeze: Kalau harga sempet jebol area konsolidasi tapi volumenya mendadak loyo dan candle berikutnya balik lagi masuk ke dalam *range*—itu murni manipulasi. Gak usah sok-sokan *average down*, langsung *cut loss* aja tanpa nyesel.

Inget baik-baik: impuls asli habis squeeze tuh geraknya instan dan gak ngasih waktu buat mikir. Kalau harga udah breakout tapi malah *stuck* dan ragu-ragu, mending buang posisinya.

Layer "Alpha" Lanjutan: Sinyal Tersembunyi yang Gagal Dilihat 95% Trader

Mayoritas screener cuma nyari kompresi harga biasa. Tapi sekadar kompresi doang seringnya bikin kita kena whipsaw alias choppy—stop loss kesapu bolak-balik di kedua sisi. Buat ndongkrak winrate ke level 75-80%, lu butuh lapisan filter kedua: analisis konteks dari pasar derivatif.

1. Ketidakseimbangan Open Interest (OI) & Funding Rate

"Piringan per" yang sempurna terbentuk pas harga kejebak di area konsolidasi super sempit, tapi ada aktivitas anomali di pasar futures:

  • Skenario Short Squeeze: Harga ngendap di range tipis 1%. Open Interest (OI) melonjak 15-20% cuma dalam hitungan jam. Funding Rate minus parah (misal: -0.04%). Artinya, ritel lagi kebelet ngeshort di area sideway karena ngira harga bakal jebol ke bawah. Market Maker ngeliat tembok stop loss dan likuidasi bertumpuk di atas, lalu nembakin impuls ke arah sebaliknya.
  • Skenario Long Squeeze: Kebalikan total. OI naik, funding rate bengkak ke area positif (+0.05% ke atas), tapi harga malah jalan di tempat. Di atas udah nggak ada likuiditas—impuls bakal banting ke bawah buat nyapu posisi long yang keteledoran.

2. Kaskade Kompresi Multi-Timeframe (MTF Cascade)

Impuls di timeframe M15 paling cuma ngasih gerak 2-4%. Tapi impuls yang barengan sama kompresi di H1 dan H4 bisa ngasilin reli tanpa koreksi sebesar 15% sampai 50%.

Cari koin yang indikator BB Width-nya ada di persentil 5% terbawah selama 30 hari terakhir di H4, tapi di M15 detik ini juga lagi ada lonjakan volume signifikan (RVOL > 3.0). Ini momen pas timeframe kecil ngelepas pin granat milik timeframe besar.

Script Pine Script Siap Pakai (TradingView v5)

Kalau lu lebih suka memvisualisasikan sinyal screener langsung di chart TradingView, langsung rakit indikator ini. Indikator ini nggarisbawahi area kompresi volatilitas (pas Bollinger Bands masuk ke dalam Keltner Channel) dan ngasih alert tiap ada anomali volume.

//@version=5
indicator("Quant Squeeze & Volume Trigger [EXPERT v2]", overlay=true, max_labels_count=500)
// ======================================================
// Pengaturan
// ======================================================
groupBB = "Bollinger Bands"
groupKC = "Keltner Channels"
groupVOL = "Volume"
groupTREND = "Trend Filter"
bbLength      = input.int(20, "Panjang BB", minval=1, group=groupBB)
bbMult        = input.float(2.0, "Pengali BB", minval=0.1, group=groupBB)
kcLength      = input.int(20, "Panjang KC", minval=1, group=groupKC)
kcMult        = input.float(1.5, "Pengali KC", minval=0.1, group=groupKC)
rvolThreshold = input.float(2.2, "Ambang Batas RVOL (x)", minval=0.1, group=groupVOL)
emaLength     = input.int(200, "EMA Tren", minval=1, group=groupTREND)
showLongs     = input.bool(true, "Tampilkan LONG", group=groupTREND)
showShorts    = input.bool(true, "Tampilkan SHORT", group=groupTREND)
// ======================================================
// Bollinger Bands
// ======================================================
[bbMiddle, bbUpper, bbLower] = ta.bb(close, bbLength, bbMult)
// Proteksi pembagian dengan 0
bbWidth = bbMiddle != 0 ? (bbUpper - bbLower) / bbMiddle : na
// ======================================================
// Keltner Channels
// ======================================================
kcMa    = ta.ema(close, kcLength)
// ATR lebih handal untuk 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
// ======================================================
// Logika TTM Squeeze
// ======================================================
// Bollinger sepenuhnya di dalam Keltner
isSqueezed = bbUpper < kcUpper and bbLower > kcLower
// Apakah baru saja squeeze
wasSqueezed = isSqueezed[1]
// Lepas dari squeeze
squeezeReleased = wasSqueezed and not isSqueezed
// ======================================================
// Filter Tren
// ======================================================
emaTrend = ta.ema(close, emaLength)
bullTrend = close > emaTrend
bearTrend = close < emaTrend
// ======================================================
// Konfirmasi Breakout
// ======================================================
// Konfirmasi volume
volumeConfirmed = not na(rvol) and rvol >= rvolThreshold
// Konfirmasi harga
bullBreakout = close > bbUpper
bearBreakout = close < bbLower
// ======================================================
// Logika Anti-Spam
// ======================================================
// Mencegah sinyal beruntun
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)
// ======================================================
// Sinyal Akhir
// ======================================================
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
// ======================================================
// Visualisasi
// ======================================================
// Warna latar saat squeeze
bgcolor(
    isSqueezed
    ? color.new(color.orange, 88)
    : na,
    title="Squeeze Background"
)
// EMA Tren
plot(
    emaTrend,
    title="EMA Trend",
    color=color.blue,
    linewidth=2
)
// LONG
plotshape(
    longSignal,
    title="Sinyal LONG",
    style=shape.triangleup,
    location=location.belowbar,
    color=color.lime,
    size=size.small,
    text="LONG"
)
// SHORT
plotshape(
    shortSignal,
    title="Sinyal SHORT",
    style=shape.triangledown,
    location=location.abovebar,
    color=color.red,
    size=size.small,
    text="SHORT"
)
// ======================================================
// Alert
// ======================================================
alertcondition(
    longSignal,
    title="LONG Breakout",
    message="LONG breakout detected on {{ticker}}"
)
alertcondition(
    shortSignal,
    title="SHORT Breakout",
    message="SHORT breakout detected on {{ticker}}"
)

Anatomi Jebakan: Membedakan Breakout Valid dan Shakeout Fakeout

Bandar / Smart Money paham betul di mana area stop loss para pemula yang ngedagangin squeeze volatilitas. Makanya sekitar 40% kasus sebelum pergerakan asli dimulai, mereka ngebikin "fakery" alias tusukan jahat (Spring/Upthrust).

Shakeout
 

Cara biar lu nggak kena jebakan betmen ini:

Pantau Delta pada candle tusukan tersebut. Kalau harga nembus batas bawah akumulasi tapi candlenya ngebentuk ekor panjang di bawah, sementara Cumulative Delta ngeliatin dorongan beli agresif via market order (candle merah tapi deltanya hijau)—ini namanya Absorpsi Pasif (Absorption). Buyer limit besar lagi nampung semua jualan stop loss ritel.

Rule 3 Candle: Impuls asli nggak bakal balik lagi ke dalam range squeeze. Kalau habis breakout ternyata di candle pertama atau kedua harganya malah ambles masuk balik ke area sideway, langsung cutloss tanpa alasan. Itu murni sweeping likuiditas.

Checklist Pra-Trading (5 Detik Sebelum Eksekusi)

Sebelum lu asal hajar kanan/kiri ngikutin sinyal screener, skrining kilat koin tersebut lewat checklist ini:

LangkahItem PengecekanKondisi Aman (Entry)Sinyal Bahaya (Abort)
1Volume 24 Jam (24h Vol)> $10,000,000< $2,000,000 (Slippage mending ngebunuh profit lu)
2Korelasi terhadap BTCBitcoin lagi sideway atau ngekor altcoinBitcoin lagi nge-pump/dump keras >1.5% pas detik ini
3Orderbook Spot/FuturesNggak ada tembok limit order tebel di depanAda tembok limit berjarak cuma 0.5% dari harga running
4Spread (Bid/Ask)< 0.05%> 0.2% (Likuiditas kering)
5Jarak ke Key Level TerdekatMasih ada ruang gerak buat Risk:Reward minimal 1:3Harga udah mentok pas di level Support/Resistance Weekly (W1)

Kesimpulan Pragmatis

Screener volatilitas itu bukan bola kristal ramalan masa depan. Alat ini murni pemangkas waktu biar lu bisa mengeliminasi 98% noise pasar cuma dalam waktu setengah menit, lalu fokus ke 2% aset yang emang lagi disiapin skenario gede sama bandar.

Nggak usah tebak-tebakan arah di dalam area squeeze tanpa konfirmasi volume dan delta. Biarkan market buka kartu duluan, masuk pas impuls terkonfirmasi, lalu amankan 3-8% profit gerakan dengan risiko seminimal mungkin.

Rangkum postingan blog ini dengan:

FAQ

Menemukan koin sebelum lonjakan harga dilakukan dengan memfilter penyempitan Bollinger Bands (BB Width di bawah 0.05) yang disertai lonjakan Relative Volume (RVOL > 2.5). Kondisi ini menandakan akumulasi dan pengeringan likuiditas order book oleh pelaku pasar besar sebelum fase ekspansi. Trader memantau time frame 15 menit dan 1 jam sambil memverifikasi kenaikan Open Interest serta Funding Rate netral guna memastikan tidak ada kejenuhan posisi ritel.

Pengaturan screener volatilitas terbaik menggabungkan Bollinger Bands (20 periode, deviasi 2.0) dan Keltner Channels (20 periode, pengali ATR 1.5) untuk mengisolasi kondisi TTM Squeeze. Filter wajib membatasi volume harian di atas $10 juta demi menghindari slippage, menyaring batas BB Width di bawah 0.05 dengan RVOL melebihi 2.2. Filter tren EMA 200 pada time frame 15m digunakan untuk membuang sinyal counter-trend dan jebakan konsolidasi.

Breakout asli mempertahankan penutupan harga di luar pita volatilitas disertai ekspansi Cumulative Volume Delta (CVD) yang konsisten, sedangkan fakeout langsung kembali ke dalam rentang konsolidasi. Penetrasi harga yang valid tidak akan membiarkan harga masuk kembali ke area squeeze dalam dua hingga tiga penutupan candle. Jika lonjakan menembus batas namun menunjukkan penyerapan limit order secara agresif, market maker sedang menyapu likuiditas stop loss sebelum melakukan pembalikan arah.
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.

...

Sampaikan pemikiran Anda

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *