Strategi perdagangan terobosan rentang pembukaan dinamis frekuensi tinggi

ORB RANGE BREAKOUT HFT EST OHLC SL TP
Tanggal Pembuatan: 2025-02-21 14:02:59 Akhirnya memodifikasi: 2025-02-21 14:02:59
menyalin: 2 Jumlah klik: 519
2
fokus pada
319
Pengikut

Strategi perdagangan terobosan rentang pembukaan dinamis frekuensi tinggi Strategi perdagangan terobosan rentang pembukaan dinamis frekuensi tinggi

Ringkasan

Strategi ini adalah sistem perdagangan frekuensi tinggi yang didasarkan pada penembusan pada jam buka, yang berfokus pada kisaran harga yang terbentuk antara jam 9:30-9:45 pagi hari perdagangan. Strategi ini membuat keputusan perdagangan dengan melihat apakah harga akan menembus kisaran 15 menit ini, sambil menggabungkan pengaturan stop loss dan profit yang dinamis untuk mencapai perbandingan terbaik antara risiko dan keuntungan. Sistem ini juga menyertakan fitur penyaringan hari perdagangan, yang dapat secara selektif diperdagangkan berdasarkan karakteristik pasar pada periode waktu yang berbeda.

Prinsip Strategi

Logika inti dari strategi ini adalah untuk membangun sebuah kisaran harga dalam waktu 15 menit setelah buka setiap hari perdagangan (9:30-9:45 EST) untuk mencatat harga tertinggi dan terendah selama periode waktu tersebut. Setelah kisaran terbentuk, strategi ini akan memantau harga untuk menerobos sebelum jam 12 siang hari itu:

  • Ketika harga menembus kisaran di atas rel, buka lebih banyak, stop loss ditetapkan 0,5 kali ukuran kisaran, stop loss ditetapkan 3 kali ukuran stop loss
  • Ketika harga menembus batas bawah, posisi terbuka terbuka, stop loss dan stop loss diatur dengan prinsip yang sama Strategi ini juga mencakup mekanisme untuk mencegah transaksi berulang, memastikan bahwa hanya satu transaksi dilakukan setiap hari, dan menghapus semua kepemilikan pada saat penutupan.

Keunggulan Strategis

  1. Efisiensi waktu: Strategi berfokus pada periode perdagangan yang paling aktif setelah buka, untuk menangkap peluang volatilitas besar di awal
  2. Pengendalian risiko: Menggunakan pengaturan stop loss yang dinamis untuk menentukan parameter manajemen risiko berdasarkan amplitudo fluktuasi aktual
  3. Fleksibilitas perdagangan: menyediakan fungsi untuk memilih hari perdagangan per minggu, menghindari hari perdagangan yang tidak menguntungkan dalam situasi pasar tertentu
  4. Eksekusi yang jelas: sinyal perdagangan yang jelas, kondisi masuk dan keluar yang jelas, bebas dari penilaian subjektif
  5. Tingkat otomatisasi yang tinggi: proses otomatisasi seluruhnya, mengurangi dampak emosional dari intervensi manusia

Risiko Strategis

  1. Risiko False Break: Penembusan pertama setelah pembentukan ruang terbuka mungkin merupakan penembusan palsu, yang menyebabkan stop loss
  2. Depresi waktu: Strategi hanya berdagang di waktu pagi, mungkin melewatkan peluang yang baik di waktu lain
  3. Ketergantungan pada fluktuasi: Strategi mungkin sulit untuk mendapatkan ruang keuntungan yang cukup pada hari-hari ketika pasar tidak berfluktuasi
  4. Efek slippage: sebagai strategi perdagangan frekuensi tinggi, kemungkinan kehilangan slippage yang lebih besar dalam proses eksekusi
  5. Ketergantungan pada kondisi pasar: kinerja strategi dapat dipengaruhi secara signifikan oleh kondisi pasar secara keseluruhan

Arah optimasi strategi

  1. Pengenalan indikator volume transaksi: sinyal palsu dapat disaring dengan melihat volume transaksi saat terobosan
  2. Dinamis menyesuaikan waktu perdagangan: Optimalkan jendela waktu perdagangan sesuai dengan karakteristik periode aktif dari berbagai varietas
  3. Menambah filter tren: penilaian tren yang lebih akurat dalam kombinasi dengan periode waktu yang lebih besar
  4. Optimalkan pengaturan stop loss: pertimbangkan untuk menggunakan indikator ATR yang dinamis untuk mengatur jarak stop loss
  5. Tambahkan filter volatilitas: menilai tingkat volatilitas sebelum buka dan memutuskan apakah akan melakukan perdagangan pada hari itu

Meringkaskan

Ini adalah strategi penembusan yang dirancang secara rasional dan logis untuk menangkap peluang perdagangan dengan fokus pada saat pasar paling aktif. Keunggulan strategi ini adalah logika perdagangan yang jelas dan mekanisme pengendalian risiko yang baik, tetapi juga perlu memperhatikan risiko potensial seperti penembusan palsu dan ketergantungan pada lingkungan pasar. Dengan terus-menerus mengoptimalkan dan menyempurnakan, strategi ini diharapkan untuk menghasilkan keuntungan yang stabil dalam perdagangan aktual.

Kode Sumber Strategi
/*backtest
start: 2025-01-21 00:00:00
end: 2025-01-24 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"DOGE_USDT"}]
args: [["MaxCacheLen",580,358374]]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © UKFLIPS69

//@version=6
strategy("ORB", overlay=true, fill_orders_on_standard_ohlc = true)

trade_on_monday = input(false, "Trade on Monday") 
trade_on_tuesday = input(true, "Trade on Tuesday") 
trade_on_wednesday = input(true, "Trade on Wednesday")
trade_on_thursday = input(false, "Trade on Thursday")
trade_on_friday = input(true, "Trade on Friday")
// Get the current day of the week (1=Monday, ..., 6=Saturday, 0=Sunday)
current_day = dayofweek(time) 
current_price = request.security(syminfo.tickerid, "1", close)
// Define trading condition based on the day of the week
is_trading_day = (trade_on_monday and current_day == dayofweek.monday) or
                 (trade_on_tuesday and current_day == dayofweek.tuesday) or
                 (trade_on_wednesday and current_day == dayofweek.wednesday) or
                 (trade_on_thursday and current_day == dayofweek.thursday) or
                 (trade_on_friday and current_day == dayofweek.friday)
// ─── Persistent variables ─────────────────────────
var line  orHighLine       = na   // reference to the drawn line for the OR high
var line  orLowLine        = na   // reference to the drawn line for the OR low
var float orHigh           = na   // stores the open-range high
var float orLow            = na   // stores the open-range low
var int   barIndex930      = na   // remember the bar_index at 9:30
var bool  rangeEstablished = false
var bool  tradeTakenToday  = false  // track if we've opened a trade for the day

// ─── Detect times ────────────────────────────────
is930  = (hour(time, "America/New_York") == 9 and minute(time, "America/New_York") == 30)
is945  = (hour(time, "America/New_York") == 9 and minute(time, "America/New_York") == 45)

// Between 9:30 and 9:44 (inclusive of 9:30 bar, exclusive of 9:45)?
inSession = (hour(time, "America/New_York") == 9 and minute(time, "America/New_York") >= 30 and minute(time, "America/New_York") < 45)

// ─── Reset each day at 9:30 ─────────────────────
if is930
    // Reset orHigh / orLow
    orHigh := na
    orLow  := na
    rangeEstablished := false
    tradeTakenToday  := false
    // Record the bar_index for 9:30
    barIndex930 := bar_index
// ─── ONLY FORM OR / TRADE IF TODAY IS ALLOWED ─────────────────────
if is_trading_day
// ─── Accumulate the OR high/low from 9:30 to 9:44 ─
    if inSession
        orHigh := na(orHigh) ? high : math.max(orHigh, high)
        orLow  := na(orLow)  ? low  : math.min(orLow, low)

// ─── Exactly at 9:45, draw the lines & lock range ─
    if is945 and not na(orHigh) and not na(orLow)

    // Mark that the OR is established
        rangeEstablished := true

// ─── TRADING LOGIC AFTER 9:45, but BEFORE NOON, and if NO trade taken ─
    if rangeEstablished and not na(orHigh) and not na(orLow) 
    // Only trade if it's still BEFORE 12:00 (noon) EST and we haven't taken a trade today
        if hour(time, "America/New_York") < 12 and (not tradeTakenToday)
        // 1) Compute distances for stops & targets
            float stopSize   = 0.5 * (orHigh - orLow)      // half the OR size
            float targetSize = 3 * stopSize      // 3x the stop => 1.5x the entire OR
    
        // 2) Check if price breaks above OR => go long
            if close > orHigh 
            // Only enter a new long if not already in a long position (optional)
                if strategy.position_size <= 0
                    strategy.entry("ORB Long", strategy.long)
                    strategy.exit("Long Exit", from_entry = "ORB Long", stop = orHigh - stopSize, limit  = strategy.position_avg_price + targetSize)
                // Flag that we've taken a trade today
                    tradeTakenToday := true
    
        // 3) Check if price breaks below OR => go short
            if close < orLow 
            // Only enter a new short if not already in a short position (optional)
                if strategy.position_size >= 0
                    strategy.entry("ORB Short", strategy.short)
                    strategy.exit("Short Exit", from_entry = "ORB Short", stop = orLow + stopSize, limit  = strategy.position_avg_price - targetSize)
                // Flag that we've taken a trade today
                    tradeTakenToday := true
if hour(time, "America/New_York") == 16 and minute(time, "America/New_York") == 0
    strategy.close_all()