Strategi dagangan terobosan julat pembukaan dinamik frekuensi tinggi

ORB RANGE BREAKOUT HFT EST OHLC SL TP
Tarikh penciptaan: 2025-02-21 14:02:59 Akhirnya diubah suai: 2025-02-21 14:02:59
Salin: 2 Bilangan klik: 519
2
fokus pada
319
Pengikut

Strategi dagangan terobosan julat pembukaan dinamik frekuensi tinggi Strategi dagangan terobosan julat pembukaan dinamik frekuensi tinggi

Gambaran keseluruhan

Strategi ini adalah sistem perdagangan frekuensi tinggi yang berdasarkan penembusan dalam tempoh terbuka, yang memberi tumpuan kepada kawasan harga yang terbentuk antara 9:30-9:45 pagi hari perdagangan. Strategi ini membuat keputusan perdagangan dengan melihat sama ada harga menembusi kawasan 15 minit ini, sambil menggabungkan pengaturan berhenti dan keuntungan yang dinamik untuk mencapai perpaduan risiko dan keuntungan yang optimum. Sistem ini juga mengandungi fungsi penyaringan hari perdagangan, yang boleh berdagang secara selektif berdasarkan ciri-ciri pasaran untuk tempoh masa yang berbeza.

Prinsip Strategi

Logik teras strategi ini adalah untuk membina satu julat harga dalam tempoh 15 minit selepas pembukaan setiap hari dagangan (9:30-9:45 EST) dan merekodkan harga tertinggi dan terendah dalam tempoh itu. Apabila julat itu terbentuk, strategi ini akan memantau harga untuk meletupkan pada hari itu sebelum jam 12:

  • Apabila harga menembusi julat, buka lebih banyak, berhenti sebanyak 0.5 kali saiz julat, dan berhenti sebanyak 3 kali saiz stop loss
  • Apabila harga menembusi rantaian bawah rantaian, kedudukan terbuka kosong, hentikan dan hentikan pada asas yang sama Strategi ini juga merangkumi mekanisme untuk mengelakkan perdagangan berulang, memastikan hanya satu perdagangan dijalankan setiap hari, dan menebus semua pegangan pada waktu penutupan.

Kelebihan Strategik

  1. Kecekapan masa: Strategi memberi tumpuan kepada masa perdagangan yang paling aktif selepas bukaan, untuk menangkap peluang turun naik yang besar pada awal
  2. Kawalan risiko: Menggunakan parameter pengurusan risiko berdasarkan ketinggian turun naik yang sebenarnya dengan seting stop loss yang dinamik
  3. Kelayakan untuk berdagang: Kemampuan untuk memilih hari berdagang mengikut minggu, mengelakkan hari berdagang yang tidak menguntungkan dalam keadaan pasaran tertentu
  4. Pelaksanaan yang jelas: isyarat perdagangan jelas, syarat masuk dan keluar jelas, bebas daripada penilaian subjektif
  5. Tingkat automasi yang tinggi: pelaksanaan secara automatik sepanjang proses, mengurangkan kesan emosi intervensi manusia

Risiko Strategik

  1. Risiko penembusan palsu: Penembusan pertama selepas pembentukan ruang terbuka mungkin adalah penembusan palsu, yang menyebabkan kemusnahan
  2. Penurunan masa: Strategi hanya berdagang pada waktu pagi, mungkin terlepas peluang yang baik pada waktu lain
  3. Ketergantungan pada turun naik: Strategi mungkin sukar untuk mendapatkan ruang keuntungan yang mencukupi pada hari-hari pasaran yang kurang turun naik
  4. Kesan slippoint: sebagai strategi perdagangan frekuensi tinggi, mungkin menghadapi kerugian slippoint yang lebih besar semasa pelaksanaan
  5. Ketergantungan kepada keadaan pasaran: prestasi strategi boleh dipengaruhi secara ketara oleh keadaan pasaran keseluruhan

Arah pengoptimuman strategi

  1. Pengenalan penunjuk jumlah lalu lintas: penyaringan isyarat penembusan palsu dengan melihat jumlah lalu lintas semasa penembusan
  2. Penyesuaian masa dagangan secara dinamik: Optimumkan tetingkap masa dagangan mengikut ciri-ciri tempoh aktif pelbagai jenis
  3. Menambah penapisan trend: penilaian trend yang lebih tepat untuk arah perdagangan, digabungkan dengan tempoh masa yang lebih besar
  4. Optimumkan tetapan hentian: pertimbangkan untuk menggunakan penunjuk ATR dinamik untuk menetapkan jarak hentian
  5. Menambah penapis kadar turun naik: menilai tahap turun naik sebelum buka dan membuat keputusan sama ada untuk menjalankan dagangan pada hari itu

ringkaskan

Ini adalah strategi penembusan jarak terbuka yang dirancang dengan logik dan logik yang ketat untuk menangkap peluang perdagangan dengan memberi tumpuan kepada masa pasaran yang paling aktif. Keunggulan strategi ini terletak pada logik perdagangan yang jelas dan mekanisme kawalan risiko yang baik, tetapi juga perlu berhati-hati terhadap risiko yang berpotensi seperti penembusan palsu dan ketergantungan pada keadaan pasaran. Dengan pengoptimuman dan penyempurnaan yang berterusan, strategi ini dijangka menghasilkan keuntungan yang stabil dalam perdagangan sebenar.

Kod 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()