Die Ressourcen sind geladen. Beförderung...

Dynamische Unterstützung und Widerstand Adaptive Pivot-Handelsstrategie

Schriftsteller:ChaoZhang, Datum: 2025-01-10 15:08:24
Tags:ATRDrehkreuz

 Dynamic Support and Resistance Adaptive Pivot Trading Strategy

Übersicht

Diese Strategie ist ein anpassungsfähiges Handelssystem, das auf der dynamischen Identifizierung von Unterstützungs- und Widerstandsniveaus anhand von Preis-Pivot-Punkten basiert. Es bestimmt die wichtigsten Preisniveaus, indem es lokale Höchst- und Tiefstände in Echtzeit berechnet und entsprechend Trades ausführt. Die Kernstärke liegt in seiner dynamischen Natur, die es ermöglicht, Handelsparameter basierend auf sich ändernden Marktbedingungen anzupassen, was es sowohl für Trend- als auch für Rangierungsmärkte geeignet macht.

Strategieprinzipien

Die Kernlogik beruht auf mehreren Schlüsselelementen: 1. Dynamische Drehzahlberechnung: Verwendet einen verstellbaren Drehzahllängenparameter (Standard 2) zur Ermittlung lokaler Höhen und Tiefen 2. Unterstützungs-/Widerstandszonen: Festlegt prozentual basierte Bereiche (Standard 0,4%) um Pivotpunkte, um gültige Handelszonen zu definieren 3. Signalgenerierung: Lange Signale, wenn der Preis über die Unterstützung bricht, kurze Signale, wenn der Preis unter den Widerstand bricht 4. Risikomanagement: Implementiert dynamische Stop-Loss- (10%) und Take-Profit- (27%) Niveaus, wobei die Positionsgröße auf der Grundlage des Eigenkapitals des Kontos festgelegt wird

Strategische Vorteile

  1. Hohe Anpassungsfähigkeit: Dynamische Anpassung von Unterstützungs-/Widerstandsniveaus basierend auf den Marktbedingungen und Vermeidung von Verzögerungen gegenüber statischen Niveaus
  2. Kontrolliertes Risiko: Aufrechterhaltung eines angemessenen Risikos pro Handel durch strenge prozentual basierte Stopps und dynamische Positionsgröße
  3. Skalierbarkeit: Unterstützt mehrere Zeitrahmen und Parameterkombinationen für die Optimierung in verschiedenen Marktumgebungen
  4. Transparenz: klare Handelslogik mit visuell angezeigten Signalen und Preisniveaus auf den Diagrammen

Strategische Risiken

  1. Risiko eines falschen Ausbruchs: Kann häufige falsche Signale in verschiedenen Märkten erzeugen, die eine Anpassung der Parameter der Unterstützungs-/Widerstandszone erfordern
  2. Slippe-Effekt: Die tatsächlichen Ausführungspreise können bei weniger liquiden Marktbedingungen erheblich von den Signalpreisen abweichen.
  3. Trendabhängigkeit: Die Strategie funktioniert besser in Trendmärkten, kann aber während der Konsolidierungsphasen zu hohe Signale erzeugen
  4. Parameterempfindlichkeit: Leistung hängt stark von Parameter-Einstellungen ab und erfordert eine gründliche Rückprüfung zur Optimierung

Optimierungsrichtlinien

  1. Hinzufügen eines Marktumfelderkennungsmoduls für die automatische Anpassung von Parametern auf der Grundlage der Volatilität
  2. Volumen- und zusätzliche technische Indikatoren als Bestätigungssignale einbeziehen
  3. Optimierung des Positionsgrößenalgorithmus mit dynamischen Anpassungen anhand der Marktvolatilität
  4. Einführung von Zeitfiltern, um den Handel in ungünstigen Zeiten zu vermeiden
  5. Entwicklung eines anpassungsfähigen Stop-Loss-Algorithmus mit dynamischer Anpassung an die Marktvolatilität

Zusammenfassung

Die Strategie bietet einen zuverlässigen Rahmen für Trend- und Umkehrhandel durch dynamische Identifizierung der wichtigsten Preisniveaus in Kombination mit strenger Risikokontrolle. Während sie eine gewisse Parameterempfindlichkeit und Abhängigkeit vom Marktumfeld aufweist, ermöglichen kontinuierliche Optimierung und Verfeinerung eine konsistente Leistung unter verschiedenen Marktbedingungen. Eine erfolgreiche Umsetzung erfordert, dass Händler ihre Prinzipien tief verstehen und die Parameter entsprechend spezifischen Marktsituationen anpassen.


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

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © felipemiransan

//@version=6
strategy("Dynamic Support and Resistance Pivot Strategy ", overlay=true)

// Strategy parameters
pivot_length = input.int(2, title="Pivot Length", tooltip="Pivot size to identify peaks and troughs")
support_resistance_distance = input.float(0.4, title="Support/Resistance Distance %", tooltip="Distance to consider a support or resistance level in %")

// Stop Loss and Take Profit parameters
stop_loss_pct = input.float(10.0, title="Stop Loss %", tooltip="Stop loss percentage", minval=0.1) / 100
take_profit_pct = input.float(26.0, title="Take Profit %", tooltip="Take profit percentage", minval=0.1) / 100

// Functions to identify high and low pivots
pivot_high = ta.pivothigh(high, pivot_length, pivot_length)
pivot_low = ta.pivotlow(low, pivot_length, pivot_length)

// Storing support and resistance levels
var float resistance_level = na
var float support_level = na
var float last_pivot_high = na
var float last_pivot_low = na

// Updating support and resistance based on pivots
if (not na(pivot_high))
    resistance_level := high[pivot_length]
    last_pivot_high := high[pivot_length]

if (not na(pivot_low))
    support_level := low[pivot_length]
    last_pivot_low := low[pivot_length]

// Function to check if the current price is near a support or resistance level
is_near_resistance = (not na(resistance_level)) and (close >= resistance_level * (1 - support_resistance_distance / 100)) and (close <= resistance_level * (1 + support_resistance_distance / 100))
is_near_support = (not na(support_level)) and (close >= support_level * (1 - support_resistance_distance / 100)) and (close <= support_level * (1 + support_resistance_distance / 100))

// Cross conditions variables
long_cross = ta.crossover(close, support_level) and not na(support_level)
short_cross = ta.crossunder(close, resistance_level) and not na(resistance_level)

// Entry conditions
long_condition = is_near_support and long_cross  // Buy when crossing support from below
short_condition = is_near_resistance and short_cross  // Sell when crossing resistance from above

// Order execution
if (long_condition)
    strategy.entry("Long", strategy.long)

if (short_condition)
    strategy.entry("Short", strategy.short)

// Stop Loss and Take Profit
if (strategy.opentrades > 0)
    if (strategy.position_size > 0)  // For long position
        avg_price_long = strategy.position_avg_price
        long_stop_level = avg_price_long * (1 - stop_loss_pct)
        long_take_profit_level = avg_price_long * (1 + take_profit_pct)
        strategy.exit("Exit Long", from_entry="Long", stop=long_stop_level, limit=long_take_profit_level)

    if (strategy.position_size < 0)  // For short position
        avg_price_short = strategy.position_avg_price
        short_stop_level = avg_price_short * (1 + stop_loss_pct)
        short_take_profit_level = avg_price_short * (1 - take_profit_pct)
        strategy.exit("Exit Short", from_entry="Short", stop=short_stop_level, limit=short_take_profit_level)

// Plotting support and resistance levels on the chart
plot(support_level, title="Support", color=color.green, linewidth=2, style=plot.style_line)
plot(resistance_level, title="Resistance", color=color.red, linewidth=2, style=plot.style_line)

// Adding labels to show pivot values
if (long_condition and not na(support_level))
    label.new(bar_index, low[pivot_length], str.tostring(low[pivot_length]), style=label.style_label_up, color=color.green, textcolor=color.white, size=size.small)

if (short_condition and not na(resistance_level))
    label.new(bar_index, high[pivot_length], str.tostring(high[pivot_length]), style=label.style_label_down, color=color.red, textcolor=color.white, size=size.small)


Verwandt

Mehr