Trend Riding RSI Swing Capture Strategi

Penulis:ChaoZhang, Tanggal: 2024-02-04 10:48:38
Tag:

img

Gambaran umum

Trend Riding RSI Swing Capture Strategy adalah strategi perdagangan swing yang menggabungkan RSI, MACD dan analisis volume untuk menangkap perubahan pasar.

Prinsip-prinsip

Indikator inti dari strategi ini adalah RSI, MACD dan volume.

  1. menilai apakah RSI telah memasuki zona overbought atau oversold untuk mengkonfirmasi pembalikan yang akan datang;

  2. Menggunakan MACD golden crosses dan death crosses untuk menentukan tren harga dan perubahan momentum sebagai kondisi masuk tambahan;

  3. Manfaatkan volume breakout untuk mengidentifikasi breakout yang benar dan menghindari sinyal palsu.

Sinyal perdagangan hanya dihasilkan ketika ketiga kondisi tersebut terpenuhi secara bersamaan. Arah panjang atau pendek tergantung pada arah price breakout. Hal ini secara efektif menyaring out breakout palsu dan meningkatkan keandalan sinyal.

Keuntungan

Keuntungan terbesar dari strategi ini terletak pada manajemen risiko yang sangat baik. Aturan manajemen modal yang ketat seperti stop loss bergerak, stop loss tetap, ukuran perdagangan tetap ditetapkan untuk secara efektif mengendalikan risiko perdagangan individu dan memastikan keamanan modal. Selain itu, strategi ini juga menggabungkan volume untuk menyaring keluar breakout palsu dan menghindari perdagangan terbalik yang tidak perlu. Oleh karena itu, strategi ini dapat mencapai keuntungan yang stabil terlepas dari kondisi pasar.

Risiko

Tidak ada strategi perdagangan yang dapat sepenuhnya menghindari risiko pasar dan strategi ini tidak terkecuali.

  1. Stop loss yang diambil. Di bawah kondisi pasar yang ekstrim, harga dapat berfluktuasi tajam dalam sekejap. Jika level stop loss secara langsung ditembus, kerugian besar akan terjadi.

  2. Pengaturan parameter yang tidak benar. Pengaturan parameter RSI, MACD yang tidak benar dapat menyebabkan kualitas sinyal memburuk dan sinyal yang terlalu salah.

Sebagai tanggapan terhadap risiko di atas, mitigasi termasuk mengoptimalkan algoritma stop loss dengan memperkenalkan pelacakan stop loss dll; sementara itu, pengujian dan optimalisasi berulang kali harus dilakukan pada parameter kunci untuk memastikan stabilitas dan keandalan.

Arahan Optimasi

Arah utama optimasi berdasarkan kerangka strategi saat ini:

  1. Memperkenalkan algoritma pembelajaran mesin untuk mencapai pelacakan dinamis tingkat stop loss, menghindari risiko yang terkait dengan stop loss yang diambil;

  2. Menggabungkan lebih banyak indikator filter seperti Bollinger Bands, KD untuk meningkatkan kualitas sinyal dan mengurangi perdagangan reverse yang tidak perlu;

  3. Mengoptimalkan strategi pengelolaan modal dengan menyesuaikan ukuran posisi secara dinamis, memungkinkan kontrol yang lebih baik atas dampak peristiwa mendadak;

  4. Memanfaatkan analisis data canggih untuk secara otomatis menemukan parameter optimal, mengurangi beban kerja pengujian manual;

  5. Menggabungkan sinyal transaksi berdasarkan aliran pesanan, memanfaatkan data pasar tingkat yang lebih dalam untuk meningkatkan efektivitas strategi.

Kesimpulan

Ringkasnya, Strategi Trend Riding RSI Swing Capture adalah strategi perdagangan jangka pendek yang sangat praktis. Strategi ini memperhitungkan tren harga dan skenario overbought/oversold, dan dengan penyaringan volume, membentuk sistem perdagangan yang relatif stabil. Di bawah kontrol risiko yang ketat, strategi ini dapat mencapai keuntungan yang stabil di berbagai kondisi pasar, sehingga layak untuk penelitian dan praktik yang mendalam bagi investor.


/*backtest
start: 2024-01-04 00:00:00
end: 2024-02-03 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// SwingSync RSI Strategy
// This strategy combines RSI, MACD, and volume analysis to capture swing trading opportunities.
// It includes risk management features to protect your capital.
// Adjust the input parameters and backtest to optimize performance.// This Pine Scriptâ„¢ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © str0zzapreti

//@version=5
strategy('SwingSync RSI', overlay=true)
// Adjustable Parameters
// var custom_message = input.string('', title='Symbol')
ma_period = input.int(20, title='Moving Average Period')
stop_loss_percent = input.float(1, title='STOP LOSS (%)',step=0.1)
macd_fast_length = input(12, title='MACD Fast Length')
macd_slow_length = input(26, title='MACD Slow Length')
macd_signal_smoothing = input(9, title='MACD Signal Smoothing')
rsi_period = input(14, title='RSI Period')
rsi_overbought = input(70, title='RSI OVERBOUGHT LEVEL')
rsi_oversold = input(30, title='RSI OVERSOLD LEVEL')
volume_ma_period = input(20, title="Volume MA Period")
volume_threshold_percent = input(50, title="Volume Threshold (%)")
slippage = 0.5
risk_per_trade = input(1, title='Risk per Trade (%)')

// Calculating Indicators *
price = close
ma = ta.sma(price, ma_period)
rsi = ta.rsi(price, rsi_period)
vol_ma = ta.sma(volume, volume_ma_period)
[macdLine, signalLine, _] = ta.macd(price, macd_fast_length, macd_slow_length, macd_signal_smoothing)
volume_threshold = vol_ma * (1 + volume_threshold_percent / 100)

// Definitions
volumeCheck = volume > volume_threshold
longRsiCheck = rsi < rsi_overbought
longMovAvgCross = ta.crossover(price, ma)
longMovAvgCheck = price > ma
longMacdCross = ta.crossover(macdLine, signalLine)
longMacdCheck = macdLine > signalLine
shortRsiCheck = rsi > rsi_oversold
shortMovAvgCross = ta.crossunder(price, ma)
shortMovAvgCheck = price < ma
shortMacdCross = ta.crossunder(macdLine, signalLine)
shortMacdCheck = macdLine < signalLine

// Entry Conditions for Long and Short Trades
longCondition = volumeCheck and longRsiCheck and ((longMovAvgCross and longMacdCheck) or (longMacdCross and longMovAvgCheck)) 
shortCondition = volumeCheck and shortRsiCheck and  ((shortMovAvgCross and shortMacdCheck) or (shortMacdCross and shortMovAvgCheck)) 

// Tracking Last Trade Day
var int last_trade_day = na

if longCondition or shortCondition
    last_trade_day := dayofweek

// Calculate can_exit_trade based on day difference
can_exit_trade = dayofweek != last_trade_day

// Entry Orders
var float max_qty_based_on_equity = na
var float qty = na

if longCondition
    max_qty_based_on_equity := strategy.equity / price
    qty := (strategy.equity * risk_per_trade / 100) / price
    if qty > max_qty_based_on_equity
        qty := max_qty_based_on_equity
    strategy.entry('Long', strategy.long, 1)

if shortCondition
    max_qty_based_on_equity := strategy.equity / price
    qty := (strategy.equity * risk_per_trade / 100) / price
    if qty > max_qty_based_on_equity
        qty := max_qty_based_on_equity
    strategy.entry('Short', strategy.short, 1)

// Exit Conditions
exitLongCondition = ta.crossunder(price, ma) or rsi > rsi_overbought
exitShortCondition = ta.crossover(price, ma) or rsi < rsi_oversold

// Calculate take profit and stop loss levels
stopLossLevelLong = strategy.position_avg_price * (1 - stop_loss_percent / 100)
stopLossLevelShort = strategy.position_avg_price * (1 + stop_loss_percent / 100)

// Adjust for slippage
adjusted_stop_loss_long = stopLossLevelLong * (1 + slippage / 100)
adjusted_stop_loss_short = stopLossLevelShort * (1 - slippage / 100)

// Strategy Exit Orders for Long Positions
if strategy.position_size > 0 and can_exit_trade
    if (close < adjusted_stop_loss_long)
        strategy.close('Long', comment='Stop Loss Long')
    if exitLongCondition
        strategy.close('Long', comment='Exit Long')

// Strategy Exit Orders for Short Positions
if strategy.position_size < 0 and can_exit_trade
    if (close > adjusted_stop_loss_short)
        strategy.close('Short', comment='Stop Loss Short')
    if exitShortCondition
        strategy.close('Short', comment='Exit Short')

plot(ma)


Lebih banyak