Indikator für die Druckdynamik

Schriftsteller:ChaoZhang, Datum: 2022-05-06 17:19:10
Tags:SMA

Dies ist eine Ableitung des TTM Squeeze Volatilitätsindikators von John Carter, wie in seinem Buch Mastering the Trade (Kapitel 11) diskutiert.

Schwarze Kreuze auf der Mittellinie zeigen, dass der Markt gerade in eine Pressung eingetreten ist (Bollinger Bands sind in Keltner Channel). Dies bedeutet geringe Volatilität, der Markt bereitet sich auf eine explosive Bewegung (nach oben oder unten) vor. Graue Kreuze bedeuten Squeeze release.

Mr.Carter schlägt vor, bis zum ersten Grau nach einem schwarzen Kreuz zu warten und eine Position in der Richtung des Momentums einzunehmen (z. B. wenn der Momentumwert über Null liegt, gehen Sie lang). Verlassen Sie die Position, wenn sich der Momentum ändert (Erhöhung oder Abnahme durch eine Farbänderung angezeigt). Meine (begrenzte) Erfahrung zeigt, dass ein zusätzlicher Indikator wie ADX / WaveTrend benötigt wird, um gute Einstiegspunkte nicht zu verpassen. Mr.Carter verwendet auch einen einfachen Momentum-Indikator, während ich eine andere Methode (reglin-basiert) verwendet habe, um das Histogramm zu zeichnen.

Wiederholung

img


/*backtest
start: 2021-05-05 00:00:00
end: 2022-05-04 23:59:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
*/

//
// @author LazyBear 
// List of all my indicators: https://www.tradingview.com/v/4IneGo8h/
//
study(shorttitle = "SQZMOM_LB", title="Squeeze Momentum Indicator [LazyBear]", overlay=false)

length = input(20, title="BB Length")
mult = input(2.0,title="BB MultFactor")
lengthKC=input(14, title="KC Length")
multKC = input(1.5, title="KC MultFactor")

useTrueRange = input(true, title="Use TrueRange (KC)",defval=true)

// Calculate BB
source = close
basis = ta.sma(source, length)
dev = multKC * ta.stdev(source, length)
upperBB = basis + dev
lowerBB = basis - dev

// Calculate KC
ma = ta.sma(source, lengthKC)
range = useTrueRange ? ta.tr : (high - low)
rangema = ta.sma(range, lengthKC)
upperKC = ma + rangema * multKC
lowerKC = ma - rangema * multKC

sqzOn  = (lowerBB > lowerKC) and (upperBB < upperKC)
sqzOff = (lowerBB < lowerKC) and (upperBB > upperKC)
noSqz  = (sqzOn == false) and (sqzOff == false)

val = ta.linreg(source  -  math.avg(math.avg(ta.highest(high, lengthKC), ta.lowest(low, lengthKC)),ta.sma(close,lengthKC)), 
            lengthKC,0)

bcolor = iff( val > 0, 
            iff( val > nz(val[1]), color.lime, color.green),
            iff( val < nz(val[1]), color.red, color.maroon))

scolor = noSqz ? color.blue : sqzOn ? color.black : color.gray 
plot(val, color=bcolor, style=plot.style_histogram, linewidth=4)
plot(0, color=scolor, style=plot.style_cross, linewidth=2)

if val >0 and val < nz(val[1])
    strategy.entry("entry short", strategy.short)
else if val <0 and val > nz(val[1]) 
    strategy.entry("entry long", strategy.long) 
       
    
    

Verwandt

Mehr