Pullback-Einstiegsstrategie basierend auf dem doppelten gleitenden Durchschnitt-Crossover


Erstellungsdatum: 2024-01-15 14:04:54 zuletzt geändert: 2024-01-15 14:04:54
Kopie: 3 Klicks: 520
1
konzentrieren Sie sich auf
1617
Anhänger

Pullback-Einstiegsstrategie basierend auf dem doppelten gleitenden Durchschnitt-Crossover

Übersicht

Die EintSimple Pullback Strategy ist eine Rückruf-Eintrittsstrategie, die auf der Kreuzung zweier Moving Averages basiert. Die Strategie verwendet zunächst einen langen und einen kurzen Moving Average, um ein Kaufsignal zu erzeugen, wenn der kurzfristige Moving Average den langfristigen Moving Average von unten durchbricht. Zur Filterung eines Ausfallbruchs verlangt die Strategie auch einen Schlusskurs, der höher ist als der langfristige Moving Average.

Wenn der Preis nach dem Eintritt wieder unter den kurzfristigen beweglichen Durchschnitten fällt, zeigt die BTC ein Ausstiegssignal. Darüber hinaus setzt die Strategie einen Ausstiegsstop ein, wenn der gesetzte Stop-Loss-Prozent von der höchsten Punktrückziehung erreicht wird.

Strategie-Logik

Die Strategie basiert hauptsächlich auf der Goldkreuzung von doppelten beweglichen Durchschnitten, um den Zeitpunkt des Eintritts zu bestimmen. Insbesondere müssen die folgenden Bedingungen erfüllt sein, um mehr zu eröffnen:

  1. Der Schlusskurs ist größer als der langfristige gleitende Durchschnitt ma1
  2. Abschlusskurs unter dem kurzfristigen gleitenden Durchschnitt ma2
  3. Derzeit keine Positionen

Wenn die oben genannten Bedingungen erfüllt sind, wird die Strategie ausgeführt.

Die Ausstiegssignale basieren auf zwei Bedingungen: der Rückfall des Kurses unter den kurzfristigen gleitenden Durchschnittswerten und der Stop-Loss-Prozentsatz, der vom Höchststand des Rückzugs zum eingestellten Wert erreicht wird. Die konkreten Ausstiegsbedingungen sind:

  1. Der Schlusskurs ist größer als der kurzfristige gleitende Durchschnitt ma2
  2. Prozentsatz des Stop-Losses vom Höchststand bis zur eingestellten Rücktrittsbreite

Wenn eine der Ausstiegsbedingungen erfüllt ist, wird die Strategie alle zusätzlichen Einträge ausgleichen.

Vorteilsanalyse

  1. Die Verwendung von doppelten beweglichen Durchschnittskreuzungen in Kombination mit realer Abschlusskursentscheidung kann eine effektive Filterung von False Breaks ermöglichen.

  2. Der Rückzug ist ein Einstieg in die Börse, der nach einem kurzen Kurswechsel stattfindet.

  3. Es gibt eine Stop-Loss-Einstellung, die die maximale Rücknahme einschränkt.

Risikoanalyse

  1. Die doppelte Moving-Average-Kreuzung ist anfällig für mehrere Handelssignale, die die Höhe und den Fall verfolgen können.

  2. Eine falsche Einstellung der Moving Average-Parameter kann dazu führen, dass die Kurve zu glatt oder zu empfindlich wird.

  3. Eine zu lockere Stop-Loss-Einstellung kann die Verluste vergrößern.

Optimierung

  1. Testen Sie Kombinationen von langfristigen und kurzfristigen Moving Average-Parametern unterschiedlicher Länge, um die optimale Parameter zu finden.

  2. Vergleichen Sie die Wirksamkeit von Moving Average-Kreuzungen anhand von Schlusskosten und typischen Preisen.

  3. Testen Sie Filter, z. B. für die Hinzufügung von Handelsvolumen oder Volatilitätsindikatoren

  4. Optimierung der Rückmessung der Stop-Loss-Werte, um die optimale Einstellung zu finden.

Zusammenfassung

Die EintSimple Pullback Strategy ist eine einfache und praktische Doppel-Moving-Average-Rückführung. Sie nutzt die Indikationsfunktion des Moving-Averages effektiv und filtert die falschen Signale in Kombination mit den tatsächlichen Schlusspreisen. Obwohl die Strategie häufig zu Problemen mit häufigen Transaktionen und der Verfolgung von Höhen und Tiefen führt, kann sie durch die Optimierung der Parameter und das Hinzufügen von Filtern weiter verbessert werden.

Strategiequellcode
/*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)