Zweifelhafte schwebende Durchschnitts-Crossover-Scalping-Strategie

Schriftsteller:ChaoZhang, Datum: 30.10.2023 11:19:48
Tags:

img

Übersicht

Der Dual Moving Average Crossover ist eine einfache und effektive Scalping-Strategie, die Crossover-Signale zwischen Preis und gleitenden Durchschnitten als Ein- und Ausstiegssignale verwendet, um kurzfristige Trendbewegungen zu erfassen.

Strategie Logik

Die Strategie verwendet zwei gleitende Durchschnitte unterschiedlicher Perioden - eine kurzfristige MA-Linie und eine längerfristige MA-Linie. Sie erzeugt Kaufsignale, wenn der kürzere Zeitraum MA über den längeren Zeitraum MA von unten kreuzt. Verkaufssignale werden erzeugt, wenn der kürzere MA unter den längeren MA von oben kreuzt.

Die Strategie definiert zunächst die Variable länge, um den Zeitraum der längeren MA-Linie als 50 festzulegen. Sie definiert dann preis als Schlusskurs und berechnet den MA-Wert der Länge 50 und speichert ihn in der ma-Variable. Sie definiert weiter bcond, um zu überprüfen, ob der Preis über dem ma-Wert liegt. Wenn ja, wird bcount um 1 erhöht, andernfalls wird sie auf 0 zurückgesetzt. Wenn bcond confirmBars mehrmals hintereinander (Standard 2) auslöst, wird ein Kaufsignal generiert. Verkaufssignale werden ähnlich generiert, wenn der Preis unter ma fällt.

Um einige ungültige Signale auszufiltern, werden zusätzliche Filter wie clc, clc0 und clc1 hinzugefügt, die das Preisverhältnis zwischen den aktuellen und vorherigen Balken überprüfen.

Schließlich werden bestehende Positionen geschlossen, wenn der Preis die MA-Linien umgekehrt überschreitet.

Vorteile

  • Einfache Logik, leicht zu verstehen und umzusetzen.
  • Erfasst kurzfristige Trends effektiv mit Hilfe des MA-Systems.
  • Zusätzliche Filter reduzieren Störungen durch ungültige Signale.
  • Ein fester Stop-Loss-Mechanismus kontrolliert Verluste bei einem einzigen Handel.

Risiken

  • Anfällig für Ausfälle in verschiedenen Märkten, was zu zusätzlichen Kosten führt.
  • Festgelegte Parameter wie Zulassungsfristen entsprechen möglicherweise nicht allen Marktbedingungen.
  • Bei starken Trendbewegungen, die über das Stop-Level hinausgehen, kann ein fester Stop-Loss frühzeitig beendet werden.

Die Risiken können durch die Verwendung dynamischer MA-Perioden auf Basis von Volatilität, Trailing Stops oder Prozentsatzstops usw. gemildert werden.

Verbesserungen

Die Strategie kann in mehrfacher Hinsicht verbessert werden:

  1. Optimierung der MA-Parameter dynamisch anhand der Volatilität.

  2. Fügen Sie zusätzliche Filter wie Lautstärkerhöhungen hinzu, um die Signalqualität zu verbessern.

  3. Verwenden Sie schwebende oder prozentuale Stopps, um vorzeitige Stopps zu reduzieren.

  4. Kombinieren Sie mit anderen Indikatoren wie MACD, RSI für die Multicondition Validierung.

  5. Fügen Sie automatisiertes Risikomanagement wie dynamische Positionsgröße hinzu, um Verluste pro Handel zu kontrollieren.

  6. Verwenden Sie maschinelles Lernen für ein genaueres Signalgenerierungsmodell.

Schlussfolgerung

Die Dual-MA-Crossover-Strategie ist ein wirksames System für den kurzfristigen Handel. Feinabstimmungsparameter, Risikomanagement und die Kombination mit anderen Tools können die Rentabilität weiter steigern. Insgesamt ist es einfach zu verstehen und zu implementieren, um kleinere Intraday-Bewegungen zu scalpen.


/*backtest
start: 2023-09-29 00:00:00
end: 2023-10-29 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("MovingAvg Cross", overlay=true)
length = input(50)
confirmBars = input(2)
price = close

ma = sma(price, length)

bcond = price > ma

bcount = 0
bcount := bcond ? nz(bcount[1]) + 1 : 0

clc=close[0]>close[1]
clc0=close[0]>open[0]
clc1=close[1]>open[1]

if clc and clc0 and clc1 and (bcount == confirmBars)
    strategy.entry("buy", strategy.long)


scond = price < ma
scount = 0
scount := scond ? nz(scount[1]) + 1 : 0

csc=close[0]<close[1]
csc0=close[0]<open[0]
csc1=close[1]<open[1]

if csc and csc0 and csc1 and (scount == confirmBars)
    strategy.entry("sell", strategy.short)

strategy.close("buy", when=scond)
strategy.close("sell",when=bcond)
    
plot(ma, color=color.red)
//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)


Mehr