Nicolas

Squeeze Momentum Indicator

Category: Indicators By: Nicolas Created: April 23, 2020, 9:54 AM
April 23, 2020, 9:54 AM
Indicators
27 Comments
Squeeze Momentum Indicator

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

Black (or white) 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

(Description from the original author of this indicator LazyBear, all credits go to him).

//PRC_SqueezeMomentumIndicator | indicator
//23.04.2020
//Nicolas @ www.prorealcode.com
//Sharing ProRealTime knowledge
//converted from Pinescript version

// --- settings 
length = 20 //BB Length
mult = 2.0 //BB MultFactor
lengthKC= 20 //KC Length
multKC = 1.5 //KC MultFactor
useTrueRange = 1 //0=false;1=true Use TrueRange (KC)
// --- end of settings 

// Calculate BB
source = customclose
basis = average[length](source)
dev = multKC * std[length](source)
upperBB = basis + dev
lowerBB = basis - dev

// Calculate KC
ma = average[lengthKC](source)
if useTrueRange then 
 irange = tr 
else
 irange = (high - low)
endif
rangema = average[lengthKC](irange)
upperKC = ma + rangema * multKC
lowerKC = ma - rangema * multKC

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

data = source - (highest[lengthKC](high)+lowest[lengthKC](low)+average[lengthKC](close))/3
val = linearregression[lengthKC](data)

//histogram color 
if val>0 then 
 if val>val[1] then 
  r=0
  g=255
 else
  r=0
  g=139
 endif
else
 if val<val[1] then 
  r=255
  g=0
 else
  r=128
  g=0
 endif
endif

//squeeze color 
if noSqz then 
 sr=0
 sg=0
 sb=255
elsif sqzOn then 
 sr=0
 sg=0
 sb=0
else
 sr=138
 sg=138
 sb=138
endif
drawtext("✚",barindex,0,dialog,standard,20) coloured(sr,sg,sb)

return 0 coloured(sr,sg,sb) style (histogram,2), val coloured(r,g,0) style(histogram,4)

 

Download
Filename: PRC_SqueezeMomentumIndicator.itf
Downloads: 1096
Nicolas
Nicolas Legend
I created ProRealCode because I believe in the power of shared knowledge. I spend my time coding new tools and helping members solve complex problems. If you are stuck on a code or need a fresh perspective on a strategy, I am always willing to help. Welcome to the community!
Author’s Profile

Comments

Gaby333
1 year ago
#

nice thank you

JJMR
4 years ago
#

HOLA NICOLAS, TENGO LA ULTIMA VERSION ACTUALIZADA DEL INDICADOR TTM SQUEEZE PRO EN LA VERSION TRADING VIEW , PUEDES TRADUCIRLA PARA PRO REAL TIME????

fucode
6 years ago
#

I need to calculate this in excel. Is it posible ? how ?

Nicolas
6 years ago
#

Ask on an Excel website?!

Gaby333
6 years ago
#

not working the same thing as xtian saying?

Xtian
6 years ago
#

Bonjour Nicolas, Merci pour votre travail de codage et de partage. J'ai bien télécharger votre indicateur et fais la modification qui produisait une erreur sur la ligne 18 avec: dev = mult * std [longueur] (source) Cependant votre indicateur ne s'affiche toujours pas dans mes graphes. Désolé. Cordialement

ran2019
6 years ago
#

Hello Nicolas, I am new for trading, Could you please tell me if TTM squzee works on Tradingview OR MT4, How do I download it, I have basic knowledge in computers, Thank You Nicolas

Nicolas
6 years ago
#

All codes here are made to be used with Prorealtime trading platform, open a free account on www.prorealtime.com

Jan
Jan
6 years ago
#

Hallo FVtrading, if I understand you question correctly, and you want to use this indicator, do the following: download file as attached above Filename : prc_squeezemomentumindicator.itf , read eventual manual, clicking on the link above "How to import ITF files into ProRealTime platform?", go to your PRT environment, and click on Import at the Indicators, then select the downloaded file, and it will be attached to your indicators and ready to run if selected. Success

FVtrading
6 years ago
#

My point is that on the book Carter says that "Once the first gray dot appears after a series of black dots, I go long if the histogram is above zero". My problem is that If I try to do the backtest on Prorealtime , I see that I should use the graphic condition but I'm not able to translate this input "first gray and Histogram below zero" in a codniton to backtest. Many thanks

FVtrading
6 years ago
#

Good morning I'm new on the forum and on the platform. First of all thanks for the work done with this indicator. I've a question, how can I do a Proback test with this indicator? Many Thanks

Samurai
6 years ago
#

Ciao Nicolas, complimenti per gli screener che condividi con noi sono il top! Volevo chiederti se potevi creare uno screener che trovava le azioni con i fondamentali migliori. Grazie.

crolakstrading
6 years ago
#

length = 20 //BB Length mult = 2.0 //BB MultFactor lengthKC= 20 //KC Length multKC = 1.5 //KC MultFactor useTrueRange = 1 //0=false;1=true Use TrueRange (KC) // --- end of settings // Calculate BB source = customclose basis = average[length](source) dev = multKC * std[length](source) upperBB = basis + dev lowerBB = basis - dev // Calculate KC ma = average[lengthKC](source) if useTrueRange then irange = tr else irange = (high - low) endif rangema = average[lengthKC](irange) upperKC = ma + rangema * multKC lowerKC = ma - rangema * multKC sqzOn = (lowerBB > lowerKC) and (upperBB < upperKC) sqzOff = (lowerBB upperKC) noSqz = (sqzOn = 0) and (sqzOff = 0) data = source - (highest[lengthKC](high)+lowest[lengthKC](low)+average[lengthKC](close))/3 val = linearregression[lengthKC](data) Result = 0 if val>0 then if val>val[1] then Result = 9 endif else if val<val[1] then Result = 3 endif endif SCREENER[result] (result AS "SqueezeMI")

mscharstrom
6 years ago
#

Didnt work for me, would love to have this as a screener!

Gianno82
6 years ago
#

Hi Nicolas, thank you very much for your suggestions. What does dark grey7red columns mean? It's meaning an uptrend (dark red) and a downtrend (dark grey)...is it right? Thank you very much bye for now Michele

Nicolas
6 years ago
#

yes, a reversal of the current trend.

rama
6 years ago
#

This indicator is not picking up in automated program when the value crosses over or under zero

crolakstrading
6 years ago
#

That's great!! do you have any plans on making the screener? I did try to make the screener for this.. it's really really complicated for me and failed big time :)

Nicolas
6 years ago
#

it should

crolakstrading
6 years ago
#

HI, Nicolas thanks very much for this indicator. Any possibility of making a screener for this to get a signal when the first grey cross and first histogram up or down close. to get a signal?

Nicolas
6 years ago
#

Yes that's possible.

Violet
6 years ago
#

Nicolas, I downloaded the .itf it again. This time the .itf version is different from the one I downloaded earlier this morning. But it still contains an error. You declare a mult variable: //mult = 2.0 //BB MultFactor and do not use it in the code.

Nicolas
6 years ago
#

in this case, change the line 18 with: dev = mult * std[length](source)

Violet
6 years ago
#

Nicolas and readers, a warning: the code in prc_squeezemomentumindicator.itf is *not* the same as the one shown in the verbose explanation. The .itf file contains several errors.

imokdesign
4 years ago
#

@nicolas ,if in want to "call" this indicator, which values i have to write down?

Nicolas
6 years ago
#

Not at all, we have tested it and it is the right file that contains the same code as the one described in this post. I feel that you have imported another file instead? There is another squeeze momentum indicator in the library.

Al Wikah
6 years ago
#

Bonjour Nicolas, Merci pour votre formidable travail de codage et de partage. Je n'ai pas trouvé le moyen de vous contacter directement, alors je me permets de le faire à travers ce commentaire. Je me forme depuis peu (2 ans) à la bourse et au trading et débute dans l'apprentissage du code via PRT. Pas mal d'indicateurs que j'ai utilisés mais, je constate que rien ne remplace une bonne stratégie. Quels livres ou formations sur les stratégies de trading me recommanderiez-vous '(en FR & EN)? Merci d'avance pour le retour.

ProRealCode ProRealCode
Loading...