Kombinasi crossover moving average berganda dengan sistem perdagangan tren support dan resistance Camarilla

EMA CPR SR
Tanggal Pembuatan: 2025-01-06 11:13:31 Akhirnya memodifikasi: 2025-01-06 11:13:31
menyalin: 0 Jumlah klik: 373
1
fokus pada
1617
Pengikut

Kombinasi crossover moving average berganda dengan sistem perdagangan tren support dan resistance Camarilla

Ringkasan

Strategi ini adalah sistem perdagangan mengikuti tren yang menggabungkan beberapa rata-rata pergerakan eksponensial (EMA), tingkat dukungan dan resistensi Camarilla, dan Central Pivotal Range (CPR). Strategi ini mengidentifikasi tren pasar dan peluang perdagangan potensial dengan menganalisis harga dalam kaitannya dengan beberapa rata-rata pergerakan dan rentang harga penting. Sistem ini mengadopsi manajemen dana dan langkah-langkah pengendalian risiko yang ketat, termasuk ukuran posisi persentase dan mekanisme keluar yang terdiversifikasi.

Prinsip Strategi

Strategi ini didasarkan pada komponen inti berikut:

  1. Sistem moving average berganda (EMA20/50/100/200) digunakan untuk mengkonfirmasi arah dan kekuatan tren
  2. Level support dan resistance Camarilla (R3/S3) digunakan untuk mengidentifikasi level harga utama
  3. Kisaran Harga Sentral (CPR) digunakan untuk menentukan kisaran perdagangan intraday.
  4. Sinyal masuk didasarkan pada persilangan harga dengan EMA200 dan konfirmasi oleh EMA20
  5. Strategi keluar mencakup titik tetap dan mode pergerakan persentase
  6. Sistem manajemen dana secara dinamis menyesuaikan ukuran posisi sesuai dengan ukuran akun

Keunggulan Strategis

  1. Kombinasi indikator teknis multidimensi memberikan sinyal perdagangan yang lebih andal
  2. Mekanisme keluar yang fleksibel untuk beradaptasi dengan lingkungan pasar yang berbeda
  3. Sistem manajemen dana yang sempurna mengendalikan risiko secara efektif
  4. Fitur mengikuti tren membantu menangkap pergerakan besar
  5. Komponen visualisasi memudahkan pedagang untuk memahami struktur pasar

Risiko Strategis

  1. Sinyal palsu mungkin terjadi di pasar yang bergejolak
  2. Beberapa indikator dapat menyebabkan sinyal perdagangan tertunda
  3. Titik keluar tetap mungkin tidak berkinerja baik di pasar yang bergejolak
  4. Diperlukan dana yang lebih besar untuk menahan penarikan dana
  5. Biaya transaksi dapat mempengaruhi pengembalian strategi secara keseluruhan

Arah optimasi strategi

  1. Memperkenalkan indikator volatilitas untuk menyesuaikan parameter masuk dan keluar secara dinamis
  2. Tambahkan modul pengenalan status pasar untuk beradaptasi dengan lingkungan pasar yang berbeda
  3. Optimalkan sistem manajemen dana dan tambahkan manajemen posisi dinamis
  4. Menambahkan filter waktu perdagangan untuk meningkatkan kualitas sinyal
  5. Pertimbangkan untuk menambahkan analisis volume untuk meningkatkan keandalan sinyal

Meringkaskan

Strategi ini membangun sistem perdagangan lengkap dengan mengintegrasikan beberapa alat analisis teknis klasik. Keunggulan sistem ini terletak pada analisis pasar multidimensi dan manajemen risiko yang ketat, tetapi juga perlu memperhatikan kemampuan beradaptasinya terhadap lingkungan pasar yang berbeda. Melalui optimalisasi dan perbaikan berkelanjutan, strategi ini diharapkan dapat meningkatkan profitabilitas dengan tetap menjaga stabilitas.

Kode Sumber Strategi
/*backtest
start: 2020-01-06 00:00:00
end: 2025-01-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Pradeep Crude oil Entry and Exit", overlay=true)

// Input settings for EMAs
ema20_period = input.int(20, title="EMA 20 Period")
ema50_period = input.int(50, title="EMA 50 Period")
ema100_period = input.int(100, title="EMA 100 Period")
ema200_period = input.int(200, title="EMA 200 Period")

// Fixed line width settings for EMAs
ema20_width = 2  // EMA 20 Line Width
ema50_width = 2  // EMA 50 Line Width
ema100_width = 3 // EMA 100 Line Width
ema200_width = 4 // EMA 200 Line Width

// Backtesting inputs
initial_capital = input.float(50000, title="Initial Capital", minval=100)
position_size_percent = input.float(100, title="Position Size (% of Capital)", minval=0.1, maxval=100)
exit_mode = input.string("Price Movement", title="Exit Mode", options=["Price Movement", "Percentage Movement"])
exit_points = input.int(20, title="Exit After X Points", minval=1)
exit_percentage = input.float(1.0, title="Exit After X% Movement", minval=0.1, step=0.1)

// Calculate EMAs
ema20 = ta.ema(close, ema20_period)
ema50 = ta.ema(close, ema50_period)
ema100 = ta.ema(close, ema100_period)
ema200 = ta.ema(close, ema200_period)

// Signal conditions
long_entry_condition = close > ema200 and close > ema20 and close[1] <= ema200
long_exit_condition = (exit_mode == "Price Movement" and close - strategy.position_avg_price >= exit_points * syminfo.mintick) or 
                      (exit_mode == "Percentage Movement" and (close - strategy.position_avg_price) / strategy.position_avg_price * 100 >= exit_percentage)
short_entry_condition = close < ema200 and close < ema20 and close[1] >= ema200
short_exit_condition = (exit_mode == "Price Movement" and strategy.position_avg_price - close >= exit_points * syminfo.mintick) or 
                       (exit_mode == "Percentage Movement" and (strategy.position_avg_price - close) / strategy.position_avg_price * 100 >= exit_percentage)

// Plot EMAs with specified line widths
plot(ema20, color=color.green, title="EMA 20", linewidth=ema20_width)
plot(ema50, color=color.aqua, title="EMA 50", linewidth=ema50_width)
plot(ema100, color=color.blue, title="EMA 100", linewidth=ema100_width)
plot(ema200, color=color.red, title="EMA 200", linewidth=ema200_width)

// Camarilla Pivot Calculation
prev_high = request.security(syminfo.tickerid, "D", high[1])
prev_low = request.security(syminfo.tickerid, "D", low[1])
prev_close = request.security(syminfo.tickerid, "D", close[1])

R3 = prev_close + (prev_high - prev_low) * 1.1 / 2
S3 = prev_close - (prev_high - prev_low) * 1.1 / 2

// Central Pivot Range (CPR) Calculation
pivot = (prev_high + prev_low + prev_close) / 3
upper_cpr = pivot + (prev_high - prev_low)
lower_cpr = pivot - (prev_high - prev_low)

// Plot Camarilla R3, S3 and CPR levels
plot(R3, color=color.purple, title="Camarilla R3", linewidth=2)
plot(S3, color=color.purple, title="Camarilla S3", linewidth=2)
plot(pivot, color=color.yellow, title="CPR Pivot", linewidth=2)
plot(upper_cpr, color=color.green, title="CPR Upper", linewidth=1)
plot(lower_cpr, color=color.red, title="CPR Lower", linewidth=1)

// Backtesting: Capital and position size
capital = initial_capital
risk_per_trade = (position_size_percent / 100) * capital

// Long positions
if long_entry_condition
    strategy.entry("Long", strategy.long, qty=risk_per_trade / close)
    // Display entry price label
    label.new(bar_index, close, text="Entry: " + str.tostring(close), color=color.green, style=label.style_label_up, yloc=yloc.belowbar)

if long_exit_condition
    strategy.close("Long")
    // Display exit price label
    label.new(bar_index, close, text="Exit: " + str.tostring(close), color=color.red, style=label.style_label_down, yloc=yloc.abovebar)

// Short positions
if short_entry_condition
    strategy.entry("Short", strategy.short, qty=risk_per_trade / close)
    // Display entry price label
    label.new(bar_index, close, text="Entry: " + str.tostring(close), color=color.red, style=label.style_label_down, yloc=yloc.abovebar)

if short_exit_condition
    strategy.close("Short")
    // Display exit price label
    label.new(bar_index, close, text="Exit: " + str.tostring(close), color=color.green, style=label.style_label_up, yloc=yloc.belowbar)

// Plot signals
plotshape(long_entry_condition, style=shape.triangleup, location=location.belowbar, color=color.new(color.green, 0), size=size.small, title="Long Entry")
plotshape(long_exit_condition, style=shape.triangledown, location=location.abovebar, color=color.new(color.red, 0), size=size.small, title="Long Exit")
plotshape(short_entry_condition, style=shape.triangledown, location=location.abovebar, color=color.new(color.red, 0), size=size.small, title="Short Entry")
plotshape(short_exit_condition, style=shape.triangleup, location=location.belowbar, color=color.new(color.green, 0), size=size.small, title="Short Exit")