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.
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
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)