Die Ressourcen sind geladen. Beförderung...

Multi-Timeframe Supertrend Dynamischer Trend-Handelsalgorithmus

Schriftsteller:ChaoZhang, Datum: 2025-01-06 16:38:12
Tags:ATRMTFEMARSI

img

Übersicht

Diese Strategie ist ein anpassungsfähiges Trendfolgensystem, das auf dem Multi-Timeframe Supertrend-Indikator basiert. Sie integriert Supertrend-Signale aus 15-minütigen, 5-minütigen und 2-minütigen Zeitrahmen, um einen umfassenden Trendidentifikationsrahmen zu erstellen. Die Strategie verwendet einen Zeitfilter, um den Betrieb nur während der aktivsten Handelssitzungen zu gewährleisten, und schließt Positionen am Ende des Tages automatisch, um das Übernachtungsrisiko zu vermeiden.

Strategieprinzipien

Der Kernmechanismus beruht auf der Konsistenz des Trends über mehrere Zeitrahmen hinweg, um Handelssignale zu bestätigen.

  1. Berechnet Supertrend-Linien unter Verwendung von ATR-Periode und Multiplikator für jeden Zeitrahmen.
  2. Auslöser kaufen Signale, wenn sich die bullischen Bedingungen über alle drei Zeitrahmen hinweg ausrichten (Preis über den Supertrend-Linien).
  3. Initiate verkaufen Signale, wenn der Preis unter die 5-minütige Supertrend-Linie bricht oder das Ende des Handelstages erreicht.
  4. Steuert die Handelszeiten durch Zeitzoneinstellungen und Sessionfilter (Standard 09:30-15:30).

Strategische Vorteile

  1. Die mehrdimensionale Trendbestätigung erhöht die Signalzuverlässigkeit und verringert die Gefahr eines falschen Ausbruchs.
  2. Adaptive Supertrend-Parameter ermöglichen eine Anpassung der Strategie an verschiedene Marktvolatilitätsumgebungen.
  3. Ein strenger Zeitmanagementmechanismus beseitigt die Beeinträchtigung durch ineffiziente Handelszeiten.
  4. Die klare Visualisierung zeigt den Trendstatus in allen Zeitrahmen an.
  5. Das flexible Positionsmanagementsystem unterstützt eine prozentuale Konfiguration.

Strategische Risiken

  1. Kann zu übermäßigen Handelssignalen in unterschiedlichen Märkten führen und die Transaktionskosten erhöhen.
  2. Mehrfache Filterbedingungen könnten zu verpassten profitablen Möglichkeiten führen.
  3. Die Abhängigkeit von Parameteroptimierung erfordert Anpassungen für verschiedene Marktumgebungen.
  4. Hohe Rechenkomplexität kann zu Ausführungsproblemen führen.

Optimierungsrichtlinien

  1. Einführung eines Volatilitätsadaptivmechanismus zur dynamischen Anpassung der Supertrend-Parameter.
  2. Hinzufügen von Volumenbestätigungsindikatoren zur Verbesserung der Trendgenauigkeit.
  3. Entwicklung eines intelligenten Zeitfilteralgorithmus zur automatischen Identifizierung optimaler Handelssitzungen.
  4. Optimierung des Positionsmanagement-Algorithmus für eine genauere Risikokontrolle.
  5. Hinzufügen eines Klassifizierungsmoduls für das Marktumfeld zur Umsetzung differenzierter Strategien für verschiedene Marktmerkmale.

Zusammenfassung

Die Strategie baut ein robustes Handelssystem durch mehrfache Zeitrahmen-Trendanalyse und strenge Risikokontrollmechanismen auf.


/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Multi-Timeframe Supertrend Strategy", 
         overlay=true, 
         shorttitle="MTF Supertrend TF", 
         default_qty_type=strategy.percent_of_equity, 
         default_qty_value=100, 
         initial_capital=50000, 
         currency=currency.USD)

// === Input Parameters === //
atrPeriod = input.int(title="ATR Period", defval=10, minval=1)
factor = input.float(title="Factor", defval=3.0, step=0.1)

// === Time Filter Parameters === //
// Define the trading session using input.session
// Format: "HHMM-HHMM", e.g., "0930-1530"
sessionInput = input("0930-1530", title="Trading Session")

// Specify the timezone (e.g., "Europe/Istanbul")
// Refer to the list of supported timezones: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
timezoneInput = input.string("Europe/Istanbul", title="Timezone", tooltip="Specify a valid IANA timezone (e.g., 'Europe/Istanbul', 'America/New_York').")

// === Calculate Supertrend for Different Timeframes === //
symbol = syminfo.tickerid

// 15-Minute Supertrend
[st_15m, dir_15m] = request.security(symbol, "15", ta.supertrend(factor, atrPeriod), lookahead=barmerge.lookahead_off)

// 5-Minute Supertrend
[st_5m, dir_5m] = request.security(symbol, "5", ta.supertrend(factor, atrPeriod), lookahead=barmerge.lookahead_off)

// 2-Minute Supertrend
[st_2m, dir_2m] = request.security(symbol, "2", ta.supertrend(factor, atrPeriod), lookahead=barmerge.lookahead_off)

// === Current Timeframe Supertrend === //
[st_current, dir_current] = ta.supertrend(factor, atrPeriod)

// === Time Filter: Check if Current Bar is Within the Trading Session === //
in_session = true

// === Define Trend Directions Based on Supertrend === //
is_up_15m = close > st_15m
is_up_5m  = close > st_5m
is_up_2m  = close > st_2m
is_up_current = close > st_current

// === Buy Condition === //
buyCondition = is_up_15m and is_up_5m and is_up_2m and is_up_current and in_session and strategy.position_size == 0

// === Sell Conditions === //
// 1. Price falls below the 5-minute Supertrend during trading session
sellCondition1 = close < st_5m

// 2. End of Trading Day: Sell at the close of the trading session
is_new_day = ta.change(time("D"))
sellCondition2 = not in_session and is_new_day

// Combined Sell Condition: Only if in Position
sellSignal = (sellCondition1 and in_session) or sellCondition2
sellCondition = sellSignal and strategy.position_size > 0

// === Execute Trades === //
if (buyCondition)
    strategy.entry("Buy", strategy.long)

if (sellCondition)
    strategy.close("Buy")

// === Plot Supertrend Lines === //
// Plotting current timeframe Supertrend
plot(st_current, title="Current TF Supertrend", color=is_up_current ? color.green : color.red, linewidth=2, style=plot.style_line)

// Plotting higher timeframe Supertrend lines
plot(st_15m, title="15m Supertrend", color=is_up_15m ? color.green : color.red, linewidth=1, style=plot.style_line)
plot(st_5m, title="5m Supertrend", color=is_up_5m ? color.green : color.red, linewidth=1, style=plot.style_line)
plot(st_2m, title="2m Supertrend", color=is_up_2m ? color.green : color.red, linewidth=1, style=plot.style_line)

// === Plot Buy and Sell Signals === //
plotshape(series=buyCondition, title="Buy Signal", location=location.belowbar, 
          color=color.green, style=shape.labelup, text="BUY", size=size.small)

plotshape(series=sellCondition, title="Sell Signal", location=location.abovebar, 
          color=color.red, style=shape.labeldown, text="SELL", size=size.small)

// === Optional: Background Color to Indicate Position === //
bgcolor(strategy.position_size > 0 ? color.new(color.green, 90) : na, title="In Position Background")

// === Alerts === //
// Create alerts for Buy and Sell signals
alertcondition(buyCondition, title="Buy Alert", message="Buy signal generated by MTF Supertrend Strategy with Time Filter.")
alertcondition(sellCondition, title="Sell Alert", message="Sell signal generated by MTF Supertrend Strategy with Time Filter.")


Verwandt

Mehr