Strategi RSI berdasarkan peningkatan probabilitas


Tanggal Pembuatan: 2023-12-20 15:05:05 Akhirnya memodifikasi: 2023-12-20 15:05:05
menyalin: 0 Jumlah klik: 668
1
fokus pada
1621
Pengikut

Strategi RSI berdasarkan peningkatan probabilitas

Ringkasan

Strategi ini adalah strategi sederhana hanya melakukan lebih, menggunakan indikator RSI untuk menilai overbought dan oversold. Kami telah meningkatkannya dengan menambahkan stop loss, dan juga mengintegrasikan modul probabilitas untuk meningkatkan probabilitas, yang hanya akan membuka posisi jika probabilitas perdagangan yang menguntungkan lebih besar dari atau sama dengan 51% dalam beberapa waktu terakhir. Ini sangat meningkatkan kinerja strategi.

Prinsip Strategi

Strategi ini menggunakan indikator RSI untuk menilai pasar overbought dan oversold. Secara khusus, ketika RSI berada di bawah batas bawah dari area oversold yang ditetapkan; ketika RSI berada di atas batas atas dari area oversold yang ditetapkan. Selain itu, kami menetapkan stop loss stop loss.

Yang penting, kami mengintegrasikan modul penilaian probabilitas. Modul ini akan menghitung berapa banyak perdagangan yang dilakukan atau dirugi dalam beberapa waktu terakhir (ditentukan oleh parameter lookback). Hanya jika probabilitas perdagangan yang menguntungkan baru-baru ini lebih besar dari atau sama dengan 51 persen, maka Anda akan mengambil posisi lebih banyak. Ini sangat mengurangi kemungkinan perdagangan yang merugikan.

Analisis Keunggulan

Ini adalah strategi RSI dengan peningkatan probabilitas yang memiliki keuntungan berikut dibandingkan dengan strategi RSI biasa:

  1. Tambahkan pengaturan stop loss untuk membatasi kerugian tunggal dan mengunci keuntungan
  2. Modul probabilitas terintegrasi untuk menghindari pasar vrf dengan probabilitas keuntungan yang rendah
  3. Parameter Modul Probabilitas dapat disesuaikan dan dioptimalkan untuk lingkungan pasar yang berbeda
  4. Mekanisme yang sederhana, mudah dipahami, dan mudah diterapkan

Analisis risiko

Strategi ini juga memiliki beberapa risiko:

  1. Hanya melakukan lebih, tidak bisa memanfaatkan penurunan pasar
  2. Kesalahan dalam modul probabilitas dapat menyebabkan kehilangan kesempatan yang lebih baik
  3. Tidak dapat menentukan kombinasi parameter yang optimal, performa yang berbeda dalam lingkungan pasar yang berbeda
  4. Pengaturan Stop Loss terlalu longgar, kerugian tunggal masih bisa lebih besar

Solusi yang sesuai:

  1. Mempertimbangkan untuk bergabung dengan mekanisme shorting
  2. Optimalkan parameter modul probabilitas untuk mengurangi kemungkinan kesalahan penilaian
  3. Parameter pengoptimalan dinamis dengan metode pembelajaran mesin
  4. Menetapkan tingkat stop loss yang lebih konservatif, mengurangi ruang untuk kerugian tunggal

Arah optimasi

Strategi ini dapat dioptimalkan lebih lanjut dalam beberapa hal:

  1. Menambahkan modul shorting untuk perdagangan dua arah
  2. Pengaturan parameter pengoptimalan dinamis menggunakan metode pembelajaran mesin
  3. Cobalah indikator lain untuk menilai overbought dan oversold.
  4. Optimalkan strategi Stop Loss dan Optimalkan Rasio Laba-Rugi
  5. Kombinasi dengan faktor-faktor lain untuk memfilter sinyal, meningkatkan probabilitas

Meringkaskan

Strategi ini adalah strategi RSI sederhana, dengan modul penilaian probabilitas terpadu yang diperkuat. Dibandingkan dengan strategi RSI biasa, Anda dapat menyaring sebagian perdagangan yang merugikan, menarik kembali secara keseluruhan, dan memaksimalkan rasio kerugian.

Kode Sumber Strategi
/*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)