Multimodale Stop-Profit- und Stop-Loss-Trendfolgestrategie basierend auf EMA, Madrid Bands und Donchian Channels

EMA RRR
Erstellungsdatum: 2025-01-10 16:24:30 zuletzt geändert: 2025-01-10 16:24:30
Kopie: 2 Klicks: 418
1
konzentrieren Sie sich auf
1617
Anhänger

Multimodale Stop-Profit- und Stop-Loss-Trendfolgestrategie basierend auf EMA, Madrid Bands und Donchian Channels

Überblick

Dies ist eine Trendfolgestrategie, die den Exponential Moving Average (EMA), das Madrid Ribbon und den Donchian Channel kombiniert. Die Einzigartigkeit der Strategie liegt in der Bereitstellung von drei umschaltbaren Stop-Profit- und Stop-Loss-Modi: basierend auf Punkten, basierend auf Betrag und basierend auf dem Risiko-Rendite-Verhältnis. Die Zuverlässigkeit der Transaktionen wird durch einen sekundären Signalbestätigungsmechanismus verbessert und Transaktionen werden nur dann durchgeführt, wenn zum zweiten Mal ein gültiges Signal erscheint.

Strategieprinzip

Die Strategie verwendet eine Kombination aus drei technischen Indikatoren, um Handelsmöglichkeiten zu identifizieren:

  1. Der 200-Perioden-Exponential-Moving-Average wird verwendet, um die allgemeine Trendrichtung zu bestimmen.
  2. Madrid-Bänder (Kreuzung der 5-Perioden- und 100-Perioden-EMAs) werden zur Bestimmung mittelfristiger Trends verwendet.
  3. Ausbrüche des Donchian-Kanals für bestimmte Einstiegszeitpunkte

Lange Handelsbedingungen: Der Preis liegt über 200EMA, das Madrid Band wird bullisch und der Preis bricht aus dem oberen Donchian Channel aus. Kurze Handelsbedingungen: Der Preis liegt unter 200EMA, das Madrid-Band wird bärisch und der Preis bricht aus dem unteren Donchian-Kanal aus. Um falsche Signale zu reduzieren, führt die Strategie einen Handel nur aus, wenn zum zweiten Mal ein gültiges Signal erscheint.

Strategische Vorteile

  1. Flexibles Stop-Profit- und Stop-Loss-Managementsystem, das je nach Handelsstil den Modus wechseln kann
  2. Die Kombination mehrerer technischer Indikatoren liefert zuverlässigere Handelssignale
  3. Der sekundäre Bestätigungsmechanismus reduziert effektiv die Auswirkungen falscher Signale
  4. Die Strategie vermeidet den Look-Ahead-Bias vollständig und es gibt kein Neuzeichnen-Problem.
  5. Hochgradig anpassbar, um sich an unterschiedliche Marktumgebungen anzupassen

Strategisches Risiko

  1. Bei einer Trendumkehr kann es zu einer größeren Korrektur kommen. Lösung: Sie können die Sensitivität der Strategie verbessern, indem Sie die Indikatorparameter anpassen
  2. Übermäßiges Vertrauen in technische Indikatoren kann zu verpassten Marktchancen führen Lösung: Es wird empfohlen, die Fundamentalanalyse zu kombinieren
  3. Feste Stop-Loss- und Take-Profit-Bestimmungen sind möglicherweise nicht für alle Marktbedingungen geeignet. Lösung: Passen Sie die Take-Profit- und Stop-Loss-Level dynamisch an die Volatilität an

Richtung der Strategieoptimierung

  1. Einführung von Volatilitätsindikatoren zur dynamischen Anpassung von Take-Profit- und Stop-Loss-Niveaus
  2. Lautstärkeanalyse zur Verbesserung der Signalzuverlässigkeit hinzugefügt
  3. Hinzufügen weiterer Marktstimmungsindikatoren
  4. Entwicklung eines adaptiven Parameteroptimierungssystems
  5. Fügen Sie Module zum Risikomanagement hinzu, wie z. B. die Kontrolle des maximalen Drawdowns

Zusammenfassen

Dies ist eine Trendverfolgungsstrategie, die mehrere klassische technische Indikatoren kombiniert und die Transaktionsstabilität durch flexibles Stop-Profit- und Stop-Loss-Management und einen sekundären Bestätigungsmechanismus verbessert. Die hohe Anpassbarkeit der Strategie ermöglicht eine Anpassung an unterschiedliche Marktumgebungen und Handelsstile. Es wird empfohlen, vor der tatsächlichen Verwendung ausreichende Backtests mit historischen Daten durchzuführen und die Parametereinstellungen entsprechend den spezifischen Markteigenschaften anzupassen.

Strategiequellcode
/*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","balance":49999}]
*/

//@version=6
strategy("Pamplona Enhanced TP/SL Toggleable", overlay=true, default_qty_type=strategy.fixed, default_qty_value=1)

// Input settings
use_tick_based = input.bool(false, title="Use Tick-Based TP/SL")
use_dollar_based = input.bool(false, title="Use Dollar-Based TP/SL")
use_risk_reward = input.bool(true, title="Use Risk-Reward TP/SL") // Default option

tick_size = input.float(0.1, title="Tick Size (for Tick-Based)", minval=0.0001, step=0.0001)
ticks = input.int(10, title="Ticks (for Tick-Based TP/SL)", minval=1)
dollar_tp = input.float(10.0, title="Dollar Take Profit (for Dollar-Based)", minval=0.01, step=0.01)
dollar_sl = input.float(10.0, title="Dollar Stop Loss (for Dollar-Based)", minval=0.01, step=0.01)
risk_reward_ratio = input.float(2.0, title="Risk-Reward Ratio (for Risk-Reward TP/SL)", minval=0.1, step=0.1)
contract_size = input.int(1, title="Contract Size", minval=1)

// Retrieve indicators
ema200 = ta.ema(close, 200)
src = close
ma05 = ta.ema(src, 5)
ma100 = ta.ema(src, 100)
madrid_green = ma05 > ma100
dlen = input.int(20, title="Donchian Channel Period")
highest_d = ta.highest(high, dlen)
lowest_d = ta.lowest(low, dlen)
donchian_green = close > highest_d[1]
donchian_red = close < lowest_d[1]

// Track signals
var int long_signal_count = 0
var int short_signal_count = 0

// Conditions
long_condition_raw = madrid_green and donchian_green and close > ema200
short_condition_raw = not madrid_green and donchian_red and close < ema200

// Update signal counters
if long_condition_raw
    long_signal_count += 1
else
    long_signal_count := 0

if short_condition_raw
    short_signal_count += 1
else
    short_signal_count := 0

// Final conditions to enter on the second signal
long_condition = long_signal_count == 2
short_condition = short_signal_count == 2

// Ensure exactly one TP/SL mode is enabled
tp_sl_mode_count = (use_tick_based ? 1 : 0) + (use_dollar_based ? 1 : 0) + (use_risk_reward ? 1 : 0)
if tp_sl_mode_count != 1
    runtime.error("Enable exactly ONE TP/SL mode (Tick-Based, Dollar-Based, or Risk-Reward).")

// Function to calculate TP/SL based on active mode
calc_tp_sl(entry_price, is_long) =>
    float tp = na
    float sl = na
    if use_tick_based
        tp := is_long ? entry_price + ticks * tick_size : entry_price - ticks * tick_size
        sl := is_long ? entry_price - ticks * tick_size : entry_price + ticks * tick_size
    else if use_dollar_based
        tp := is_long ? entry_price + (dollar_tp / contract_size) : entry_price - (dollar_tp / contract_size)
        sl := is_long ? entry_price - (dollar_sl / contract_size) : entry_price + (dollar_sl / contract_size)
    else if use_risk_reward
        risk = is_long ? close - low : high - close
        tp := is_long ? close + (risk * risk_reward_ratio) : close - (risk * risk_reward_ratio)
        sl := is_long ? close - risk : close + risk
    [tp, sl]

// Entry logic
if long_condition
    [take_profit, stop_loss] = calc_tp_sl(close, true)
    strategy.entry("Long", strategy.long, qty=contract_size)
    strategy.exit("Take Profit", from_entry="Long", limit=take_profit, stop=stop_loss)

if short_condition
    [take_profit, stop_loss] = calc_tp_sl(close, false)
    strategy.entry("Short", strategy.short, qty=contract_size)
    strategy.exit("Take Profit", from_entry="Short", limit=take_profit, stop=stop_loss)

// Plot indicators
plot(ema200, title="200 EMA", color=color.white, linewidth=2)
bgcolor(long_condition ? color.new(color.green, 90) : short_condition ? color.new(color.red, 90) : na)