Double Moving Average Breakout-Strategie basierend auf Preisvolatilität


Erstellungsdatum: 2023-12-08 16:44:22 zuletzt geändert: 2023-12-08 16:44:22
Kopie: 0 Klicks: 637
1
konzentrieren Sie sich auf
1621
Anhänger

Double Moving Average Breakout-Strategie basierend auf Preisvolatilität

Überblick

Die Kernidee dieser Strategie ist es, die Preisfluktuation zu nutzen, um die Markttrends zu beurteilen. Wenn die Fluktuation steigt, bedeutet dies, dass ein neuer Trend entsteht. Wenn die Fluktuation sinkt, bedeutet dies, dass der aktuelle Trend endet.

Strategieprinzip

Die Strategie berechnet zunächst die prozentuale Veränderung der Preise:

i=(src/nz(src[1], src))*100

Anschließend wird die Primärpreisfluktuationsindikator pmol2 durch einen Durchschnittsfilter mit einer Länge von 35 gefiltert. Anschließend wird die Endpreisfluktuationsindikator pmol2 durch einen Durchschnittsfilter mit einer Länge von 20 gefiltert. Schließlich werden die Signalstränge von pmol durch einen Durchschnittsfilter mit einer Länge von 10 gefiltert.

Analyse der Stärken

  • Die Verwendung von Doppel-Einheitlichen Filterwellen, um die Preisschwankungen besser zu extrahieren, Filterung von Geräuschen.
  • Die Berechnung der prozentualen Preisänderungen ermöglicht eine Vergrößerung der Preisänderungen und eine klarere Abbildung der Trendänderungen.
  • Es gibt eine klare Methode, wie man davon profitiert: Der Trend beginnt mit dem Kauf und endet mit dem Verkauf.

Risikoanalyse

  • Die doppelte Gleichschwingung führt zu einer gewissen Verzögerung.
  • Die Prozentsatz-Veränderungsmethode ist preisempfindlich.
  • Bei der Umstellung von Rindern und Bären muss die Position rechtzeitig ausgeglichen werden.

Optimierung:

  • Optimierung der Parameter der Durchschnittslinie, um Trends besser zu erfassen.
  • Versuchen Sie, die Preisänderung auf verschiedene Arten zu berechnen.
  • Die Filterbedingungen wurden erweitert, um falsche Signale zu vermeiden.

Zusammenfassen

Diese Strategie, die durch die Berechnung von prozentualen Veränderungen und doppelte Gleichgewichtsfilterungen die Preisfluktuation auswertet, um Markttrendänderungen zu beurteilen, gehört zu den eher ausgereiften Strategien der Technischen Indikator-Klasse. Die Strategie hat eine starke Fähigkeit, Trends zu erfassen, aber die Fähigkeit, Wechselpunkte zu identifizieren.

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

//@version=2
strategy("Strategy for DPMO", overlay=true)

src=input(close, title="Source")
length1=input(35, title="First Smoothing")
length2=input(20, title="Second Smoothing")
siglength=input(10, title="Signal Smoothing")
ebc=input(false, title="Enable Bar Colors")

upSign = '↑' // indicates the indicator shows uptrend
downSign = '↓' // incicates the indicator showing downtrend
exitSign ='x' //indicates the indicator uptrend/downtrend ending

calc_csf(src, length) => 
	sm = 2.0/length
	csf=(src - nz(csf[1])) * sm + nz(csf[1])
	csf
i=(src/nz(src[1], src))*100
pmol2=calc_csf(i-100, length1)
pmol=calc_csf( 10 * pmol2, length2)
pmols=ema(pmol, siglength)
d=pmol-pmols
hc=d>0?d>d[1]?lime:green:d<d[1]?red:orange

buyDPMO = hc==lime and hc[1]!=lime
closeBuyDPMO = hc==green and hc[1]!=green
sellDPMO = hc==red and hc[1]!=red
closeSellDPMO = hc==orange and hc[1]!=orange

plotshape(buyDPMO, color=lime, style=shape.labelup, textcolor=#000000, text="DPMO", location=location.belowbar, transp=0)
plotshape(closeBuyDPMO, color=green, style=shape.labelup, textcolor=#ffffff,  text="X", location=location.belowbar, transp=0)
plotshape(sellDPMO, color=red, style=shape.labeldown, textcolor=#000000, text="DPMO", location=location.abovebar, transp=0)
plotshape(closeSellDPMO, color=orange, style=shape.labeldown, textcolor=#ffffff,  text="X", location=location.abovebar, transp=0)
barcolor(ebc?hc:na)


strategy.entry("Long", strategy.long, when=buyDPMO)
strategy.close("Long", when=closeBuyDPMO or sellDPMO)   
strategy.entry("Short", strategy.short, when=sellDPMO)
strategy.close("Short", when=closeSellDPMO or buyDPMO)