Crossover purata bergerak berganda dan sistem perdagangan penapisan komposit RSI/ATR berdasarkan pelarasan turun naik dinamik

MA RSI ATR RR SL TP SMA
Tarikh penciptaan: 2025-02-21 11:58:43 Akhirnya diubah suai: 2025-02-21 11:58:43
Salin: 1 Bilangan klik: 390
2
fokus pada
319
Pengikut

Crossover purata bergerak berganda dan sistem perdagangan penapisan komposit RSI/ATR berdasarkan pelarasan turun naik dinamik Crossover purata bergerak berganda dan sistem perdagangan penapisan komposit RSI/ATR berdasarkan pelarasan turun naik dinamik

Gambaran Keseluruhan Strategi

Strategi ini adalah sistem perdagangan kompleks yang menggabungkan crossover dua rata-rata, RSI overbought dan oversold dan penapisan kadar ATR. Sistem ini menghasilkan isyarat perdagangan dengan purata bergerak jangka pendek dan jangka panjang, memfilter keadaan pasaran melalui indikator RSI, menggunakan indikator ATR untuk menilai kadar turun naik, dan menggabungkan peratusan stop loss dan risiko untuk pengurusan kedudukan dan kawalan risiko. Strategi ini mempunyai daya serap yang kuat dan dapat menyesuaikan parameter dengan fleksibel mengikut keadaan pasaran.

Prinsip Strategi

Logik teras strategi adalah berdasarkan aspek berikut:

  1. Penjanaan isyarat: Menggunakan persilangan purata bergerak mudah 9 dan 21 untuk menangkap perubahan trend. Isyarat polygonal dihasilkan apabila garis purata jangka pendek melintasi garis purata jangka panjang, dan isyarat kosong dihasilkan apabila melintasi.
  2. Penapisan tertakluk: Penapisan tertakluk melalui RSI untuk mengelakkan masuk dalam keadaan pasaran yang melampau. Pada masa yang sama, penggunaan penunjuk ATR memastikan kadar turun naik pasaran memenuhi syarat perdagangan.
  3. Pengurusan risiko: Menggunakan peratusan stop loss berdasarkan nilai bersih akaun, menentukan kedudukan berhenti dengan menetapkan nisbah risiko-keuntungan, dan mencapai risiko perlindungan sambil mendapatkan keuntungan yang wajar.

Kelebihan Strategik

  1. Sistem ini beradaptasi dengan baik: Dengan menyalakan / mematikan penapis RSI dan ATR, strategi dapat disesuaikan dengan keadaan pasaran yang berbeza.
  2. Kawalan risiko yang sempurna: Menggunakan peratusan stop loss dan pengurusan kedudukan dinamik, mengawal risiko setiap perdagangan dengan berkesan.
  3. Kebolehpercayaan isyarat yang tinggi: Dengan mekanisme penapisan berganda, kesan isyarat palsu dikurangkan dan kadar kejayaan urus niaga meningkat.
  4. Parameter boleh disesuaikan: parameter boleh disesuaikan dengan ciri-ciri pasaran tertentu.

Risiko Strategik

  1. Risiko pasaran bergolak: Dalam pasaran bergolak, persilangan garis rata-rata boleh menghasilkan isyarat palsu yang kerap.
  2. Risiko ketinggalan: Rata-rata bergerak mempunyai ketinggalan tertentu, mungkin terlepas masa kemasukan terbaik.
  3. Risiko pengoptimuman parameter: Parameter pengoptimuman berlebihan boleh menyebabkan strategi terlalu sesuai dan menjejaskan prestasi cakera keras.
  4. Kepercayaan kepada keadaan pasaran: Strategi lebih baik dalam pasaran yang jelas trend, dan mungkin kurang berkesan dalam keadaan pasaran lain.

Arah pengoptimuman strategi

  1. Penyesuaian parameter dinamik: boleh menyesuaikan secara automatik kitaran garis purata dan paras paras RSI mengikut turun naik pasaran.
  2. Menambah penapis kekuatan trend: memperkenalkan penunjuk seperti DMI atau ADX untuk menilai kekuatan trend.
  3. Cara untuk mengoptimumkan hentikan kerugian: anda boleh mempertimbangkan untuk menggunakan hentikan yang dijejaki atau hentikan dinamik berdasarkan ATR.
  4. Pengurusan kedudukan yang lebih baik: memperkenalkan sistem pengurusan kedudukan dinamik berdasarkan kadar turun naik.

ringkaskan

Strategi ini membina sistem perdagangan yang agak lengkap dengan menggabungkan beberapa petunjuk teknikal. Strategi ini mempunyai prestasi yang sangat baik di pasaran trend dan mempunyai keupayaan kawalan risiko yang baik. Dengan menetapkan parameter dengan munasabah dan menambah syarat penapisan yang diperlukan, strategi ini dapat menyesuaikan diri dengan keadaan pasaran yang berbeza.

Kod 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")