Trend Riding RSI Swing Capture Strategi

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

img

Ringkasan

Strategi Penangkapan Swing RSI Trend Riding adalah strategi perdagangan swing yang menggabungkan RSI, MACD dan analisis jumlah untuk menangkap perubahan pasaran. Ia mengenal pasti tahap sokongan dalam trend pasaran dan mengambil kedudukan kontra-tren apabila senario overbought atau oversold muncul, untuk membeli rendah dan menjual tinggi.

Prinsip-prinsip

Indikator teras strategi ini ialah RSI, MACD dan jumlah.

  1. Menilai sama ada RSI telah memasuki zon overbought atau oversold untuk mengesahkan pembalikan yang akan datang;

  2. Menggunakan salib emas MACD dan salib kematian untuk menentukan trend harga dan perubahan momentum sebagai syarat kemasukan tambahan;

  3. Memanfaatkan penembusan jumlah untuk mengenal pasti penembusan sebenar dan mengelakkan isyarat palsu.

Isyarat perdagangan dihasilkan hanya apabila ketiga-tiga syarat dipenuhi secara serentak. Arah panjang atau pendek bergantung pada arah harga pecah. Ini berkesan menapis keluar pecah palsu dan meningkatkan kebolehpercayaan isyarat.

Kelebihan

Kelebihan terbesar strategi ini terletak pada pengurusan risiko yang sangat baik. Peraturan pengurusan modal yang ketat seperti stop loss bergerak, stop loss tetap, saiz perdagangan tetap ditetapkan untuk mengawal risiko dagangan individu dengan berkesan dan memastikan keselamatan modal. Di samping itu, strategi ini juga menggabungkan jumlah untuk menapis pecah palsu dan mengelakkan dagangan terbalik yang tidak perlu. Oleh itu, strategi ini dapat mencapai keuntungan yang stabil tanpa mengira keadaan pasaran.

Risiko

Tidak ada strategi dagangan yang dapat mengelakkan risiko pasaran sepenuhnya dan strategi ini tidak terkecuali.

  1. Dalam keadaan pasaran yang melampau, harga boleh turun naik secara mendadak. Jika tahap stop loss ditembusi secara langsung, kerugian besar akan timbul.

  2. Tetapan parameter yang tidak betul. Tetapan parameter RSI, MACD yang tidak betul boleh menyebabkan kualiti isyarat merosot dan isyarat yang salah berlebihan.

Sebagai tindak balas kepada risiko di atas, mitigasi termasuk mengoptimumkan algoritma stop loss dengan memperkenalkan penjejakan stop loss dan lain-lain; sementara itu, pengujian dan pengoptimuman berulang kali perlu dilakukan pada parameter utama untuk memastikan kestabilan dan kebolehpercayaan.

Arahan pengoptimuman

Arah pengoptimuman utama berdasarkan rangka strategi semasa:

  1. Memperkenalkan algoritma pembelajaran mesin untuk mencapai penjejakan dinamik tahap stop loss, mengelakkan risiko yang berkaitan dengan stop loss yang diambil;

  2. Memasukkan lebih banyak penapis penunjuk seperti Bollinger Bands, KD untuk meningkatkan kualiti isyarat dan mengurangkan perdagangan terbalik yang tidak perlu;

  3. Mengoptimumkan strategi pengurusan modal dengan menyesuaikan saiz kedudukan secara dinamik, membolehkan kawalan yang lebih baik terhadap kesan peristiwa mendadak;

  4. Memanfaatkan analisis data canggih untuk mencari parameter optimum secara automatik, mengurangkan beban kerja ujian manual;

  5. Menggabungkan isyarat urus niaga berdasarkan aliran pesanan, memanfaatkan data pasaran peringkat yang lebih mendalam untuk meningkatkan keberkesanan strategi.

Kesimpulan

Ringkasnya, Strategi Penangkapan Swing Trend Riding RSI adalah strategi perdagangan jangka pendek yang sangat praktikal. Ia mengambil kira kedua-dua trend harga dan senario overbought / oversold, dan dengan penapisan jumlah, membentuk sistem perdagangan yang agak stabil. Di bawah kawalan risiko yang ketat, strategi ini dapat mencapai keuntungan yang stabil dalam pelbagai keadaan pasaran, menjadikan dirinya layak untuk penyelidikan dan amalan mendalam untuk pelabur.


/*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 lanjut