Strategi RSI berdasarkan peningkatan kebarangkalian


Tarikh penciptaan: 2023-12-20 15:05:05 Akhirnya diubah suai: 2023-12-20 15:05:05
Salin: 0 Bilangan klik: 668
1
fokus pada
1621
Pengikut

Strategi RSI berdasarkan peningkatan kebarangkalian

Gambaran keseluruhan

Strategi ini adalah strategi yang mudah hanya melakukan lebih banyak, menggunakan RSI untuk menilai overbought dan oversold. Kami telah meningkatkannya dengan menambah stop loss dan menyertakan modul kebarangkalian untuk meningkatkan kebarangkalian, hanya membuka kedudukan apabila kebarangkalian perdagangan yang menguntungkan lebih besar daripada atau sama dengan 51% dalam tempoh yang lalu. Ini meningkatkan prestasi strategi.

Prinsip Strategi

Strategi ini menggunakan indikator RSI untuk menilai pasaran berlebih-lebihan. Khususnya, apabila RSI melanggar batas bawah yang ditetapkan untuk kawasan berlebih-lebihan; apabila RSI melanggar batas atas yang ditetapkan untuk kawasan berlebih-lebihan; dan apabila RSI melanggar batas atas yang ditetapkan untuk kawasan berlebih-lebihan.

Yang penting, kami mengintegrasikan modul penilaian kebarangkalian. Modul ini akan mengkaji peratusan perdagangan yang lebih banyak atau lebih banyak dalam jangka masa yang baru-baru ini (ditetapkan oleh parameter lookback). Hanya apabila kebarangkalian perdagangan yang menguntungkan baru-baru ini lebih besar daripada atau sama dengan 51%, anda akan membuka lebih banyak kedudukan. Ini mengurangkan kemungkinan perdagangan yang rugi.

Analisis kelebihan

Ini adalah strategi RSI yang dipertingkatkan kebarangkalian dan mempunyai kelebihan berikut berbanding strategi RSI biasa:

  1. Tambah seting stop loss untuk mengehadkan kerugian tunggal dan mengunci keuntungan
  2. Modul kebarangkalian bersepadu untuk mengelakkan vrf pasaran yang kurang menguntungkan
  3. Parameter modul kebarangkalian boleh disesuaikan dan dapat dioptimumkan untuk keadaan pasaran yang berbeza
  4. Mekanisme yang mudah difahami dan mudah dilaksanakan

Analisis risiko

Strategi ini juga mempunyai risiko:

  1. Hanya melakukan lebih, tidak dapat memanfaatkan pasaran yang merosot
  2. Keputusan yang salah dalam modul kebarangkalian boleh menyebabkan peluang yang lebih baik terlepas.
  3. Tidak dapat menentukan kombinasi parameter yang optimum, prestasi berbeza-beza dalam keadaan pasaran yang berbeza
  4. Ia juga boleh menyebabkan kerugian yang lebih besar jika anda meletakkan stop loss terlalu rendah.

Penyelesaian:

  1. Mendapatkan peluang untuk bergabung dengan mekanisme penukaran
  2. Mengoptimumkan parameter modul kebarangkalian untuk mengurangkan kemungkinan kesalahan
  3. Parameter pengoptimuman dinamik menggunakan kaedah pembelajaran mesin
  4. Tetapkan tahap penangguhan yang lebih konservatif untuk mengurangkan ruang kerugian tunggal

Arah pengoptimuman

Strategi ini boleh dioptimumkan dengan cara berikut:

  1. Menambah modul shorting untuk perdagangan dua hala
  2. Tetapan parameter pengoptimuman dinamik menggunakan kaedah pembelajaran mesin
  3. Cuba Indeks Lain untuk Mencari Harga Terlalu Tinggi
  4. Mengoptimumkan strategi Hentikan Kerosakan dan Mencapai Keuntungan dan Kerugian
  5. Menambah kebarangkalian dengan penapisan isyarat

ringkaskan

Strategi ini adalah strategi RSI yang mudah, modul penilaian kebarangkalian bersepadu dipertingkatkan. Berbanding dengan strategi RSI biasa, anda boleh menyaring sebahagian perdagangan yang rugi, menarik balik keseluruhan dan mengoptimumkan perbandingan kerugian.

Kod 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)