
Die Strategie ist ein Trend-Tracking-Dynamik-Trading-System, das mehrere technische Indikatoren kombiniert. Es beurteilt die Richtung des großen Trends hauptsächlich anhand des 200-Tage-Moving Averages (MA200), identifiziert Rückschlagmöglichkeiten anhand des 50-Tage-Index-Moving Averages (EMA50) und kombiniert die relativ starken Indikatoren (RSI) und die Kreuzsignale der Trenddiversität der Moving Averages (MACD) zur Ermittlung des Einstiegsmoments.
Die Kernlogik der Strategie besteht darin, die Genauigkeit des Handels durch mehrschichtige Filtermechanismen zu verbessern. Zunächst wird der Marktmeistertrend durch die MA200 ermittelt, der als Mehrkopftrend beurteilt wird, wenn der Preis über der MA200 liegt, und umgekehrt als Oberkopftrend. Nachdem die Trendrichtung ermittelt wurde, sucht die Strategie nach Rückschlagsmöglichkeiten in der Nähe der EMA50 und verlangt, dass der Preis in den letzten 5 Perioden die EMA50 erreicht. Gleichzeitig wird die Bewegung mit dem RSI-Indikator bestätigt, wobei der RSI in den Mehrkopftrends größer als 50 und der RSI in den Oberkopftrends kleiner als 50 verlangt wird.
Die Strategie baut ein vollständiges Trend-Tracking-Trading-System auf, indem sie mehrere technische Indikatoren kombiniert verwendet. Der Vorteil der Strategie besteht darin, dass die Zuverlässigkeit der Transaktionen durch die Bestätigung mehrerer Signale erhöht wird, während die Risikokontrollmechanismen eine gute Absicherung für die Strategie bieten. Trotz einiger inhärenter Risiken kann die Strategie durch die empfohlene Optimierungsrichtung weiter verbessert werden.
/*backtest
start: 2024-02-21 00:00:00
end: 2024-08-10 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy("Trend-Following Momentum Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=2)
// PARAMETERS
lengthMA200 = input(200, title="200-day MA Length")
lengthEMA50 = input(50, title="50-day EMA Length")
rsiLength = input(14, title="RSI Length")
macdFastLength = input(12, title="MACD Fast Length")
macdSlowLength = input(26, title="MACD Slow Length")
macdSignalLength = input(9, title="MACD Signal Length")
riskRewardRatio = input(1.5, title="Risk-Reward Ratio")
useTrailingStop = input(true, title="Use Trailing Stop?")
trailingPercent = input(1.0, title="Trailing Stop (%)") / 100
// INDICATORS
ma200 = ta.sma(close, lengthMA200) // 200-day MA
ema50 = ta.ema(close, lengthEMA50) // 50-day EMA
rsi = ta.rsi(close, rsiLength) // RSI
[macdLine, signalLine, _] = ta.macd(close, macdFastLength, macdSlowLength, macdSignalLength)
// TREND CONDITIONS
bullishTrend = close > ma200
bearishTrend = close < ma200
// PULLBACK CONDITION
recentPullbackLong = ta.barssince(close < ema50) < 5 // Price touched EMA50 in last 5 bars
recentPullbackShort = ta.barssince(close > ema50) < 5 // Price touched EMA50 in last 5 bars
// ENTRY CONDITIONS
longEntry = bullishTrend and ta.crossover(macdLine, signalLine) and rsi > 50 and recentPullbackLong
shortEntry = bearishTrend and ta.crossunder(macdLine, signalLine) and rsi < 50 and recentPullbackShort
// EXECUTE TRADES
if longEntry
strategy.entry("Long", strategy.long)
strategy.exit("Long Exit", from_entry="Long", limit=close * (1 + riskRewardRatio), stop=close * (1 - (1 / (1 + riskRewardRatio))), trail_price=useTrailingStop ? close * (1 - trailingPercent) : na)
if shortEntry
strategy.entry("Short", strategy.short)
strategy.exit("Short Exit", from_entry="Short", limit=close * (1 - riskRewardRatio), stop=close * (1 + (1 / (1 + riskRewardRatio))), trail_price=useTrailingStop ? close * (1 + trailingPercent) : na)
// PLOT INDICATORS
plot(ma200, title="200-day MA", color=color.blue, linewidth=2)
plot(ema50, title="50-day EMA", color=color.orange, linewidth=2)