Trend nach der Strategie des gleitenden Durchschnitts

Schriftsteller:ChaoZhang, Datum: 2024-02-29 14:00:35
Tags:

img

Übersicht

Diese Strategie berechnet die gleitenden Durchschnittslinien des Kanals und setzt bei einem Durchbruch der Kanallinien des Kurses lange oder kurze Positionen ein, um dem Trend des Aktienkurses zu folgen.

Strategieprinzip

Die Strategie berechnet zunächst den 20-Tage-Hoch-Durchschnitt als oberen Schiene des Kanals, den 20-Tage-Tief-Durchschnitt als unteren Schiene des Kanals und berechnet die Mittellinie des Kanals. Die Mittellinie des Kanals stellt den jüngsten durchschnittlichen Preistrend dar. Wenn der Preis durch die Mittellinie des Kanals nach oben bricht, wird eine Long-Position eingerichtet. Wenn der Preis durch die Mittellinie des Kanals nach unten bricht, wird eine Short-Position eingerichtet. Folge dem Preistrend, bis der Preis wieder auf die gegenüberliegende Seite des Kanalbereichs fällt, schließe die Position.

Analyse der Vorteile

  • Verwenden Sie den Kanal, um die Preisentwicklung zu verfolgen, um zu vermeiden, dass sich die Mittel in verschiedenen Märkten befinden;
  • Kanalschienen helfen bei der Bestimmung der Ein- und Ausgangspunkte und erleichtern die Kontrolle der Einfahrten.
  • Der Kanalbereich filtert Lärm aus und erhöht die Gewinnwahrscheinlichkeit.
  • Die Kanalparameter können an die Empfindlichkeit der Strategie angepasst werden;

Risikoanalyse

  • Nach signifikanten Durchbrüchen in der Mittellinie können Pullback-Tests der Mittellinie stattfinden, die zur Einfangenheit führen.
  • Schwankende Aktien eignen sich nicht für diese Strategie und können zu einem Hochfrequenzhandel führen;
  • Fehlende Einstellungen von Parametern können auch die Strategieleistung beeinträchtigen;

Optimierungsrichtlinien

  • Optimierung der Kanalzyklusparameter zur Prüfung der Auswirkungen verschiedener Parameter;
  • Hinzufügen von Gewinn- und Stop-Loss-Strategien zur Kontrolle von Einzel- und Gesamtverlusten;
  • andere Indikatoren als Hilfsurteile kombinieren, um falsche Signale zu vermeiden;
  • Stellen Sie sich in Chargen ein, um die Wahrscheinlichkeit zu verringern, dass Sie während der Rückzugstests eingeschlossen werden;

Zusammenfassung

Im Allgemeinen ist diese Strategie relativ einfach und unkompliziert. Sie beurteilt die Kursentwicklungen der Aktien durch grundlegende Preiskanäle und gehört zu der folgenden Trendart. Die Vorteile sind einfache Bedienung, vollständige Nutzung der Investitionsmöglichkeiten, die durch Preistrends entstehen, und die Vermeidung von Fondsverriegelungen. Die Nachteile sind, dass unsachgemäße Parameter-Einstellungen die Performance beeinträchtigen können und es bestimmte Risiken von Rückzugstests gibt. Durch eine angemessene Optimierung kann die Stabilität der Strategie verbessert und die tatsächliche Handelsleistung gesteigert werden.


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

//@version=3
//future strategy
//strategy(title = "stub", default_qty_type = strategy.fixed, default_qty_value = 1,  overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=2)
//stock strategy
strategy(title = "dc", default_qty_type = strategy.percent_of_equity, default_qty_value = 20,  overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=.005)
//forex strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 20,  overlay = true)
//crypto strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 20,  overlay = true, commission_type=strategy.commission.percent,commission_value=.25,default_qty_value=20)


testStartYear = input(2000, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testEndYear = input(2019, "Backtest Start Year")
testEndMonth = input(3)
testEndDay = input(31, "Backtest Start Day")
testPeriodEnd = timestamp(testStartYear,testStartMonth,testStartDay,0,0)


testPeriod() =>
    true
    //time >= testPeriodStart  ? true : false

dcPeriod = 20

dcUpper = highest(close, dcPeriod)[1]
dcLower = lowest(close, dcPeriod)[1]
dcAverage = (dcUpper + dcLower) / 2

plot(dcLower, style=line, linewidth=3, color=red, offset=1)
plot(dcUpper, style=line, linewidth=3, color=aqua, offset=1)

plot(dcAverage, color=black, style=line, linewidth=3, title="Mid-Line Average")

strategy.entry("simpleBuy", strategy.long, when=close > dcAverage)
strategy.close("simpleBuy",when=close < dcLower)
    
strategy.entry("simpleSell", strategy.short,when=close < dcAverage)
strategy.close("simpleSell",when=close > dcAverage)
    



Mehr