Doppelte gleitende Durchschnittsverengung als Trendfolgestrategie


Erstellungsdatum: 2023-12-28 17:24:53 zuletzt geändert: 2023-12-28 17:24:53
Kopie: 0 Klicks: 626
1
konzentrieren Sie sich auf
1623
Anhänger

Doppelte gleitende Durchschnittsverengung als Trendfolgestrategie

Überblick

Die Dual Moving Average Convergence Trend Tracking Strategy ermittelt die Richtung der Preisentwicklung durch Berechnung von schnellen, langsamen und ultralsamen Moving Averages in Kombination mit MACD-Indikatoren.

Strategieprinzip

Die Strategie berechnet zunächst den 12-Tage-Fast-Moving-Average, den 26-Tage-Slow-Moving-Average und den 200-Tage-Ultraslow-Moving-Average. Eine Gold-Kreuzung beginnt, wenn der Fast-Moving-Average den Slow-Moving-Average überschreitet. Eine Todes-Kreuzung beginnt, wenn der Fast-Moving-Average den Slow-Moving-Average von oben nach unten überschreitet.

Die MACD besteht aus einer schnellen, einer langsamen und einer MACD-Säule. Die schnellen Linien sind mehrköpfig und die langen sind oberflächlich. Die langfristige Durchschnittslinie ist ein Falschsignal. Die langfristige Durchschnittslinie ist ein Falschsignal.

Durch die doppelte Bestätigung des schnellen und mittleren Liniensystems und des MACD-Indikators wird ein falsches Signal durch einen einzelnen Indikator vermieden und sichergestellt, dass der Einstieg nur bei Trendbeginn erfolgt.

Strategische Vorteile

  1. Schnell-Linien- und MACD-Doppelbestätigung, um falsche Durchbrüche zu vermeiden und sicherzustellen, dass nur ein Trend beginnt.

  2. 200-Tage-Moving Average-Filter zur Vermeidung von Fehlhandlungen in Zeiten von Marktschwankungen.

  3. Es gibt eine Stop-Loss-Einstellung, die den maximalen Verlust einschränkt.

  4. Die Parameter wie die Länge des gleitenden Durchschnitts, das Wasserstandsverlust und die Anpassung an verschiedene Arten können angepasst werden.

  5. Die Strategie ist klar und einfach, leicht zu verstehen und zu optimieren.

Strategisches Risiko

  1. Es ist eine langfristige Strategie, Trends zu verfolgen, ohne kurzfristige Chancen zu ergreifen.

  2. Die Tracking-Effekte hängen von den Parametern ab, die nicht korrekt eingestellt sind, um die Trends zu erfassen.

  3. Eine falsche Einstellung der Stop-Loss-Position kann zu locker oder zu eng sein, was zu einer Vergrößerung der Verluste oder zu einer vorzeitigen Stop-Loss-Position führt.

  4. Es gibt eine Reihe von langfristigen Positionen, die einen gewissen finanziellen Druck ausüben.

Strategieoptimierung

  1. Optimieren Sie die Parameter für die Länge der gleitenden Mittelwerte und suchen Sie nach der optimalen Kombination.

  2. Hinzufügen von anderen Indikatoren als Hilfsurteilssignale, wie z. B. KDJ-Indikatoren.

  3. Optimierung von Stop-Loss-Strategien, wie zum Beispiel die Verringerung von Stop-Loss und die Verfolgung von Stop-Loss.

  4. Die Moving Average-Parameter werden je nach Sorte und Handelszyklus angepasst.

  5. Die Bindungsmenge filtert falsche Signale wie die Transaktionsmenge.

Zusammenfassen

Die Trendverfolgungsstrategie der Doppel-Einheitlichkeits-Spannung, die die Richtung des Trends durch die Berechnung mehrerer Einheitlichkeitssysteme beurteilt und die Signalfilterung mit MACD-Indikatoren nutzt, hat den Vorteil, dass die Betriebsweise einfach und klar ist, das Risiko steuerbar ist und für die Trendverfolgung geeignet ist. Die Strategie kann in vielerlei Hinsicht verbessert werden, z. B. durch Parameteroptimierung, Optimierung der Stop-Loss-Strategie und Hilfsindikatoren.

Strategiequellcode
/*backtest
start: 2022-12-21 00:00:00
end: 2023-12-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Trend Strategy", shorttitle="TSTrend Strategy", overlay=true)


// Trend Strategy
// If the inverse logic is true, the strategy
// goes short. For the worst case there is a
// max intraday equity loss of 50% filter.


// Input
source = input(close)
fastLength = input(12, minval=1, title="MACD fast moving average")
slowLength=input(26,minval=1, title="MACD slow moving average")
signalLength=input(9,minval=1, title="MACD signal line moving average")
veryslowLength=input(200,minval=1, title="Very slow moving average")
switch1=input(true, title="Enable Bar Color?")
switch2=input(true, title="Enable Moving Averages?")
switch3=input(true, title="Enable Background Color?")

// Calculation
fastMA = sma(source, fastLength)
slowMA = sma(source, slowLength)
veryslowMA = sma(source, veryslowLength)
macd = fastMA - slowMA
signal = sma(macd, signalLength)
hist = macd - signal

// Colors
MAtrendcolor = change(veryslowMA) > 0 ? green : red
trendcolor = fastMA > slowMA and change(veryslowMA) > 0 and close > slowMA ? green : fastMA < slowMA and change(veryslowMA) < 0 and close < slowMA ? red : blue
bartrendcolor = close > fastMA and close > slowMA and close > veryslowMA and change(slowMA) > 0 ? green : close < fastMA and close < slowMA and close < veryslowMA and change(slowMA) < 0 ? red : blue
backgroundcolor = slowMA > veryslowMA and crossover(hist, 0) and macd > 0 and fastMA > slowMA and close[slowLength] > veryslowMA ? green : slowMA < veryslowMA and crossunder(hist, 0) and macd < 0 and fastMA < slowMA and close[slowLength] < veryslowMA ? red : na
bgcolor(switch3?backgroundcolor:na,transp=80)
barcolor(switch1?bartrendcolor:na)

// Output
F=plot(switch2?fastMA:na,color=trendcolor)
S=plot(switch2?slowMA:na,color=trendcolor,linewidth=2)
V=plot(switch2?veryslowMA:na,color=MAtrendcolor,linewidth=4)
fill(F,V,color=gray)

// Strategy
buyprice = low
sellprice = high
cancelLong = slowMA < veryslowMA
cancelShort = slowMA > veryslowMA

if (cancelLong)
    strategy.cancel("MACDLE")

if crossover(hist, 0) and macd > 0 and fastMA > slowMA and close[slowLength] > veryslowMA 
    strategy.entry("MACDLE", strategy.long, stop=buyprice, comment="Bullish")

if (cancelShort)
    strategy.cancel("MACDSE")

if crossunder(hist, 0) and macd < 0 and fastMA < slowMA and close[slowLength] < veryslowMA 
    strategy.entry("MACDSE", strategy.short, stop=sellprice, comment="Bearish")

// maxIdLossPcnt = input(50, "Max Intraday Loss(%)", type=float)
// strategy.risk.max_intraday_loss(maxIdLossPcnt, strategy.percent_of_equity)

//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)