Strategi RSI Peningkatan Probabilitas

Penulis:ChaoZhang, Tanggal: 2023-12-20 15:05:05
Tag:

img

Gambaran umum

Ini adalah strategi sederhana yang hanya menggunakan indikator RSI untuk menentukan tingkat overbought dan oversold. Kami memperbaikinya dengan menambahkan stop loss dan take profit, dan mengintegrasikan modul probabilitas ke perdagangan penguatan hanya ketika probabilitas perdagangan yang menguntungkan baru-baru ini lebih besar dari atau sama dengan 51%. Ini sangat meningkatkan kinerja strategi dengan menghindari potensi perdagangan yang rugi.

Prinsip-prinsip

Strategi ini menggunakan indikator RSI untuk menilai kondisi overbought dan oversold pasar. Secara khusus, itu pergi panjang ketika RSI melintasi di bawah batas bawah zona oversold; dan menutup posisi ketika RSI melintasi di atas batas atas zona overbought. Selain itu, kita mengatur stop loss dan mengambil rasio keuntungan.

Kuncinya adalah kita mengintegrasikan modul penilaian probabilitas. modul ini menghitung persentase menguntungkan dari perdagangan panjang dalam periode terakhir (ditentukan oleh parameter lookback). hanya memungkinkan masuk jika probabilitas perdagangan menguntungkan baru-baru ini lebih besar dari atau sama dengan 51%. ini menghindari banyak potensi kehilangan perdagangan.

Keuntungan

Sebagai strategi RSI yang diperkuat probabilitas, memiliki keuntungan berikut dibandingkan dengan strategi RSI sederhana:

  1. Stop loss dan take profit yang ditambahkan mengontrol kerugian perdagangan tunggal dan mengunci keuntungan
  2. Modul probabilitas terintegrasi menghindari pasar probabilitas rendah
  3. Modul Probabilitas dapat disesuaikan untuk lingkungan pasar yang berbeda
  4. Mekanisme hanya panjang mudah dipahami dan diterapkan

Analisis Risiko

Masih ada beberapa risiko dalam strategi ini:

  1. Hanya untuk jangka panjang, tidak bisa mendapatkan keuntungan dari penurunan pasar
  2. Penghakiman modul probabilitas yang salah dapat kehilangan peluang
  3. Sulit untuk menemukan kombinasi parameter terbaik, perbedaan kinerja yang signifikan di lingkungan pasar
  4. Pengaturan stop loss yang longgar, masih mungkin kerugian tunggal yang besar

Solusi:

  1. Pertimbangkan untuk menambahkan mekanisme pendek
  2. Mengoptimalkan modul probabilitas untuk menurunkan tingkat penilaian yang salah
  3. Gunakan pembelajaran mesin untuk mengoptimalkan parameter secara dinamis
  4. Atur tingkat stop loss yang lebih konservatif untuk membatasi kerugian

Arah Peningkatan

Strategi ini dapat dioptimalkan lebih lanjut dalam aspek berikut:

  1. Meningkatkan modul pendek untuk perdagangan dua arah
  2. Menggunakan pembelajaran mesin untuk optimasi parameter dinamis
  3. Cobalah indikator lain untuk overbought/oversold
  4. Optimalkan stop loss/take profit untuk meningkatkan rasio keuntungan
  5. Tambahkan faktor lain untuk menyaring sinyal dan meningkatkan probabilitas

Ringkasan

Ini adalah strategi RSI sederhana yang ditingkatkan oleh modul probabilitas terintegrasi. Dibandingkan dengan strategi RSI vanila, ini menyaring beberapa perdagangan yang kalah dan meningkatkan rasio penarikan dan keuntungan secara keseluruhan.


/*backtest
start: 2023-11-19 00:00:00
end: 2023-12-19 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © thequantscience

//@version=5
strategy("Reinforced RSI",
     overlay = true,
     default_qty_type = strategy.percent_of_equity, 
     default_qty_value = 100,
     pyramiding = 1,
     currency = currency.EUR, 
     initial_capital = 1000,
     commission_type = strategy.commission.percent, 
     commission_value = 0.07)

lenght_rsi = input.int(defval = 14, minval = 1, title = "RSI lenght: ")
rsi = ta.rsi(close, length = lenght_rsi)

rsi_value_check_entry = input.int(defval = 35, minval = 1, title = "Oversold: ")
rsi_value_check_exit = input.int(defval = 75, minval = 1, title = "Overbought: ")

trigger = ta.crossunder(rsi, rsi_value_check_entry)
exit = ta.crossover(rsi, rsi_value_check_exit)

entry_condition   = trigger 
TPcondition_exit  = exit

look = input.int(defval = 30, minval = 0, maxval = 500, title = "Lookback period: ")

Probabilities(lookback) =>

    isActiveLong = false
    isActiveLong := nz(isActiveLong[1], false)
    isSellLong = false
    isSellLong := nz(isSellLong[1], false)

    int positive_results = 0
    int negative_results = 0

    float positive_percentage_probabilities = 0 
    float negative_percentage_probabilities = 0 

    LONG = not isActiveLong and entry_condition == true 
    CLOSE_LONG_TP = not isSellLong and TPcondition_exit == true

    p = ta.valuewhen(LONG, close, 0)
    p2 = ta.valuewhen(CLOSE_LONG_TP, close, 0)

    for i = 1 to lookback

	    if (LONG[i])
            isActiveLong := true
		    isSellLong := false

        if (CLOSE_LONG_TP[i])
	        isActiveLong := false
	        isSellLong := true

        if p[i] > p2[i]
            positive_results += 1
        else 
            negative_results -= 1 

	    positive_relative_probabilities = positive_results / lookback
	    negative_relative_probabilities = negative_results / lookback
	    positive_percentage_probabilities := positive_relative_probabilities * 100
	    negative_percentage_probabilities := negative_relative_probabilities * 100

    positive_percentage_probabilities
	
probabilities = Probabilities(look) 

lots = strategy.equity/close

var float e = 0 
var float c = 0 

tp = input.float(defval = 1.00, minval = 0, title = "Take profit: ")
sl = input.float(defval = 1.00, minval = 0, title = "Stop loss: ")

if trigger==true and strategy.opentrades==0 and probabilities >= 51
    e := close
    strategy.entry(id = "e", direction = strategy.long, qty = lots, limit = e) 
takeprofit = e + ((e * tp)/100)
stoploss = e - ((e * sl)/100)
if exit==true
    c := close 
    strategy.exit(id = "c", from_entry = "e", limit = c)
if takeprofit and stoploss 
    strategy.exit(id = "c", from_entry = "e", stop = stoploss, limit = takeprofit)

Lebih banyak