Strategi perdagangan kuantitatif berdasarkan penunjuk indeks kekuatan relatif (RSI).


Tarikh penciptaan: 2023-12-22 14:06:45 Akhirnya diubah suai: 2023-12-22 14:06:45
Salin: 4 Bilangan klik: 772
1
fokus pada
1623
Pengikut

Strategi perdagangan kuantitatif berdasarkan penunjuk indeks kekuatan relatif (RSI).

Gambaran keseluruhan

Strategi RSI Breakout adalah strategi perdagangan kuantitatif berdasarkan indeks relatif lemah (RSI). Strategi ini menghasilkan isyarat perdagangan apabila RSI menembusi ambang tersebut dengan menetapkan nilai terendah RSI di atas kawasan beli dan kawasan jual. Ia menghasilkan perdagangan apabila RSI di bawah 30 dan di atas 70.

Prinsip Strategi

Idea utama strategi RSI adalah menggunakan RSI untuk menilai fenomena jual beli di pasaran. RSI mencerminkan keadaan kuat dan lemah saham baru-baru ini dengan mengira nisbah kenaikan rata-rata dan penurunan rata-rata saham dalam tempoh tertentu. Secara umum, RSI di bawah 30 dianggap sebagai jual beli, dan di atas 70 dianggap sebagai jual beli.

Strategi ini mula-mula menetapkan garis oversell dan overbuy RSI, secara default 30 dan 70. Kemudian memantau keadaan operasi garis RSI secara langsung. Apabila RSI dari atas ke bawah memecahkan 70 ini, ia menghasilkan isyarat jual.

Dengan cara ini, strategi ini cuba menangkap titik-titik perubahan harga semasa turun naik saham, dan menyesuaikan kedudukan tepat pada masanya apabila fenomena overbought dan oversold berlaku, sehingga harga saham naik atau turun.

Kelebihan Strategik

Strategi penembusan RSI mempunyai kelebihan berikut:

  1. Isyarat pengendalian mudah dan jelas. Indikator RSI mudah dikira dan difahami, hanya perlu melihat batas atas dan bawah yang ditetapkan untuk penembusan garis indikatornya. Ia boleh dikendalikan apabila penembusan berlaku, tanpa peraturan perdagangan yang rumit.

  2. Strategi ini menarik isyarat perdagangan dari penunjuk RSI, tidak memerlukan campur tangan dan penilaian manusia, mudah untuk mewujudkan perdagangan automatik. Pada masa yang sama, isyarat RSI yang lebih baik dan lebih baik daripada RSI, retrospeksi strategi juga menunjukkan keuntungan yang ketara.

  3. Kustomisasi yang kuat. Pedagang boleh menyesuaikan parameter RSI secara fleksibel, seperti menyesuaikan nilai terendah untuk overbought dan oversold, untuk menyesuaikan diri dengan ciri-ciri saham dan pasaran yang berbeza.

Risiko Strategik

RSI juga mempunyai beberapa risiko yang berkaitan dengan strategi penembusan, terutamanya:

  1. Mudah terbentuk whipsaw. Apabila penunjuk bergoyang ke atas atau ke bawah, akan sering mencetuskan isyarat perdagangan yang pecah. Pada masa ini strategi akan menghasilkan terlalu banyak perdagangan yang tidak berkesan, yang tidak menguntungkan untuk mendapatkan keuntungan yang stabil.

  2. Tidak dapat menilai trend pasaran. RSI hanya menghasilkan isyarat perdagangan dari keadaan overbought oversold, kemampuan menilai trend besar lemah. Strategi mudah terjebak dalam keadaan goyah.

  3. Risiko penarikan balik lebih besar. RSI sering menunjukkan tingkah laku penyimpangan berganda, iaitu harga terus naik dan penunjuk RSI turun. Pada masa ini, strategi untuk berjalan kosong dan penyimpangan dari trend besar akan menghadapi kerugian besar.

Pengoptimuman Strategi

Strategi penembusan RSI boleh dioptimumkan dari dimensi berikut:

  1. Mengambil kira pelbagai petunjuk secara komprehensif, mengelakkan batasan satu petunjuk RSI. Sebagai contoh, kombinasi indikator purata bergerak untuk menentukan trend pasaran, atau menggunakan indikator kuat lemah, indikator kuantiti bertukar untuk gabungan penapisan isyarat perdagangan.

  2. Mengoptimumkan parameter RSI untuk meningkatkan kestabilan strategi. Ini termasuk menyesuaikan had overbought dan oversold, menetapkan tempoh isyarat perdagangan, dan sebagainya. Untuk mendapatkan parameter terbaik melalui ujian, saring banyak isyarat tidak sah.

  3. Tetapkan syarat berhenti rugi untuk mengawal risiko, seperti menetapkan peratusan atau titik berhenti. Elakkan kerugian tunggal yang terlalu besar mempengaruhi pendapatan keseluruhan.

ringkaskan

Strategi penembusan RSI adalah strategi kuantitatif yang menggunakan fenomena overbought dan oversold untuk melakukan perdagangan terbalik. Isyarat strategi mudah, jelas, sepenuhnya kuantitatif, dan dapat disesuaikan. Tetapi ada juga risiko whipsaw dan risiko penarikan balik.

Kod sumber strategi
/*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")