
Die Strategie ist eine Multi-Indikator-Kombinationsstrategie, die auf dem William-Indikator (%R), dem Moving Average Trend-Indikator (MACD) und dem Index Moving Average (EMA) basiert. Durch die Beurteilung des Überkauf-Überverkauf-Zustands auf dem Markt, kombiniert mit dem Trendwechsel der Dynamik-Indikatoren und der Mittelwert-Unterstützung, wird ein vollständiges Trend-Tracking-Handelssystem aufgebaut. Die Strategie beinhaltet nicht nur die Generierung von Einstiegssignalen, sondern auch ein gutes Risikomanagement.
Die Strategie basiert auf einer synchronisierten Zusammenarbeit der folgenden drei Kernindikatoren:
Die Strategie eröffnet nur dann eine Position, wenn diese drei Voraussetzungen erfüllt sind. Darüber hinaus enthält die Strategie einen Stop-Loss-Mechanismus, der auf dem Risiko-Gewinn-Verhältnis basiert, um das Risiko für jeden Handel zu kontrollieren, indem ein fester Stop-Loss-Prozent und ein Risiko-Gewinn-Verhältnis festgelegt werden.
Die Strategie basiert auf einer synchronen Kombination von mehreren technischen Indikatoren, um ein zuverlässiges Trend-Tracking-Handelssystem zu schaffen. Die Hauptmerkmale der Strategie sind eine hohe Signalsicherheit, eine klare Risikokontrolle, aber es gibt auch einige Probleme mit Rückstand und Parameter-Sensitivität. Durch die empfohlene Optimierungsrichtung besteht noch Raum für weitere Verbesserungen.
/*backtest
start: 2025-02-19 00:00:00
end: 2025-02-23 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/
//@version=5
strategy("Williams %R & MACD Swing Strategy", overlay=true)
// INPUTS
length_wpr = input(14, title="Williams %R Length")
overbought = input(-20, title="Overbought Level")
oversold = input(-80, title="Oversold Level")
// MACD Inputs
fastLength = input(12, title="MACD Fast Length")
slowLength = input(26, title="MACD Slow Length")
signalSmoothing = input(9, title="MACD Signal Smoothing")
// EMA for Trend Confirmation
ema_length = input(55, title="EMA Length")
ema55 = ta.ema(close, ema_length)
// INDICATORS
wpr = ta.wpr(length_wpr)
[macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalSmoothing)
// LONG ENTRY CONDITIONS
longCondition = ta.crossover(wpr, oversold) and ta.crossover(macdLine, signalLine) and close > ema55
if longCondition
strategy.entry("Long", strategy.long)
// SHORT ENTRY CONDITIONS
shortCondition = ta.crossunder(wpr, overbought) and ta.crossunder(macdLine, signalLine) and close < ema55
if shortCondition
strategy.entry("Short", strategy.short)
// RISK MANAGEMENT
riskRewardRatio = input(1.5, title="Risk-Reward Ratio")
stopLossPerc = input(2, title="Stop Loss %") / 100
takeProfitPerc = stopLossPerc * riskRewardRatio
longSL = strategy.position_avg_price * (1 - stopLossPerc)
longTP = strategy.position_avg_price * (1 + takeProfitPerc)
shortSL = strategy.position_avg_price * (1 + stopLossPerc)
shortTP = strategy.position_avg_price * (1 - takeProfitPerc)
strategy.exit("Take Profit / Stop Loss", from_entry="Long", loss=longSL, profit=longTP)
strategy.exit("Take Profit / Stop Loss", from_entry="Short", loss=shortSL, profit=shortTP)