Fixed a typo in the code where BB multiplier was stuck at 1.5. Thanks @ucsgears for bringing it to my notice.
Updated source: http://pastebin.com/UCpcX8d7
Use the updated source instead of the what TV shows below.
This is a derivative of John Carter's "TTM Squeeze" indicator, as discussed in his book "Mastering the Trade" (chapter 11).
Black crosses on the midline show that the market just entered a squeeze ( are with in Channel). This signifies low , 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 / WaveTrend, is needed to not miss good entry points. Also, Mr.Carter uses simple , while I have used a different method (linreg based) to plot the histogram.
- Book: Mastering The Trade by John F Carter
- Using Squeeze with ADX: http://www.tradethemarkets.com/public/mastering-the-trade-chapter-11-squeeze.cfm
List of all my indicators:
// // @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(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)), lengthKC,0) bcolor = iff( val > 0, iff( val > nz(val), lime, green), iff( val < nz(val), red, maroon)) scolor = noSqz ? blue : sqzOn ? black : gray plot(val, color=bcolor, style=histogram, linewidth=4) plot(0, color=scolor, style=cross, linewidth=2)
I believe that those colors to easier identify the directions of the histogram's bars:
light green-rising, dark green- falling
light red-falling, dark red-rising
So, if you are riding a long position up, it's suggested to get out when light green changes to dark green ( indicator goes down)
Reverse is true for a short position-get out when light red turns to dark ( indicator goes up)
If you're not familiar with pine, condition is the variable linked to the set of conditions that will trigger the alert once activate, title is what the alert will appear as in the alert creation menu, and message is the default message (although you can still change it in the alert creation menu. For condition, in this case you would use sqzOff, since that is what LazyBear named the variable in the code. So pretty much you would view the source code for this indicator, chose the "create copy" option, and in your copy add something to the effect of "alertcondition(sqzOff, 'Squeeze Off', 'Security has exited squeeze')." You should add this to the end of the code, since it needs to come after sqzOff has been defined.
Also, note that this will not actually create an alert, it just will add the option to create an alert from the normal create alert dialogue.
Thanks much for this. Am I correct in thinking that if I wanted to change the color of the CROSSES--I'm having a hard time distinguishing the grey/black from each other--I can edit line 38? And replace black : gray with the colors I want? I realize it's been a loooooooong time since you released this (I'm using V2--I hope!), but if you could confirm that, that would be great. I'll give it a go myself, but I wouldn't mind a bit of confirmation. :-)
Again--many thanks for this and all your fab work.