Trendfolgestrategie mit mehreren EMA-Crossovern


Erstellungsdatum: 2024-01-04 16:22:07 zuletzt geändert: 2024-01-04 16:22:07
Kopie: 6 Klicks: 588
1
konzentrieren Sie sich auf
1617
Anhänger

Trendfolgestrategie mit mehreren EMA-Crossovern

Überblick

Die Multiple EMA Mean Line-Cross-Trend-Tracking-Strategie ermöglicht den Trend-Tracking-Handel, indem sie EMA-Meanlines mit mehreren Gruppen verschiedener Parameter kombiniert verwendet, die bei der Bildung eines Goldforks auf einer kürzeren EMA-Periode mehr tun, und bei der Bildung eines Todesforks leer sind. Die Strategie verwendet gleichzeitig 7 Gruppen von EMA-Meanlines, darunter 12, 26, 50, 100, 200, 89 und 144 Perioden, um die Richtung des Trends zu bestimmen, indem sie die Kreuzung dieser EMAs vergleicht.

Strategieprinzip

Die Kernlogik der Strategie basiert auf dem Querprinzip der EMA-Gewinnlinie. In der EMA-Gewinnlinie sind EMA mit kürzeren Perioden empfindlicher auf Preisänderungen und können die jüngsten Preistrends widerspiegeln; EMA mit längeren Perioden sind weniger empfindlich auf Preisänderungen und können die langfristigen Trends widerspiegeln. Wenn ein kurzfristiger EMA einen langfristigen EMA von unten durchbricht, entsteht eine sogenannte “Goldfork”, was bedeutet, dass ein kurzfristiger Trend bullish wird, und Sie können mehr Bestellungen tätigen.

Die Strategie verwendet 7 Gruppen von EMA-Mitteln, darunter 12&26, 12&50, 12&100, 12&200, 12&89 und 12&144. Die Strategie vergleicht die Kreuzungen dieser 7 Gruppen von EMA gleichzeitig. Zum Beispiel wird ein Handel geöffnet, wenn ein Goldfork auf der 12th EMA durch die 26th EMA gebildet wird; der Handel wird abgewickelt, wenn ein Dead Fork auftritt. Die Strategie verwendet die gleiche Logik für die anderen 6 Gruppen von EMA-Mitteln.

Analyse der Stärken

Der größte Vorteil der Strategie besteht darin, dass sie Trends auf mehreren Zeitskalen gleichzeitig erfassen kann. Durch die Kombination mehrerer EMA-Gehaltslinien kann die Strategie sowohl kurzfristige Trends erfassen als auch langfristige Trends verfolgen, wodurch ein Trend-Tracking auf mehreren Zeitlinien möglich ist. Zusätzlich kann die Strategie die Performance optimieren, indem sie die Parameter verschiedener EMAs anpasst.

Risikoanalyse

Das Hauptrisiko dieser Strategie besteht darin, dass bei der Verwendung von mehreren EMA-Gleichlinienkombinationen ein zu häufiges Kreuzungssignal auftreten kann. Zum Beispiel gibt es häufiger Kreuzungen zwischen der 12-Tage-EMA und der 26-Tage-EMA als zwischen der 12-Tage-EMA und der 200-Tage-EMA. Die Unfähigkeit, die Häufigkeit von Lageröffnungen und Lageröffnungen zu kontrollieren, erhöht die Transaktionskosten und Schlupflose. Darüber hinaus ist die EMA-Gleichlinie selbst verzögert auf Preisänderungen und kann dazu führen, dass die Signale nicht rechtzeitig erzeugt werden.

Um die oben genannten Risiken zu verringern, können die Periodiparameter der EMA angemessen optimiert werden, so dass ihre Kreuzungsfrequenz in einem geeigneten Bereich liegt. Zusätzlich können die Anzahl der täglichen Positionseröffnungen angemessen eingeschränkt oder Stop-Losses gesetzt werden, um das Risiko zu kontrollieren.

Optimierungsrichtung

Der Optimierungsraum für diese Strategie konzentriert sich hauptsächlich auf die Parameteranpassung der EMA-Mittellinie. Es können mehr Parameterkombinationen für verschiedene Perioden ausprobiert werden. Darüber hinaus können auch andere Arten von Moving Averages wie SMAs ausprobiert werden. Zusätzlich können zusätzliche Bedingungen hinzugefügt werden, um Signale zu filtern, wie z. B. Umsatzindikatoren, Volatilitätsindikatoren usw., was die Signalqualität verbessert.

Zusammenfassen

Die Mehrfach-EMA-Strategie, bei der die Richtung eines Trends durch den Vergleich von mehreren EMA-Kreuzungen beurteilt wird, ist eine übliche Trendverfolgungsstrategie. Der Vorteil der Strategie besteht darin, dass die Parameter flexibel angepasst werden können, um Trends auf verschiedenen Ebenen zu erfassen. Der Nachteil besteht darin, dass die Signale möglicherweise zu häufig sind und die Handelskosten erhöhen.

Strategiequellcode
/*backtest
start: 2023-12-27 00:00:00
end: 2024-01-03 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("EMA Trades", overlay=true, pyramiding=4)

src = input(close, title="Source")

shortestLine = input(12, minval=1, title="Shortest Line")
shorterLine = input(26, minval=1, title="Shorter Line")
shortLine = input(50, minval=1, title="Short Line")
middleLine = input(100, minval=1, title="Middle Line")
longLine = input(200, minval=1, title="Long Line")
longerLine = input(89, minval=1, title="Longer Line")
longestLine = input(144, minval=1, title="Longest Line")

shortestLineOutput = ema(src, shortestLine)
shorterLineOutput = ema(src, shorterLine)
shortLineOutput = ema(src, shortLine)
middleLineOutput = ema(src, middleLine)
longLineOutput = ema(src, longLine)
longerLineOutput = ema(src, longerLine)
longestLineOutput = ema(src, longestLine)

//plot(shortestLineOutput, title="Shortest EMA", color=#ffffff)
//plot(shorterLineOutput, title="Shorter EMA", color=#e54fe6)
//plot(shortLineOutput, title="Short EMA", color=#4e6bc3)
//plot(middleLineOutput, title="Middle EMA", color=#1dd6d8)
//plot(longLineOutput, title="Long EMA", color=#d0de10)
//plot(longerLineOutput, title="Longer EMA", color=#ef6a1a)
//plot(longestLineOutput, title="Longest EMA", color=#ff0e0e)

longEnrtyCondition_1 = crossover(shortestLineOutput[1], shorterLineOutput[1]) and shortestLineOutput > shorterLineOutput
longEntryCondition_2 = crossover(shortestLineOutput[1], shortLineOutput[1]) and shortestLineOutput > shortLineOutput
longEnrtyCondition_3 = crossover(shortestLineOutput[1], middleLineOutput[1]) and shortestLineOutput > middleLineOutput
longEntryCondition_4 = crossover(shortestLineOutput[1], longLineOutput[1]) and shortestLineOutput > longLineOutput

shortEnrtyCondition_1 = crossunder(shortestLineOutput[1], shorterLineOutput[1]) and shortestLineOutput < shorterLineOutput
shortEntryCondition_2 = crossunder(shortestLineOutput[1], shortLineOutput[1]) and shortestLineOutput < shortLineOutput
shortEnrtyCondition_3 = crossunder(shortestLineOutput[1], middleLineOutput[1]) and shortestLineOutput < middleLineOutput
shortEntryCondition_4 = crossunder(shortestLineOutput[1], longLineOutput[1]) and shortestLineOutput < longLineOutput

if (longEnrtyCondition_1)
    strategy.entry("Buy1", strategy.long)
    strategy.exit("Sell1")

if (longEntryCondition_2)
    strategy.entry("Buy2", strategy.long)
    strategy.exit("Sell2")

if (longEnrtyCondition_3)
    strategy.entry("Buy3", strategy.long)
    strategy.exit("Sell3")

if (longEntryCondition_4)
    strategy.entry("Buy4", strategy.long)
    strategy.exit("Sell4")

if (shortEnrtyCondition_1)
    strategy.entry("Sell1", strategy.short)
    strategy.exit("Buy1")

if (shortEntryCondition_2)
    strategy.entry("Sell2", strategy.short)
    strategy.exit("Buy2")

if (shortEnrtyCondition_3)
    strategy.entry("Sell3", strategy.short)
    strategy.exit("Buy3")

if (shortEntryCondition_4)
    strategy.entry("Sell4", strategy.short)
    strategy.exit("Buy4")