
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.
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).
Es handelt sich um eine RSI-Strategie mit erhöhtem Wahrscheinlichkeitsgrad, die im Vergleich zu einer normalen RSI-Strategie folgende Vorteile hat:
Die Strategie birgt einige Risiken:
Entsprechende Lösungen:
Die Strategie kann in folgenden Bereichen weiter optimiert werden:
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.
/*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)