Strategie zur Aufstockung der Dynamik in verschiedenen Zeitrahmen

Schriftsteller:ChaoZhang, Datum: 2023-10-26 17:39:26
Tags:

img

Übersicht

Die Momentum Stacking Strategie berechnet hauptsächlich die Rate of Change (ROC) über verschiedene Zeiträume, wiegt und stapelt sie, um einen umfassenden Momentum-Indikator zur Beurteilung der Trendrichtung zu bilden.

Strategie Logik

Die Strategie berechnet zuerst die ROC-Indikatoren über 10-Tage-, 15-Tage-, 20-Tage-Zeiten usw. Dann glättet sie den ROC und stapelt sie in einem gewichteten Verhältnis von 1 bis 4, um die Formel zu erhalten:

roc1 = (sma(roc(close,10),10)*1)
roc2 = (sma(roc(close,15),10)*2)  
...
osc = roc1+roc2+roc3+roc4+...

Hierbei werden die ROC-Berechnungen für verschiedene Zeiträume von 10 bis 530 Tagen dargestellt.

Es glättet dann osc um einen SMA von a (Standard 10) Tagen, um oscsmt zu erhalten.

Vergleicht osc mit oscsmt, wenn osc über oscsmt als bullisches Signal überschreitet und lang geht.

Schließlich kann es sich entscheiden, die Handelsrichtung umzukehren.

Vorteile

  1. Durch das Stapeln von kurz- und langfristigen Dynamikindikatoren können sowohl kurz- als auch langfristige Trends erfasst und falsche Signale vermieden werden.

  2. Der Vergleich von osc und oscsmt kann den unnötigen Handel auf seitlichen Märkten reduzieren.

  3. Anpassbare Parameter zur Anpassung von ROC-Perioden und SMA-Glattheit.

  4. Reversible Handelsrichtung bietet unterschiedliche Handelsstile.

  5. Visuelle Indikatoren machen Kauf- und Verkaufspunkte intuitiv.

Risiken und Optimierungen

  1. ROC ist sehr empfindlich auf plötzliche Preisanomalien, die falsche Signale erzeugen können.

  2. Standardparameter sind möglicherweise nicht für alle Handelsinstrumente geeignet. Eine Optimierung ist erforderlich, um die beste Parameterkombination basierend auf verschiedenen Eigenschaften zu finden.

  3. Der Handel erfolgt ausschließlich auf der Grundlage eines OSC- und OSCSMT-Crossover.

  4. Für den mittelfristigen und langfristigen Handel geeigneter.

Schlussfolgerung

Die Momentum Stacking Strategie berechnet mehrere ROC-Perioden, um einen umfassenden Momentum-Indikator zu erhalten, sowohl kurzfristige als auch langfristige Trends zu erfassen und falsche Signale zu vermeiden. Im Vergleich zu einem einzigen ROC verbessert sie die Signalqualität und Zuverlässigkeit erheblich.


/*backtest
start: 2023-09-25 00:00:00
end: 2023-10-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter 08/08/2017
// Pring's Special K is a cyclical indicator created by Martin Pring. 
// His method combines short-term, intermediate and long-term velocity 
// into one complete series. Useful tool for Long Term Investors
// Modified for any source.
//
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
strategy(title="Martin Pring's Special K Backtest", shorttitle="UCS_Pring_sK")
a = input(10, title = "Smooth" )
sources = input(title="Source",  defval=close)
reverse = input(false, title="Trade reverse")
roc1 = (sma(roc(sources,10),10)*1)
roc2 = (sma(roc(sources,15),10)*2)
roc3 = (sma(roc(sources,20),10)*3)
roc4 = (sma(roc(sources,30),15)*4)
roc5 = (sma(roc(sources,40),50)*1)
roc6 = (sma(roc(sources,65),65)*2)
roc7 = (sma(roc(sources,75),75)*3)
roc8 = (sma(roc(sources,100),100)*4)
roc9 = (sma(roc(sources,195),130)*1)
roc10 = (sma(roc(sources,265),130)*2)
roc11 = (sma(roc(sources,390),130)*3)
roc12 = (sma(roc(sources,530),195)*4)
osc = roc1+roc2+roc3+roc4+roc5+roc6+roc7+roc8+roc9+roc10+roc11+roc12
oscsmt = sma(osc,a)
pos = iff(osc > oscsmt, 1,
	     iff(osc < oscsmt, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue ) 
plot(osc, color=blue, title="Martin Pring's Special K")
plot(oscsmt, color = red, title = "Smooth")
hline(0, title="Zero Line")

Mehr