
Die Strategie nutzt die Kreuzung zweier Moving Averages, um die Veränderung der Markttrends zu beurteilen und auf Trends hin zu kaufen und zu verkaufen. Händeln Sie, wenn Sie über den kurzfristigen Durchschnitt über den langfristigen Durchschnitt gehen, und machen Sie eine Lücke, wenn Sie den langfristigen Durchschnitt unter dem kurzfristigen Durchschnitt überschreiten, um die Richtung des Trends zu folgen.
Im Zentrum der Strategie stehen zwei Moving Averages: ein schneller Mittelwert (der Standardzeitpunkt ist 32) und ein langsamer Mittelwert (der Standardzeitpunkt ist ebenfalls 32 und kann durch Parameter angepasst werden). Wenn der Kurs die beiden Mittelwerte überschreitet, wird ein Trendwechsel erzeugt, wodurch ein Kaufsignal erzeugt wird:
Durch diese Art der Gleichgewichtskreuzung kann die Strategie dem Trend folgen, indem sie mehrere Aufträge in einem Aufwärtstrend hält und leere Aufträge in einem Abwärtstrend hält, bis ein Trendumkehrsignal auftritt.
Angesichts der oben genannten Risiken kann man erwägen, geeignete Filter wie ATR oder die mittlere reale Breite zu verwenden, um den Übertritt in einem schwankenden Markt zu reduzieren. Man kann einen vernünftigen Stop-Loss setzen, um Einmalverluste zu kontrollieren.
Diese Optimierungen können die Fähigkeit der Strategie zur Bewältigung komplexer Märkte verbessern, aber es ist zu beachten, dass eine übermäßige Optimierung zu einer Kurvenanpassung führen kann, die zu einer schlechten zukünftigen Leistung führt.
Die Strategie kann durch die Einführung von mehr Filterindikatoren, dynamischen Stop-Losses, Positionsmanagement, mehrfache Kombinationszyklen, Parameteranpassung usw. Optimiert werden. Die Strategie selbst ist jedoch begrenzt Schwierigkeiten vollständig zu regeln, um die reale Börse zu vermeiden, aber Sie müssen vorsichtig sein und flexibel an die Merkmale des Marktes angepasst werden.
/*backtest
start: 2023-03-16 00:00:00
end: 2024-03-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
//study(title="Demo - SSL Basic", shorttitle="Demo - SSL Basic", overlay=true)
strategy(title='Demo - SSL Basic', shorttitle='Demo - SSL Basic', overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=100, commission_value=0.15)
// Backtest Date Range
start_date_long = input(title='Backtest Long Start Date', defval=timestamp('01 Jan 2018 00:00 +0530'))
end_date_long = input(title='Backtest Long End Date', defval=timestamp('25 Jan 2030 00:00 +0530'))
backtest_range = true
// Inputs
maType = input.string(title='SSL MA Type', options=['SMA', 'EMA', 'WMA'], defval='SMA')
sslLen = input(title='SSL Length', defval=32)
showCross = input(title='Show Crossover?', defval=true)
showEntry = input(title='Show Entry?', defval=true)
showTrend = input(title='Show Trend Colors?', defval=true)
// Calc MA for SSL Channel
calc_ma(close, len, type) =>
float result = 0
if type == 'SMA' // Simple
result := ta.sma(close, len)
result
if type == 'EMA' // Exponential
result := ta.ema(close, len)
result
if type == 'WMA' // Weighted
result := ta.wma(close, len)
result
result
// Add SSL Channel
maHigh = calc_ma(high, sslLen, maType)
maLow = calc_ma(low, sslLen, maType)
Hlv = int(na)
Hlv := close > maHigh ? 1 : close < maLow ? -1 : Hlv[1]
sslDown = Hlv < 0 ? maHigh : maLow
sslUp = Hlv < 0 ? maLow : maHigh
ss1 = plot(sslDown, title='Down SSL', linewidth=2, color=showTrend ? na : color.red)
ss2 = plot(sslUp, title='Up SSL', linewidth=2, color=showTrend ? na : color.lime)
// Conditions
longCondition = ta.crossover(sslUp, sslDown)
shortCondition = ta.crossover(sslDown, sslUp)
// Strategy
if shortCondition
strategy.close('Long', comment='Long Exit', alert_message='JSON')
if longCondition
strategy.close('Short', comment='Short Exit', alert_message='JSON')
if backtest_range and longCondition
strategy.entry('Long', strategy.long, comment='Long Entry', alert_message='JSON')
if backtest_range and shortCondition
strategy.entry('Short', strategy.short, comment= 'Short Entry', alert_message='JSON')
// Plots
fill(ss1, ss2, color=showTrend ? sslDown < sslUp ? color.new(color.lime, transp=75) : color.new(color.red, transp=75) : na, title='Trend Colors')