Strategi Perdagangan Harian Mengikuti Tren Multi-Indikator Dinamis

EMA RSI MACD ATR IST
Tanggal Pembuatan: 2025-02-21 13:15:30 Akhirnya memodifikasi: 2025-02-21 13:15:30
menyalin: 0 Jumlah klik: 365
2
fokus pada
319
Pengikut

Strategi Perdagangan Harian Mengikuti Tren Multi-Indikator Dinamis Strategi Perdagangan Harian Mengikuti Tren Multi-Indikator Dinamis

Ringkasan

Ini adalah strategi perdagangan intraday yang didasarkan pada beberapa indikator teknis, yang digunakan untuk melakukan perdagangan dengan beberapa sinyal, seperti saluran EMA, RSI overbought dan oversold, dan konfirmasi tren MACD. Strategi ini berjalan pada siklus 3 menit, menangkap tren pasar melalui orbit EMA yang tinggi dan rendah yang digabungkan dengan konfirmasi silang RSI dan MACD, dan mengatur stop loss dinamis berbasis ATR, serta waktu penyelesaian yang tetap.

Prinsip Strategi

Strategi menggunakan 20 siklus EMA untuk menghitung harga tertinggi dan terendah masing-masing untuk membentuk saluran, yang masuk ketika harga menembus saluran dan memenuhi kondisi berikut:

  1. Multiple entry: EMA tinggi pada harga close out, RSI antara 50-70 dan MACD pada garis sinyal
  2. Masuk kosong: EMA rendah di bawah harga close, RSI antara 30-50, MACD di bawah garis
  3. Menggunakan ATR untuk menghitung posisi stop loss secara dinamis, dan mengatur stop loss sesuai dengan 2,5 x risiko / keuntungan
  4. Setiap transaksi berisiko 1% untuk akun, ukuran posisi berdasarkan stop loss distance
  5. Semua Posisi Peninggalan Mandat di 15:00 WIB

Keunggulan Strategis

  1. Verifikasi silang multi-indikator teknis untuk meningkatkan keandalan sinyal perdagangan
  2. Stop loss dinamis didasarkan pada indikator ATR untuk lebih beradaptasi dengan pergerakan pasar
  3. Rasio risiko tetap dan rasio manfaat risiko, mengendalikan risiko secara efektif
  4. Mempertimbangkan biaya transaksi, termasuk biaya proses
  5. Larangan pembiayaan simetris untuk menghindari risiko kepemilikan saham yang berlebihan
  6. Menetapkan waktu penutupan untuk menghindari risiko malam hari

Risiko Strategis

  1. Beberapa indikator dapat menyebabkan sinyal yang terlambat, yang mempengaruhi waktu masuk.
  2. Saluran EMA dapat menyebabkan terjadinya penembusan palsu yang sering terjadi di pasar horizontal
  3. Rasio risiko-manfaat tetap mungkin tidak cukup fleksibel dalam berbagai kondisi pasar
  4. Pembatasan RSI mungkin melewatkan beberapa tren besar
  5. Penutupan posisi obligasi bisa memaksa penarikan diri di posisi penting

Arah optimasi strategi

  1. Pertimbangkan untuk menambah indikator volume transaksi sebagai konfirmasi tambahan
  2. Rasio risiko / keuntungan dapat disesuaikan dengan dinamika karakteristik fluktuasi pada periode waktu yang berbeda
  3. Memperkenalkan indikator volatilitas pasar yang menyesuaikan RSI secara dinamis
  4. Pertimbangkan untuk meningkatkan intensitas filter tren untuk mengurangi false breaks
  5. Parameter dapat dipertimbangkan untuk disesuaikan dengan karakteristik waktu yang berbeda dalam sehari
  6. Menambahkan analisis volatilitas historis untuk mengoptimalkan manajemen posisi

Meringkaskan

Strategi ini menggunakan kombinasi dari beberapa indikator teknis untuk membangun sistem perdagangan yang relatif lengkap. Keuntungan dari strategi ini adalah kontrol risiko yang lebih baik, termasuk mekanisme seperti stop loss dinamis, risiko tetap, dan close out. Meskipun ada beberapa risiko keterlambatan, kinerja strategi dapat ditingkatkan lebih lanjut dengan mengoptimalkan parameter dan menambahkan indikator tambahan.

Kode Sumber Strategi
/*backtest
start: 2024-02-21 00:00:00
end: 2024-09-09 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/

//@version=6
strategy("Intraday 3min EMA HL Strategy v6", 
     overlay=true,
     margin_long=100, 
     margin_short=100,
     initial_capital=100000,
     default_qty_type=strategy.percent_of_equity,
     default_qty_value=100,
     commission_type=strategy.commission.percent,
     commission_value=0.05,
     calc_on_every_tick=false,
     process_orders_on_close=true,
     pyramiding=0)

// Input Parameters
i_emaLength = input.int(20, "EMA Length", minval=5, group="Strategy Parameters")
i_rsiLength = input.int(14, "RSI Length", minval=5, group="Strategy Parameters")
i_atrLength = input.int(14, "ATR Length", minval=5, group="Risk Management")
i_rrRatio = input.float(2.5, "Risk:Reward Ratio", minval=1, maxval=10, step=0.5, group="Risk Management")
i_riskPercent = input.float(1, "Risk % per Trade", minval=0.1, maxval=5, step=0.1, group="Risk Management")

// Time Exit Parameters (IST)
i_exitHour = input.int(15, "Exit Hour (IST)", minval=0, maxval=23, group="Session Rules")
i_exitMinute = input.int(0, "Exit Minute (IST)", minval=0, maxval=59, group="Session Rules")

// Indicator Calculations
emaHigh = ta.ema(high, i_emaLength)
emaLow = ta.ema(low, i_emaLength)

rsi = ta.rsi(close, i_rsiLength)
atr = ta.atr(i_atrLength)

fastMA = ta.ema(close, 12)
slowMA = ta.ema(close, 26)
macdLine = fastMA - slowMA
signalLine = ta.ema(macdLine, 9)

// Time Calculations (UTC to IST Conversion)
istHour = (hour(time) + 5) % 24  // UTC+5
istMinute = minute(time) + 30    // 30 minute offset
istHour += istMinute >= 60 ? 1 : 0
istMinute := istMinute % 60

// Exit Condition
timeExit = istHour > i_exitHour or (istHour == i_exitHour and istMinute >= i_exitMinute)

// Entry Conditions (Multi-line formatting fix)
longCondition = close > emaHigh and
     rsi > 50 and
     rsi < 70 and
     ta.crossover(macdLine, signalLine)

shortCondition = close < emaLow and
     rsi < 50 and
     rsi > 30 and
     ta.crossunder(macdLine, signalLine)

// Risk Calculations
var float entryPrice = na
var float stopLoss = na
var float takeProfit = na
var float posSize = na

// Strategy Logic
if longCondition and not timeExit and strategy.position_size == 0
    entryPrice := close
    stopLoss := math.min(low, entryPrice - atr)
    takeProfit := entryPrice + (entryPrice - stopLoss) * i_rrRatio
    posSize := strategy.equity * i_riskPercent / 100 / (entryPrice - stopLoss)
    strategy.entry("Long", strategy.long, qty=posSize)
    strategy.exit("Long Exit", "Long", stop=stopLoss, limit=takeProfit)

if shortCondition and not timeExit and strategy.position_size == 0
    entryPrice := close
    stopLoss := math.max(high, entryPrice + atr)
    takeProfit := entryPrice - (stopLoss - entryPrice) * i_rrRatio
    posSize := strategy.equity * i_riskPercent / 100 / (stopLoss - entryPrice)
    strategy.entry("Short", strategy.short, qty=posSize)
    strategy.exit("Short Exit", "Short", stop=stopLoss, limit=takeProfit)

// Force Close at Session End
if timeExit
    strategy.close_all()

// Visual Components
plot(emaHigh, "EMA High", color=color.rgb(0, 128, 0), linewidth=2)
plot(emaLow, "EMA Low", color=color.rgb(255, 0, 0), linewidth=2)

plotshape(longCondition, "Long Signal", shape.triangleup, 
  location.belowbar, color=color.green, size=size.small)
plotshape(shortCondition, "Short Signal", shape.triangledown, 
  location.abovebar, color=color.red, size=size.small)

// Debugging Table
var table infoTable = table.new(position.top_right, 3, 3)
if barstate.islast
    table.cell(infoTable, 0, 0, "EMA High: " + str.tostring(emaHigh, "#.00"))
    table.cell(infoTable, 0, 1, "EMA Low: " + str.tostring(emaLow, "#.00"))
    table.cell(infoTable, 0, 2, "Current RSI: " + str.tostring(rsi, "#.00"))