Crossover-Ausbruchsstrategie


Erstellungsdatum: 2023-10-12 16:47:55 zuletzt geändert: 2023-10-12 16:47:55
Kopie: 0 Klicks: 584
1
konzentrieren Sie sich auf
1617
Anhänger

Überblick

Die Moving Average Crossover Strategie ist eine sehr verbreitete quantitative Handelsstrategie. Sie nutzt die Moving Average als Gold- und Goldfork, um Trends zu beurteilen und zu profitieren. Wenn die langfristige Moving Average über die kurzfristige Moving Average gekreuzt wird, zeigt dies, dass der Aktienpreis steigen beginnt, und Sie können mehr tun; wenn die langfristige Moving Average unter der kurzfristigen Moving Average gekreuzt wird, zeigt dies, dass der Aktienpreis fallen beginnt und Sie können aufhören.

Strategieprinzip

Die Strategie basiert auf einer beweglichen Mittellinie, um die Kauf- und Verkaufszeiten zu bestimmen.upOrDownUndlongOrShortZwei Boole-Input-Parameter für die Beurteilung von Über-Käuferung;percentInputEingabe von Parametern zur Einstellung des Verlustprozentsatzes der Kursänderung; VerwendungclosePositionDaysGeben Sie die Parameter ein, um die Anzahl der Tage für die Position festzulegen.

Die Kernlogik der Strategie lautet: Berechnen Sie die heutige Relativ-Höhe und Tiefe von gestern, und senden Sie ein Handelssignal aus, wenn der Prozentsatz der eingegebenen Marge erreicht ist. Wenn es bullish ist, machen Sie einen Plus, wenn die heutige Relativ-Höhe über die Marge von gestern liegt; wenn es bewertet ist, machen Sie einen Minus, wenn die heutige Relativ-Höhe über die Marge von gestern liegt.

Wenn Sie mehr Kaufzeit machen, wird der Tag und die folgenden 4 Tage in verschiedenen Farben markiert. Nach 4 Tagen wird die Position automatisch geklärt.

Strategische Vorteile

  • Der Einsatz einer beweglichen Gleichgewichtsauslöser ist eine bewährte und zuverlässige Methode, um Markttrends zu beurteilen.
  • Die Strategie ist klar und einfach zu verstehen.
  • Die Häufigkeit der Strategie kann durch Anpassung der Parameter gesteuert werden
  • Automatische Stop-Loss-Mechanismen können Risiken wirksam kontrollieren

Strategisches Risiko

  • Die Moving Average ist nachlässig und kann einen Moment der schnellen Preisänderung verpassen.
  • Innerhalb der nächsten drei Monate könnte es zu starken Schwankungen in den Aktienkursen kommen, die zu unnötigen Kreuzungen führen könnten.
  • Die falsche Einstellung der ParameterSet-Parameter beeinträchtigt die Effektivität der Strategie
  • Unfähigkeit, die Auswirkungen von Ereignissen wirksam zu bewältigen

Maßnahmen zur Risikokontrolle:

  1. Optimierung der beweglichen Durchschnittsparameter, angemessene Verlängerung der Periode zur Filterung von Geräuschen
  2. Erhöhung des Anteils der Wertminderung an den Aktienkursen und Verringerung der unnötigen Transaktionen
  3. Verschiedene Positionstage testen und Einzelschäden kontrollieren
  4. Weitere Bestätigung von Trendsignalen in Kombination mit anderen Indikatoren

Richtung der Strategieoptimierung

  • Es kann in Erwägung gezogen werden, die Moving Average in eine Index-Moving Average wie EMA, DMA umzuwandeln, um sie für Preisänderungen empfindlicher zu machen
  • Erhöhung der Stop-Loss-Mechanismen, z. B. sofortige Stop-Loss bei Durchschnittsbrechen
  • Hinzufügen von anderen technischen Kennzahlen zur Kombination, wie MACD, KDJ, etc., um die Strategie-Gewinnrate zu erhöhen
  • Es ist möglich, die Parameter automatisch zu optimieren, indem man Methoden der maschinellen Lerntechnik anwendet.
  • Optimierung der Ein- und Ausstiegsmomente, wie z. B. Breakout Entrada

Zusammenfassen

Die Moving Average Crossover Strategie ist eine sehr einfache und praktische Quantitative Trading-Strategie. Sie profitiert von der Tendenz der Aktienpreise, indem sie die Beziehung zwischen kurz- und langfristigen Trends beurteilt. Die Strategie ist einfach zu implementieren, logisch klar und ist die Grundlage vieler Quantitative Trading-Strategien. Durch Parameteranpassung und Optimierung können bessere Strategieeffekte erzielt werden.

Strategiequellcode
/*backtest
start: 2023-01-01 00:00:00
end: 2023-10-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//  Created by Leon Ross

strategy(title = "DaysAfterCertainPercentChangev1", shorttitle = "DACPCv1", overlay = true, 
  pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, 
  calc_on_every_tick=true, initial_capital=100000)
  
//Inputs
longOrShort = input(title="Long=Checked Short=Unchecked", type=bool, defval=true) //long=true, down=false
upOrDown = input(title="Direction of Today vs. Previous day: Up=Checked Down=Unchecked", type=bool, defval=true) //up=true, down=false: this is the direction of days vs previous day
percentInput = input(title="Percent", type=float, defval=4.5)
closePositionDays = input(title="How Many Days to Close Position", defval=4)

//Conditions
//percentUpValue = (close / close[1]) - 1
//percentUp = percentUpValue >= (percentInput/100.0)
//upConditions = percentUp
//percentDownValue = 1- (close / close[1])
//percentDown = percentDownValue >= (percentInput/100.0)
//downConditions = percentDown
upValue = (close / close[1]) - 1
downValue = 1 - (close / close[1])
allConditions = if(upOrDown)
    upValue >= (percentInput/100.0)
else
    downValue >= (percentInput/100.0)
    
//Plots
bgcolor(allConditions ? (upOrDown ? green : red) : na, transp=70)
bgcolor(allConditions ? silver : na, transp=70, offset=1)
bgcolor(allConditions ? silver : na, transp=70, offset=2)
bgcolor(allConditions ? silver : na, transp=70, offset=3)
bgcolor(allConditions ? silver : na, transp=70, offset=4)
//bgcolor(downConditions == 1 ? red : na, transp=70)
//bgcolor(downConditions == 1 ? silver : na, transp=70, offset=1)
//bgcolor(downConditions == 1 ? silver : na, transp=70, offset=2)
//bgcolor(downConditions == 1 ? silver : na, transp=70, offset=3)
//bgcolor(downConditions == 1 ? silver : na, transp=70, offset=4)

//Entires
if(longOrShort)
    strategy.entry(id = "Long", long = true, when = allConditions) 
else
    strategy.entry(id = "Short", long = false, when = allConditions)

//Exits
if (barssince(allConditions) == closePositionDays)
    if(longOrShort)
        strategy.close("Long")
    else
        strategy.close("Short")