Strategi terobosan dinamis 5 EMA dan sistem optimasi filter waktu

EMA BREAKOUT Signal Candle RISK-REWARD Time Filter STOP-LOSS TAKE-PROFIT
Tanggal Pembuatan: 2025-07-08 14:53:33 Akhirnya memodifikasi: 2025-07-08 14:53:33
menyalin: 0 Jumlah klik: 253
2
fokus pada
319
Pengikut

Strategi terobosan dinamis 5 EMA dan sistem optimasi filter waktu Strategi terobosan dinamis 5 EMA dan sistem optimasi filter waktu

Ringkasan

5 EMA Breakout Strategi dengan Sistem Optimisasi Filter Waktu adalah strategi perdagangan kuantitatif berbasis rata-rata bergerak indeks yang menggunakan indikator EMA 5 siklus untuk mengidentifikasi titik terobosan pasar potensial dan mengoptimalkan pelaksanaan perdagangan melalui verifikasi sinyal yang ketat dan penyaringan jendela waktu. Inti dari strategi ini adalah untuk menangkap perubahan dinamika saat sinyal harga terobosan mencapai titik tertinggi / terendah, sambil menerapkan parameter manajemen risiko yang independen dalam setiap perdagangan.

Prinsip Strategi

Strategi ini didasarkan pada prinsip-prinsip inti berikut:

  1. Mekanisme Pembuatan Sinyal: Strategi menggunakan 5 siklus EMA sebagai indikator utama, dengan harga dan hubungan EMA untuk mengidentifikasi sinyal. Sinyal beli dihasilkan ketika harga penutupan dan harga tertinggi di bawah EMA; Sinyal jual dihasilkan ketika harga penutupan dan harga terendah di atas EMA.

  2. Verifikasi Penembusan: Strategi hanya mencari penembusan yang efektif dalam 3 jam setelah sinyal dihasilkan. Perdagangan beli dipicu ketika harga menembus titik tertinggi sinyal, perdagangan jual dipicu ketika harga menembus titik terendah sinyal.

  3. Kerangka pengelolaan risiko: Setiap transaksi memiliki stop loss dan target yang terpisah. Stop loss untuk transaksi beli ditetapkan pada titik terendah dari signal bar, dan stop loss untuk transaksi jual ditetapkan pada titik tertinggi dari signal bar. Target harga didasarkan pada rasio risiko / keuntungan yang ditentukan pengguna, dengan default 1: 3.

  4. Sistem penyaringan waktu: Strategi ini menerapkan dua mekanisme manajemen waktu: a) mencegah perdagangan baru dalam jendela waktu tertentu, seperti saat pasar bergejolak besar; b) secara otomatis menghapus semua posisi yang dipegang pada waktu yang ditentukan, seperti sebelum akhir hari perdagangan.

  5. Multiple trade handling: Strategi ini memungkinkan untuk melakukan beberapa transaksi dalam arah yang sama tanpa menutup posisi sebelumnya, dengan masing-masing transaksi memiliki ID, stop loss, dan target harga yang terpisah.

Keunggulan Strategis

Dengan analisis mendalam, strategi ini menunjukkan keuntungan yang jelas sebagai berikut:

  1. Filtrasi sinyal yang tepat: menghasilkan sinyal dengan meminta hubungan spesifik antara harga dan EMA, mengurangi terjadinya sinyal yang salah, meningkatkan kualitas perdagangan.

  2. Opsi eksekusi yang fleksibel: menawarkan opsi “masuk hanya saat mendekati penutupan”, memungkinkan pedagang untuk menghindari false breakout dan meningkatkan stabilitas strategi.

  3. Manajemen risiko independen: Setiap perdagangan memiliki stop loss dan target yang independen, yang memungkinkan pedagang untuk mengontrol eksposur risiko setiap perdagangan dengan tepat, menghindari risiko posisi penuh.

  4. Kecerdasan waktu: Strategi dapat beradaptasi dengan karakteristik waktu pasar, menghindari periode perdagangan yang tidak efisien atau berisiko tinggi dengan filter jendela waktu khusus dan fungsi penutupan otomatis.

  5. Skalabilitas: Strategi dirancang untuk menjadi modular, parameter dapat disesuaikan, dapat diterapkan di berbagai pasar dan periode waktu, dan dapat disesuaikan dengan gaya dan kebutuhan perdagangan yang berbeda.

Risiko Strategis

Meskipun strategi ini dirancang dengan baik, masih ada risiko potensial sebagai berikut:

  1. EMA keterlambatan: Sebagai indikator keterlambatan, 5 siklus EMA dapat menghasilkan sinyal keterlambatan di pasar yang berubah dengan cepat, yang menyebabkan titik masuk yang tidak diinginkan. Solusinya adalah dengan hati-hati digunakan di pasar yang sangat fluktuatif, atau dikonfirmasi dalam kombinasi dengan indikator lain.

  2. Stop loss yang tetap: Menggunakan titik tinggi/rendah dari signal box sebagai titik stop loss dapat menyebabkan stop loss yang terlalu lebar, meningkatkan jumlah risiko per transaksi. Anda dapat mempertimbangkan untuk menggunakan ATR atau persentase stop loss untuk mengoptimalkan posisi stop loss.

  3. Pembatasan jendela 3 frame: Mencari terobosan hanya dalam 3 frame dapat melewatkan peluang terobosan yang efektif tetapi tertunda. Pertimbangkan untuk menyesuaikan parameter ini sesuai dengan pasar dan periode waktu yang berbeda.

  4. Ketergantungan zona waktu: Strategi menggunakan IST (waktu standar India) untuk penyaringan waktu, yang perlu disesuaikan oleh pedagang yang menggunakan zona waktu yang berbeda. Disarankan untuk mengubah kode untuk mendukung pengaturan zona waktu dinamis.

  5. Akumulasi perdagangan ganda: Memungkinkan beberapa entri di arah yang sama dapat menyebabkan kelebihan leverage dan konsentrasi risiko. Disarankan untuk menerapkan mekanisme pengendalian risiko total, membatasi jumlah maksimum perdagangan arah yang sama atau total risiko.

Arah optimasi strategi

Berdasarkan analisis strategi, berikut adalah beberapa kemungkinan arah optimasi:

  1. Siklus EMA Dinamis: Menerapkan fungsi untuk menyesuaikan siklus EMA secara otomatis berdasarkan volatilitas pasar (seperti ATR), sehingga strategi dapat beradaptasi dengan berbagai kondisi pasar. Ini akan meningkatkan kemampuan strategi untuk beradaptasi dalam lingkungan yang berbeda.

  2. Integrasi filter tingkat tinggi: pengenalan konfirmasi volume transaksi, penyaringan tingkat volatilitas pasar atau indikator kekuatan tren (seperti ADX), meningkatkan kualitas sinyal dan mengurangi kemungkinan terobosan palsu.

  3. Manajemen risiko adaptif: Mempunyai fungsi untuk menyesuaikan tingkat risiko dan stop loss berdasarkan dinamika volatilitas pasar, membuat manajemen risiko lebih cerdas dan relevan dengan pasar.

  4. Penetapan laba parsial: Tambahkan fitur untuk memindahkan stop loss atau batch profit ketika mencapai target laba parsial, melindungi margin yang menguntungkan dan memungkinkan sisa posisi untuk mengikuti tren yang lebih besar.

  5. Optimasi Pembelajaran Mesin: Menggunakan algoritma pembelajaran mesin untuk menganalisis data historis, mengidentifikasi waktu masuk dan kombinasi parameter yang optimal, dan mengoptimalkan parameter strategi secara adaptif.

Meringkaskan

5 Sistem Optimisasi Strategi Penembusan EMA Dinamis dan Penyaringan Waktu adalah sistem perdagangan kuantitatif yang dirancang dengan baik, yang menyediakan pedagang dengan kerangka perdagangan yang komprehensif dan fleksibel dengan menggabungkan indikator EMA, verifikasi penembusan, manajemen risiko yang ketat, dan fungsi penyaringan waktu. Strategi ini sangat cocok untuk pedagang intraday dan jangka pendek, yang dapat secara efektif menangkap perubahan dinamika setelah harga terobosan.

Kode Sumber Strategi
/*backtest
start: 2025-01-01 00:00:00
end: 2025-07-04 08:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy("5 EMA STRATEGY by Power of Stocks(StockYogi)", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// === INPUTS ===
emaLen           = input.int(5, title="EMA Length")
filterBuy        = input.bool(true, title="Enable Buy Trades")
filterSell       = input.bool(true, title="Enable Sell Trades")
targetRR         = input.float(3.0, title="Target R:R (e.g. 3 = 1:3)")
entryOnCloseOnly = input.bool(false, title="Only Enter on Candle Close?")

// === TOGGLES ===
enableCustomExitTime  = input.bool(true, title="Enable Custom Exit Time")
enableBlockTradeTime  = input.bool(true, title="Enable Block Trade Time Window")

// === CUSTOM TIME SETTINGS ===
exitHour     = input.int(15, title="Exit Hour (IST)", minval=0, maxval=23)
exitMinute   = input.int(30, title="Exit Minute (IST)", minval=0, maxval=59)
blockStartHr = input.int(15, title="Block Start Hour (IST)", minval=0, maxval=23)
blockStartMn = input.int(0,  title="Block Start Minute (IST)", minval=0, maxval=59)
blockEndHr   = input.int(15, title="Block End Hour (IST)", minval=0, maxval=23)
blockEndMn   = input.int(30, title="Block End Minute (IST)", minval=0, maxval=59)

// === TIME MANAGEMENT (IST) ===
ist = timestamp("Asia/Kolkata", year, month, dayofmonth, hour, minute)
istHour = hour(ist)
istMinute = minute(ist)

exitNow = enableCustomExitTime and (istHour == exitHour and istMinute == exitMinute)

// === ENTRY BLOCK ZONE LOGIC ===
afterBlockStart = istHour > blockStartHr or (istHour == blockStartHr and istMinute >= blockStartMn)
beforeBlockEnd  = istHour < blockEndHr or (istHour == blockEndHr and istMinute < blockEndMn)
inBlockZone     = enableBlockTradeTime and (afterBlockStart and beforeBlockEnd)

// === CALCULATE EMA ===
ema = ta.ema(close, emaLen)
plot(ema, color=color.orange, title="5 EMA")

// === SIGNAL CANDLE STORAGE ===
var float signalHigh = na
var float signalLow  = na
var int signalIndex  = na
var bool isBuySignal = false
var bool isSellSignal = false

// === SIGNAL CONDITIONS ===
newBuySignal  = close < ema and high < ema
newSellSignal = close > ema and low > ema

if newBuySignal
    signalHigh := high
    signalLow := low
    signalIndex := bar_index
    isBuySignal := true
    isSellSignal := false

if newSellSignal
    signalHigh := high
    signalLow := low
    signalIndex := bar_index
    isBuySignal := false
    isSellSignal := true

// === HIGHLIGHT SIGNAL BAR ===
isSignalBar = bar_index == signalIndex
barcolor(isSignalBar ? color.blue : na)

// === TRIGGER CONDITIONS ===
withinWindow = bar_index > signalIndex and bar_index <= signalIndex + 3
buyTrigger  = isBuySignal and withinWindow and high > signalHigh and not inBlockZone
sellTrigger = isSellSignal and withinWindow and low < signalLow and not inBlockZone

// === UNIQUE TRADE ID GENERATOR ===
getId(prefix) =>
    var int counter = 0
    counter += 1
    prefix + "_" + str.tostring(counter)

// === BUY ENTRY ===
if buyTrigger and filterBuy
    entry = signalHigh
    sl = signalLow
    risk = entry - sl
    target = entry + risk * targetRR
    tradeId = getId("Buy")

    if entryOnCloseOnly
        if close > signalHigh
            strategy.entry(tradeId, strategy.long)
            strategy.exit("TP_" + tradeId, from_entry=tradeId, limit=target, stop=sl)
    else
        strategy.entry(tradeId, strategy.long, stop=entry)
        strategy.exit("TP_" + tradeId, from_entry=tradeId, limit=target, stop=sl)


// === SELL ENTRY ===
if sellTrigger and filterSell
    entry = signalLow
    sl = signalHigh
    risk = sl - entry
    target = entry - risk * targetRR
    tradeId = getId("Sell")

    if entryOnCloseOnly
        if close < signalLow
            strategy.entry(tradeId, strategy.short)
            strategy.exit("TP_" + tradeId, from_entry=tradeId, limit=target, stop=sl)
    else
        strategy.entry(tradeId, strategy.short, stop=entry)
        strategy.exit("TP_" + tradeId, from_entry=tradeId, limit=target, stop=sl)



// === TIME-BASED EXIT FOR ALL TRADES ===
if exitNow
    strategy.close_all(comment="Exited at Custom Time")