EintSimple Pullback-Strategie

Schriftsteller:ChaoZhang, Datum: 15.01.2024
Tags:

img

Bewegliche Durchschnittsquerschnitt EintSimple Pullback Strategie

Übersicht

Die EintSimple Pullback-Strategie ist eine durchschnittliche Umkehrstrategie, die auf einem doppelten gleitenden Durchschnitts-Crossover basiert. Sie verwendet zunächst eine langfristige und eine kurzfristige gleitende Durchschnittslinie. Wenn die kurzfristige gleitende Durchschnittslinie von unten durch die langfristige gleitende Durchschnittslinie bricht, wird ein Kaufsignal generiert. Um falsche Ausbrüche zu filtern, erfordert diese Strategie auch, dass der Schlusskurs höher ist als die langfristige gleitende Durchschnittslinie.

Wenn der Kurs nach dem Markteintritt wieder unter die kurzfristige gleitende Durchschnittslinie fällt, löst er ein Exit-Signal aus.

Strategie Logik

Die Strategie stützt sich hauptsächlich auf das Goldene Kreuz der doppelten gleitenden Durchschnitte, um den Eintrittszeitpunkt zu bestimmen.

  1. Der Schlusskurs ist größer als der langfristige gleitende Durchschnitt ma1
  2. Der Schlusskurs ist niedriger als der kurzfristige gleitende Durchschnitt ma2
  3. Derzeit keine Stelle

Nach Erfüllung der vorstehenden Voraussetzungen wird diese Strategie eine vollständige Long-Position einnehmen.

Das Ausstiegssignal-Urteil basiert auf zwei Bedingungen. Die eine ist, dass der Preis wieder unter den kurzfristigen gleitenden Durchschnitt fällt. Die andere ist, dass der Rückschritt vom höchsten Punkt an den festgelegten Stop-Loss-Prozentsatz erreicht. Die spezifischen Ausstiegsbedingungen sind wie folgt:

  1. Der Schlusskurs ist größer als der kurzfristige gleitende Durchschnitt ma2
  2. Der Rückzug vom höchsten Punkt erreicht den festgelegten Stop-Loss-Prozentsatz

Wenn eine der Ausgangskonditionen erfüllt ist, wird diese Strategie alle Long-Positionen schließen.

Vorteile

  1. Die Verwendung eines doppelten gleitenden Durchschnitts-Crossovers in Kombination mit soliden Schlusskursbewertungen kann falsche Ausbrüche effektiv filtern.

  2. Ein Pullback-Eintrag kann eingegangen werden, nachdem der Preis kurzfristige Wendepunkte gebildet hat.

  3. Mit Stop-Loss-Einstellung kann der maximale Drawdown begrenzt werden.

Risiken

  1. Bei der Ermittlung der Risikopositionen ist es notwendig, die Risikopositionen zu ermitteln.

  2. Bei falschen Parameter-Einstellungen von gleitenden Durchschnitten können zu glatte oder zu empfindliche Kurven entstehen.

  3. Zu locker eingestellte Stop-Loss-Einstellungen führen zu größeren Verlusten.

Optimierung

  1. Versuche verschiedene Längenkombinationen von langfristigen und kurzfristigen gleitenden Durchschnitten, um die optimalen Parameter zu finden.

  2. Vergleichen Sie die Auswirkungen der Verwendung des Schlusskurses und des typischen Preises zur Bestimmung von gleitenden Durchschnittsquerschnitten.

  3. Testen Sie Filter wie Volumen- oder Volatilitätsindikatoren.

  4. Backtest optimieren Sie den Stop-Loss-Prozentsatz, um die beste Einstellung zu finden.

Schlussfolgerung

Die EintSimple Pullback-Strategie ist eine einfache und praktische doppelte gleitende Durchschnitts-Pullback-Strategie. Sie nutzt effektiv die Richtungsfunktion von gleitenden Durchschnitten und kombiniert dabei solide Schlusskurse, um falsche Signale auszufiltern. Obwohl diese Strategie anfällig für häufigen Handel und das Verfolgen von Spitzen und Töten von Tiefen ist, kann sie durch Parameteroptimierung und Hinzufügen von Filtern weiter verbessert werden. Insgesamt ist dies eine großartige Strategie für quantitative Handelsanfänger, um zu üben und zu optimieren.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ZenAndTheArtOfTrading / www.PineScriptMastery.com
// @version=5
strategy("Simple Pullback Strategy", 
     overlay=true, 
     initial_capital=50000,
     default_qty_type=strategy.percent_of_equity, 
     default_qty_value=100)// 100% of balance invested on each trade

// Get user input
i_ma1           = input.int(title="MA 1 Length", defval=75, step=1, group="Strategy Parameters", tooltip="Long-term EMA")
i_ma2           = input.int(title="MA 2 Length", defval=9, step=1, group="Strategy Parameters", tooltip="Short-term EMA")
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=true, 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.ema(close, i_ma1)
ma2 = ta.ema(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.fuchsia)

Mehr