Strategi ini berdasarkan idea klasik Larry Connors, menggunakan sistem purata bergerak berganda untuk menangkap goyangan jangka menengah pasaran dan mengambil keuntungan apabila ia terlalu banyak dibeli atau terlalu banyak dijual.
Gunakan RSI 2 tempoh untuk menentukan sama ada harga berada di kawasan oversold.
Gunakan purata bergerak jangka panjang (200 tempoh) untuk menentukan arah trend utama.
Apabila harga di atas MA panjang dan RSI di bawah garisan oversold, buka kedudukan panjang pada harga pasaran.
Apabila harga memecahkan tempoh MA pendek (5 tempoh) ke atas, tutup kedudukan panjang pada harga pasaran untuk mengambil keuntungan.
Di samping itu, strategi menyediakan pilihan konfigurasi berikut:
Parameter RSI: panjang tempoh, tahap overbought/oversold.
Parameter MA: tempoh panjang dan pendek.
RSI MA penapis: tambah RSI MA untuk mengelakkan turun naik RSI.
Stop loss: boleh dikonfigurasi untuk menambah stop loss atau tidak.
Sistem MA berganda dapat menjejaki trend jangka sederhana dan panjang dengan berkesan.
RSI mengelakkan kehilangan masa kemasukan terbaik semasa turun naik yang ganas.
Konfigurasi fleksibel yang sesuai untuk pengoptimuman parameter.
Strategi terobosan, tidak mungkin terlepas isyarat.
Strategi MA berganda sensitif kepada parameter, yang memerlukan pengoptimuman untuk mencapai prestasi terbaik.
Tiada stop loss membawa risiko peningkatan kerugian.
Pengepungan palsu berisiko kerugian dalam pasaran berayun.
Backtest risiko overfit. memerlukan pengesahan di pasaran dan tempoh masa.
Uji dan optimumkan gabungan parameter RSI dan MA untuk mencari optimum.
Uji penapis kemasukan tambahan seperti lonjakan kelantangan untuk mengurangkan isyarat palsu.
Tambah kerugian hentian untuk mengawal kerugian perdagangan tunggal.
Menilai kesan tempoh penahan yang berbeza untuk mencari yang optimum.
Uji ketahanan dalam jangka masa yang lebih lama seperti setiap hari.
Strategi ini menggabungkan penjejakan trend MA berganda dan RSI overbought / oversold untuk membentuk sistem pecah biasa. Dengan pengoptimuman parameter, pengurusan risiko yang ketat dan pengesahan ketahanan, ia boleh menjadi alat perdagangan kuantitatif yang kuat. Tetapi peniaga harus berhati-hati terhadap overfit backtest dan terus meningkatkan strategi untuk menyesuaikan diri dengan keadaan pasaran yang berubah.
/*backtest start: 2023-09-26 00:00:00 end: 2023-10-26 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("RSI Strategy", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100) //Starter Parameters length = input(title="RSI Lenght", defval=2) overBoughtRSI = input(title="OverBought Level for RSI", defval=10) shortLength = input(title="Short MA Length", defval=5) longLength = input(title="Long MA Length", defval=200) RuleMRSI=input(title="RSI Moving Average Filter", defval= true) lengthmrsi=input(title="RSI Moving Average Length", defval=4) overBoughtMRSI=input(title="OverBought Level for the Moving Average of the RSI", defval=30) Rulestop=input(title="Apply Stop Loss", defval=false) stop_percentual=input(title="% Stop Loss", defval=10) //RSI vrsi = rsi(close, length) //Moving Averages longma = sma(close,longLength) shortma = sma(close,shortLength) mrsi=sma(vrsi,lengthmrsi) //Stop Loss stop_level = strategy.position_avg_price*((100-stop_percentual)/100) //Backtest Period testStartYear = input(2009, "Backtest Start Year") testStartMonth = input(1, "Backtest Start Month") testStartDay = input(2, "Backtest Start Day") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0) testStopYear = input(2020, "Backtest Stop Year") testStopMonth = input(12, "Backtest Stop Month") testStopDay = input(30, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0) testPeriod() => true //Strategy if testPeriod() and (not na(vrsi)) if (RuleMRSI==false) and (Rulestop==false) if (vrsi<overBoughtRSI) and (close>longma) strategy.entry("RsiLE", strategy.long , comment="Open") if (close>shortma) strategy.close_all() if (RuleMRSI==true) and (Rulestop==false) if (vrsi<overBoughtRSI) and (close>longma) and (mrsi<overBoughtMRSI) strategy.entry("RsiLE", strategy.long , comment="Open") if (close>shortma) strategy.close_all() if (RuleMRSI==false) and (Rulestop==true) if (vrsi<overBoughtRSI) and (close>longma) strategy.entry("RsiLE", strategy.long , comment="Open") strategy.exit("RsiLE", stop = stop_level) if (close>shortma) strategy.close_all() if (RuleMRSI==true) and (Rulestop==true) if (vrsi<overBoughtRSI) and (close>longma) and (mrsi<overBoughtMRSI) strategy.entry("RsiLE", strategy.long , comment="Open") strategy.exit("RsiLE", stop = stop_level) if (close>shortma) strategy.close_all()