Kombinasi dari terobosan rentang pembukaan dan strategi kesenjangan nilai wajar

ORB FVG SMC RRR ATR VWAP RSI TZ
Tanggal Pembuatan: 2025-06-26 09:24:20 Akhirnya memodifikasi: 2025-06-26 09:24:20
menyalin: 1 Jumlah klik: 359
2
fokus pada
319
Pengikut

Kombinasi dari terobosan rentang pembukaan dan strategi kesenjangan nilai wajar Kombinasi dari terobosan rentang pembukaan dan strategi kesenjangan nilai wajar

Ringkasan

Sebuah strategi yang menggabungkan penembusan area terbuka dengan gap nilai wajar adalah strategi perdagangan kuantitatif yang menggabungkan penembusan area terbuka (ORB) dan gap nilai wajar (FVG) dalam konsep modal cerdas (SMC). Strategi ini pertama-tama mendefinisikan area harga di awal hari perdagangan (biasanya 5 menit setelah pembukaan), dan kemudian mencari situasi di mana harga menembus batas area ini dan bertepatan dengan gap nilai wajar sebagai sinyal perdagangan. Strategi ini dirancang untuk perdagangan dalam waktu tertentu, terutama saat perdagangan reguler di pasar AS, dan mengendalikan risiko setiap transaksi melalui mekanisme manajemen risiko.

Prinsip Strategi

Prinsip-prinsip inti dari strategi ini didasarkan pada dua konsep analisis teknis utama:

  1. Penembusan ruang terbuka- Strategi pertama-tama menentukan harga tertinggi dan terendah dalam jangka waktu tertentu setelah pembukaan hari perdagangan (default 5 menit) untuk membentuk kisaran harga. Kisaran ini dianggap sebagai penilaian awal dari para peserta pasar tentang pergerakan harga hari itu, dan penembusan kisaran ini dapat menunjukkan pembentukan tren jangka pendek.

  2. Kesenjangan Nilai Adil (FVG)FVG bullish terbentuk ketika titik tinggi saat ini berada di bawah titik rendah dari titik tinggi sebelumnya, dan FVG bearish terbentuk ketika titik rendah saat ini berada di atas titik tinggi dari titik tinggi sebelumnya. Celah-celah ini dianggap sebagai area di mana harga mungkin akan melunasi di masa depan, mewakili ketidakseimbangan dalam struktur pasar.

Sinyal perdagangan untuk strategi dihasilkan dari kondisi berikut:

  • Ketika melihat pipa FVG bersinggungan dengan batas atas ORB (open price of the previous pipe is below the ORB high point, close price is above the ORB high point), memicu sinyal multi
  • Ketika FVG bearish bertepatan dengan batas bawah ORB ((harga bukaan yang lebih tinggi dari ORB low, harga tutup yang lebih rendah dari ORB low), memicu sinyal shorting

Strategi ini menggunakan metode manajemen posisi berbasis risiko saat melakukan perdagangan, dengan menghitung ukuran posisi spesifik untuk setiap perdagangan berdasarkan jarak stop loss untuk memastikan bahwa risiko setiap perdagangan konsisten. Stop loss ditetapkan pada titik terendah sebelumnya untuk melakukan banyak perdagangan atau titik tertinggi sebelumnya untuk melakukan perdagangan kosong, dan target keuntungan didasarkan pada tingkat pengembalian risiko yang telah ditetapkan.

Keunggulan Strategis

  1. Menggabungkan berbagai metode analisis teknis- Dengan mengintegrasikan metode analisis teknis ORB dan FVG, strategi dapat menyaring sinyal palsu yang mungkin dihasilkan oleh satu indikator, meningkatkan kualitas sinyal perdagangan.

  2. Kerangka waktu transaksi yang jelas- Strategi ini secara jelas mendefinisikan jangka waktu perdagangan (signal period dan trading period) yang membantu pedagang untuk fokus pada saat pasar paling aktif dan kualitas sinyal tertinggi, menghindari perdagangan yang tidak valid pada saat aktivitas rendah.

  3. Manajemen Posisi Berbasis Risiko- Strategi menggunakan metode perhitungan posisi berbasis risiko untuk memastikan bahwa risiko setiap transaksi adalah proporsi yang konsisten dari total modal akun (default 1%) yang mendukung manajemen dana dan kontrol risiko jangka panjang.

  4. Konfigurasi parameter yang fleksibel- Strategi menyediakan beberapa parameter yang dapat disesuaikan, termasuk pengaturan waktu perdagangan, durasi ORB, durasi periode sinyal, rasio risiko dan rasio pengembalian risiko, yang memungkinkan pedagang untuk mengoptimalkan sesuai dengan preferensi risiko pasar dan pribadi yang berbeda.

  5. Bantuan visual- Strategi menyediakan elemen visualisasi yang kaya, termasuk garis horizontal ORB, tanda sinyal perdagangan, latar belakang yang terang pada waktu perdagangan yang berbeda, dan tabel data statistik real-time, yang memudahkan pedagang untuk memantau dan menganalisis pelaksanaan strategi.

  6. Mendukung manajemen multi-posisi- Desain strategi mendukung memegang beberapa posisi perdagangan pada saat yang sama (kontrol parameter melalui pyramiding), memungkinkan untuk menangkap beberapa peluang perdagangan pada hari perdagangan yang sama, meningkatkan efisiensi pemanfaatan dana.

Risiko Strategis

  1. Ketergantungan pada pasar tertentu- Strategi ini dirancang terutama untuk waktu perdagangan biasa di pasar saham AS, yang mungkin tidak bekerja dengan baik di pasar lain atau saat perdagangan. Karakteristik pembukaan dan pola fluktuasi yang berbeda di pasar yang berbeda sangat bervariasi, yang memerlukan parameter penyesuaian yang sesuai.

  2. Parameter Sensitivitas- Kinerja strategi sensitif terhadap beberapa parameter penting, seperti waktu ORB, durasi sinyal, dan rasio pengembalian risiko. Pengaturan parameter yang tidak tepat dapat menyebabkan overtrading atau kehilangan peluang perdagangan penting.

  3. Kondisi pasar tergantung- Dalam lingkungan pasar yang sangat volatile atau rendah volatilitas, kinerja strategi mungkin tidak konsisten. Terutama di pasar yang rendah volatilitas, interval ORB mungkin terlalu sempit, yang menyebabkan sering memicu sinyal palsu.

  4. Stop loss posisi risiko- Strategi menggunakan tinggi/rendah dari batang sebelumnya sebagai posisi stop loss, yang dalam pasar cepat dapat menyebabkan posisi stop loss terlalu lebar, sehingga mengurangi rasio risiko-pengembalian atau menyebabkan ukuran posisi yang terlalu kecil.

  5. Bergantung pada pola harga historis- Asumsi strategi bahwa terobosan di area FVG dan ORB memiliki arti prediktif, tetapi peningkatan efisiensi pasar atau perubahan lingkungan perdagangan dapat melemahkan efektivitas model ini.

  6. Risiko pelaksanaan teknis- Dalam transaksi nyata, mungkin menghadapi masalah seperti slippage, perintah eksekusi yang tertunda, dan lain-lain yang mempengaruhi konsistensi dari hasil transaksi nyata dengan hasil pengujian ulang.

Arah optimasi strategi

  1. Durasi ORB Dinamis- Dapat dipertimbangkan untuk menyesuaikan durasi ORB secara otomatis sesuai dengan volatilitas pasar, misalnya menggunakan waktu ORB yang lebih lama dalam lingkungan pasar yang bergejolak tinggi untuk menghindari terobosan palsu, dan waktu ORB yang lebih pendek dalam lingkungan yang bergejolak rendah untuk menangkap lebih banyak peluang perdagangan.

  2. Tambahkan kondisi filter- Memperkenalkan kondisi penyaringan tambahan untuk meningkatkan kualitas sinyal, seperti menggabungkan arah tren pasar secara keseluruhan ((Hanya melakukan lebih banyak dalam tren naik, melakukan lebih sedikit dalam tren turun), atau menambahkan konfirmasi volume transaksi ((Hanya bertransaksi jika terobosan disertai dengan peningkatan volume transaksi))

  3. Optimalkan posisi stop loss- Pertimbangkan untuk menggunakan pengaturan stop loss dinamis berdasarkan ATR atau volatilitas, menggantikan metode stop loss tetap yang saat ini didasarkan pada titik tinggi dan rendah yang sebelumnya, yang mungkin memberikan kontrol risiko yang lebih masuk akal.

  4. Menambahkan bagian dari mekanisme keuntungan- Menerapkan strategi keuntungan bertahap, seperti melunasi sebagian dari posisi ketika rasio risiko-pengembalian 1: 1 tercapai, dan sisanya mengatur tracking stop loss atau target keuntungan yang lebih jauh, untuk menyeimbangkan kebutuhan untuk mengunci keuntungan dan melacak tren.

  5. Filter waktu- Menambahkan filter waktu untuk menghindari periode perdagangan berkualitas rendah yang diketahui, seperti periode fluktuasi rendah pada waktu makan siang atau periode fluktuasi tinggi sebelum dan sesudah publikasi data ekonomi penting.

  6. Menambahkan parameter adaptasi- Memperkenalkan parameter adaptasi yang memungkinkan strategi untuk menyesuaikan parameter secara otomatis berdasarkan kinerja pasar terbaru, seperti secara dinamis menyesuaikan RRR atau persentase risiko berdasarkan kemenangan terbaru.

Meringkaskan

Strategi penembusan area terbuka dengan kombinasi gap nilai wajar adalah sistem perdagangan intraday yang dirancang dengan baik untuk mencari peluang perdagangan dengan probabilitas tinggi dengan menggabungkan metode analisis teknis ORB dan FVG. Strategi ini beroperasi dalam waktu perdagangan yang didefinisikan dengan jelas, menggunakan metode manajemen posisi berbasis risiko, dan menyediakan banyak alat visualisasi dan statistik untuk membantu keputusan perdagangan.

Keuntungan utama dari strategi adalah logika perdagangan yang jelas, pengaturan parameter yang fleksibel, dan mekanisme manajemen risiko yang komprehensif. Namun, strategi juga menghadapi risiko seperti ketergantungan pasar, sensitivitas parameter, dan ketergantungan pada keadaan pasar. Untuk meningkatkan kehandalan strategi, disarankan untuk mempertimbangkan penyesuaian parameter dinamis, menambahkan kondisi filter, mengoptimalkan metode stop loss, dan menerapkan mekanisme keuntungan bertahap.

Perlu dicatat bahwa strategi ini tidak berlaku untuk semua lingkungan pasar dan semua varietas perdagangan, dan trader harus melakukan pengujian dan pengujian ke depan yang memadai sebelum menerapkannya secara praktis untuk memastikan bahwa strategi tersebut sesuai dengan preferensi risiko dan tujuan perdagangan mereka. Dengan terus mengoptimalkan dan beradaptasi dengan perubahan pasar, strategi ini berpotensi menjadi alat yang efektif dalam toolkit trader intraday.

Kode Sumber Strategi
/*backtest
start: 2025-06-18 00:00:00
end: 2025-06-25 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

// Based on https://www.youtube.com/watch?v=mzFXoK2pbNE

//@version=5
strategy("[Myth Busting] [ORB] Casper SMC - 16 Jun", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=10000, pyramiding = 10)

// Input settings
show_orb = input.bool(true, "Show 5m Opening Range")
show_signals = input.bool(true, "Show FVG Intersection Signals")
show_stats = input.bool(true, "Show Statistics Table")
risk_per_trade = input.float(1.0, "Risk Per Trade (%)", minval=0.1, maxval=10.0, step=0.1)
use_stop_loss = input.bool(true, "Use Stop Loss")
use_take_profit = input.bool(true, "Use Take Profit")
risk_reward_ratio = input.float(2.0, "Risk:Reward Ratio", minval=1.0, step=0.1)

// Session time inputs
session_start_hour = input.int(9, "Session Start Hour", minval=0, maxval=23, group="Session Settings")
session_start_minute = input.int(30, "Session Start Minute", minval=0, maxval=59, group="Session Settings")
session_end_hour = input.int(16, "Session End Hour", minval=0, maxval=23, group="Session Settings")
session_end_minute = input.int(0, "Session End Minute", minval=0, maxval=59, group="Session Settings")
session_timezone = input.string("America/New_York", "Session Timezone", group="Session Settings")
orb_duration_minutes = input.int(5, "ORB Duration (Minutes)", minval=1, maxval=60, group="Session Settings")
signal_end_offset = input.int(90, "Signal Period Duration (Minutes)", minval=30, maxval=300, group="Session Settings")

// Style settings
orb_high_color = input.color(color.new(color.green, 50), "ORB High Color")
orb_low_color = input.color(color.new(color.red, 50), "ORB Low Color")
bullish_signal_color = input.color(color.green, "Bullish Signal Color")
bearish_signal_color = input.color(color.red, "Bearish Signal Color")

// Variables to store ORB levels
var float orb_high = na
var float orb_low = na
var int orb_start_time = na
var int orb_end_time = na
var bool orb_set = false

// Position tracking
var int position_counter = 0
var int active_positions = 0

// Function to get current time in specified timezone
get_session_time() =>
    current_hour = hour(time, session_timezone)
    current_minute = minute(time, session_timezone)
    current_hour * 60 + current_minute

// Calculate session times in minutes
session_start_minutes = session_start_hour * 60 + session_start_minute
session_end_minutes = session_end_hour * 60 + session_end_minute
orb_end_minutes = session_start_minutes + orb_duration_minutes
signal_end_minutes = session_start_minutes + signal_end_offset

// Check if we're in the ORB period
is_orb_period() =>
    current_time = get_session_time()
    current_time >= session_start_minutes and current_time < orb_end_minutes

// Check if we're in the signal period
is_signal_period() =>
    current_time = get_session_time()
    current_time >= orb_end_minutes and current_time < signal_end_minutes

// Check if we're in the overall trading session
is_trading_session() =>
    current_time = get_session_time()
    current_time >= session_start_minutes and current_time < session_end_minutes

// Reset ORB at the start of each trading session
new_session = is_trading_session() and not is_trading_session()[1]

if new_session or ta.change(dayofweek)
    orb_high := na
    orb_low := na
    orb_start_time := na
    orb_end_time := na
    orb_set := false
    position_counter := 0

// Capture ORB levels during the ORB period
if is_orb_period()
    if na(orb_high) or na(orb_low)
        orb_high := high
        orb_low := low
        orb_start_time := time
    else
        orb_high := math.max(orb_high, high)
        orb_low := math.min(orb_low, low)
    orb_end_time := time

// Mark ORB as set after the period ends
if not is_orb_period() and not na(orb_high) and not orb_set
    orb_set := true

// Fair Value Gap detection
bullish_fvg = high[2] < low and not na(orb_high)
bearish_fvg = low[2] > high and not na(orb_low)

// Check for FVG intersection with ORB boundaries during signal period
bullish_intersection = false
bearish_intersection = false

// Count active positions
active_positions := strategy.opentrades

if is_signal_period() and orb_set
    // Bullish FVG intersecting upper boundary
    if bullish_fvg
        if open[1] <= orb_high and close[1] >= orb_high
            bullish_intersection := true
    
    // Bearish FVG intersecting lower boundary  
    if bearish_fvg
        if open[1] >= orb_low and close[1] <= orb_low
            bearish_intersection := true

// Calculate position size based on risk per trade
calculate_position_size(entry, stop, is_long) =>
    risk_amount = strategy.equity * (risk_per_trade / 100)
    price_diff = is_long ? entry - stop : stop - entry
    position_size = risk_amount / price_diff
    position_size

// Strategy execution - Modified for multiple positions
if bullish_intersection
    position_counter += 1
    entry_price = close
    stop_loss_price = low[1]
    risk = entry_price - stop_loss_price
    take_profit_price = entry_price + (risk * risk_reward_ratio)
    
    // Calculate position size
    qty = calculate_position_size(entry_price, stop_loss_price, true)
    
    // Create unique entry ID
    entry_id = "Long_" + str.tostring(position_counter)
    exit_id = "LongExit_" + str.tostring(position_counter)
    
    // Enter long position
    strategy.entry(entry_id, strategy.long, qty=qty)
    
    // Set stop loss and take profit
    if use_stop_loss
        strategy.exit(exit_id, entry_id, stop=stop_loss_price, limit=use_take_profit ? take_profit_price : na)

if bearish_intersection
    position_counter += 1
    entry_price = close
    stop_loss_price = high[1]
    risk = stop_loss_price - entry_price
    take_profit_price = entry_price - (risk * risk_reward_ratio)
    
    // Calculate position size
    qty = calculate_position_size(entry_price, stop_loss_price, false)
    
    // Create unique entry ID
    entry_id = "Short_" + str.tostring(position_counter)
    exit_id = "ShortExit_" + str.tostring(position_counter)
    
    // Enter short position
    strategy.entry(entry_id, strategy.short, qty=qty)
    
    // Set stop loss and take profit
    if use_stop_loss
        strategy.exit(exit_id, entry_id, stop=stop_loss_price, limit=use_take_profit ? take_profit_price : na)

// Close all positions at end of trading session
if not is_trading_session() and strategy.position_size != 0
    strategy.close_all("End of Trading Session")

// Plot ORB levels
plot(show_orb and orb_set ? orb_high : na, "ORB High", color=orb_high_color, linewidth=2, style=plot.style_line)
plot(show_orb and orb_set ? orb_low : na, "ORB Low", color=orb_low_color, linewidth=2, style=plot.style_line)

// Plot intersection signals
plotshape(series=show_signals and bullish_intersection, title="Bullish FVG Intersection", style=shape.triangleup, location=location.belowbar, color=bullish_signal_color, size=size.normal)
plotshape(series=show_signals and bearish_intersection, title="Bearish FVG Intersection", style=shape.triangledown, location=location.abovebar, color=bearish_signal_color, size=size.normal)

// Background highlights for different session periods
bgcolor(is_orb_period() ? color.new(color.yellow, 90) : na, title="ORB Period")
bgcolor(is_signal_period() and orb_set ? color.new(color.blue, 95) : na, title="Signal Period")
bgcolor(is_trading_session() and not is_signal_period() and not is_orb_period() ? color.new(color.gray, 98) : na, title="Trading Session")

// Plot session boundaries
plot(is_trading_session() ? high : na, "Session High", color=color.new(color.orange, 80), linewidth=1)
plot(is_trading_session() ? low : na, "Session Low", color=color.new(color.orange, 80), linewidth=1)