Die Ressourcen sind geladen. Beförderung...

Dynamisches Handelssystem für Preis-Aktionswiderstand

Schriftsteller:ChaoZhang, Datum: 2024-12-04 15:19
Tags:SRPA

img

Übersicht

Diese Strategie ist ein Handelssystem, das auf Preisbewegung und dynamischen Unterstützungs-/Widerstandsniveaus basiert und Trades in der Nähe von Schlüsselpreisniveaus ausführt, wenn bestimmte Kerzenmuster auftreten. Das System nutzt eine 16-Perioden-dynamische Unterstützungs-/Widerstandsberechnungsmethode, kombiniert mit vier klassischen Umkehrkerzenmustern - Hammer, Shooting Star, Doji und Pin Bar - um potenzielle Marktumkehrungen zu erfassen. Die Strategie verwendet für das Risikomanagement feste Prozentsatzgewinn- und Stop-Loss-Niveaus und verwendet einen Empfindlichkeitsparameter, um die Strenge des Einstiegssignals zu kontrollieren.

Strategieprinzipien

Der Kern der Strategie liegt in der dynamischen Berechnung von Unterstützungs- und Widerstandsniveaus, um die Grenzen der Preisbewegung festzulegen. Wenn sich der Preis diesen Schlüsselniveaus nähert, sucht das System nach spezifischen Kerzenmustern als Umkehrsignale. Die Einstiegsbedingungen erfordern eine Musterbildung innerhalb von 1,8% (Standardempfindlichkeit) der Unterstützungs-/Widerstandsniveaus. Das System implementiert eine Aktienmanagementregel von 35% mit 16% Stop-Loss und 9,5% Take-Profit, wodurch das Risiko bei etwa 5,6% des Gesamtkapitals pro Handel effektiv kontrolliert wird.

Strategische Vorteile

  1. Kombiniert zwei der zuverlässigsten Elemente der technischen Analyse: Preismuster und Support/Widerstand, was die Signalzuverlässigkeit erhöht
  2. Verwendet dynamisch berechnete Unterstützungs-/Widerstandsniveaus, die sich an sich ändernde Marktbedingungen anpassen
  3. Durchsetzung strenger Geldmanagement- und Risikokontrollmaßnahmen zur Verhinderung erheblicher Auszüge
  4. Eine klare Strategielogik mit verstellbaren Parametern, die die Optimierung für verschiedene Marktbedingungen erleichtert
  5. klare Eintrittssignale ohne subjektives Urteilen, geeignet für den automatisierten Handel

Strategische Risiken

  1. Die Effektivität von Support/Resistance kann in stark volatilen Märkten abnehmen
  2. Relativ breite Stop-Loss-Möglichkeiten (16%) können zu erheblichen Verlusten unter volatilen Bedingungen führen
  3. Die Einstellungen der Empfindlichkeitsparameter beeinflussen die Handelsfrequenz und -genauigkeit erheblich
  4. Wenn man sich ausschließlich auf Preismuster verlässt, kann man andere wichtige Marktsignale übersehen
  5. Notwendigkeit der Berücksichtigung der Handelskosten Auswirkungen auf die Strategieerträge

Optimierungsrichtlinien

  1. Einführung von Lautstärke als Bestätigungsindikator zur Verbesserung der Signalzuverlässigkeit
  2. Entwicklung von adaptiven Empfindlichkeitsparametern, die sich dynamisch anhand der Marktvolatilität anpassen
  3. Optimierung der Stop-Loss-Einstellungen, Erwägung der Implementierung von Trailing-Stops oder schrittweisen Stop-Loss-Plänen
  4. Hinzufügen von Trendfiltern zur Vermeidung von Umkehrtrades bei starken Trends
  5. Entwicklung eines dynamischen Positionsgrößerungssystems zur Anpassung der Handelsgröße an die Marktbedingungen

Zusammenfassung

Diese Preis-Action-basierte Handelsstrategie bietet Händlern einen systematischen Handelsansatz, indem sie dynamische Unterstützungs-/Widerstandsniveaus mit klassischen Umkehrmustern kombiniert. Die Stärken der Strategie liegen in ihrer klaren Logik und kontrollierbaren Risiken, obwohl eine kontinuierliche Optimierung auf der Grundlage der tatsächlichen Handelsergebnisse erforderlich ist. Händlern wird empfohlen, vor dem Live-Handel gründliches Backtesting und Parameteroptimierung durchzuführen und die Strategie basierend auf der Markterfahrung anzupassen.


/*backtest
start: 2024-11-26 00:00:00
end: 2024-12-03 00:00:00
period: 1h
basePeriod: 1h
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=5
strategy("Price Action Strategy", overlay=true)

// Settings
length = input.int(16, title="Support and Resistance Length")
sensitivity = input.float(0.018, title="Sensitivity")

// Stop Loss and Take Profit
stop_loss_pct = input.float(16, title="Stop Loss percentage", minval=0.1) / 100
take_profit_pct = input.float(9.5, title="Take Profit percentage", minval=0.1) / 100

// Function to identify a Hammer
isHammer() =>
    body = close - open
    price_range = high - low
    lower_shadow = open - low
    upper_shadow = high - close
    body > 0 and lower_shadow > body * 2 and upper_shadow < body * 0.5 and price_range > 0

// Function to identify a Shooting Star
isShootingStar() =>
    body = open - close
    price_range = high - low
    lower_shadow = close - low
    upper_shadow = high - open
    body > 0 and upper_shadow > body * 2 and lower_shadow < body * 0.5 and price_range > 0

// Function to identify a Doji
isDoji() =>
    body = close - open
    price_range = high - low
    math.abs(body) < (price_range * 0.1)  // Doji has a small body

// Function to identify a Pin Bar
isPinBar() =>
    body = close - open
    price_range = high - low
    lower_shadow = open - low
    upper_shadow = high - close
    (upper_shadow > body * 2 and lower_shadow < body * 0.5) or (lower_shadow > body * 2 and upper_shadow < body * 0.5)

// Support and resistance levels 
support = ta.lowest(low, length)
resistance = ta.highest(high, length)

// Entry criteria
long_condition = (isHammer() or isDoji() or isPinBar()) and close <= support * (1 + sensitivity)
short_condition = (isShootingStar() or isDoji() or isPinBar()) and close >= resistance * (1 - sensitivity)

// Function to calculate stop loss and take profit (long)
calculate_levels(position_size, avg_price, stop_loss_pct, take_profit_pct) =>
    stop_loss_level = avg_price * (1 - stop_loss_pct)
    take_profit_level = avg_price * (1 + take_profit_pct)
    [stop_loss_level, take_profit_level]

// Function to calculate stop loss and take profit (short)
calculate_levels_short(position_size, avg_price, stop_loss_pct, take_profit_pct) =>
    stop_loss_level = avg_price * (1 + stop_loss_pct)
    take_profit_level = avg_price * (1 - take_profit_pct)
    [stop_loss_level, take_profit_level]

// Buy entry order with label
if (long_condition and strategy.opentrades == 0)
    strategy.entry("Buy", strategy.long)
    pattern = isHammer() ? "Hammer" : isDoji() ? "Doji" : isPinBar() ? "Pin Bar" : ""
    label.new(x=bar_index, y=low, text=pattern, color=color.green, textcolor=color.black, size=size.small)

// Sell entry order with label
if (short_condition and strategy.opentrades == 0)
    strategy.entry("Sell", strategy.short)
    pattern = isShootingStar() ? "Shooting Star" : isDoji() ? "Doji" : isPinBar() ? "Pin Bar" : ""
    label.new(x=bar_index, y=high, text=pattern, color=color.red, textcolor=color.black, size=size.small)

// Stop Loss and Take Profit management for open positions
if (strategy.opentrades > 0)
    if (strategy.position_size > 0)  // Long position
        avg_price_long = strategy.position_avg_price  // Average price of long position
        [long_stop_level, long_take_profit_level] = calculate_levels(strategy.position_size, avg_price_long, stop_loss_pct, take_profit_pct)
        strategy.exit("Exit Long", from_entry="Buy", stop=long_stop_level, limit=long_take_profit_level)
    if (strategy.position_size < 0)  // Short position
        avg_price_short = strategy.position_avg_price  // Average price of short position
        [short_stop_level, short_take_profit_level] = calculate_levels_short(strategy.position_size, avg_price_short, stop_loss_pct, take_profit_pct)
        strategy.exit("Exit Short", from_entry="Sell", stop=short_stop_level, limit=short_take_profit_level)

// Visualization of Support and Resistance Levels
plot(support, title="Support", color=color.green, linewidth=2)
plot(resistance, title="Resistance", color=color.red, linewidth=2)






Verwandt

Mehr