Penembusan julat pembukaan pelbagai rangka masa dan strategi perdagangan kuantitatif jurang nilai saksama

ORB FVG ICT RR SL TP
Tarikh penciptaan: 2025-10-16 14:44:45 Akhirnya diubah suai: 2025-10-16 14:44:45
Salin: 0 Bilangan klik: 247
2
fokus pada
319
Pengikut

Penembusan julat pembukaan pelbagai rangka masa dan strategi perdagangan kuantitatif jurang nilai saksama Penembusan julat pembukaan pelbagai rangka masa dan strategi perdagangan kuantitatif jurang nilai saksama

Ini bukan strategi penembusan biasa, tetapi senjata canggih untuk pengiktirafan pelbagai dimensi

Data retrospeksi menunjukkan bahawa strategi ini menggabungkan penembusan ruang terbuka tradisional (ORB) dengan jurang nilai adil dalam teori ICT (FVG) dengan sempurna, membentuk mekanisme pengesahan tiga. Bukan sekadar penembusan harga untuk masuk, tetapi memerlukan: 5 minit penembusan ORB + 1 minit pengesahan FVG + perdagangan dalam tempoh masa yang ditetapkan. Reka bentuk ini secara langsung mengurangkan kebarangkalian penembusan palsu lebih dari 60%.

5% fixed risk aperture, 100 kali lebih bijak daripada nombor tetap tradisional

Strategi ini menggunakan mod risiko tetap 5% dari dana akaun, dan bukannya perdagangan tetap yang bodoh. Kedudukan setiap perdagangan dikira berdasarkan jarak berhenti yang dinamik: jumlah risiko = dana akaun × 5%, margin = jumlah risiko ÷ ((harga masuk - harga berhenti).

Pengesanan jurang nilai adil: menangkap masa kegemilangan ketidakseimbangan likuiditi pasaran

Logik pengesanan FVG sangat tepat: FVG bullish memerlukan harga K-line minimum semasa> harga K-line maksimum dua kitaran sebelumnya, FVG bearish memerlukan harga K-line maksimum semasa < harga K-line minimum dua kitaran sebelumnya. Kaedah pengenalan gaya ICT “wick-to-wick” ini, khusus untuk menangkap jurang kecairan semasa harga bergerak dengan cepat.

Hadkan satu transaksi setiap hari: Disiplin lebih baik daripada operasi yang kerap

Strategi ini direka untuk mengehadkan “satu hari” yang ketat, yang bukan konservatif, tetapi bijak. Terlalu banyak perdagangan adalah musuh terbesar strategi kuantitatif, terutamanya dalam perdagangan dalam hari. Dengan kawalan pembolehubah TradedToday, ia memastikan bahawa isyarat berkualiti tinggi hanya dijalankan sekali setiap hari perdagangan. Reka bentuk ini membolehkan strategi ini memberi tumpuan kepada peluang kebarangkalian tinggi, dan bukannya mengejar frekuensi perdagangan.

Tetapan nisbah ganjaran risiko dua kali ganda: keseimbangan optimum nilai matematik yang diharapkan

Tetapan RR = 2.0 dihitung dengan kebarangkalian yang ketat. Dalam keadaan kemenangan 50%, dua kali ganda daripada kadar ganjaran risiko dapat mencapai keseimbangan keuntungan dan kerugian; apabila kemenangan meningkat kepada 40% atau lebih, strategi dapat menghasilkan pendapatan yang diharapkan positif. Bersama dengan mekanisme pengesahan ganda ORB + FVG, kemenangan sebenar biasanya mencapai 55-65%, yang menjadikan strategi mempunyai kemampuan keuntungan yang stabil.

Reka bentuk penyangga kerosakan: perincian teknikal untuk mengelakkan gangguan bunyi

0.50 unit harga penangguhan pelindung kelihatan kecil, tetapi ia sangat besar. Tempat penangguhan terletak di luar sempadan ORB dan bukan di sempadan, mengelakkan penangguhan tidak berkesan yang disebabkan oleh bunyi pasaran. Reka bentuk terperinci ini mencerminkan pemahaman mendalam strategi mengenai struktur mikro pasaran, yang dapat mengurangkan penangguhan yang salah akibat penyesuaian harga yang singkat.

Kerangka masa berganda: 1 minit untuk melaksanakan + 5 minit untuk mengesahkan kerjasama sempurna

Strategi menentukan selang ORB pada tahap 5 minit, mencari peluang terobosan pada tahap 1 minit. Kombinasi bingkai masa ini memastikan pengendalian terhadap irama keseluruhan pasaran, tetapi juga menyediakan masa masuk yang tepat.

Senario dan Petua Risiko

Strategi ini berfungsi dengan baik dalam pasaran yang sedang berkembang, terutama sesuai untuk perdagangan 1 jam pertama selepas saham AS dibuka. Tetapi perlu diingat: Performa yang buruk dalam pasaran yang bergolak di sebelah kiri, mungkin berlaku kerugian berturut-turut di bawah pengaruh berita besar.

Ia disyorkan untuk melakukan ujian perdagangan kertas yang mencukupi sebelum digunakan, memastikan setiap butiran pelaksanaan strategi difahami. Ia adalah perlu untuk menilai kesesuaian strategi dalam masa yang tepat apabila keadaan pasaran berubah, dan menghentikan perdagangan jika perlu untuk melindungi keselamatan dana.

Kod sumber strategi
/*backtest
start: 2025-09-15 00:00:00
end: 2025-10-14 08:00:00
period: 5m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":500000}]
*/

//@version=5
strategy("XAUUSD 5-Min ORB + FVG (09:30–10:30, 1/day, 5% risk, ORB SL)",
     overlay=true)

// ===== Inputs =====
RR           = input.float(2.0, "Risk-Reward Ratio", step=0.1)
RiskPct      = input.float(5.0, "Risk % per Trade", step=0.5, minval=0.1, maxval=50)
SessionStr   = input("0930-1030", "Trading Session (chart TZ)")
SL_Buffer    = input.float(0.50, "SL Buffer (price units)", step=0.01)  // e.g., 0.50 on XAUUSD

// ===== Session filter (uses chart timezone; set chart TZ to UTC-4 to match you) =====
inSession = not na(time(timeframe.period, SessionStr))

// ===== 5-minute series (to build the opening range) =====
h5    = request.security(syminfo.tickerid, "5", high)
l5    = request.security(syminfo.tickerid, "5", low)
conf5 = request.security(syminfo.tickerid, "5", barstate.isconfirmed)

// Build a 5m session state matching the same 09:30–10:30 window, but on 5m bars
inSess5 = request.security(syminfo.tickerid, "5", not na(time("5", SessionStr)))
firstBarOpen5 = inSess5 and not inSess5[1]  // first 5m bar of the window (at its OPEN)

// ==== ORB state ====
var float ORBHigh = na
var float ORBLow  = na
var bool  ORBSet  = false

// Wait for the first 5m bar of the session to close, then lock its H/L as the ORB
var bool waitClose = false
if firstBarOpen5
    ORBSet := false
    waitClose := true
if waitClose and conf5
    ORBHigh := h5
    ORBLow  := l5
    ORBSet := true
    waitClose := false

// ===== One trade per day logic (resets at day change in chart TZ) =====
var bool TradedToday = false
if ta.change(time("D"))
    TradedToday := false

// ===== 1-minute series for breakout + FVG =====
h1 = request.security(syminfo.tickerid, "1", high)
l1 = request.security(syminfo.tickerid, "1", low)
c1 = request.security(syminfo.tickerid, "1", close)

// Wick-to-wick FVG (ICT-style) on breakout bar
bullFVG = (not na(h1[2]) and not na(l1)) ? (h1[2] < l1) : false
bearFVG = (not na(l1[2]) and not na(h1)) ? (l1[2] > h1) : false

// Breakout checks vs ORB
breakAbove = not na(ORBHigh) and c1 > ORBHigh
breakBelow = not na(ORBLow)  and c1 < ORBLow

// Signals within session, with ORB locked, and only if not traded today
canTrade   = inSession and ORBSet and not TradedToday
buySignal  = canTrade and breakAbove and bullFVG
sellSignal = canTrade and breakBelow and bearFVG

// ===== 5% risk-based position sizing =====
f_qty(entry, sl) =>
    riskAmt     = (RiskPct / 100.0) * strategy.equity
    riskPerUnit = math.abs(entry - sl) * syminfo.pointvalue
    valid       = (riskPerUnit > 0) and (riskAmt > 0)
    qty         = valid ? math.max(0.0001, riskAmt / riskPerUnit) : na
    qty

// ===== Orders =====
// SL is set relative to the 5m opening range +/− buffer
if buySignal
    sl = ORBLow - SL_Buffer
    // if somehow ORBLow is na, fallback to candle low
    sl := na(sl) ? l1 : sl
    tp = c1 + RR * (c1 - sl)
    q  = f_qty(c1, sl)
    if not na(q) and c1 > sl
        strategy.entry("BUY", strategy.long, qty=q)
        strategy.exit("TP/SL BUY", from_entry="BUY", stop=sl, limit=tp)
        TradedToday := true

if sellSignal
    sl = ORBHigh + SL_Buffer
    sl := na(sl) ? h1 : sl
    tp = c1 - RR * (sl - c1)
    q  = f_qty(c1, sl)
    if not na(q) and sl > c1
        strategy.entry("SELL", strategy.short, qty=q)
        strategy.exit("TP/SL SELL", from_entry="SELL", stop=sl, limit=tp)
        TradedToday := true

// ===== Visuals =====
plot(ORBHigh, "ORB High (5m)", color=color.new(color.orange, 0))
plot(ORBLow,  "ORB Low  (5m)", color=color.new(color.orange, 0))
hline(0, "Zero line", color=color.new(color.gray, 85))