Indikator Momentum Squeeze

Penulis:ChaoZhang, Tanggal: 2022-05-06 17:19:10
Tag:SMA

Ini adalah turunan dari indikator volatilitas TTM Squeeze John Carter, seperti yang dibahas dalam bukunya Mastering the Trade (bab 11).

Salib hitam pada garis tengah menunjukkan bahwa pasar baru saja memasuki penyekatan (Bollinger Bands berada di Saluran Keltner). Ini menandakan volatilitas rendah, pasar mempersiapkan diri untuk gerakan eksplosif (naik atau turun). Salib abu-abu menandakan Squeeze release.

Mr.Carter menyarankan menunggu sampai abu-abu pertama setelah salib hitam, dan mengambil posisi ke arah momentum (misalnya, jika nilai momentum di atas nol, pergi panjang). Keluar dari posisi ketika momentum berubah (peningkatan atau penurunan yang ditandai dengan perubahan warna). Pengalaman saya (terbatas) dengan ini menunjukkan, indikator tambahan seperti ADX / WaveTrend, diperlukan untuk tidak melewatkan titik masuk yang baik. Juga, Mr.Carter menggunakan indikator momentum sederhana, sementara saya telah menggunakan metode yang berbeda (berdasarkan reglin) untuk memetakan histogram.

Pengamatan

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) 
       
    
    

Berkaitan

Lebih banyak