Strategi Momentum Crossover RSI Rata-rata Bergerak Ganda dan Sistem Optimalisasi Risiko-Pengembalian

SMA RSI ATR RR
Tanggal Pembuatan: 2024-11-12 16:00:58 Akhirnya memodifikasi: 2024-11-12 16:00:58
menyalin: 3 Jumlah klik: 454
1
fokus pada
1617
Pengikut

Strategi Momentum Crossover RSI Rata-rata Bergerak Ganda dan Sistem Optimalisasi Risiko-Pengembalian

Ringkasan

Ini adalah strategi perdagangan kuantitatif yang menggabungkan crossover dua rata-rata, overbought dan oversold RSI, dan risk-to-reward ratio. Strategi ini menentukan arah tren pasar melalui persilangan rata-rata bergerak jangka pendek dan jangka panjang, sambil menggunakan indikator RSI untuk mengidentifikasi area overbought dan oversold, untuk pemfilteran sinyal perdagangan yang lebih akurat. Strategi ini juga mengintegrasikan pengaturan stop loss dinamis ATR dan sistem manajemen target profit-to-risk-to-reward ratio.

Prinsip Strategi

Strategi ini menggunakan dua rata-rata bergerak pada tanggal 9 dan 21 sebagai dasar penilaian tren, dan melakukan konfirmasi sinyal melalui area overbought overbought RSI ((3565)). Dalam kondisi masuk multihead, rata-rata jangka pendek diperlukan di atas rata-rata jangka panjang dan RSI berada di zona overbought di bawah ((35)); untuk masuk kosong, rata-rata jangka pendek diperlukan di bawah rata-rata jangka panjang dan RSI berada di zona overbought di atas ((65)). Strategi ini menggunakan 1,5 kali nilai ATR yang ditetapkan untuk stop loss, dan didasarkan pada 2: 1 risiko keuntungan dibandingkan keuntungan yang dihitung secara otomatis.

Keunggulan Strategis

  1. Sistem Multi-Signal Confirmation secara signifikan meningkatkan keandalan transaksi
  2. Pengaturan stop loss dinamis dapat disesuaikan dengan volatilitas pasar
  3. Rasio risiko-keuntungan tetap dapat membantu stabilitas keuntungan jangka panjang
  4. Pembatasan jangka waktu minimum efektif untuk menghindari overtrading
  5. Sistem penandaan visual untuk memfasilitasi pemantauan kebijakan dan analisis feedback
  6. Warna latar belakang berubah untuk menampilkan status posisi saat ini secara intuitif

Risiko Strategis

  1. Sistem Dual Equity dapat menghasilkan sinyal palsu di pasar yang bergoyang
  2. RSI mungkin melewatkan beberapa peluang perdagangan dalam tren yang kuat
  3. Rasio risiko-keuntungan tetap mungkin tidak cukup fleksibel dalam beberapa kondisi pasar
  4. ATR stop mungkin tidak cukup tepat waktu untuk mutasi volatilitas
  5. Waktu pemegang saham yang sangat singkat dapat menyebabkan kerugian yang tidak terjawab.

Arah optimasi strategi

  1. Memperkenalkan mekanisme pilihan siklus rata-rata yang beradaptasi, menyesuaikan dengan dinamika kondisi pasar
  2. Meningkatkan intensitas filter tren untuk meningkatkan kualitas sinyal
  3. Mengembangkan sistem risiko-keuntungan yang dinamis untuk menyesuaikan diri dengan kondisi pasar yang berbeda
  4. Integrasi indikator lalu lintas untuk meningkatkan keandalan sinyal
  5. Menambahkan modul analisis volatilitas pasar, mengoptimalkan pilihan waktu perdagangan
  6. Memperkenalkan algoritma pembelajaran mesin untuk mengoptimalkan pemilihan parameter

Meringkaskan

Strategi ini membangun sistem perdagangan yang relatif lengkap dengan kolaborasi dari beberapa indikator teknis. Strategi ini tidak hanya memperhatikan kualitas sinyal masuk, tetapi juga memperhatikan manajemen risiko dan penetapan tujuan keuntungan. Meskipun ada beberapa tempat yang perlu dioptimalkan, desain kerangka kerja secara keseluruhan masuk akal, dengan nilai praktis yang baik dan ruang untuk perluasan.

Kode Sumber Strategi
/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("JakeJohn", overlay=true)

// Input parameters
smaShortLength = input(9, title="Short SMA Length")
smaLongLength = input(21, title="Long SMA Length")
lengthRSI = input(14, title="RSI Length")
rsiOverbought = input(65, title="RSI Overbought Level")
rsiOversold = input(35, title="RSI Oversold Level")
riskRewardRatio = input(2, title="Risk/Reward Ratio") // 2:1
atrMultiplier = input(1.5, title="ATR Multiplier") // Multiplier for ATR to set stop loss

// Calculate indicators
smaShort = ta.sma(close, smaShortLength)
smaLong = ta.sma(close, smaLongLength)
rsi = ta.rsi(close, lengthRSI)
atr = ta.atr(14)

// Entry conditions
longCondition = (smaShort > smaLong) and (rsi < rsiOversold) // Buy when short SMA is above long SMA and RSI is oversold
shortCondition = (smaShort < smaLong) and (rsi > rsiOverbought) // Sell when short SMA is below long SMA and RSI is overbought

// Variables for trade management
var float entryPrice = na
var float takeProfit = na
var int entryBarIndex = na

// Entry logic for long trades
if (longCondition and (strategy.position_size == 0))
    entryPrice := close
    takeProfit := entryPrice + (entryPrice - (entryPrice - (atr * atrMultiplier))) * riskRewardRatio
    strategy.entry("Buy", strategy.long)
    entryBarIndex := bar_index // Record the entry bar index
    label.new(bar_index, high, "BUY", style=label.style_label_up, color=color.green, textcolor=color.white, size=size.small)

// Entry logic for short trades
if (shortCondition and (strategy.position_size == 0))
    entryPrice := close
    takeProfit := entryPrice - (entryPrice - (entryPrice + (atr * atrMultiplier))) * riskRewardRatio
    strategy.entry("Sell", strategy.short)
    entryBarIndex := bar_index // Record the entry bar index
    label.new(bar_index, low, "SELL", style=label.style_label_down, color=color.red, textcolor=color.white, size=size.small)

// Manage trade duration and exit after a minimum of 3 hours
if (strategy.position_size != 0)
    // Check if the trade has been open for at least 3 hours (180 minutes)
    if (bar_index - entryBarIndex >= 180) // 3 hours in 1-minute bars
        if (strategy.position_size > 0)
            strategy.exit("Take Profit Long", from_entry="Buy", limit=takeProfit)
        else
            strategy.exit("Take Profit Short", from_entry="Sell", limit=takeProfit)

// Background colors for active trades
var color tradeColor = na
if (strategy.position_size > 0)
    tradeColor := color.new(color.green, 90) // Light green for long trades
else if (strategy.position_size < 0)
    tradeColor := color.new(color.red, 90) // Light red for short trades
else
    tradeColor := na // No color when no trade is active

bgcolor(tradeColor, title="Trade Background")

// Plotting position tools
if (strategy.position_size > 0)
    // Plot long position tool
    strategy.exit("TP Long", limit=takeProfit)
    
if (strategy.position_size < 0)
    // Plot short position tool
    strategy.exit("TP Short", limit=takeProfit)

// Plotting indicators
plot(smaShort, color=color.green, title="Short SMA", linewidth=2)
plot(smaLong, color=color.red, title="Long SMA", linewidth=2)

// Visual enhancements for RSI
hline(rsiOverbought, "Overbought", color=color.red)
hline(rsiOversold, "Oversold", color=color.green)
plot(rsi, color=color.blue, title="RSI", linewidth=2)

// Ensure there's at least one plot function
plot(close, color=color.black, title="Close Price", display=display.none) // Hidden plot for compliance