Sistem perdagangan crossover rata-rata pergerakan ganda dan penyaringan komposit RSI/ATR berdasarkan penyesuaian volatilitas dinamis

MA RSI ATR RR SL TP SMA
Tanggal Pembuatan: 2025-02-21 11:58:43 Akhirnya memodifikasi: 2025-02-21 11:58:43
menyalin: 1 Jumlah klik: 390
2
fokus pada
319
Pengikut

Sistem perdagangan crossover rata-rata pergerakan ganda dan penyaringan komposit RSI/ATR berdasarkan penyesuaian volatilitas dinamis Sistem perdagangan crossover rata-rata pergerakan ganda dan penyaringan komposit RSI/ATR berdasarkan penyesuaian volatilitas dinamis

Tinjauan Strategi

Strategi ini adalah sistem perdagangan kompleks yang menggabungkan crossover dua rata-rata, overbought dan oversold RSI dan penyaringan tingkat fluktuasi ATR. Sistem ini menghasilkan sinyal perdagangan dengan rata-rata bergerak jangka pendek dan jangka panjang, memfilter kondisi pasar melalui indikator RSI, menggunakan indikator ATR untuk menilai tingkat fluktuasi, dan menggabungkan persentase stop loss dan risiko untuk manajemen posisi dan pengendalian risiko. Strategi ini memiliki kemampuan beradaptasi yang kuat dan dapat menyesuaikan parameternya sesuai dengan lingkungan pasar yang fleksibel.

Prinsip Strategi

Logika inti dari strategi ini didasarkan pada aspek-aspek berikut:

  1. Generasi sinyal: Menggunakan persilangan rata-rata bergerak sederhana pada hari ke-9 dan ke-21 untuk menangkap perubahan tren.
  2. Filter kondisi: Filter overbought dan oversold dengan RSI untuk menghindari masuk dalam kondisi pasar yang ekstrem. Selain itu, menggunakan indikator ATR untuk memastikan volatilitas pasar memenuhi kondisi perdagangan.
  3. Manajemen risiko: Menggunakan persentase stop loss berdasarkan nilai bersih akun, menentukan posisi stop loss dengan menetapkan rasio risiko-penghasilan, dan mencapai keuntungan yang wajar sambil melindungi risiko.

Keunggulan Strategis

  1. Adaptif: Strategi dapat disesuaikan secara fleksibel dengan kondisi pasar yang berbeda dengan mengaktifkan / menonaktifkan filter RSI dan ATR.
  2. Pengendalian risiko yang sempurna: Menggunakan persentase stop loss dan manajemen posisi dinamis, untuk mengontrol risiko setiap transaksi.
  3. Keandalan sinyal yang tinggi: Dengan mekanisme pemfilteran ganda, mengurangi dampak sinyal palsu dan meningkatkan tingkat keberhasilan transaksi.
  4. Parameter dapat disesuaikan: Parameter dapat disesuaikan secara optimal sesuai dengan karakteristik pasar tertentu.

Risiko Strategis

  1. Risiko pasar bergoyang: Dalam pasar bergoyang horizontal, persilangan rata-rata dapat menghasilkan sinyal palsu yang sering terjadi.
  2. Risiko keterlambatan: Moving averages memiliki keterlambatan tertentu, dan mungkin kehilangan waktu terbaik untuk masuk.
  3. Risiko optimasi parameter: Parameter yang dioptimalkan secara berlebihan dapat menyebabkan over-fitting strategi dan mempengaruhi kinerja hard disk.
  4. Ketergantungan pada kondisi pasar: Strategi bekerja lebih baik di pasar dengan tren yang jelas, dan mungkin kurang efektif di lingkungan pasar lainnya.

Arah optimasi strategi

  1. Penyesuaian parameter dinamis: dapat secara otomatis menyesuaikan siklus garis rata-rata dan RSI threshold berdasarkan fluktuasi pasar.
  2. Menambahkan filter kekuatan tren: memperkenalkan indikator seperti DMI atau ADX untuk menilai kekuatan tren.
  3. Optimalkan Stop Loss: Anda dapat mempertimbangkan untuk menggunakan Tracking Stop Loss atau Stop Loss Dinamis berbasis ATR.
  4. Meningkatkan manajemen posisi: memperkenalkan sistem manajemen posisi dinamis berdasarkan volatilitas.

Meringkaskan

Strategi ini dengan menggabungkan beberapa indikator teknis, membangun sistem perdagangan yang relatif lengkap. Strategi ini memiliki kinerja yang sangat baik di pasar tren, memiliki kemampuan pengendalian risiko yang baik. Dengan pengaturan parameter yang masuk akal dan menambahkan kondisi penyaringan yang diperlukan, strategi dapat beradaptasi dengan lingkungan pasar yang berbeda.

Kode Sumber Strategi
/*backtest
start: 2025-01-21 00:00:00
end: 2025-02-20 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/

//@version=5
strategy("Simplified MA Crossover Strategy with Disable Options", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// Inputs
shortLength = input.int(9, title="Short MA Length", minval=1)
longLength = input.int(21, title="Long MA Length", minval=1)

// RSI Filter
enableRSI = input.bool(true, title="Enable RSI Filter")
rsiLength = input.int(14, title="RSI Length", minval=1)
rsiOverbought = input.int(70, title="RSI Overbought Level", minval=50, maxval=100)
rsiOversold = input.int(30, title="RSI Oversold Level", minval=0, maxval=50)

// ATR Filter
enableATR = input.bool(true, title="Enable ATR Filter")
atrLength = input.int(14, title="ATR Length", minval=1)
minATR = input.float(0.005, title="Minimum ATR Threshold", minval=0)

// Risk Management
stopLossPerc = input.float(0.5, title="Stop Loss (%)", minval=0.1) / 100
riskRewardRatio = input.float(2, title="Risk-Reward Ratio", minval=1)
riskPercentage = input.float(2, title="Risk Percentage", minval=0.1) / 100

// Indicators
shortMA = ta.sma(close, shortLength)
longMA = ta.sma(close, longLength)
rsi = ta.rsi(close, rsiLength)
atr = ta.atr(atrLength)

// Conditions
longCondition = ta.crossover(shortMA, longMA)
shortCondition = ta.crossunder(shortMA, longMA)

// Apply RSI Filter (if enabled)
if (enableRSI)
    longCondition := longCondition and rsi < rsiOverbought
    shortCondition := shortCondition and rsi > rsiOversold

// Apply ATR Filter (if enabled)
if (enableATR)
    longCondition := longCondition and atr > minATR
    shortCondition := shortCondition and atr > minATR

// Risk Management
positionSize = strategy.equity * riskPercentage / (stopLossPerc * close)
takeProfitLevel = strategy.position_avg_price * (1 + stopLossPerc * riskRewardRatio)
stopLossLevel = strategy.position_avg_price * (1 - stopLossPerc)

// Execute Trades
if (longCondition)
    strategy.entry("Long", strategy.long, qty=positionSize)
    strategy.exit("Take Profit/Stop Loss", "Long", limit=takeProfitLevel, stop=stopLossLevel)

if (shortCondition)
    strategy.entry("Short", strategy.short, qty=positionSize)
    strategy.exit("Take Profit/Stop Loss", "Short", limit=strategy.position_avg_price * (1 - stopLossPerc * riskRewardRatio), stop=strategy.position_avg_price * (1 + stopLossPerc))

// Plotting
plot(shortMA, color=color.blue, title="Short MA")
plot(longMA, color=color.red, title="Long MA")
hline(rsiOverbought, "Overbought", color=color.red)
hline(rsiOversold, "Oversold", color=color.green)
plot(atr, color=color.orange, title="ATR")
plotshape(series=longCondition, title="Long Entry", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=shortCondition, title="Short Entry", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")