RSI Breakout adalah strategi perdagangan kuantitatif berdasarkan Indeks Kekuatan Relatif (RSI). Strategi ini menghasilkan isyarat perdagangan apabila RSI memecahkan had harga overbought dan oversold yang telah ditetapkan, iaitu pergi panjang apabila RSI di bawah 30 dan pergi pendek apabila RSI di atas 70.
Idea utama strategi RSI adalah untuk menggunakan penunjuk RSI untuk menentukan keadaan overbought dan oversold di pasaran. RSI mengira nisbah keuntungan dan kerugian harga purata dalam tempoh masa untuk mencerminkan kekuatan atau kelemahan saham baru-baru ini. Secara amnya, RSI di bawah 30 dianggap oversold dan RSI di atas 70 dianggap overbought.
Strategi ini mula-mula menetapkan nilai ambang oversold dan overbought untuk RSI, dengan nilai lalai 30 dan 70. Ia kemudian memantau garis RSI dalam masa nyata. Apabila RSI melintasi di bawah ambang 70 dari atas ke bawah, isyarat jual dihasilkan. Ini menunjukkan pasaran telah memasuki zon overbought dan mungkin akan berbalik ke bawah, jadi kedudukan pendek diambil. Sebaliknya, apabila RSI melanggar ambang 30, isyarat beli dihasilkan, menunjukkan pasaran oversold mungkin akan bangkit kembali, jadi kedudukan panjang diambil.
Dengan cara ini, strategi ini cuba menangkap titik pembalikan harga semasa turun naik stok dan menyesuaikan kedudukan dengan sewajarnya untuk
Strategi RSI breakout mempunyai kelebihan berikut:
Isyarat perdagangan yang mudah dan jelas. Indikator RSI mudah dikira dan ditafsirkan dengan hanya memerhatikan jika garis indikator melanggar nilai ambang. Dagangan boleh diambil dengan segera apabila isyarat berlaku tanpa peraturan yang rumit.
Perdagangan dihasilkan oleh penunjuk RSI tanpa campur tangan manusia. Pada masa yang sama, isyarat RSI overbought dan oversold cenderung berkesan, yang membawa kepada pulangan strategi yang baik dalam backtest.
Pedagang boleh menyesuaikan parameter RSI dengan fleksibel seperti ambang overbought / oversold untuk menyesuaikan diri dengan dinamik saham dan pasaran yang berbeza.
Strategi RSI juga membawa beberapa risiko:
Cenderung kepada whipsaws. persilangan kerap nilai ambang penunjuk boleh membawa kepada perdagangan yang tidak berkesan yang berlebihan, menghalang keuntungan yang stabil. Parameter boleh disesuaikan untuk menapis beberapa isyarat whippy.
Tidak ada penilaian trend. RSI hanya menghasilkan isyarat berdasarkan tahap overbought / oversold tanpa menilai trend keseluruhan dengan baik. Strategi ini cenderung terjebak dalam pasaran yang bergolak. Penapis trend boleh ditambah untuk mengelakkan perdagangan kontra-trend.
Risiko penarikan yang tinggi. RSI sering menunjukkan perbezaan menaik di mana harga terus naik sementara RSI cenderung turun. Perdagangan pendek akan menghadapi kerugian besar dalam kes sedemikian.
RSI breakout strategi boleh ditingkatkan dengan cara berikut:
Menggabungkan beberapa penunjuk untuk mengatasi batasan RSI, contohnya purata bergerak untuk menentukan trend pasaran, penunjuk kekuatan dan penapis jumlah untuk mengesahkan isyarat.
Mengoptimumkan parameter RSI untuk kestabilan yang lebih tinggi, termasuk menyesuaikan ambang overbought / oversold, menetapkan penapis tempoh isyarat dll melalui ujian yang ketat. Ini menapis isyarat yang tidak berkesan.
Melaksanakan stop loss dan mengambil keuntungan untuk mengawal risiko. Sebagai contoh, tetapkan peratusan atau titik berhenti. Elakkan kerugian perdagangan tunggal yang terlalu besar pada keuntungan keseluruhan. Juga pertimbangkan trend dan titik teknikal untuk mengambil keuntungan.
RSI breakout adalah strategi kuantitatif pembalikan purata berdasarkan isyarat overbought dan oversold. Ia mempunyai isyarat yang mudah dan jelas, keupayaan automasi penuh dan penyesuaian yang tinggi tetapi mengalami risiko whipsaw dan penarikan. Dengan mengoptimumkan dengan kombinasi penunjuk dan kawalan risiko, ia boleh disesuaikan ke dalam strategi yang stabil.
/*backtest start: 2023-11-21 00:00:00 end: 2023-12-21 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // @version=4 // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Bunghole 2021 strategy(title="My New Strategy", initial_capital = 100000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0, currency = 'USD', overlay=true) //// Stoploss and Take Profit Parameters // Enable Long Strategy enable_long_strategy = input(true, title="Enable Long Strategy", group="SL/TP For Long Strategy",inline="1") long_stoploss_value = input(defval=50, title='Stoploss %', type=input.float, minval=0.1, group="SL/TP For Long Strategy",inline="2") long_stoploss_percentage = (close * (long_stoploss_value / 100)) / syminfo.mintick long_takeprofit_value = input(defval=50, title='Take Profit %', type=input.float, minval=0.1, group="SL/TP For Long Strategy",inline="2") long_takeprofit_percentage = (close * (long_takeprofit_value / 100)) / syminfo.mintick // Enable Short Strategy enable_short_strategy = input(true, title="Enable Short Strategy", group="SL/TP For Short Strategy",inline="3") short_stoploss_value = input(defval=50, title='Stoploss %', type=input.float, minval=0.1, group= "SL/TP For Short Strategy",inline="4") short_stoploss_percentage = (close * (short_stoploss_value / 100)) / syminfo.mintick short_takeprofit_value = input(defval=50, title='Take Profit %', type=input.float, minval=0.1, group="SL/TP For Short Strategy",inline="4") short_takeprofit_percentage = (close * (short_takeprofit_value / 100)) / syminfo.mintick // Plot Stoploss & Take Profit Levels long_stoploss_price = strategy.position_avg_price * (1 - long_stoploss_value/100) long_takeprofit_price = strategy.position_avg_price * (1 + long_takeprofit_value/100) short_stoploss_price = strategy.position_avg_price * (1 + short_stoploss_value/100) short_takeprofit_price = strategy.position_avg_price * (1 - short_takeprofit_value/100) plot(enable_long_strategy and not enable_short_strategy ? long_stoploss_price: na, color=#ff0000, style=plot.style_linebr, linewidth=2, title="Long SL Level") plot(enable_long_strategy and not enable_short_strategy ? long_takeprofit_price: na, color=#008000, style=plot.style_linebr, linewidth=2, title="Long TP Level") plot(enable_short_strategy and not enable_long_strategy ? short_stoploss_price: na, color=#ff0000, style=plot.style_linebr, linewidth=2, title="Short SL Level") plot(enable_short_strategy and not enable_long_strategy ? short_takeprofit_price: na, color=#008000, style=plot.style_linebr, linewidth=2, title="Short TP Level") // Date Range start_date = input(title="Start Date", type=input.integer, defval=1, minval=1, maxval=31, group="Date Range") start_month = input(title="Start Month", type=input.integer, defval=1, minval=1, maxval=12, group="Date Range") start_year = input(title="Start Year", type=input.integer, defval=1804, minval=1800, maxval=3000, group="Date Range") end_date = input(title="End Date", type=input.integer, defval=1, minval=1, maxval=3, group="Date Range") end_month = input(title="End Month", type=input.integer, defval=1, minval=1, maxval=12, group="Date Range") end_year = input(title="End Year", type=input.integer, defval=2077, minval=1800, maxval=3000, group="Date Range") in_date_range = (time >= timestamp(syminfo.timezone, start_year, start_month, start_date, 0, 0)) and (time < timestamp(syminfo.timezone, end_year, end_month, end_date, 0, 0)) //// Inputs **This is where you enter your indicators for your strategy. For example, I added the RSI indicator.** //RSI rsi = rsi(close, 14) rsi_over_sold = rsi < 30 rsi_over_bought = rsi > 70 //// Strategy **This is where you create your strategy. For example, We have or buy and sell signals.** // Creating Long and Short Strategy buy_signal = rsi_over_sold sell_signal = rsi_over_bought // Long Strategy if buy_signal and in_date_range and enable_long_strategy == true strategy.entry("Long", true, when=buy_signal, alert_message="Open Long Position") strategy.exit("Long SL/TP", from_entry="Long", loss=long_stoploss_percentage, profit=long_takeprofit_percentage, alert_message="Your Long SL/TP Limit As Been Triggered.") strategy.close("Long", when=sell_signal, alert_message="Close Long Position") // Short Strategy if sell_signal and in_date_range and enable_short_strategy == true strategy.entry("Short", false, when = sell_signal, alert_message="Open Short Position") strategy.exit("Short SL/TP", from_entry="Short", loss=short_stoploss_percentage, profit=short_takeprofit_percentage, alert_message="Your Short SL/TP Limit As Been Triggered.") strategy.close("Short", when=buy_signal, alert_message="Close Short Position")