Strategi RSI Breakout adalah strategi perdagangan kuantitatif yang didasarkan pada indikator relatif kuat (RSI). Strategi ini menghasilkan sinyal perdagangan ketika RSI menembus batas tersebut dengan menetapkan titik terendah RSI di atas zona beli dan zona jual, yaitu melakukan perdagangan lebih tinggi jika RSI berada di bawah 30 dan lebih rendah jika RSI berada di atas 70.
Gagasan utama dari strategi RSI Breakthrough adalah menggunakan indikator RSI untuk menilai fenomena overbought dan oversold di pasar. RSI mencerminkan kekuatan dan kelemahan saham baru-baru ini dengan menghitung rasio kenaikan rata-rata dan penurunan rata-rata saham dalam jangka waktu tertentu. Secara umum, RSI di bawah 30 dianggap sebagai oversold, dan di atas 70 dianggap sebagai oversold.
Strategi ini pertama-tama mengatur garis oversell dan overbought RSI, default 30 dan 70. Kemudian memantau secara real-time operasi garis RSI. Ketika RSI dari atas ke bawah menembus 70 ini, sinyal jual dihasilkan. Saat ini, pasar telah masuk ke zona overbought, dan diharapkan kemungkinan besar akan kembali ke puncak, sehingga mengambil tindakan untuk menjual posisi. Sebaliknya, ketika RSI dari bawah ke atas menembus 30 ini, menghasilkan sinyal beli.
Dengan cara ini, strategi ini mencoba untuk menangkap titik balik harga di saat saham berfluktuasi, dan menyesuaikan posisi dengan tepat waktu ketika terjadi overbought dan oversold, sehingga harga saham naik atau turun.
Strategi RSI Breakthrough memiliki keuntungan sebagai berikut:
Sinyal operasi sederhana dan jelas. Indikator RSI mudah dihitung dan dimengerti, hanya perlu melihat batas atas dan bawah dari ambang batas yang ditetapkan untuk menerobos garis indikatornya.
Strategi ini menarik sinyal perdagangan dari indikator RSI, tanpa intervensi dan penilaian manusia, dapat dengan mudah melakukan perdagangan otomatis. Sementara itu, sinyal overbought oversold RSI lebih efektif, strategi feedback juga menunjukkan keuntungan yang signifikan.
Kustomisasi yang kuat. Pedagang dapat secara fleksibel menyesuaikan parameter RSI, seperti penyesuaian nilai overbought dan oversold, agar sesuai dengan karakteristik saham dan pasar yang berbeda.
Strategi RSI juga memiliki beberapa risiko, yang meliputi:
Whipsaw mudah terbentuk. Ketika indikator bergetar ke atas atau ke bawah, akan sering memicu sinyal perdagangan yang pecah. Saat ini strategi akan menghasilkan terlalu banyak perdagangan yang tidak efektif, yang tidak menguntungkan untuk mendapatkan keuntungan yang stabil. Parameter dapat disesuaikan dengan tepat, memfilter beberapa sinyal getaran.
Tidak dapat menilai tren pasar. RSI hanya menghasilkan sinyal perdagangan dari keadaan overbought oversold, kemampuan penilaian tren besar lemah. Strategi mudah terjebak dalam situasi goyah. Dapat bekerja sama dengan indikator tren untuk memfilter, menghindari perdagangan berlawanan.
RSI sering menunjukkan perilaku menyimpang dari beberapa arah, yaitu harga terus naik dan indikator RSI turun. Saat ini, strategi untuk berjalan dengan arah kosong dan menyimpang dari tren besar, akan menghadapi kerugian besar.
Strategi penembusan RSI dapat dioptimalkan dari dimensi berikut:
Pertimbangkan beberapa indikator secara komprehensif, menghindari keterbatasan satu indikator RSI. Misalnya, kombinasi indikator rata-rata bergerak untuk menilai tren pasar, atau menggunakan indikator kuat, indikator volume transaksi untuk kombinasi filter sinyal perdagangan.
Optimalkan parameter RSI untuk meningkatkan stabilitas strategi. Ini termasuk menyesuaikan overbought dan oversold, mengatur durasi sinyal perdagangan, dll. Dengan pengujian untuk mendapatkan parameter terbaik, saring sejumlah besar sinyal yang tidak valid.
Tetapkan kondisi stop loss untuk mengontrol risiko, misalnya menetapkan persentase atau titik stop loss. Hindari dampak kerugian tunggal yang terlalu besar pada pendapatan keseluruhan.
Strategi RSI breakout adalah strategi kuantitatif yang memanfaatkan fenomena overbought dan oversold untuk melakukan perdagangan berbalik. Sinyal strategi sederhana, jelas, sepenuhnya kuantitatif, dan dapat disesuaikan. Namun, ada juga risiko whipsaw dan risiko penarikan.
/*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")