SMA-Strategie basierend auf dem V-förmigen Umkehrindikator


Erstellungsdatum: 2024-02-18 15:04:34 zuletzt geändert: 2024-02-18 15:04:34
Kopie: 0 Klicks: 648
1
konzentrieren Sie sich auf
1617
Anhänger

SMA-Strategie basierend auf dem V-förmigen Umkehrindikator

Überblick

Die V-basierte Umkehr-SMA-Strategie bildet die VI+- und VI-Kurve, indem sie die absolute Differenz zwischen dem 14-Tage-Höchstwert und dem Vortags-Höchstwert und dem 14-Tage-Höchstwert und dem Vortags-Höchstwert berechnet und anschließend den 14-Tage-Simple Moving Average berechnet.

Strategieprinzip

Die zentralen Indikatoren der Strategie sind VI+ und VI−. VI+ entspricht der Mehrkopfkraft, VI− der Leerkopfkraft. Die Berechnungsformel lautet:

VMP = SUM(ABS(HIGH - LOW[1]),14)
VMM = SUM(ABS(LOW - HIGH[1]),14)  
STR = SUM(ATR(1),14)
VI+ = VMP/STR  
VI- = VMM/STR

Um die Erschütterungen der Kurve zu entfernen, wurden jeweils 14-Tage-Simple Moving Averages für VI+ und VI- berechnet, die SMA ((VI+) und SMA ((VI-) ≠ ergeben, wenn ein Mehrkopfsignal erzeugt wird, wenn SMA ((VI+) durch SMA ((VI-) getragen wird; wenn ein Leerkopfsignal erzeugt wird, wenn SMA ((VI-) durch SMA ((VI+) getragen wird.

Darüber hinaus wird die Strategie in Kombination mit den Aufwärts- und Abwärtszuständen von VI+ und VI- verwendet, um Trends zu beurteilen und so zu filtern, indem sie nur mehr macht, wenn der Trend nach unten geht, und leer ist, wenn der Trend nach oben geht.

Analyse der Stärken

Die Strategie kombiniert Trend-Status und Gold-Fork-Death-Fork-VI-Indikator, um die False-Signal-Filterung zu verbessern und die Gewinnwahrscheinlichkeit zu erhöhen. Im Vergleich zu einfachen Moving-Average-Strategien ist das Durchbruchsignal zuverlässiger.

Risikoanalyse

Es gibt zwei große Risiken bei dieser Strategie:

  1. Der VI-Indikator erzeugt in bestimmten Perioden falsche Signale. Die Kombination von Trendfilterung und Stop-Loss ist erforderlich, um das Risiko zu kontrollieren.

  2. Markte mit hohen Transaktionsgebühren und Slip-Point-Kosten sind für diese Strategie nicht geeignet und reduzieren den Gewinnspielraum erheblich.

Optimierungsrichtung

Diese Strategie kann in folgenden Bereichen optimiert werden:

  1. Optimierung der Periodiparameter für den Indikator VI, um die optimale Kombination von Parametern zu finden.

  2. Mit Hilfe von maschinellen Lernmethoden werden fehlerhafte Signale automatisch erkannt und die Signalqualität verbessert.

  3. Die Optimierung der Ausstiegsmechanismen in Kombination mit Stop-Loss- und Geldmanagement, um die Verluste bei einzelnen Transaktionen zu kontrollieren.

  4. Optimierung der Handelsvarianten und Auswahl von Märkten mit niedrigeren Handelskosten.

Zusammenfassen

Die SMA-Strategie, die auf V-Rückkehrindikatoren basiert, ist eine zuverlässige Trendverfolgungsstrategie, die den Zeitpunkt für den Kauf und Verkauf durch die Berechnung von VI+ und VI-Indikatoren in Verbindung mit der Trendsituation bestimmen kann. Die Strategie hat den Vorteil, dass sie eine gute Signalqualität hat und Geräusche effektiv filtert.

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

//@version=4
//@author=SIDD
//Sidd-Vortex strategy is using Vortex formula  to generate 4 signals Bullish1 Bullish2 and Bearish1 Bearish2.

//Bullish1 signal is getting generated when smooth ma of VIP is crossing over smooth ma of VIM and smooth VIM is falling from previous bar smooth VIM

//Bullish2 signal is getting generated when smooth ma of VIP is crossing over smooth ma of VIM and smooth VIP is rising from previous bar smooth VIP

//Bearish1 signal is getting generated when smooth ma of VIM is crossing over smooth ma of VIP and smooth VIP is falling from previous bar smooth VIP

//Bearish2 signal is getting generated when smooth ma of VIM is crossing over smooth ma of VIP and smooth VIM is rising from previous bar smooth VIM

//This strategy can be converted into study un-commenting the plotshape and 15th line strategy replace with study and overlay=false

strategy(title = "SIDD-Vortex", shorttitle="SIDD-VORTEX", format=format.price, precision=4,overlay=true)
period_ = input(14, title="Period", minval=2)
len = input(14, minval=1, title="WMA Length")

VMP = sum( abs( high - low[1]), period_ ) // sum of absolute current high and previous low with 14 period default
VMM = sum( abs( low - high[1]), period_ ) // sum of absolute current low and previous high with 14 period default
STR = sum( atr(1), period_ )  //sum of daily atr for 14 days
VIP = VMP / STR
VIM = VMM / STR

simpleMAVIP=wma(VIP, len) 
smmaVIP = 0.0
smmaVIP := na(smmaVIP[1]) ? simpleMAVIP : (smmaVIP[1] * (len - 1) + VIP) / len // finding the Smoothing average 

simpleMAVIM=wma(VIM, len) 
smmaVIM = 0.0
smmaVIM := na(smmaVIM[1]) ? simpleMAVIM : (smmaVIM[1] * (len - 1) + VIM) / len // finding the Smoothing average 


risingVIP = rising(smmaVIP, 1)
fallingVIP = falling(smmaVIP, 1)

lineColorVIP = smmaVIP > 0.95 and risingVIP  ? color.lime : smmaVIP > 0.95 ? #d65240 : smmaVIP < 0.95 and fallingVIP ? color.red : color.olive

risingVIM = rising(VIM, 1)
fallingVIM = falling(VIM, 1)

lineColorVIM = smmaVIM > 0.95 and risingVIM  ? color.red : smmaVIM > 0.95 ? color.olive : smmaVIM < 0.95 and fallingVIM ? color.lime : #d65240

plot(VIP, title="VI +", color=lineColorVIP)
plot(VIM, title="VI -", color=lineColorVIM) 

longCondition = crossover(smmaVIP,smmaVIM)
shortCondition = crossover(smmaVIM,smmaVIP)


if (longCondition and fallingVIM)
    strategy.entry("Bullish1", strategy.long)
if (shortCondition and fallingVIP)
    strategy.entry("Bearish1", strategy.short)

if (longCondition and risingVIP)
    strategy.entry("Bullish2", strategy.long)
if (shortCondition and risingVIM)
    strategy.entry("Bearish2", strategy.short)
    
//plotshape(longCondition and fallingVIM, color=color.lime, location=location.belowbar, style=shape.triangleup,size= size.large,text="Bullish",offset=0,textcolor=color.white)
//plotshape(longCondition and risingVIP, color=color.lime, location=location.belowbar, style=shape.labelup,size= size.large,text="Bullish",offset=0,textcolor=color.white)
//plotshape(Diff > 0 and direction>0, color=color.lime, location=location.belowbar, style=shape.arrowup,size= size.normal,offset=0)
    
//plotshape(shortCondition and fallingVIP  , color=color.red, location=location.abovebar, style=shape.triangledown, size= size.large,text="Bearish",offset=0,textcolor=color.white)
//plotshape( shortCondition and risingVIM  , color=color.red, location=location.abovebar, style=shape.labeldown, size= size.large,text="Bearish",offset=0,textcolor=color.white)



//band1 = hline(1.0  , title="Upper Line", linestyle=hline.style_dashed, linewidth=3, color=color.red)
//band0 = hline(0.5, title="Lower Line", linestyle=hline.style_dashed, linewidth=3, color=color.lime)
//fill(band1, band0, color=color.purple, transp=70)