Squeeze Momentum Indicator [LazyBear]

จำนวนเข้าชม 355360
355360 293

Fixed a typo in the code where BB multiplier was stuck at 1.5. Thanks @ucsgears for bringing it to my notice.

Updated source:

Use the updated source instead of the what TV shows below.

This is a derivative of John Carter's "TTM Squeeze" volatility indicator, as discussed in his book "Mastering the Trade" (chapter 11).

Black crosses on the midline show that the market just entered a squeeze ( Bollinger Bands are with in Keltner Channel). This signifies low volatility , market preparing itself for an explosive move (up or down). Gray crosses signify "Squeeze release".

Mr.Carter suggests waiting till the first gray after a black cross, and taking a position in the direction of the momentum (for ex., if momentum value is above zero, go long). Exit the position when the momentum changes (increase or decrease --- signified by a color change). My (limited) experience with this shows, an additional indicator like ADX / WaveTrend, is needed to not miss good entry points. Also, Mr.Carter uses simple momentum indicator , while I have used a different method (linreg based) to plot the histogram.

More info:
- Book: Mastering The Trade by John F Carter
- Using Squeeze with ADX:

List of all my indicators:

ลบออกจากสคริปส์โปรด เพิ่มเข้าไปในสคริปส์โปรด
// @author LazyBear 
// List of all my indicators:
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(20, title="KC Length")
multKC = input(1.5, title="KC MultFactor")

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

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

// Calculate KC
ma = sma(source, lengthKC)
range = useTrueRange ? tr : (high - low)
rangema = 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 = linreg(source  -  avg(avg(highest(high, lengthKC), lowest(low, lengthKC)),sma(close,lengthKC)), 

bcolor = iff( val > 0, 
            iff( val > nz(val[1]), lime, green),
            iff( val < nz(val[1]), red, maroon))
scolor = noSqz ? blue : sqzOn ? black : gray 
plot(val, color=bcolor, style=histogram, linewidth=4)
plot(0, color=scolor, style=cross, linewidth=2)


Leazy Bear is not impressed
motleifaul เกี่ยวกับ BABA 1
This is awesome. Anyone able to convert this into a buy and sell signal directly on the chart?
I'm trying to understand the "val" formula used for the histogram. Why is avg used twice? What is this val really represent? trying to re-write this in python if anyone can help
Hi, please help me, how to add ADX in this same script? Thanks!
simply the best
good work! 🔥 🔥
thanks a lot this is awesome!!
+1 ตอบกลับ
NO REPAINT strategy -> -> -> MOEX:SBER No repaint 10M/5M DEMO! Without 2 weeks
+8 ตอบกลับ
How to change the colors of Ttm squeeze? I want to make it look like the one in thinkorswim
+3 ตอบกลับ
xSHADx Moneyman31
@Moneyman31, looks like Red and maroon, lime and green are listed. you try changing those?
หน้าแรก ตัวช่วยคัดกรองหุ้น ตัวคัดกรองฟอเร็กซ์ ตัวคัดกรองคริปโต ปฏิทินเศรษฐกิจ มันทำงานได้อย่างไร ข้อมูลสำคัญของชาร์ต ราคา กฎของบ้าน ผู้ดูแลการใช้งาน เว็บไซต์ & โบรกเกอร์ โซลูชั่น วิดเจ็ต โซลูชั่นชาร์ต ศูนย์ช่วยเหลือ คำร้องขอเพิ่มเติมลักษณะและบริการ บล็อก & ข่าว คำถามที่พบบ่อย วิกิ Twitter
ข้อมูลส่วนตัว ตั้งค่าประวัติ บัญชีและการเรียกเก็บเงิน เหรียญ TradingView ตั๋วการขอความสนับสนุนของฉัน ศูนย์ช่วยเหลือ ไอเดียที่ถูกตีพิมพ์ ผู้ติดตาม กำลังติดตาม ข้อความส่วนตัว แชท ออกจากระบบ