Eine auf gleitenden Durchschnitten, Preismustern und Volumen basierende Trendumkehrstrategie

Schriftsteller:ChaoZhang, Datum: 2024-01-17 17:48:40
Tags:

img

Übersicht

Diese Strategie kombiniert gleitende Durchschnitte, Preismuster und Volumen, um potenzielle Trendumkehrpunkte auf dem Markt zu identifizieren.

Grundsätze

Die Kernidee dieser Strategie besteht darin, eine Kombination von gleitenden Durchschnitten, Preisbewegungsmustern und Volumen als Signale für bevorstehende Umkehrungen zu verwenden. Insbesondere können goldene Kreuze und Todeskreuze von gleitenden Durchschnitten auf Trendschwankungen hinweisen. Bullish/bearish Engulfing-Muster implizieren normalerweise kurzfristige Umkehrungen.

Logischerweise berechnet die Strategie zunächst schnelle und langsame gleitende Durchschnitte. Anschließend definiert sie Bedingungen zur Identifizierung von bullish/bearish Engulfing-Mustern. Unterstützungs- und Widerstandsniveaus werden zusammen mit Volumenerweiterung als zusätzliche Bedingungen berücksichtigt. Die Kaufsignale werden ausgelöst, wenn der schnelle MA über den langsamen MA überschreitet, ein bullishes Muster erscheint, der Widerstand bricht und das Volumen steigt. Die entgegengesetzten Bedingungen lösen Verkaufssignale aus.

Vorteile

Der größte Vorteil dieser Strategie besteht darin, eine Kombination von mehreren Signalen zu verwenden, um Umkehrungen zu bestätigen, was dazu beiträgt, falsche Signale zu vermeiden.

Darüber hinaus nutzt diese Strategie sowohl Trend- als auch Umkehrkonzepte. Umkehrungen werden nur nach einem bestehenden Trend gesucht. Mit anderen Worten, die Strategie sucht nur nach Gegentrend-Retracements innerhalb von Trendmärkten. Dies hilft, die Zufälligkeit zu reduzieren und die Rentabilität zu steigern.

Risiken

Das größte Risiko dieser Strategie sind fehlgeschlagene Umkehrungen, bei denen sich der Preis nach Eintrittssignalen weiterhin gegen die Handelsrichtung bewegt.

Die Lösungen umfassen die Anpassung der gleitenden Durchschnittsperioden, um bessere Trends zu definieren, die Verwendung von breiteren Stop-Losses und die Einbeziehung mehrer Bestätigungsfaktoren vor dem Handel mit Umkehrsignalen.

Verbesserungen

Möglichkeiten der Optimierung dieser Strategie sind:

  1. Anpassung der gleitenden Durchschnittsperioden, um optimale langfristige/kurzfristige Trends zu ermitteln.

  2. Verschiedene Berechnungsmethoden für Unterstützung/Widerstand wie Pivot Points testen.

  3. Ich versuche andere Volumen-Indikatoren wie Chaikin Geldfluss, Volumen-Oszillator.

  4. Einbeziehung mehr Umkehrung Bestätigungsfaktoren wie langfristige Chart-Muster, riesige Volumen Spitzen usw.

  5. Die Verwendung von Aktienindex-Futures zur Überprüfung von Signalen auf verschiedenen Märkten.

Durch strenge Tests von Parameterkombinationen können weitere Leistungsverbesserungen erzielt werden.

Schlussfolgerung

Diese Strategie kombiniert gleitende Durchschnitte, Preisbewegung und Volumen nur in Trendmärkten mit Umkehrungen.


/*backtest
start: 2023-01-10 00:00:00
end: 2024-01-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Profit Table Strategy", overlay=true)

// Input parameters
fastLength = input(10, title="Fast MA Length")
slowLength = input(20, title="Slow MA Length")
takeProfitPercent = input(1, title="Take Profit (%)") / 100
stopLossPercent = input(1, title="Stop Loss (%)") / 100
trailingStopPercent = input(1, title="Trailing Stop (%)") / 100

// Price action conditions
bullishEngulfing = close > open and close > open[1] and open < close[1] and open[1] > close[1]
bearishEngulfing = close < open and close < open[1] and open > close[1] and open[1] < close[1]

// Support and resistance levels
supportLevel = input(100, title="Support Level")
resistanceLevel = input(200, title="Resistance Level")

// Volume conditions
volumeCondition = volume > ta.sma(volume, 20)

// Calculate moving averages
fastMA = ta.sma(close, fastLength)
slowMA = ta.sma(close, slowLength)

// Buy condition
buyCondition = (fastMA > slowMA) and (close > resistanceLevel) and bullishEngulfing and volumeCondition

// Sell condition
sellCondition = (fastMA < slowMA) and (close < supportLevel) and bearishEngulfing and volumeCondition

// Strategy logic
strategy.entry("Buy", strategy.long, when=buyCondition)
strategy.close("Buy", when=sellCondition)

// Calculate take profit, stop loss, and trailing stop levels
takeProfitLevel = strategy.position_avg_price * (1 + takeProfitPercent)
stopLossLevel = strategy.position_avg_price * (1 - stopLossPercent)
trailingStopLevel = strategy.position_avg_price * (1 - trailingStopPercent)

// Plotting levels on the chart
plot(supportLevel, color=color.blue, style=plot.style_line, linewidth=2, title="Support Level")
plot(resistanceLevel, color=color.purple, style=plot.style_line, linewidth=2, title="Resistance Level")
plot(takeProfitLevel, color=color.green, style=plot.style_line, linewidth=2, title="Take Profit Level")
plot(stopLossLevel, color=color.red, style=plot.style_line, linewidth=2, title="Stop Loss Level")
plot(trailingStopLevel, color=color.orange, style=plot.style_line, linewidth=2, title="Trailing Stop Level")

// Plotting buy and sell signals on the chart
plotshape(series=buyCondition, title="Buy Signal", color=color.green, style=shape.labelup, location=location.belowbar)
plotshape(series=sellCondition, title="Sell Signal", color=color.red, style=shape.labeldown, location=location.abovebar)


Mehr