Strategi crossover multi-indikator adaptif dinamis dikombinasikan dengan sistem pengendalian risiko cerdas SRSI dan MACD

RSI SRSI MACD ATR
Tanggal Pembuatan: 2025-02-20 13:07:37 Akhirnya memodifikasi: 2025-02-27 17:44:09
menyalin: 1 Jumlah klik: 329
2
fokus pada
319
Pengikut

Strategi crossover multi-indikator adaptif dinamis dikombinasikan dengan sistem pengendalian risiko cerdas SRSI dan MACD Strategi crossover multi-indikator adaptif dinamis dikombinasikan dengan sistem pengendalian risiko cerdas SRSI dan MACD

Ringkasan

Strategi ini adalah sistem perdagangan dinamis yang menggabungkan indikator yang relatif kuat secara acak (SRSI) dan indikator tren rata-rata bergerak / dispersi (MACD). Strategi ini secara dinamis menyesuaikan stop loss dan stop loss dengan indikator ATR, yang memungkinkan manajemen cerdas risiko. Inti dari strategi ini adalah menghasilkan sinyal perdagangan melalui konfirmasi silang dari beberapa indikator teknis, sambil mengelola posisi dengan volatilitas pasar.

Prinsip Strategi

Strategi ini didasarkan pada beberapa mekanisme utama:

  1. Penjelasan tentang tren pasar dengan menghitung perbedaan antara garis K dan garis D dalam indikator SRSI, dan perbedaan antara garis K dan MACD yang dirumuskan
  2. Kondisi pembelian harus dipenuhi secara bersamaan: K-D adalah positif, K-MACD adalah positif, dan MACD tidak berada dalam tren menurun
  3. Kondisi jual harus dipenuhi pada saat yang sama: K-D adalah negatif, K-MACD adalah negatif, dan MACD tidak dalam tren naik
  4. Menggunakan ATR kali faktor risiko untuk secara dinamis menghitung stop loss dan stop loss, menyesuaikan diri dengan volatilitas pasar

Keunggulan Strategis

  1. Mekanisme konfirmasi multi-sinyal secara signifikan meningkatkan keandalan transaksi, menghindari sinyal palsu yang mungkin dibawa oleh satu indikator
  2. Pengaturan stop loss yang dinamis dapat secara otomatis disesuaikan dengan fluktuasi pasar, memberikan rasio risiko / keuntungan yang lebih baik
  3. Strategi memiliki kemampuan beradaptasi yang baik dan dapat mempertahankan kinerja yang stabil di berbagai lingkungan pasar
  4. Parameter yang dapat disesuaikan, memungkinkan trader untuk mengoptimalkan sesuai dengan preferensi risiko pribadi

Risiko Strategis

  1. Terlalu banyak sinyal perdagangan dapat dihasilkan di pasar yang bergoyang, yang menyebabkan sering masuk dan keluar dari pasar
  2. Penggunaan beberapa indikator dapat menyebabkan sinyal terlambat, kehilangan waktu terbaik untuk masuk dalam pasar yang berubah dengan cepat
  3. ATR didasarkan pada volatilitas historis dan mungkin tidak dapat disesuaikan dengan perubahan volatilitas pasar
  4. Faktor risiko yang perlu diatur secara rasional, terlalu besar atau terlalu kecil dapat mempengaruhi efektivitas strategi

Arah optimasi strategi

  1. Menambahkan filter tren, menggunakan standar pengakuan sinyal yang berbeda di pasar bergolak dan pasar tren
  2. Pengenalan indikator volume lalu lintas sebagai konfirmasi tambahan untuk meningkatkan keandalan sinyal
  3. Metode perhitungan untuk mengoptimalkan stop loss yang dapat dipertimbangkan dengan kombinasi resistance level support
  4. Bergabung dengan model untuk memprediksi volatilitas pasar dan menyesuaikan parameter risiko lebih awal
  5. Pertimbangkan untuk melakukan konfirmasi sinyal pada periode waktu yang berbeda untuk meningkatkan kehandalan strategi

Meringkaskan

Strategi ini membangun sistem perdagangan yang solid dengan menggabungkan keunggulan SRSI dan MACD. Mekanisme manajemen risiko yang dinamis membuatnya memiliki kemampuan adaptasi yang baik, tetapi masih membutuhkan parameter yang dioptimalkan oleh pedagang sesuai dengan situasi pasar yang sebenarnya.

Kode Sumber Strategi
/*backtest
start: 2024-09-01 00:00:00
end: 2025-02-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy(title="SRSI + MACD Strategy with Dynamic Stop-Loss and Take-Profit", shorttitle="SRSI + MACD Strategy", overlay=false, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// User Inputs
smoothK = input.int(3, "K", minval=1) 
smoothD = input.int(3, "D", minval=1) 
lengthRSI = input.int(16, "RSI Length", minval=1) 
lengthStoch = input.int(16, "Stochastic Length", minval=1) 
src = input(close, title="RSI Source") 
enableStopLoss = input.bool(true, "Enable Stop-Loss")  
enableTakeProfit = input.bool(true, "Enable Take-Profit")  
riskFactor = input.float(2.5, "Risk Factor", minval=0.1, step=1)  

// Calculate K and D lines
rsi1 = ta.rsi(src, lengthRSI) 
k = ta.sma(ta.stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK) 
d = ta.sma(k, smoothD) 
differenceKD = k - d 

// Calculate MACD and normalization
[macdLine, signalLine, _] = ta.macd(close, 12, 26, 9) 
lowestK = ta.lowest(k, lengthRSI) 
highestK = ta.highest(k, lengthRSI) 
normalizedMacd = (macdLine - ta.lowest(macdLine, lengthRSI)) / (ta.highest(macdLine, lengthRSI) - ta.lowest(macdLine, lengthRSI)) * (highestK - lowestK) + lowestK 
differenceKMacd = k - normalizedMacd 

// Sum both differences for a unique display
differenceTotal = (differenceKD + differenceKMacd) / 2

// Check if MACD is falling or rising
isMacdFalling = ta.falling(macdLine, 1)  
isMacdRising = ta.rising(macdLine, 1)  

// Check if K is falling or rising
isKFalling = ta.falling(k, 1)  
isKdRising = ta.rising(k, 1)  

// Calculate ATR and dynamic levels
atrValue = ta.atr(14)  
stopLossDistance = atrValue * riskFactor  
takeProfitDistance = atrValue * riskFactor  

// Variables for stop-loss and take-profit levels
var float longStopPrice = na
var float longTakeProfitPrice = na

// Buy and sell conditions with differenceKD added
buyCondition = ((differenceTotal > 0 or differenceKD > 0) and (isKdRising or isMacdRising) and k < 20 )  
sellCondition = ((differenceTotal <= 0 or differenceKD <= 0) and (isKFalling or isMacdFalling) and k > 80)  

// Execute strategy orders with conditional stop-loss and take-profit
if buyCondition and strategy.position_size == 0
    strategy.entry("Buy", strategy.long)

if strategy.position_size > 0
    longStopPrice := strategy.position_avg_price - stopLossDistance  
    longTakeProfitPrice := strategy.position_avg_price + takeProfitDistance  

    if enableStopLoss or enableTakeProfit
        strategy.exit("Sell/Exit", "Buy", stop=(enableStopLoss ? longStopPrice : na), limit=(enableTakeProfit ? longTakeProfitPrice : na))

if sellCondition
    strategy.close("Buy")  

// Hide lines when position is closed
stopLossToPlot = strategy.position_size > 0 ? longStopPrice : na
takeProfitToPlot = strategy.position_size > 0 ? longTakeProfitPrice : na

// Plot stop-loss and take-profit lines only when long positions are active
plot(enableStopLoss ? stopLossToPlot : na, title="Stop-Loss", color=color.yellow, linewidth=1, style=plot.style_linebr, offset=0, force_overlay=true) 
plot(enableTakeProfit ? takeProfitToPlot : na, title="Take-Profit", color=color.yellow, linewidth=1, style=plot.style_linebr, offset=0, force_overlay=true)

// Plot the MACD and candles

plot(normalizedMacd, "Normalized MACD", color=color.new(color.purple, 0), linewidth=1, display=display.all)

h0 = hline(80, "Upper Band", color=#787B86) 
hline(50, "Middle Band", color=color.new(#787B86, 50)) 
h1 = hline(20, "Lower Band", color=#787B86) 
fill(h0, h1, color=color.rgb(33, 150, 243, 90), title="Background")

// New candle based on the sum of differences
plotcandle(open=0, high=differenceTotal, low=0, close=differenceTotal, color=(differenceTotal > 0 ? color.new(color.green, 60) : color.new(color.red, 60)), title="K-D + MACD Candles")