Strategi silang berbilang penunjuk adaptif dinamik digabungkan dengan sistem kawalan risiko pintar SRSI dan MACD

RSI SRSI MACD ATR
Tarikh penciptaan: 2025-02-20 13:07:37 Akhirnya diubah suai: 2025-02-27 17:44:09
Salin: 1 Bilangan klik: 329
2
fokus pada
319
Pengikut

Strategi silang berbilang penunjuk adaptif dinamik digabungkan dengan sistem kawalan risiko pintar SRSI dan MACD Strategi silang berbilang penunjuk adaptif dinamik digabungkan dengan sistem kawalan risiko pintar SRSI dan MACD

Gambaran keseluruhan

Strategi ini adalah sistem perdagangan dinamik yang menggabungkan indikator acak yang agak kuat ((SRSI) dan indikator pergerakan rata-rata trend / penyebaran ((MACD)). Ia secara dinamik menyesuaikan titik-titik berhenti dan titik-titik berhenti melalui indikator ATR, mewujudkan pengurusan risiko yang cerdas. Inti strategi ini adalah untuk menghasilkan isyarat perdagangan melalui pengesahan silang pelbagai indikator teknikal, sambil menguruskan kedudukan yang berkaitan dengan turun naik pasaran.

Prinsip Strategi

Strategi ini adalah berdasarkan kepada beberapa mekanisme utama:

  1. Perbezaan antara garis K dan garis D dalam SRSI, dan perbezaan antara garis K dan MACD yang direduksi untuk menentukan pergerakan pasaran
  2. Syarat pembelian perlu dipenuhi pada masa yang sama: perbezaan K-D adalah positif, perbezaan K-MACD adalah positif, dan MACD tidak berada dalam trend menurun
  3. Syarat menjual perlu dipenuhi pada masa yang sama: K-D adalah negatif, K-MACD adalah negatif, dan MACD tidak dalam trend naik
  4. Menggunakan ATR kalikan dengan faktor risiko untuk mengira jarak berhenti dan berhenti secara dinamik, menyesuaikan diri dengan turun naik pasaran

Kelebihan Strategik

  1. Mekanisme pengesahan pelbagai isyarat meningkatkan kebolehpercayaan dagangan dengan ketara, mengelakkan isyarat palsu yang mungkin dibawa oleh satu petunjuk
  2. Tetapan stop loss yang dinamik dapat disesuaikan secara automatik dengan turun naik pasaran, memberikan nisbah risiko-keuntungan yang lebih baik
  3. Strategi mempunyai kebolehsuaian yang baik dan dapat mengekalkan prestasi yang stabil dalam keadaan pasaran yang berbeza
  4. Parameter yang boleh laras, membolehkan peniaga untuk mengoptimumkan mengikut pilihan risiko peribadi

Risiko Strategik

  1. Terlalu banyak isyarat dagangan yang mungkin dihasilkan dalam pasaran yang bergolak, menyebabkan masuk dan keluar pasaran yang kerap
  2. Penggunaan pelbagai petunjuk boleh menyebabkan isyarat terlewat, kehilangan peluang terbaik untuk memasuki pasaran yang berubah dengan cepat
  3. ATR berdasarkan kepada kadar turun naik sejarah dan mungkin tidak dapat disesuaikan dengan kadar turun naik pasaran
  4. Perlu menetapkan faktor risiko yang munasabah, terlalu besar atau terlalu kecil boleh mempengaruhi keberkesanan strategi

Arah pengoptimuman strategi

  1. Menambah penapis trend, menggunakan kriteria pengesahan isyarat yang berbeza di pasaran goyah dan pasaran trend
  2. Memperkenalkan penunjuk jumlah lalu lintas sebagai pengesahan tambahan untuk meningkatkan kebolehpercayaan isyarat
  3. Kaedah pengiraan untuk mengoptimumkan stop loss yang boleh dipertimbangkan dengan sokongan resistance
  4. Menambah model ramalan kadar turun naik pasaran, menyesuaikan parameter risiko lebih awal
  5. Pertimbangkan untuk mengesahkan isyarat pada kitaran masa yang berbeza untuk meningkatkan kestabilan strategi

ringkaskan

Strategi ini membina sistem perdagangan yang mantap dengan menggabungkan kelebihan SRSI dan MACD. Mekanisme pengurusan risiko dinamik menjadikannya beradaptasi dengan baik, tetapi masih memerlukan pengurus untuk mengoptimumkan parameter berdasarkan keadaan pasaran sebenar.

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