Handelsstrategie für einen Rückschlag auf den gleitenden Durchschnitt in mehreren Zeitrahmen

Schriftsteller:ChaoZhang, Datum: 2024-02-29 11:20:28
Tags:

img

Übersicht

Diese Strategie verwendet den Multi-Timeframe Moving Average-Ansatz, wobei der langfristige gleitende Durchschnitt zur Bestimmung der Haupttrendrichtung verwendet wird, während der kurzfristige gleitende Durchschnitt zur Bestimmung der kurzfristigen Trendrichtung verwendet wird. Wenn der langfristige Trend mit dem kurzfristigen Trend übereinstimmt, werden entsprechend Positionen eingenommen. Wenn der kurzfristige gleitende Durchschnitt in die Nähe des langfristigen gleitenden Durchschnitts zurückzieht, zeigt dies eine kurzfristige Korrektur an, die Handelsmöglichkeiten für die umgekehrte Richtung bietet.

Strategie Logik

Die Strategie verwendet den 200-tägigen einfachen gleitenden Durchschnitt (SMA) zur Bestimmung der langfristigen Trendrichtung und den 10-tägigen SMA für die kurzfristige Trendrichtung. Wenn der Preis oberhalb der 200-tägigen SMA und unterhalb der 10-tägigen SMA schließt, signalisiert er einen langfristigen Aufwärtstrend mit einem kurzfristigen Pullback, der eine Kaufmöglichkeit bietet. Wenn der Preis unterhalb der 200-tägigen SMA und oberhalb der 10-tägigen SMA schließt, signalisiert er einen langfristigen Abwärtstrend mit einem kurzfristigen Bounce, der eine Verkaufsmöglichkeit bietet.

Wenn die folgenden Bedingungen erfüllt sind, wird ein Long-Entry ausgelöst: Close > 200-Tage-SMA AND Close < 10-Tage-SMA.

Nach dem Eintritt wird ein Stop-Loss-Mechanismus von 10% implementiert. Die Position wird gestoppt, wenn der Rücktritt vom Einstiegspreis 10% übersteigt. Auch wenn die Option i_lowerClose aktiviert ist, wartet sie auf einen niedrigeren Close, bevor sie aussteigt, um eine übermäßige Empfindlichkeit des Stop-Loss zu vermeiden.

Analyse der Vorteile

Diese Strategie kombiniert mehrere Zeitrahmen gleitende Durchschnitte, so dass eine hohe Wahrscheinlichkeit bei der Erfassung der mittelfristigen bis langfristigen Trendrichtung. Es bietet anständige Eintrittszeit, wenn der kurzfristige SMA zurück zum langfristigen SMA zieht. Im Vergleich zu einzelnen gleitenden Durchschnittssystemen ist die Wahrscheinlichkeit, in kurzfristigen Korrekturen gefangen zu werden, reduziert.

Das Risiko dieser Strategie ist gut definiert und begrenzt. Eine Stop-Loss-Ratio von 10% beschränkt die maximale Verlustgröße.

Risikoanalyse

Es besteht immer noch die Gefahr, in dieser Strategie gefangen zu werden. Wenn die kurzfristige Korrektur zu lange dauert oder die Rücknahmeamplitude zu groß ist, könnte der Stop-Loss ausgelöst werden, was zu einem erzwungenen Ausstieg zu ungünstigen Zeiten führt. Dies führt zu einem Verlustrisiko.

Bei Aktien mit hoher Volatilität und längeren Korrekturzeiten neigt diese Strategie dazu, zu frühzeitig einen Stop-Loss zu erzielen, wodurch eine schlechte Performance erzielt wird.

Bei großen marktweiten Korrekturen, z. B. bei Finanzkrise, könnte diese Strategie große Verluste erleiden.

Optimierungsrichtlinien

Es kann auch ein mehrfaches Filtermechanismus eingeführt werden, um mehrere gleitende Durchschnittssysteme zu bilden. Zum Beispiel werden Eintrittspositionen nur berücksichtigt, wenn der Preis zwischen dem 50-tägigen SMA und dem 200-tägigen SMA liegt. Dies filtert zusätzlich Aktien mit schlechteren Trendmerkmalen aus.

Ein dynamischer Stop-Loss-Mechanismus kann implementiert werden. Insbesondere wird nach dem Eintritt die Stop-Loss-Ratio anstelle eines festen 10% anhand der beobachteten Volatilität angepasst.

Es kann auch andere Indikatoren eingebunden werden, die die Marktbedingungen messen. Zum Beispiel MACD, wenn MACD eine Marktdivergenz zeigt, könnte diese Strategie vorübergehend deaktiviert werden, um Verluste zu vermeiden. Es fügt einen Marktzeitmechanismus hinzu, um die Strategie ein- und auszuschalten.

Schlussfolgerung

Dies ist eine typische Multi-Timeframe Moving Average-Strategie. Sie profitiert von der mittelfristigen und langfristigen Trendrichtung, die durch den langfristigen gleitenden Durchschnitt angezeigt wird, und nutzt gleichzeitig die kurzfristigen Pullback-Möglichkeiten, die durch den kurzfristigen gleitenden Durchschnitt aufgedeckt werden. Die Risikofaktoren sind definiert und gut begrenzt. Weitere Verbesserungen wie zusätzliche Filter, adaptiver Stop-Loss und Marktzeitmechanismus könnten seine Stabilität verbessern.


/*backtest
start: 2024-01-29 00:00:00
end: 2024-02-28 00:00:00
period: 1h
basePeriod: 15m
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/
// © irfanp056
// @version=5

strategy("Simple Pullback Strategy", 
     overlay=true) // Interactive Brokers rate

// Get user input
i_ma1           = input.int(title="MA 1 Length", defval=200, step=10, group="Strategy Parameters", tooltip="Long-term MA")
i_ma2           = input.int(title="MA 2 Length", defval=10, step=10, group="Strategy Parameters", tooltip="Short-term MA")
i_stopPercent   = input.float(title="Stop Loss Percent", defval=0.10, step=0.1, group="Strategy Parameters", tooltip="Failsafe Stop Loss Percent Decline")
i_lowerClose    = input.bool(title="Exit On Lower Close", defval=false, group="Strategy Parameters", tooltip="Wait for a lower-close before exiting above MA2")
i_startTime     = input(title="Start Filter", defval=timestamp("01 Jan 1995 13:30 +0000"), group="Time Filter", tooltip="Start date & time to begin searching for setups")
i_endTime       = input(title="End Filter", defval=timestamp("1 Jan 2099 19:30 +0000"), group="Time Filter", tooltip="End date & time to stop searching for setups")

// Get indicator values
ma1 = ta.sma(close, i_ma1)
ma2 = ta.sma(close, i_ma2)

// Check filter(s)
f_dateFilter = true

// Check buy/sell conditions
var float buyPrice = 0
buyCondition    = close > ma1 and close < ma2 and strategy.position_size == 0 and f_dateFilter
sellCondition   = close > ma2 and strategy.position_size > 0 and (not i_lowerClose or close < low[1])
stopDistance    = strategy.position_size > 0 ? ((buyPrice - close) / close) : na
stopPrice       = strategy.position_size > 0 ? buyPrice - (buyPrice * i_stopPercent) : na
stopCondition   = strategy.position_size > 0 and stopDistance > i_stopPercent

// Enter positions
if buyCondition
    strategy.entry(id="Long", direction=strategy.long)

if buyCondition[1]
    buyPrice := open

// Exit positions
if sellCondition or stopCondition
    strategy.close(id="Long", comment="Exit" + (stopCondition ? "SL=true" : ""))
    buyPrice := na

// Draw pretty colors
plot(buyPrice, color=color.lime, style=plot.style_linebr)
plot(stopPrice, color=color.red, style=plot.style_linebr, offset=-1)
plot(ma1, color=color.blue)
plot(ma2, color=color.orange)

Mehr