EMA/SMA-Trendfolge- und Swing-Trading-Strategie kombiniert mit Volumenfilterung und prozentualem Stop-Loss- und Take-Profit-System

EMA SMA
Erstellungsdatum: 2024-12-11 15:12:35 zuletzt geändert: 2024-12-11 15:12:35
Kopie: 1 Klicks: 444
1
konzentrieren Sie sich auf
1617
Anhänger

EMA/SMA-Trendfolge- und Swing-Trading-Strategie kombiniert mit Volumenfilterung und prozentualem Stop-Loss- und Take-Profit-System

Überblick

Die Strategie ist ein integriertes Handelssystem, das Trend-Tracking mit Bandbreiten-Trading-Methoden kombiniert, um ein vollständiges Handelssystem durch EMA und SMA-Gleichlinie-Kreuzung, Bandbreiten-High-Low-Identifizierung, Transaktionsvolumen-Filterung und Prozentsatz-Stop- und Tracking-Stop-Loss-Mechanismen zu erstellen. Die Strategie wurde konzipiert, um die Genauigkeit und Zuverlässigkeit des Handels durch die synchronische Wirkung technischer Indikatoren zu verbessern.

Strategieprinzip

Die Strategie verwendet ein mehrschichtiges Signalfiltermechanismus, um zuerst die Basistrends durch die Kreuzung von EMA (10) und SMA (21) zu bestimmen, und dann den Einstieg durch einen Hoch- und Tiefpunktbruch der sechs K-Linien auf der linken und linken Seite zu bestimmen, während die Transaktionsmenge größer als 200-Zyklen-Moving Average ist, um einen Handel in einer Umgebung mit ausreichender Liquidität zu gewährleisten. Das System verwendet eine 2% ige Prozentsatz-Stop-Loss und eine 1%ige Tracking-Stop-Loss-Risiko-Management.

Strategische Vorteile

  1. Mehrfach-Signal-Bestätigungsmechanismen reduzieren falsche Signale: Erhöhung der Triple-Verifizierung durch Durchschnittstrend, Preis-Breakout und Transaktionsvolumen, um die Handelssicherheit zu erhöhen
  2. Flexible Stop-Loss-Mechanismen: Stop-Losses werden prozentual eingestellt und mit einem Tracking-Stop-Loss-Lock-In-Profit kombiniert
  3. Vollständiges Visualisierungssystem: Graphische Darstellung von Gleichlinien und Durchbruchspunkten zur Erleichterung der Handelsüberwachung
  4. Hohe Anpassbarkeit: Alle Schlüsselparameter sind anpassbar für unterschiedliche Marktumgebungen
  5. Systematisches Risikomanagement: Risiken werden durch vorgegebene Stop-Loss- und Stop-Out-Risiken kontrolliert

Strategisches Risiko

  1. Der Horizontalmarkt könnte zu häufigen Falschbrüchen führen.
  2. Die Transaktionsmenge-Filterung hat möglicherweise einige der gültigen Signale übersehen.
  3. Der Fix-Prozent-Stop könnte bei starken Spielen vorzeitig ausfallen
  4. Einheitliche Linie-Systeme sind in der schnellen Marktreise rückständig
  5. Die Auswirkungen der Transaktionskosten auf die Strategierendite müssen berücksichtigt werden

Richtung der Strategieoptimierung

  1. Einführung eines Anpassungsmechanismus für die Volatilität und dynamische Anpassung der Stop-Loss-Parameter
  2. Erhöhung der Trendstärke-Filterung und Vermeidung von Handel in schwachen Trends
  3. Optimierung der Transaktionsvolumen-Filterung, wobei die relative Transaktionsvolumen-Veränderung berücksichtigt wird
  4. Hinzufügen von Zeitfiltermechanismen zur Vermeidung ungünstiger Zeiten
  5. Erwägen Sie die Einbeziehung einer Klassifizierung des Marktumfelds mit unterschiedlichen Parametern für verschiedene Märkte

Zusammenfassen

Die Strategie baut ein vollständiges Handelssystem auf, das für die mittelfristige Trendverfolgung geeignet ist. Die Vorteile des Systems liegen in der Erkennung von mehreren Signalen und in einem ausgefeilten Risikomanagementmechanismus, jedoch muss auch auf die Performance in den Quermarkten geachtet werden. Durch die empfohlene Optimierungsrichtung gibt es noch Raum für Verbesserungen der Strategie, insbesondere Verbesserungen in der Anpassungsfähigkeit.

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

//@version=5
// Strategy combining EMA/SMA Crossover, Swing High/Low, Volume Filtering, and Percentage TP & Trailing Stop
strategy("Swing High/Low Strategy with Volume, EMA/SMA Crossovers, Percentage TP and Trailing Stop", overlay=true)

// --- Inputs ---
source = close
TITLE = input(false, title='Enable Alerts & Background Color for EMA/SMA Crossovers')
turnonAlerts = input(true, title='Turn on Alerts?')
colorbars = input(true, title="Color Bars?")
turnonEMASMA = input(true, title='Turn on EMA1 & SMA2?')
backgroundcolor = input(false, title='Enable Background Color?')

// EMA/SMA Lengths
emaLength = input.int(10, minval=1, title='EMA Length')
smaLength = input.int(21, minval=1, title='SMA Length')
ema1 = ta.ema(source, emaLength)
sma2 = ta.sma(source, smaLength)

// Swing High/Low Lengths
leftBars = input.int(6, title="Left Bars for Swing High/Low", minval=1)
rightBars = input.int(6, title="Right Bars for Swing High/Low", minval=1)

// Volume MA Length
volMaLength = input.int(200, title="Volume Moving Average Length")

// Percentage Take Profit with hundredth place adjustment
takeProfitPercent = input.float(2.00, title="Take Profit Percentage (%)", minval=0.01, step=0.01) / 100

// Trailing Stop Loss Option
useTrailingStop = input.bool(true, title="Enable Trailing Stop Loss?")
trailingStopPercent = input.float(1.00, title="Trailing Stop Loss Percentage (%)", minval=0.01, step=0.01) / 100

// --- Swing High/Low Logic ---
pivotHigh(_leftBars, _rightBars) =>
    ta.pivothigh(_leftBars, _rightBars)

pivotLow(_leftBars, _rightBars) =>
    ta.pivotlow(_leftBars, _rightBars)

ph = fixnan(pivotHigh(leftBars, rightBars))
pl = fixnan(pivotLow(leftBars, rightBars))

// --- Volume Condition ---
volMa = ta.sma(volume, volMaLength)

// Declare exit conditions as 'var' so they are initialized
var bool longExitCondition = na
var bool shortExitCondition = na

// --- Long Entry Condition: Close above Swing High & Volume >= 200 MA ---
longCondition = (close > ph and volume >= volMa)
if (longCondition)
    strategy.entry("Long", strategy.long)

// --- Short Entry Condition: Close below Swing Low & Volume >= 200 MA ---
shortCondition = (close < pl and volume >= volMa)
if (shortCondition)
    strategy.entry("Short", strategy.short)

// --- Take Profit and Trailing Stop Logic ---

// For long position: Set take profit at the entry price + takeProfitPercent
longTakeProfitLevel = strategy.position_avg_price * (1 + takeProfitPercent)
shortTakeProfitLevel = strategy.position_avg_price * (1 - takeProfitPercent)

// --- Long Exit Logic ---
if (useTrailingStop)
    // Trailing Stop for Long
    strategy.exit("Long Exit", "Long", stop=na, trail_offset=strategy.position_avg_price * trailingStopPercent, limit=longTakeProfitLevel)
else
    // Exit Long on Take Profit only
    strategy.exit("Long Exit", "Long", limit=longTakeProfitLevel)

// --- Short Exit Logic ---
if (useTrailingStop)
    // Trailing Stop for Short
    strategy.exit("Short Exit", "Short", stop=na, trail_offset=strategy.position_avg_price * trailingStopPercent, limit=shortTakeProfitLevel)
else
    // Exit Short on Take Profit only
    strategy.exit("Short Exit", "Short", limit=shortTakeProfitLevel)

// --- Plot Swing High/Low ---

plot(ph, style=plot.style_circles, linewidth=1, color=color.blue, offset=-rightBars, title="Swing High")
plot(ph, style=plot.style_line, linewidth=1, color=color.blue, offset=0, title="Swing High")
plot(pl, style=plot.style_circles, linewidth=1, color=color.red, offset=-rightBars, title="Swing High")
plot(pl, style=plot.style_line, linewidth=1, color=color.red, offset=0, title="Swing High")
// --- Plot EMA/SMA ---
plot(turnonEMASMA ? ema1 : na, color=color.green, title="EMA")
plot(turnonEMASMA ? sma2 : na, color=color.orange, title="SMA")

// --- Alerts ---
alertcondition(longCondition, title="Long Entry", message="Price closed above Swing High with Volume >= 200 MA")
alertcondition(shortCondition, title="Short Entry", message="Price closed below Swing Low with Volume >= 200 MA")

// --- Bar Colors for Visualization ---
barcolor(longCondition ? color.green : na, title="Long Entry Color")
barcolor(shortCondition ? color.red : na, title="Short Entry Color")
bgcolor(backgroundcolor ? (ema1 > sma2 ? color.new(color.green, 50) : color.new(color.red, 50)) : na)