Zusammengesetzte Stop-Loss- und Take-Profit-Strategie basierend auf zufälligen Einträgen


Erstellungsdatum: 2024-01-24 15:38:49 zuletzt geändert: 2024-01-24 15:38:49
Kopie: 5 Klicks: 688
1
konzentrieren Sie sich auf
1617
Anhänger

Zusammengesetzte Stop-Loss- und Take-Profit-Strategie basierend auf zufälligen Einträgen

Überblick

Die Hauptidee dieser Strategie besteht darin, den Einstiegspunkt durch eine zufällige Zahl zu bestimmen, wobei drei Stop-Loss-Punkte und ein Stop-Loss-Punkt eingerichtet werden, um das Risiko zu verwalten und die Verluste pro Handel zu kontrollieren.

Strategieprinzip

Die Strategie verwendet die zufällige Zahl rd_number_entry, um zwischen 11 und 13 zu entscheiden, und die Zahl rd_number_exit, um zwischen 20 und 22 zu entscheiden. Die Position ist frei.

Die Strategie kann das Risiko durch Anpassung der tpx (Stop-Factor) und slx (Stop-Loss-Factor) steuern.

Analyse der Stärken

Diese Strategie hat folgende Vorteile:

  1. Die Wahrscheinlichkeit einer Kurvenübereinstimmung kann durch Zufallsaufnahme verringert werden.
  2. Setzen Sie mehrere Stop-Loss-Punkte, um das Risiko eines einzelnen Handels zu kontrollieren
  3. Mit at kann ein Stop-Loss-System eingerichtet werden, das auf Marktbewegungen basiert.
  4. Das Risiko kann durch die Anpassung des Koeffizienten kontrolliert werden.

Risikoanalyse

Die Strategie birgt auch folgende Risiken:

  1. Zufälliger Eintritt könnte verpasst werden
  2. Eine zu kleine Stopp-Punkt-Länge kann zu einer Verlust-Länge führen.
  3. Zu viel Platz, zu wenig Profit
  4. Die falschen Parameter können zu einer Zunahme der Verluste führen.

Das Risiko kann durch Anpassung des Stop-Loss-Koeffizienten und Optimierung der Zufallslogik verringert werden.

Optimierungsrichtung

Diese Strategie kann in folgenden Bereichen optimiert werden:

  1. Verbesserte Zufallslogik in Kombination mit Trendindikatoren
  2. Optimierung des Stop-Loss-Faktors, um die Gewinn- und Verlustquote zu optimieren
  3. Erhöhung der Positionskontrolle mit unterschiedlichen Stoppspazifitäten in verschiedenen Phasen
  4. Optimierungsparameter in Kombination mit maschinellen Lernalgorithmen

Zusammenfassen

Diese Strategie basiert auf einem Zufallseingang, mit mehreren Stop-Loss-Punkten, die das Risiko eines einzelnen Handels kontrollieren. Die Wahrscheinlichkeit einer Kurvepassung kann durch die Optimierung der Parameter verringert werden, da eine starke Zufälligkeit das Risiko verringert.

Strategiequellcode
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Random Strategy with 3 TP levels and SL", overlay=true,max_bars_back = 50)

tpx = input(defval = 0.8, title = 'Atr multiplication for TPs?')
slx = input(defval = 1.2, title = 'Atr multiplication for SL?')
isLong = false
isLong := nz(isLong[1])

isShort = false
isShort := nz(isShort[1])

entryPrice = 0.0
entryPrice := nz(entryPrice[1])
tp1 = true
tp1 := nz(tp1[1])
tp2 = true
tp2 := nz(tp2[1])

sl_price = 3213.0
sl_price := nz(sl_price[1])

sl_atr = atr(14)*slx
tp_atr = atr(14)*tpx

rd_number_entry = 1.0
rd_number_entry := (16708 * nz(rd_number_entry[1], 1) % 2147483647)%17

rd_number_exit = 1.0
rd_number_exit := ((16708 * time % 2147483647) %17)


//plot(rd_number_entry)

shortCondition = (rd_number_entry == 13? true:false) and (year >= 2017) and not isLong and not isShort
longCondition = (rd_number_entry == 11 ? true:false) and (year >= 2017) and not isShort and not isShort
//Never exits a trade:
exitLong = (rd_number_exit == 22?true:false) and (year >= 2018) and not isShort
exitShort = (rd_number_exit ==  22?true:false) and (year >= 2018) and not isLong


//shortCondition = crossunder(sma(close, 14), sma(close, 28)) and year >= 2017
//longCondition = crossover(sma(close, 14), sma(close, 28)) and year >= 2017

//exitLong = crossunder(ema(close, 14), ema(close, 28)) and year >= 2017
//exitShort = crossover(ema(close, 14), ema(close, 28)) and year >= 2017

if (longCondition and not isLong)
    strategy.entry('Long1', strategy.long)
    strategy.entry('Long2', strategy.long)
    strategy.entry('Long3', strategy.long)
    isLong := true
    entryPrice := close
    isShort := false
    tp1 := false
    tp2 := false
    sl_price := close-sl_atr

if (shortCondition and not isShort)
    strategy.entry('Short1', strategy.short)
    strategy.entry('Short2', strategy.short)
    strategy.entry('Short3', strategy.short)
    isShort := true
    entryPrice := close
    isLong := false
    tp1 := false
    tp2 := false
    sl_price := close+sl_atr
    
if (exitShort and isShort)
    strategy.close('Short1')
    strategy.close('Short2')
    strategy.close('Short3')
    isShort :=  false

if (exitLong and isLong)
    strategy.close('Long1')
    strategy.close('Long2')
    strategy.close('Long3')
    isLong :=  false

if isLong
    if (close > entryPrice + tp_atr) and not tp1
        strategy.close('Long1')
        tp1 := true
        sl_price := close - tp_atr
    if (close > entryPrice + 2*tp_atr) and not tp2
        strategy.close('Long2')
        tp2 := true
        sl_price := close - tp_atr
    if (close > entryPrice + 3*tp_atr)
        strategy.close('Long3')
        isLong := false
    if (close < sl_price)
        strategy.close('Long1')
        strategy.close('Long2')
        strategy.close('Long3')
        isLong := false

if isShort
    if (close < entryPrice - tp_atr) and not tp1
        strategy.close('Short1')
        sl_price := close + tp_atr
        tp1 := true
    if (close < entryPrice - 2*tp_atr) and not tp2
        strategy.close('Short2')
        sl_price := close + tp_atr
        tp2 := true
    if (close < entryPrice - 3*tp_atr)
        strategy.close('Short3')
        isShort := false
    if (close > sl_price)
        strategy.close('Short1')
        strategy.close('Short2')
        strategy.close('Short3')
        isShort := false
plot(atr(14)*slx)
plot(sl_price)