Trendfolgestrategie basierend auf dem SSL-Kanalindikator


Erstellungsdatum: 2023-11-27 16:42:34 zuletzt geändert: 2023-11-27 16:42:34
Kopie: 0 Klicks: 1445
1
konzentrieren Sie sich auf
1617
Anhänger

Trendfolgestrategie basierend auf dem SSL-Kanalindikator

Überblick

Die Strategie ist eine Trend-Tracking-Strategie, die auf SSL-Channel-Indikatoren basiert. Sie kombiniert Stop-Loss- und Stop-Stop-Management, um Gewinne zu sperren, um ein stabiles Kapitalwachstum zu erzielen.

Strategieprinzip

Die Hauptlogik des Codes ist, die Richtung des Trends anhand der goldenen Kreuzung von SSL-Ober- und Unterbahn zu bestimmen. Insbesondere, wenn die SSL-Oberbahn von unten durch die SSL-Unterbahn bricht, machen Sie mehr; wenn die SSL-Unterbahn von oben nach unten durch die SSL-Oberbahn bricht, machen Sie leer.

Nach dem Eintritt in die Position verwendet die Strategie den ATR-Indikator multipliziert mit einem Faktor, um den Stop-Loss- und den Stop-Price-Preis einzustellen. Zum Beispiel ist der Stop-Loss-Preis der Preis minus ATR * 1.5, der Stop-Price der Preis plus ATR * 1. Dies kann die Einzelschäden effektiv kontrollieren und die Gewinne sperren.

Wenn der SSL-Kanal ausfällt, wird die Position ausgeglichen. Auf diese Weise kann der Trendwendepunkt verfolgt werden, um den Verlust rechtzeitig zu stoppen.

Analyse der Stärken

  1. Hohe Genauigkeit bei Trends mit SSL-Kanal
  2. Die Stop-Loss- und Stop-Stop-Einstellungen sind vernünftig und ermöglichen eine effektive Risikokontrolle
  3. Die Trendwende ist ein wichtiger Trend, der sich in der letzten Zeit entwickelt hat.

Risikoanalyse

  1. Trend-Trading kann zu Übertrading führen
  2. Die Wahrscheinlichkeit, dass ein SSL-Kanal fehlschlägt
  3. ATR-Faktor muss optimiert werden

Die entsprechende Lösung:

  1. Angemessene Anpassung der Positionszyklus
  2. Bestätigung in Verbindung mit anderen Indikatoren
  3. Verschiedene ATR-Kombinationen testen

Optimierungsrichtung

  1. Optimierung von ATR-Parametern, um optimale Kombinationen zu finden
  2. Hinzufügen von Filtern und Bestätigungssignalen für andere Indikatoren
  3. Positionszyklus für unterschiedliche Märkte
  4. Optimierung der Stop-Loss-Strategie

Zusammenfassen

Die Strategie ist klar konzipiert, nutzt die SSL-Channel, um Trends zu beurteilen, und setzt eine angemessene Stop-Loss-Schwelle. Es muss jedoch weiter getestet und optimiert werden, um in Kombination mit anderen Indikatoren die falschen Signale zu filtern und die optimale Kombination von Parametern zu finden. Gleichzeitig müssen die Parameter an die verschiedenen Märkte angepasst werden, um die Strategie flexibler zu machen.

Strategiequellcode
/*backtest
start: 2022-11-26 00:00:00
end: 2023-05-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Designed per No Nonsense Forex VP rules
//For testing your individual indicators before the full system
//Originated from causecelebre
//Tried to put in as much VP rules as possible

///////////////////////////////////////////////////
//Rules Implemented:
///////////////////////////////////////////////////
// - SL 1.5 x ATR
// - TP 1 x ATR
//
// - Entry conditions
//// - Entry from 1 x confirmation
// - Exit conditions
//// - Exit on confirmation flip 

///////////////////////////////////////////////////
//Trades entries
///////////////////////////////////////////////////
// - First entry L1 or S1 with standard SL and TP

///////////////////////////////////////////////////
//Included Indicators and settings
///////////////////////////////////////////////////
// - Confirmtion = SSL 10

///////////////////////////////////////////////////
//Credits
// Strategy causecelebre https://www.tradingview.com/u/causecelebre/
// SSL Channel ErwinBeckers https://www.tradingview.com/u/ErwinBeckers/
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Change log
//First release. Testing of indicators
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

strategy(title="NNFX Strategy Indicator | jh", overlay = true )

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//  **** Set the main stuff  ****
///////////////////////////////////////////////////

//Price
price = close

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// ATR stuff
///////////////////////////////////////////////////

slMultiplier = input(1.5, "SL")
tpMultiplier = input(1, "TP")

atrlength = input(title="ATR Length", defval=14, minval=1)
atrsmoothing = input(title="Smoothing", defval="SMA", options=["RMA", "SMA", "EMA", "WMA"])

ma_function(source, atrlength) => 
    if atrsmoothing == "RMA"
        rma(source, atrlength)
    else
        if atrsmoothing == "SMA"
            sma(source, atrlength)
        else
            if atrsmoothing == "EMA"
                ema(source, atrlength)
            else
                wma(source, atrlength)

//plot(ma_function(tr(true), atrlength), title = "ATR", color=#991515, transp=0)

atr = ma_function(tr(true), atrlength)

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//  **** Confirmation ****
///////////////////////////////////////////////////

ssllen=input(title="SSL Length Period", defval=10)
smaHigh=sma(high, ssllen)
smaLow=sma(low, ssllen)
Hlv = na
Hlv := close > smaHigh ? 1 : close < smaLow ? -1 : Hlv[1]
sslDown = Hlv < 0 ? smaHigh: smaLow
sslUp   = Hlv < 0 ? smaLow : smaHigh

plot(sslDown, "SSL Down", linewidth=1, color=red)
plot(sslUp, "SSL Up", linewidth=1, color=lime)

///////////////////////////////////////////////////
//Confirm Signals
///////////////////////////////////////////////////

c_Up = sslUp
c_Down = sslDown

//Signals based on crossover
c_Long = crossover(c_Up, c_Down)
c_Short = crossover(c_Down, c_Up)

//Signals based on signal position
trendLong = c_Up > c_Down ? 1 : 0
trendShort = c_Down > c_Up ? 1 : 0

confirmLong = c_Long
confirmShort = c_Short

plotshape(trendLong, color = green, style=shape.triangleup, location=location.bottom)
plotshape(trendShort, color = red, style=shape.triangledown, location=location.bottom)


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Entries and Exits
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

if (year>2009)

    //Long entries with standard 1.5 ATR for SL, 1 ATR for TP
    long_sl = price - (atr * slMultiplier)
    long_tp = price + (atr * tpMultiplier)
    strategy.order("L1", strategy.long, when = confirmLong)
    strategy.close("L1", when = confirmShort)
    strategy.exit("L Limit Exit", "L1", stop = long_sl, limit = long_tp)

    
    //Short entries with standard 1.5 ATR for SL, 1 ATR for TP
    short_sl = price + (atr * slMultiplier)
    short_tp = price - (atr * tpMultiplier)
    strategy.order("S1", strategy.short, when = confirmShort)
    strategy.close("S1", when = confirmLong)
    strategy.exit("S Limit Exit", "S1", stop = short_sl, limit = short_tp)


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//End
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////