RSI-Strategie basierend auf Wahrscheinlichkeitserhöhung


Erstellungsdatum: 2023-12-20 15:05:05 zuletzt geändert: 2023-12-20 15:05:05
Kopie: 0 Klicks: 666
1
konzentrieren Sie sich auf
1621
Anhänger

RSI-Strategie basierend auf Wahrscheinlichkeitserhöhung

Überblick

Diese Strategie ist eine einfache, nur mehr zu tun, die überkauft und überverkauft wird, indem der RSI verwendet wird. Wir haben sie verbessert, indem wir einen Stop-Loss-Stop hinzugefügt haben, während wir ein Probabilitätsmodul integriert haben, um die Wahrscheinlichkeit zu erhöhen, die Position nur zu eröffnen, wenn die Wahrscheinlichkeit eines profitablen Handels in der letzten Zeit größer als oder gleich 51% ist.

Strategieprinzip

Die Strategie nutzt die RSI-Indikatoren, um zu beurteilen, ob ein Markt überkauft oder überverkauft ist. Insbesondere, wenn der RSI unterhalb der unteren Grenze der überverkauften Zone liegt, wird der Markt überkauft.

Wichtig ist, dass wir ein Modul zur Wahrscheinlichkeitsbeurteilung integriert haben. Dieses Modul berechnet den Anteil der Geschäfte, die in letzter Zeit mehr gemacht wurden (durch die Lookback-Parameter gesetzt).

Analyse der Stärken

Es handelt sich um eine RSI-Strategie mit erhöhtem Wahrscheinlichkeitsgrad, die im Vergleich zu einer normalen RSI-Strategie folgende Vorteile hat:

  1. Erweiterte Stop-Loss-Einstellungen, um Einzelschäden zu begrenzen und Gewinne zu sichern
  2. Integration von Wahrscheinlichkeitsmodule, um eine niedrige Gewinnwahrscheinlichkeit zu vermeiden
  3. Die Parameter des Wahrscheinlichkeitsmoduls sind anpassbar und können für verschiedene Marktbedingungen optimiert werden
  4. Einfach zu verstehen und zu implementieren

Risikoanalyse

Die Strategie birgt einige Risiken:

  1. Nur zu viel zu tun, um von den Markteinbrüchen zu profitieren
  2. Ein falsches Urteilsvermögen im Probabilitätsmodul kann eine bessere Chance verpassen.
  3. Die optimale Parameterkombination ist nicht ermittelt und die Performance unterscheidet sich stark zwischen verschiedenen Marktumgebungen.
  4. Die Stop-Loss-Einstellungen sind zu locker und die Einzelschäden können immer noch hoch sein.

Entsprechende Lösungen:

  1. Einzug in die Kaufmannschaft erwägt
  2. Optimierung der Parameter des Wahrscheinlichkeitsmoduls zur Verringerung der Wahrscheinlichkeit von Fehleinschätzungen
  3. Dynamische Optimierungsparameter mit einer maschinellen Lernmethode
  4. Setzen Sie ein konservativeres Stop-Loss-Level und verringern Sie den Spielraum für Einzelverluste

Optimierungsrichtung

Die Strategie kann in folgenden Bereichen weiter optimiert werden:

  1. Ein zusätzliches Devisenmodul für den Zwei-Wege-Handel
  2. Dynamische Optimierung der Parameter mit Hilfe von Machine Learning-Methoden
  3. Versuchen Sie es mit anderen Indikatoren
  4. Optimierung von Stop-Loss-Strategien zur Optimierung der Gewinn- und Verlustquote
  5. In Kombination mit anderen Faktoren erhöht die Wahrscheinlichkeit, dass ein Signal gefiltert wird.

Zusammenfassen

Die Strategie ist eine einfache RSI-Strategie, die durch die Integration der Probabilitätsurteil-Module verstärkt wird. Im Vergleich zur normalen RSI-Strategie können einige Verlustgeschäfte gefiltert und die Gesamtrücknahme und Verlustquote optimiert werden. Im Anschluss können Verbesserungen in den Bereichen Leerlauf, Dynamische Optimierung usw. vorgenommen werden, um die Strategie stabiler zu machen.

Strategiequellcode
/*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)