Spirale Kreuzstrategie mit beweglichen Durchschnittsbestätigungen

Schriftsteller:ChaoZhang, Datum: 2024-02-02 14:50:08
Tags:

img

Übersicht

Diese Strategie kombiniert den Wirbelindikator und die gleitenden Durchschnittslinien, um die Richtung und Stärke der Preistrends zu identifizieren, um potenzielle lange und kurze Signale zu generieren. Wenn die positive Wirbellinie (VI+) über die negative Wirbellinie (VI-) kreuzt, wird jeder Crossover auf dem Chart markiert. Wenn der Schlusskurs über der gleitenden Durchschnittslinie liegt, wird ein langes Signal generiert. Wenn VI- über die gleitende Durchschnittslinie geht, wird ein kurzes Signal generiert.

Strategie Logik

  1. Vortex-Indikator: besteht aus zwei Linien - Vortex Positiv (VI+) und Vortex Negativ (VI-).

  2. Moving Average (MA): Verwendet eine gewählte Moving Average-Methode (SMA, EMA, SMMA, WMA oder VWMA), um die Preisdaten zu glätten.

  3. Lange und kurze Signale bestimmen: Wenn VI+ über VI- überschreitet, wird jede Kreuzung hervorgehoben. Wenn der Schluß über der Glättungslinie liegt, wird ein langes Signal erzeugt. Wenn VI- über VI+ überschreitet, wenn der Schluß unter der Glättungslinie liegt, wird ein kurzes Signal erzeugt.

Vorteile

  1. Kombination von Trendidentifizierung und Glättung, um Trends in Trendmärkten zu erfassen und falsche Signale in unruhigen Märkten zu vermeiden.

  2. Der Vortex-Indikator identifiziert effektiv die Trendrichtung und -stärke.

  3. Einfache und klare Strategie-Logik, leicht zu verstehen und umzusetzen.

  4. Anpassungsfähige Parameter, an unterschiedliche Marktumgebungen angepasst.

Risiken

  1. Kann falsche Signale und Whipsaws in Bereichsgrenzen oder Trendlosen Märkten erzeugen.

  2. Unangemessene Parameter-Einstellungen können die Strategieleistung beeinträchtigen. Zum Beispiel hat ein zu kurzer gleitender Durchschnitt eine schlechte Glättungsfähigkeit und ein längerer Verzögerung bei der Erkennung von Trendänderungen.

  3. Nicht in der Lage, gegen extreme Preisschwankungen durch große unvorhergesehene Ereignisse zu schützen.

Verbesserungen

  1. Einbeziehen Sie andere Indikatoren wie Volumen, um die Zuverlässigkeit des Trends zu bestimmen.

  2. Optimierung der Parameter zur Balancierung der Trend- und Rauschfilterung von gleitenden Durchschnitten.

  3. Fügen Sie Stop-Loss zu Kontrollverlusten hinzu.

  4. Verwenden Sie maschinelles Lernen für die automatisierte Optimierung von Parametern.

  5. Einbeziehung von Risikomanagementmodulen zur Anpassung der Positionsgröße.

Schlussfolgerung

Diese Strategie kombiniert effektiv den Vortex-Indikator und die gleitenden Durchschnitte, um Trends zu erfassen. Sie identifiziert die Trendrichtung und verfügt über eine gewisse Geräuschfilterfähigkeit, um falsche Signale zu reduzieren. Die Logik ist einfach und flexibel zu bedienen und funktioniert gut auf Trending-Märkten. Weitere Verbesserungen der Risikokontrolle können durch die Einbeziehung mehrer Filter, die Optimierung von Parametern und das Hinzufügen von Stop-Losses erreicht werden.


/*backtest
start: 2023-02-01 00:00:00
end: 2024-02-01 00:00:00
period: 1d
basePeriod: 1h
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/
// © DraftVenture

//@version=5
strategy("Vortex + Moving Average Strategy", overlay=true)

//Vortex settings
period_ = input.int(14, title="Vortex Length", minval=2)
VMP = math.sum( math.abs( high - low[1]), period_ )
VMM = math.sum( math.abs( low - high[1]), period_ )
STR = math.sum( ta.atr(1), period_ )
VIP = VMP / STR
VIM = VMM / STR
plot(VIP, title="VI +", color=color.white)
plot(VIM, title="VI -", color=color.white)

len = input.int(9, minval=1, title="MA Length")
src = input(close, title="Source")
offset = input.int(title="Offset", defval=0, minval=-500, maxval=500)
out = ta.sma(src, len)
plot(out, color=color.blue, title="MA", offset=offset)

ma(source, length, type) =>
    switch type
        "SMA" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

typeMA = input.string(title = "Method", defval = "SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Smoothing")
smoothingLength = input.int(title = "Length", defval = 5, minval = 1, maxval = 100, group="Smoothing")

smoothingLine = ma(out, smoothingLength, typeMA)
plot(smoothingLine, title="Smoothing Line", color=#f37f20, offset=offset, display=display.none)

// Determine long and short conditions
longCondition = ta.crossover(VIP, VIM) and close > smoothingLine
shortCondition = ta.crossunder(VIP, VIM) and close < smoothingLine
crossCondition = ta.crossunder(VIP, VIM) or ta.crossunder(VIM, VIP)

// Strategy entry and exit logic
if longCondition
    strategy.entry("Long", strategy.long)

if shortCondition
    strategy.entry("Short", strategy.short)

bgcolor(crossCondition ? color.new(color.white, 80) : na)

// Strategy by KP

Mehr