
Die Strategie basiert auf einem Trend-Tracking-Strategie, basierend auf mehreren Zeitrahmen Index Moving Averages (EMA) und 200-Termine EMA-Filter. Die Hauptidee ist es, die EMAs der verschiedenen Zeitrahmen zu nutzen, um die Richtung der Markttrends zu erkennen und eine Position zu erstellen, wenn der Trend nach oben ist und der Preis über die 200-Termine EMAs liegt. So kann sichergestellt werden, dass nur in einem starken Aufwärtstrend gehandelt wird, um eine anhaltende Aufwärtsbewegung zu erfassen und gleichzeitig die Stop-Loss- und Stop-Stop-Mechanismen zu nutzen, um das Risiko zu kontrollieren.
Die Strategie verwendet drei Zeiträume von 5 Minuten, 15 Minuten und 30 Minuten, um die schnellen EMAs und die langsamen EMAs zu berechnen. Durch den Vergleich der schnellen EMAs und der langsamen EMAs in jedem Zeitrahmen kann die Trendrichtung des Zeitrahmens beurteilt werden. Die Trendsignale der drei Zeitrahmen werden dann addiert, um ein zusammengesetztes Trendsignal zu erhalten.
Die Strategie beurteilt die Richtung des Trends durch EMA-Vergleiche über mehrere Zeitrahmen und verwendet die 200-Termine-EMA als Trendfilter, um mehrere Positionen zu erstellen, wenn der Trend deutlich nach oben ist und der Preis über der langfristigen Durchschnittslinie liegt, um eine starke Aufwärtsbewegung zu erfassen. Strenge Positionseröffnungsbedingungen und feste Stop-Loss-Stopps helfen, das Risiko zu kontrollieren. Die Strategie reagiert jedoch möglicherweise langsamer auf Trendwendepunkte und hält die Stop-Loss-Stoppposition fest. In der Zukunft kann die Anpassungsfähigkeit und Robustheit der Strategie verbessert werden, indem mehr Zeitrahmen eingeführt, Stop-Loss-Stopps optimiert, mehr Handelssignale hinzugefügt und Parameteroptimierungen hinzugefügt werden, die es ermöglichen, Marktchancen besser zu nutzen und Risiken zu kontrollieren.
/*backtest
start: 2023-05-17 00:00:00
end: 2024-05-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Multi-Timeframe Trend Following with 200 EMA Filter - Longs Only", shorttitle="MTF_TF_200EMA_Longs", overlay=true, initial_capital=1000, default_qty_type=strategy.fixed, default_qty_value=1)
// Inputs
fast_length = input.int(9, title="Fast EMA Length", minval=1)
slow_length = input.int(21, title="Slow EMA Length", minval=1)
filter_length_200 = input.int(200, title="200 EMA Length", minval=1)
stop_loss_perc = input.float(1.0, title="Stop Loss Percentage", minval=0.1) / 100
take_profit_perc = input.float(3.0, title="Take Profit Percentage", minval=0.1) / 100
// Calculate EMAs for 5-minute, 15-minute, and 30-minute timeframes
ema_fast_5min = request.security(syminfo.tickerid, "5", ta.ema(close, fast_length), lookahead=barmerge.lookahead_on)
ema_slow_5min = request.security(syminfo.tickerid, "5", ta.ema(close, slow_length), lookahead=barmerge.lookahead_on)
ema_fast_15min = request.security(syminfo.tickerid, "15", ta.ema(close, fast_length), lookahead=barmerge.lookahead_on)
ema_slow_15min = request.security(syminfo.tickerid, "15", ta.ema(close, slow_length), lookahead=barmerge.lookahead_on)
ema_fast_30min = request.security(syminfo.tickerid, "30", ta.ema(close, fast_length), lookahead=barmerge.lookahead_on)
ema_slow_30min = request.security(syminfo.tickerid, "30", ta.ema(close, slow_length), lookahead=barmerge.lookahead_on)
// Calculate 200 EMA for the 5-minute timeframe
ema_200_5min = ta.ema(close, filter_length_200)
// Determine the trend for each timeframe
trend_5min = ema_fast_5min > ema_slow_5min ? 1 : -1
trend_15min = ema_fast_15min > ema_slow_15min ? 1 : -1
trend_30min = ema_fast_30min > ema_slow_30min ? 1 : -1
// Combine trend signals
combined_trend = trend_5min + trend_15min + trend_30min
// Define entry and exit conditions with 200 EMA filter
enter_long = combined_trend == 3 and close > ema_200_5min
exit_long = combined_trend < 3 or close < ema_200_5min
// Plot EMAs for the 5-minute timeframe
plot(ema_fast_5min, color=color.blue, linewidth=2, title="Fast EMA 5min")
plot(ema_slow_5min, color=color.red, linewidth=2, title="Slow EMA 5min")
plot(ema_200_5min, color=color.green, linewidth=2, title="200 EMA 5min")
// Strategy execution
if (enter_long)
strategy.entry("Long", strategy.long, stop=close * (1 - stop_loss_perc), limit=close * (1 + take_profit_perc))
if (exit_long)
strategy.close("Long")