
Strategi perdagangan intraday presisi berdasarkan blok pesanan institusional dan Fibonacci retracement adalah sistem perdagangan intraday presisi tinggi yang dirancang khusus untuk pasar saham Amerika Serikat, yang dioptimalkan khusus untuk jangka waktu 15 menit. Strategi ini menggabungkan konsep aliran pesanan institusional dengan prinsip retracement Fibonacci, yang bertujuan untuk mengidentifikasi titik balik harga dengan probabilitas tinggi, sambil menerapkan manajemen risiko yang ketat dan aturan berdasarkan periode waktu perdagangan.
Inti dari strategi ini adalah untuk mengidentifikasi area pesanan (Order Blocks) dari dana institusi dan mencari titik masuk terbaik dengan menggunakan tingkat pengunduran diri Fibonacci 61.8% atau 79%. Dengan menunggu titik berhenti untuk ditembus (liquidity sweep), strategi ini dapat mengkonfirmasi potensi harga yang berbalik, sehingga memberikan sinyal perdagangan yang lebih andal. Filter waktu yang ketat memastikan bahwa strategi ini hanya melakukan perdagangan antara 9:30 dan 16:00 WIB, dan pada 16:30 menegakkan semua pemegang posisi, yang secara efektif menghindari risiko semalaman.
Prinsip-prinsip inti dari strategi ini didasarkan pada identifikasi aliran pesanan institusional dan struktur harga, dan mekanisme operasionalnya adalah sebagai berikut:
Identifikasi gerak berdenyut kuatStrategi: Pertama-tama, identifikasi pergerakan pulsa yang kuat dengan mencari terobosan dalam struktur harga. Ketika harga berfluktuasi dalam periode 5 garis K, dan amplitudo fluktuasi melebihi ATR ((14) dengan perkalian ukuran fluktuasi terkecil, sistem mengkonfirmasi titik tinggi atau rendah yang efektif.
Tanda blok pesanan: Setelah mengkonfirmasi titik ayunan, strategi akan menandai area pesanan lembaga. Ketika terbentuk titik ayunan rendah, tingkat harga di titik tersebut ditandai sebagai blok pesanan bullish; Ketika terbentuk titik ayunan tinggi, tingkat harga di titik tersebut ditandai sebagai blok pesanan bullish.
Fibonacci membatalkan pengesahannyaStrategi ini meminta harga harus mundur ke level Fibonacci 61.8% atau 79%, yang diperoleh dengan menghitung titik tinggi dan rendah. Ketika harga mundur ke level kunci ini, strategi mulai mencari sinyal masuk.
Filter waktuSemua aktivitas perdagangan harus dilakukan antara pukul 9:30 dan 16:00 WIB, yang memastikan bahwa strategi beroperasi pada saat pasar paling aktif dan likuiditas optimal. Tidak ada posisi baru dibuka setelah pukul 16:00, dan semua posisi yang dipegang di posisi kosong wajib dibuka pada pukul 16:30
Pengakuan Masuk:
Mekanisme manajemen risikoStrategi menggunakan ATR ((14) untuk mengatur posisi stop loss, memastikan bahwa risiko dikendalikan dalam kisaran yang wajar. Stop loss untuk perdagangan multihead diatur di bawah titik rendah terbaru, dan stop loss untuk perdagangan kosong di atas titik tinggi terbaru.
Tingkat pengembalian risiko tetapStrategi: Secara default menggunakan 2: 1 RRR daripada set stop loss, yang diperoleh dengan menghitung ATR ((14) kali RRR.
Dari analisis kode strategi ini, kita dapat menyimpulkan keuntungan yang signifikan sebagai berikut:
Logika transaksi berdasarkan perilaku institusiDengan mengidentifikasi blok order dari institusi dan pencucian likuiditas, strategi dapat mengikuti arah pergerakan dana besar, meningkatkan probabilitas keberhasilan transaksi.
Manajemen waktu yang tepatPembatasan waktu perdagangan yang ketat memastikan bahwa strategi hanya beroperasi pada saat pasar paling aktif, menghindari risiko slippage dan volatilitas yang mungkin terjadi pada saat likuiditas rendah.
Mekanisme penutupan obligasiPeraturan posisi kosong wajib 16:30 setiap hari efektif mencegah risiko memegang posisi di malam hari, terutama di pasar dengan fluktuasi besar dalam sehari.
Sinyal perdagangan visualStrategi: Menandai sinyal perdagangan dengan jelas melalui antarmuka grafis, multihead menggunakan segitiga hijau, dan head kosong menggunakan segitiga merah, memungkinkan pedagang untuk mengidentifikasi peluang perdagangan potensial dengan cepat.
Manajemen risiko dinamisPengaturan Stop Loss berbasis ATR memungkinkan pengendalian risiko untuk menyesuaikan secara otomatis dengan volatilitas pasar, memberikan eksposur risiko yang konsisten dalam lingkungan yang berbeda.
Kustomisasi TinggiStrategi menawarkan beberapa parameter kunci untuk disesuaikan, termasuk level Fibonacci, ukuran minimum, dan rasio pengembalian risiko, yang memungkinkan pedagang untuk menyesuaikan pengaturan sesuai dengan preferensi risiko dan gaya perdagangan mereka sendiri.
Syarat masuk yang ketatDengan menggabungkan beberapa faktor konfirmasi (blok pesanan, tingkat Fibonacci, waktu transaksi yang efektif), strategi ini secara efektif mengurangi sinyal palsu dan meningkatkan kualitas transaksi.
Meskipun ada banyak keuntungan dari strategi ini, ada beberapa risiko dan tantangan potensial:
Risiko over-optimisasiStrategi bergantung pada beberapa pengaturan parameter yang tepat, seperti tingkat Fibonacci, ATR, dan lain-lain, dan mungkin ada risiko over-optimasi yang menyebabkan kinerja yang buruk pada data sampingan. Solusinya adalah dengan menggunakan siklus pengembalian yang cukup panjang dan menguji kehandalan strategi dalam lingkungan pasar yang berbeda.
Risiko Tren CepatDalam pasar tren yang kuat, harga mungkin tidak akan mundur ke level Fibonacci yang ditentukan, sehingga kehilangan tren yang berpotensi menguntungkan. Untuk mengatasi masalah ini, pertimbangkan untuk menambahkan modul pelacakan tren atau menyesuaikan level Fibonacci secara dinamis.
Risiko gangguan karena keterbatasan waktuAturan tidak membuka posisi baru setelah pukul 16:00 dan 16:00 untuk melakukan posisi kosong yang dipaksakan dapat menyebabkan penarikan paksa dalam kondisi yang menguntungkan, atau penutupan paksa di bawah harga yang tidak menguntungkan. Aturan posisi kosong yang lebih fleksibel dapat dipertimbangkan sesuai dengan kondisi pasar dan kondisi kerugian pemegang posisi.
Keterlambatan identifikasi titik geserStrategi: Menggunakan data historis ((5 garis K) untuk mengidentifikasi titik-titik yang bergoyang, yang dapat menyebabkan sinyal mengalami keterlambatan dan kehilangan waktu masuk yang optimal. Anda dapat mencoba mengoptimalkan algoritma pengidentifikasi titik-titik yang bergoyang atau memperkenalkan indikator awal lainnya untuk meningkatkan waktu sinyal.
Pembatasan kerangka waktu tunggalMenggunakan hanya 15 menit waktu frame mungkin mengabaikan struktur pasar yang penting pada skala waktu yang lebih besar atau lebih kecil. Pertimbangkan untuk menambahkan analisis multi-frame waktu yang dapat memberikan perspektif pasar yang lebih komprehensif.
Keterbatasan RR yang tetapPengaturan laba atas risiko 2:1 yang seragam mungkin tidak cocok untuk semua kondisi pasar, terutama ketika volatilitas berubah secara signifikan. Anda dapat mempertimbangkan untuk menyesuaikan rasio laba atas risiko sesuai dengan volatilitas pasar atau resistensi level dukungan yang dinamis.
Berdasarkan analisis mendalam dari kode kebijakan, berikut adalah beberapa kemungkinan optimasi:
Konfirmasi multi-frame waktu: memperkenalkan jangka waktu yang lebih tinggi ((seperti 1 jam atau 4 jam) untuk mengkonfirmasi tren, memastikan arah perdagangan dalam hari sejalan dengan tren yang lebih besar, meningkatkan tingkat kemenangan. Optimalisasi ini dapat dilakukan dengan menambahkan indikator tren atau analisis struktur harga untuk jangka waktu yang lebih tinggi.
Tingkat Fibonacci DinamisFibonacci retracement level yang diperlukan sesuai dengan volatilitas pasar atau dinamika intensitas tren saat ini. Pada tren yang kuat mungkin diperlukan retracement yang lebih ringan (misalnya 38.2%), sedangkan pada pasar yang bergoyang mungkin diperlukan retracement yang lebih dalam (misalnya 61.8% atau 79%).
Kondisi pasar beradaptasi: Memperkenalkan klasifikasi kondisi pasar ((trend, getaran, volatilitas tinggi, dll) dan menyesuaikan parameter strategi sesuai dengan kondisi pasar yang berbeda. Misalnya, di pasar yang berfluktuasi tinggi mungkin memerlukan pengaturan stop loss yang lebih luas, sedangkan di pasar yang berfluktuasi rendah dapat menggunakan stop loss yang lebih sempit untuk meningkatkan peluang menang.
Mekanisme penguncian laba parsialHal ini dilakukan dengan menginstruksikan beberapa posisi pada level tertentu, seperti posisi 50% pada level 1R, dan sisanya dengan pengaturan tracking stop loss, untuk memaksimalkan peluang untuk menangkap potensi tren besar.
Filter indikator fluktuasiTambahkan indikator fluktuasi seperti perubahan ATR atau indikator bandwidth Bollinger untuk memfilter sinyal perdagangan di lingkungan fluktuasi rendah dan menghindari overtrading di pasar bergolak.
Konfirmasi volume transaksiAnalisis volume diperkenalkan sebagai faktor konfirmasi tambahan untuk memastikan bahwa perubahan harga didukung oleh volume yang cukup untuk meningkatkan keandalan sinyal.
Pembelajaran Mesin: Menggunakan algoritma pembelajaran mesin untuk menganalisis validitas blok order dan Fibonacci retracement dalam data historis, dan dengan demikian mengoptimalkan pengaturan parameter atau meningkatkan pemfilteran sinyal.
Optimalisasi Stop LossStrategi saat ini adalah menggunakan stop loss yang ditetapkan dengan ATR yang tetap. Anda dapat mempertimbangkan untuk menggunakan struktur harga terbaru (seperti titik ayunan terbaru) untuk mengatur posisi stop loss yang lebih tepat, baik untuk melindungi dana Anda dan menghindari terjatuh dari pasar terlalu dini.
Strategi perdagangan intraday yang tepat berdasarkan blok pesanan institusional dan penarikan Fibonacci mewakili metode perdagangan yang sistematis, yang memberikan aturan masuk dan keluar yang jelas bagi pedagang intraday dengan menggabungkan analisis perilaku perdagangan institusional dengan alat analisis teknis klasik.
Keuntungan terbesar dari strategi ini adalah pengidentifikasian dan pemanfaatan aliran pesanan institusional, yang dikombinasikan dengan penyaringan waktu yang ketat dan aturan manajemen risiko, yang membuatnya sangat cocok untuk perdagangan intraday di pasar saham Amerika Serikat. Konsep perdagangan inti berfokus pada mencari harga yang kembali ke wilayah pesanan institusional yang penting dan titik balik probabilitas tinggi pada tingkat Fibonacci.
Risiko strategi terutama berasal dari tantangan optimasi parameter dan adaptasi dengan lingkungan pasar, tetapi risiko ini dapat dikelola dan diatasi secara efektif dengan arah optimasi yang diusulkan, seperti konfirmasi multi-frame timeframe, penyesuaian parameter dinamis dan penyesuaian diri terhadap keadaan pasar.
Secara keseluruhan, strategi ini memberikan kerangka perdagangan intraday yang solid, cocok untuk pedagang yang memiliki pemahaman tentang perilaku perdagangan institusional, dengan pengaturan dan pengoptimalan parameter yang masuk akal, yang dapat mempertahankan kinerja yang stabil di berbagai lingkungan pasar. Ini adalah pilihan strategi yang layak dipertimbangkan untuk pedagang yang ingin mencari peluang perdagangan terstruktur dalam kerangka waktu intraday.
/*backtest
start: 2025-01-01 00:00:00
end: 2025-04-29 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Rawstocks 15-Minute Model", overlay=true, margin_long=100, margin_short=100, pyramiding=0)
// ===== TIME CONTROL ===== (UTC-4 = Eastern Time)
startHour = input(9, "Start Hour (ET)")
startMin = input(30, "Start Minute")
entryCutoffHour = input(16, "Last Entry Hour (ET)") // 4:00 PM
entryCutoffMin = input(0, "Last Entry Minute")
closeHour = input(16, "Force Close Hour (ET)") // 4:30 PM
closeMin = input(30, "Force Close Minute")
// Define session in UTC-4 (ET)
sessionStart = timestamp("UTC-4", year, month, dayofmonth, startHour, startMin)
entryCutoffTime = timestamp("UTC-4", year, month, dayofmonth, entryCutoffHour, entryCutoffMin)
forceCloseTime = timestamp("UTC-4", year, month, dayofmonth, closeHour, closeMin)
// ===== CORE STRATEGY =====
// Inputs
fib1 = input.float(61.8, "Fib Level (%)")
minSwingSize = input.float(1.0, "Min Swing Size (%)") / 100
rrRatio = input.float(2.0, "Risk/Reward")
// Swing Detection
swingHigh = ta.highest(high, 5) == high[2] and (high[2] - low[2]) >= ta.atr(14) * minSwingSize
swingLow = ta.lowest(low, 5) == low[2] and (high[2] - low[2]) >= ta.atr(14) * minSwingSize
// Order Blocks
var float bullOB = na
var float bearOB = na
if swingLow
bullOB := low[2]
if swingHigh
bearOB := high[2]
// Fib Levels
var float swingTop = na
var float swingBot = na
if swingHigh
swingTop := high[2]
if swingLow
swingBot := low[2]
fib618 = swingBot + (swingTop - swingBot) * (fib1/100)
fib79 = swingBot + (swingTop - swingBot) * 0.79
// Entry Conditions
longCond = not na(bullOB) and (low <= bullOB) and (close >= fib618 or close >= fib79)
shortCond = not na(bearOB) and (high >= bearOB) and (close <= fib618 or close <= fib79)
// Time Filter - No entries after 4:00 PM
validEntryTime = (time >= sessionStart) and (time <= entryCutoffTime)
// ===== EXECUTION =====
// Entries (only before 4:00 PM)
if (longCond and validEntryTime)
strategy.entry("Long", strategy.long)
strategy.exit("Long Exit", "Long", stop=low - ta.atr(14), limit=close + (ta.atr(14) * rrRatio))
if (shortCond and validEntryTime)
strategy.entry("Short", strategy.short)
strategy.exit("Short Exit", "Short", stop=high + ta.atr(14), limit=close - (ta.atr(14) * rrRatio))
// Force Close at 4:30 PM ET
var bool forceClosedToday = false
if (time >= forceCloseTime and time < forceCloseTime + 60000) and (not forceClosedToday)
strategy.close_all("EOD Close @ 4:30PM")
forceClosedToday := true
// Reset daily flag
if dayofmonth != dayofmonth[1]
forceClosedToday := false
// ===== VISUALS =====
// Signal Triangles (gray if after entry cutoff)
plotshape(series=longCond, title="Long Signal", style=shape.triangleup, location=location.belowbar,
color=validEntryTime ? color.new(color.green, 0) : color.new(color.gray, 0), size=size.small)
plotshape(series=shortCond, title="Short Signal", style=shape.triangledown, location=location.abovebar,
color=validEntryTime ? color.new(color.red, 0) : color.new(color.gray, 0), size=size.small)
// Execution Markers
var float longEntryPrice = na
var float shortEntryPrice = na
if (strategy.position_size > 0 and strategy.position_size[1] <= 0)
longEntryPrice := close
if (strategy.position_size < 0 and strategy.position_size[1] >= 0)
shortEntryPrice := close
plot(series=longEntryPrice, title="Long Entry", style=plot.style_circles, linewidth=3, color=color.new(color.green, 0))
plot(series=shortEntryPrice, title="Short Entry", style=plot.style_circles, linewidth=3, color=color.new(color.red, 0))
// Force Close Marker
if (time >= forceCloseTime and time < forceCloseTime + 60000)
label.new(
bar_index,
high,
"4:30 PM Close",
style=label.style_label_down,
color=color.red,
textcolor=color.white
)