Indikator Momentum Squeeze

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

Ini adalah derivatif daripada penunjuk turun naik TTM Squeeze John Carter, seperti yang dibincangkan dalam bukunya Mastering the Trade (bahagian 11).

Salib hitam pada garisan tengah menunjukkan bahawa pasaran baru sahaja memasuki pemampatan (Bollinger Bands berada di Saluran Keltner). Ini menandakan turun naik yang rendah, pasaran bersiap sedia untuk pergerakan letupan (ke atas atau ke bawah). Salib kelabu menandakan Pembebasan pemampatan.

Mr.Carter mencadangkan menunggu sehingga kelabu pertama selepas salib hitam, dan mengambil kedudukan ke arah momentum (misalnya, jika nilai momentum di atas sifar, pergi panjang). Keluar dari kedudukan apabila momentum berubah (peningkatan atau penurunan yang menandakan perubahan warna). Pengalaman saya (terhad) dengan ini menunjukkan, penunjuk tambahan seperti ADX / WaveTrend, diperlukan untuk tidak terlepas titik masuk yang baik. Juga, Mr.Carter menggunakan penunjuk momentum mudah, sementara saya telah menggunakan kaedah yang berbeza (berdasarkan reglin) untuk merangka histogram.

Ujian semula

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 lanjut