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.
Indikator teras strategi ini ialah RSI, MACD dan jumlah.
Menilai sama ada RSI telah memasuki zon overbought atau oversold untuk mengesahkan pembalikan yang akan datang;
Menggunakan salib emas MACD dan salib kematian untuk menentukan trend harga dan perubahan momentum sebagai syarat kemasukan tambahan;
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 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.
Tidak ada strategi dagangan yang dapat mengelakkan risiko pasaran sepenuhnya dan strategi ini tidak terkecuali.
Dalam keadaan pasaran yang melampau, harga boleh turun naik secara mendadak. Jika tahap stop loss ditembusi secara langsung, kerugian besar akan timbul.
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.
Arah pengoptimuman utama berdasarkan rangka strategi semasa:
Memperkenalkan algoritma pembelajaran mesin untuk mencapai penjejakan dinamik tahap stop loss, mengelakkan risiko yang berkaitan dengan stop loss yang diambil;
Memasukkan lebih banyak penapis penunjuk seperti Bollinger Bands, KD untuk meningkatkan kualiti isyarat dan mengurangkan perdagangan terbalik yang tidak perlu;
Mengoptimumkan strategi pengurusan modal dengan menyesuaikan saiz kedudukan secara dinamik, membolehkan kawalan yang lebih baik terhadap kesan peristiwa mendadak;
Memanfaatkan analisis data canggih untuk mencari parameter optimum secara automatik, mengurangkan beban kerja ujian manual;
Menggabungkan isyarat urus niaga berdasarkan aliran pesanan, memanfaatkan data pasaran peringkat yang lebih mendalam untuk meningkatkan keberkesanan strategi.
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)