Trend Riding RSI Swing Capture Strategy adalah strategi perdagangan swing yang menggabungkan RSI, MACD dan analisis volume untuk menangkap perubahan pasar.
Indikator inti dari strategi ini adalah RSI, MACD dan volume.
menilai apakah RSI telah memasuki zona overbought atau oversold untuk mengkonfirmasi pembalikan yang akan datang;
Menggunakan MACD golden crosses dan death crosses untuk menentukan tren harga dan perubahan momentum sebagai kondisi masuk tambahan;
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 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.
Tidak ada strategi perdagangan yang dapat sepenuhnya menghindari risiko pasar dan strategi ini tidak terkecuali.
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.
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.
Arah utama optimasi berdasarkan kerangka strategi saat ini:
Memperkenalkan algoritma pembelajaran mesin untuk mencapai pelacakan dinamis tingkat stop loss, menghindari risiko yang terkait dengan stop loss yang diambil;
Menggabungkan lebih banyak indikator filter seperti Bollinger Bands, KD untuk meningkatkan kualitas sinyal dan mengurangi perdagangan reverse yang tidak perlu;
Mengoptimalkan strategi pengelolaan modal dengan menyesuaikan ukuran posisi secara dinamis, memungkinkan kontrol yang lebih baik atas dampak peristiwa mendadak;
Memanfaatkan analisis data canggih untuk secara otomatis menemukan parameter optimal, mengurangi beban kerja pengujian manual;
Menggabungkan sinyal transaksi berdasarkan aliran pesanan, memanfaatkan data pasar tingkat yang lebih dalam untuk meningkatkan efektivitas strategi.
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)