{"id":26244,"date":"2026-01-27T19:31:14","date_gmt":"2026-01-27T14:01:14","guid":{"rendered":"https:\/\/signalz.pro\/?post_type=article&#038;p=26244"},"modified":"2026-01-30T16:46:12","modified_gmt":"2026-01-30T11:16:12","slug":"%f0%9f%93%8a-ttm-squeeze-advance-volatility-compression-momentum-bias-indicator","status":"publish","type":"article","link":"https:\/\/signalz.pro\/article\/%f0%9f%93%8a-ttm-squeeze-advance-volatility-compression-momentum-bias-indicator\/","title":{"rendered":"\ud83d\udcca TTM Squeeze Advance \u2013 Volatility Compression + Momentum Bias Indicator"},"content":{"rendered":"<p data-start=\"429\" data-end=\"503\"><strong data-start=\"454\" data-end=\"503\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-26245\" src=\"https:\/\/signalz.pro\/wp-content\/uploads\/2026\/01\/Screenshot-2026-01-23-085051.png\" alt=\"\" width=\"704\" height=\"616\" srcset=\"https:\/\/signalz.pro\/wp-content\/uploads\/2026\/01\/Screenshot-2026-01-23-085051.png 938w, https:\/\/signalz.pro\/wp-content\/uploads\/2026\/01\/Screenshot-2026-01-23-085051-300x263.png 300w, https:\/\/signalz.pro\/wp-content\/uploads\/2026\/01\/Screenshot-2026-01-23-085051-768x672.png 768w\" sizes=\"auto, (max-width: 704px) 100vw, 704px\" \/><br \/>\n<\/strong><\/p>\n<p data-start=\"505\" data-end=\"642\"><strong data-start=\"429\" data-end=\"451\">By Sharma Research<\/strong><br data-start=\"451\" data-end=\"454\" \/><strong data-start=\"454\" data-end=\"503\">Concept inspired by John Carter (TTM Squeeze)<\/strong><\/p>\n<p data-start=\"505\" data-end=\"642\">TTM Squeeze Advance is an advanced volatility\u2013momentum indicator designed to identify one of the most important structural market phases:<\/p>\n<blockquote data-start=\"644\" data-end=\"705\">\n<p data-start=\"646\" data-end=\"705\"><strong data-start=\"646\" data-end=\"705\">Periods of low volatility that often precede expansion.<\/strong><\/p>\n<\/blockquote>\n<p data-start=\"707\" data-end=\"762\">Markets do not move randomly.<br data-start=\"736\" data-end=\"739\" \/>They alternate between:<\/p>\n<ul data-start=\"764\" data-end=\"866\">\n<li data-start=\"764\" data-end=\"800\">\n<p data-start=\"766\" data-end=\"800\">Compression (quiet accumulation)<\/p>\n<\/li>\n<li data-start=\"801\" data-end=\"837\">\n<p data-start=\"803\" data-end=\"837\">Expansion (directional breakout)<\/p>\n<\/li>\n<li data-start=\"838\" data-end=\"866\">\n<p data-start=\"840\" data-end=\"866\">Exhaustion (cooling off)<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"868\" data-end=\"1016\">The TTM Squeeze framework is built to detect the first phase\u2014when price becomes unusually \u201ctight\u201d\u2014and prepare traders to observe what may come next.<\/p>\n<hr data-start=\"1018\" data-end=\"1021\" \/>\n<h2 data-start=\"1023\" data-end=\"1063\">\ud83d\udd0d Why Volatility Compression Matters<\/h2>\n<p data-start=\"1065\" data-end=\"1096\">Most traders focus on movement.<\/p>\n<p data-start=\"1098\" data-end=\"1163\">But professional market behavior often begins with <strong data-start=\"1149\" data-end=\"1162\">stillness<\/strong>.<\/p>\n<p data-start=\"1165\" data-end=\"1235\">Before strong directional moves, markets frequently enter zones where:<\/p>\n<ul data-start=\"1237\" data-end=\"1307\">\n<li data-start=\"1237\" data-end=\"1261\">\n<p data-start=\"1239\" data-end=\"1261\">volatility contracts<\/p>\n<\/li>\n<li data-start=\"1262\" data-end=\"1280\">\n<p data-start=\"1264\" data-end=\"1280\">ranges tighten<\/p>\n<\/li>\n<li data-start=\"1281\" data-end=\"1307\">\n<p data-start=\"1283\" data-end=\"1307\">price becomes \u201ccoiled\u201d<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"1309\" data-end=\"1365\">This is not a signal by itself.<br data-start=\"1340\" data-end=\"1343\" \/>It is a <strong data-start=\"1351\" data-end=\"1364\">condition<\/strong>.<\/p>\n<p data-start=\"1367\" data-end=\"1411\">TTM Squeeze is essentially a tool that asks:<\/p>\n<blockquote data-start=\"1413\" data-end=\"1513\">\n<p data-start=\"1415\" data-end=\"1513\">\u201cIs the market currently in a compressed state where expansion becomes statistically more likely?\u201d<\/p>\n<p data-start=\"1415\" data-end=\"1513\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-26246\" src=\"https:\/\/signalz.pro\/wp-content\/uploads\/2026\/01\/Screenshot-2026-01-23-085229.png\" alt=\"\" width=\"485\" height=\"420\" srcset=\"https:\/\/signalz.pro\/wp-content\/uploads\/2026\/01\/Screenshot-2026-01-23-085229.png 941w, https:\/\/signalz.pro\/wp-content\/uploads\/2026\/01\/Screenshot-2026-01-23-085229-300x260.png 300w, https:\/\/signalz.pro\/wp-content\/uploads\/2026\/01\/Screenshot-2026-01-23-085229-768x665.png 768w\" sizes=\"auto, (max-width: 485px) 100vw, 485px\" \/><\/p>\n<\/blockquote>\n<hr data-start=\"1515\" data-end=\"1518\" \/>\n<h2 data-start=\"1520\" data-end=\"1573\">\u2699\ufe0f Core Logic: Bollinger Bands vs Keltner Channels<\/h2>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-26247\" src=\"https:\/\/signalz.pro\/wp-content\/uploads\/2026\/01\/Screenshot-2026-01-23-085106.png\" alt=\"\" width=\"653\" height=\"575\" srcset=\"https:\/\/signalz.pro\/wp-content\/uploads\/2026\/01\/Screenshot-2026-01-23-085106.png 933w, https:\/\/signalz.pro\/wp-content\/uploads\/2026\/01\/Screenshot-2026-01-23-085106-300x264.png 300w, https:\/\/signalz.pro\/wp-content\/uploads\/2026\/01\/Screenshot-2026-01-23-085106-768x676.png 768w\" sizes=\"auto, (max-width: 653px) 100vw, 653px\" \/><\/p>\n<p data-start=\"1575\" data-end=\"1648\">TTM Squeeze is based on the interaction between two volatility envelopes:<\/p>\n<h3 data-start=\"1650\" data-end=\"1704\">1\ufe0f\u20e3 Bollinger Bands (Standard Deviation Expansion)<\/h3>\n<p data-start=\"1706\" data-end=\"1785\">Bollinger Bands widen when volatility rises and contract when volatility falls.<\/p>\n<p data-start=\"1787\" data-end=\"1827\">They represent <em data-start=\"1802\" data-end=\"1826\">statistical volatility<\/em>.<\/p>\n<hr data-start=\"1829\" data-end=\"1832\" \/>\n<h3 data-start=\"1834\" data-end=\"1887\">2\ufe0f\u20e3 Keltner Channels (ATR-Based Volatility Range)<\/h3>\n<p data-start=\"1889\" data-end=\"1943\">Keltner Channels are built using True Range smoothing.<\/p>\n<p data-start=\"1945\" data-end=\"1979\">They represent <em data-start=\"1960\" data-end=\"1978\">range volatility<\/em>.<\/p>\n<hr data-start=\"1981\" data-end=\"1984\" \/>\n<h3 data-start=\"1986\" data-end=\"2011\">The Squeeze Condition<\/h3>\n<p data-start=\"2013\" data-end=\"2087\">A squeeze occurs when Bollinger Bands contract inside the Keltner Channel.<\/p>\n<p data-start=\"2089\" data-end=\"2104\">That indicates:<\/p>\n<ul data-start=\"2106\" data-end=\"2211\">\n<li data-start=\"2106\" data-end=\"2137\">\n<p data-start=\"2108\" data-end=\"2137\">volatility is unusually low<\/p>\n<\/li>\n<li data-start=\"2138\" data-end=\"2176\">\n<p data-start=\"2140\" data-end=\"2176\">price movement is being compressed<\/p>\n<\/li>\n<li data-start=\"2177\" data-end=\"2211\">\n<p data-start=\"2179\" data-end=\"2211\">the market is \u201cloading energy\u201d<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"2213\" data-end=\"2267\">TTM Squeeze Advance plots multiple compression levels:<\/p>\n<ul data-start=\"2269\" data-end=\"2373\">\n<li data-start=\"2269\" data-end=\"2292\">\n<p data-start=\"2271\" data-end=\"2292\">\ud83d\udfe0 High Compression<\/p>\n<\/li>\n<li data-start=\"2293\" data-end=\"2318\">\n<p data-start=\"2295\" data-end=\"2318\">\ud83d\udd34 Medium Compression<\/p>\n<\/li>\n<li data-start=\"2319\" data-end=\"2340\">\n<p data-start=\"2321\" data-end=\"2340\">\u26aa Low Compression<\/p>\n<\/li>\n<li data-start=\"2341\" data-end=\"2373\">\n<p data-start=\"2343\" data-end=\"2373\">\ud83d\udfe2 No Squeeze (Expansion Zone)<\/p>\n<\/li>\n<\/ul>\n<hr data-start=\"2375\" data-end=\"2378\" \/>\n<h2 data-start=\"2380\" data-end=\"2414\">\ud83d\udfe2 Understanding the Dot States<\/h2>\n<p data-start=\"2416\" data-end=\"2480\">This indicator visualizes volatility regimes using squeeze dots:<\/p>\n<ul data-start=\"2482\" data-end=\"2652\">\n<li data-start=\"2482\" data-end=\"2525\">\n<p data-start=\"2484\" data-end=\"2525\"><strong data-start=\"2484\" data-end=\"2498\">Orange Dot<\/strong> \u2192 Very tight compression<\/p>\n<\/li>\n<li data-start=\"2526\" data-end=\"2564\">\n<p data-start=\"2528\" data-end=\"2564\"><strong data-start=\"2528\" data-end=\"2539\">Red Dot<\/strong> \u2192 Moderate compression<\/p>\n<\/li>\n<li data-start=\"2565\" data-end=\"2601\">\n<p data-start=\"2567\" data-end=\"2601\"><strong data-start=\"2567\" data-end=\"2580\">White Dot<\/strong> \u2192 Mild compression<\/p>\n<\/li>\n<li data-start=\"2602\" data-end=\"2652\">\n<p data-start=\"2604\" data-end=\"2652\"><strong data-start=\"2604\" data-end=\"2617\">Green Dot<\/strong> \u2192 No squeeze (volatility released)<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"2654\" data-end=\"2675\">A key interpretation:<\/p>\n<blockquote data-start=\"2677\" data-end=\"2784\">\n<p data-start=\"2679\" data-end=\"2784\">Compression is preparation.<br data-start=\"2706\" data-end=\"2709\" \/>Green dots represent the environment where movement is already expanding.<\/p>\n<\/blockquote>\n<hr data-start=\"2786\" data-end=\"2789\" \/>\n<h2 data-start=\"2791\" data-end=\"2840\">\ud83e\udde0 Directional Bias: Momentum Oscillator Layer<\/h2>\n<p data-start=\"2842\" data-end=\"2879\">TTM Squeeze by itself only tells you:<\/p>\n<ul data-start=\"2881\" data-end=\"2907\">\n<li data-start=\"2881\" data-end=\"2907\">\n<p data-start=\"2883\" data-end=\"2907\">volatility is compressed<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"2909\" data-end=\"2930\">It does not tell you:<\/p>\n<ul data-start=\"2932\" data-end=\"2972\">\n<li data-start=\"2932\" data-end=\"2972\">\n<p data-start=\"2934\" data-end=\"2972\">which direction the breakout may favor<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"2974\" data-end=\"3116\">That is why TTM Squeeze Advance includes a <strong data-start=\"3017\" data-end=\"3047\">custom momentum oscillator<\/strong>, built using linear regression of price deviation from its midpoint.<\/p>\n<p data-start=\"3118\" data-end=\"3163\">This oscillator provides directional context:<\/p>\n<ul data-start=\"3165\" data-end=\"3329\">\n<li data-start=\"3165\" data-end=\"3207\">\n<p data-start=\"3167\" data-end=\"3207\">Momentum above zero \u2192 bullish pressure<\/p>\n<\/li>\n<li data-start=\"3208\" data-end=\"3250\">\n<p data-start=\"3210\" data-end=\"3250\">Momentum below zero \u2192 bearish pressure<\/p>\n<\/li>\n<li data-start=\"3251\" data-end=\"3291\">\n<p data-start=\"3253\" data-end=\"3291\">Rising momentum \u2192 strengthening bias<\/p>\n<\/li>\n<li data-start=\"3292\" data-end=\"3329\">\n<p data-start=\"3294\" data-end=\"3329\">Falling momentum \u2192 weakening bias<\/p>\n<\/li>\n<\/ul>\n<hr data-start=\"3331\" data-end=\"3334\" \/>\n<h2 data-start=\"3336\" data-end=\"3372\">\ud83c\udfa8 Momentum-Based Candle Coloring<\/h2>\n<p data-start=\"3374\" data-end=\"3459\">To improve visual interpretation, the script colors candles based on momentum regime:<\/p>\n<ul data-start=\"3461\" data-end=\"3621\">\n<li data-start=\"3461\" data-end=\"3502\">\n<p data-start=\"3463\" data-end=\"3502\">Aqua \u2192 bullish momentum strengthening<\/p>\n<\/li>\n<li data-start=\"3503\" data-end=\"3540\">\n<p data-start=\"3505\" data-end=\"3540\">Blue \u2192 bullish momentum weakening<\/p>\n<\/li>\n<li data-start=\"3541\" data-end=\"3581\">\n<p data-start=\"3543\" data-end=\"3581\">Red \u2192 bearish momentum strengthening<\/p>\n<\/li>\n<li data-start=\"3582\" data-end=\"3621\">\n<p data-start=\"3584\" data-end=\"3621\">Yellow \u2192 bearish momentum weakening<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"3623\" data-end=\"3694\">This helps users see momentum shifts without needing extra oscillators.<\/p>\n<hr data-start=\"3696\" data-end=\"3699\" \/>\n<h2 data-start=\"3701\" data-end=\"3749\">\u2705 Entry Filtering: \u201cOnly Enter on Green Dots\u201d<\/h2>\n<p data-start=\"3751\" data-end=\"3809\">A major enhancement in this version is optional filtering:<\/p>\n<blockquote data-start=\"3811\" data-end=\"3894\">\n<p data-start=\"3813\" data-end=\"3894\">Signals can be restricted to only occur during <strong data-start=\"3860\" data-end=\"3886\">No Squeeze (Green Dot)<\/strong> states.<\/p>\n<\/blockquote>\n<p data-start=\"3896\" data-end=\"3929\">This aligns with a key principle:<\/p>\n<ul data-start=\"3931\" data-end=\"3987\">\n<li data-start=\"3931\" data-end=\"3959\">\n<p data-start=\"3933\" data-end=\"3959\">Compression is the setup<\/p>\n<\/li>\n<li data-start=\"3960\" data-end=\"3987\">\n<p data-start=\"3962\" data-end=\"3987\">Expansion is the action<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"3989\" data-end=\"4108\">So instead of firing entries inside tight ranges, the indicator can wait until volatility has actually begun releasing.<\/p>\n<hr data-start=\"4110\" data-end=\"4113\" \/>\n<h2 data-start=\"4115\" data-end=\"4161\">\ud83d\udd01 Cross Confirmation + Regime Change Logic<\/h2>\n<p data-start=\"4163\" data-end=\"4226\">TTM Squeeze Advance includes optional cross-confirmation logic:<\/p>\n<ul data-start=\"4228\" data-end=\"4390\">\n<li data-start=\"4228\" data-end=\"4281\">\n<p data-start=\"4230\" data-end=\"4281\">Signals trigger only when conditions newly appear<\/p>\n<\/li>\n<li data-start=\"4282\" data-end=\"4333\">\n<p data-start=\"4284\" data-end=\"4333\">Prevents repeated firing inside the same regime<\/p>\n<\/li>\n<li data-start=\"4334\" data-end=\"4390\">\n<p data-start=\"4336\" data-end=\"4390\">Encourages cleaner \u201cstate transition\u201d interpretation<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"4392\" data-end=\"4473\">This makes the tool more suitable for structured backtesting and reduces clutter.<\/p>\n<hr data-start=\"4475\" data-end=\"4478\" \/>\n<h2 data-start=\"4480\" data-end=\"4521\">\ud83d\udd04 Inversion Option (Research Utility)<\/h2>\n<p data-start=\"4523\" data-end=\"4600\">The indicator also supports an \u201cInverse\u201d mode, which flips directional logic.<\/p>\n<p data-start=\"4602\" data-end=\"4681\">This is not meant as a recommendation, but as a research feature for exploring:<\/p>\n<ul data-start=\"4683\" data-end=\"4775\">\n<li data-start=\"4683\" data-end=\"4717\">\n<p data-start=\"4685\" data-end=\"4717\">mean-reversion interpretations<\/p>\n<\/li>\n<li data-start=\"4718\" data-end=\"4747\">\n<p data-start=\"4720\" data-end=\"4747\">alternative regime models<\/p>\n<\/li>\n<li data-start=\"4748\" data-end=\"4775\">\n<p data-start=\"4750\" data-end=\"4775\">countertrend frameworks<\/p>\n<\/li>\n<\/ul>\n<hr data-start=\"4777\" data-end=\"4780\" \/>\n<h2 data-start=\"4782\" data-end=\"4808\">\ud83d\udea8 Educational Use Only<\/h2>\n<p data-start=\"4810\" data-end=\"4846\">TTM Squeeze Advance is designed for:<\/p>\n<ul data-start=\"4848\" data-end=\"4943\">\n<li data-start=\"4848\" data-end=\"4875\">\n<p data-start=\"4850\" data-end=\"4875\">volatility regime study<\/p>\n<\/li>\n<li data-start=\"4876\" data-end=\"4906\">\n<p data-start=\"4878\" data-end=\"4906\">momentum behavior analysis<\/p>\n<\/li>\n<li data-start=\"4907\" data-end=\"4943\">\n<p data-start=\"4909\" data-end=\"4943\">backtesting expansion conditions<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"4945\" data-end=\"4988\">It is not a buy\/sell recommendation system.<\/p>\n<p data-start=\"4990\" data-end=\"5079\">Volatility compression increases the probability of movement, not certainty of direction.<\/p>\n<p data-start=\"5081\" data-end=\"5145\">Proper risk management and contextual analysis remain essential.<\/p>\n<hr data-start=\"5147\" data-end=\"5150\" \/>\n<h2 data-start=\"5152\" data-end=\"5177\">\ud83d\udcda Concept Inspiration<\/h2>\n<p data-start=\"5179\" data-end=\"5229\">The original TTM Squeeze framework is credited to:<\/p>\n<ul data-start=\"5231\" data-end=\"5326\">\n<li data-start=\"5231\" data-end=\"5276\">\n<p data-start=\"5233\" data-end=\"5276\"><strong data-start=\"5233\" data-end=\"5248\">John Carter<\/strong> (TTM Squeeze methodology)<\/p>\n<\/li>\n<li data-start=\"5277\" data-end=\"5326\">\n<p data-start=\"5279\" data-end=\"5326\">Community implementations such as Beardy_Fred<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"5328\" data-end=\"5383\">TTM Squeeze Advance builds upon this classic by adding:<\/p>\n<ul data-start=\"5385\" data-end=\"5568\">\n<li data-start=\"5385\" data-end=\"5419\">\n<p data-start=\"5387\" data-end=\"5419\">multi-level squeeze state dots<\/p>\n<\/li>\n<li data-start=\"5420\" data-end=\"5451\">\n<p data-start=\"5422\" data-end=\"5451\">momentum-driven candle bias<\/p>\n<\/li>\n<li data-start=\"5452\" data-end=\"5489\">\n<p data-start=\"5454\" data-end=\"5489\">optional expansion-only filtering<\/p>\n<\/li>\n<li data-start=\"5490\" data-end=\"5528\">\n<p data-start=\"5492\" data-end=\"5528\">cross-confirmed regime transitions<\/p>\n<\/li>\n<li data-start=\"5529\" data-end=\"5568\">\n<p data-start=\"5531\" data-end=\"5568\">background highlighting for clarity<\/p>\n<\/li>\n<\/ul>\n<hr data-start=\"5570\" data-end=\"5573\" \/>\n<h2 data-start=\"5575\" data-end=\"5596\">\ud83d\udc68\u200d\ud83d\udcbb Developed By<\/h2>\n<p data-start=\"5598\" data-end=\"5715\"><strong data-start=\"5598\" data-end=\"5617\">Sharma Research<\/strong><br data-start=\"5617\" data-end=\"5620\" \/>Written in Pine Script v5 for TradingView<br data-start=\"5661\" data-end=\"5664\" \/>Released for educational and research purposes only<\/p>\n<pre style=\"background: #0b0e11;color: #d1d4dc;padding: 16px;border-radius: 8px;font-family: 'JetBrains Mono','Fira Code','Consolas','Menlo',monospace;font-size: 14px;line-height: 1.6\"><code class=\"language-pinescript\">\r\n\/\/@version=5\r\n\/\/ TTM Squeeze Advance by SharmaResearch.com\r\n\r\n\/\/ Original concept credits: Beardy_Fred, John Carter (TTM Squeeze)\r\n\r\n\/\/\r\n\/\/ How this works (quick intro):\r\n\/\/ This indicator is an advanced implementation of the classic TTM Squeeze,\r\n\/\/ combining Bollinger Bands and Keltner Channels to detect volatility compression zones.\r\n\/\/ A custom momentum oscillator is used to determine directional bias and histogram coloring.\r\n\/\/ Optional features include cross confirmation, signal inversion, and filtering entries\r\n\/\/ to only occur during \u201cNo Squeeze\u201d (green dot) states.\r\n\/\/ Visual elements include squeeze dot states, momentum-based bar coloring,\r\n\/\/ and background highlighting for confirmed directional conditions.\r\n\r\nindicator(\"TTM Squeeze Advance by SharmaResearch.com (Concept: John Carter)\", shorttitle=\"TTMS+\", overlay=true)\r\n\r\n\r\n\/\/ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n\/\/ Inputs\r\n\/\/ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\nuse_TTMS               = input.bool(true, \"Use TTMS?\")\r\nredGreen_TTMS          = input.bool(true, \"Only Green &amp; Red Candles?\")\r\ncross_TTMS             = input.bool(true, \"Cross confirmation?\")\r\ninverse_TTMS           = input.bool(false, \"Inverse?\")\r\nhighlightMovements_TTMS = input.bool(true, \"Only Enter on Green Dots?\")\r\n\r\nlength_TTMS            = input.int(20, \"TTM Squeeze Length\")\r\n\r\n\/\/ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n\/\/ Bollinger Bands\r\n\/\/ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\nBB_mult_TTMS     = input.float(2.0, \"Bollinger Band STD Multiplier\")\r\nBB_basis_TTMS    = ta.sma(close, length_TTMS)\r\ndev_TTMS         = BB_mult_TTMS * ta.stdev(close, length_TTMS)\r\nBB_upper_TTMS    = BB_basis_TTMS + dev_TTMS\r\nBB_lower_TTMS    = BB_basis_TTMS - dev_TTMS\r\n\r\n\/\/ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n\/\/ Keltner Channels\r\n\/\/ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\nKC_mult_high_TTMS = input.float(1.0, \"Keltner Channel #1\")\r\nKC_mult_mid_TTMS  = input.float(1.5, \"Keltner Channel #2\")\r\nKC_mult_low_TTMS  = input.float(2.0, \"Keltner Channel #3\")\r\nKC_basis_TTMS     = ta.sma(close, length_TTMS)\r\ndevKC_TTMS        = ta.sma(ta.tr, length_TTMS)\r\n\r\nKC_upper_high_TTMS = KC_basis_TTMS + devKC_TTMS * KC_mult_high_TTMS\r\nKC_lower_high_TTMS = KC_basis_TTMS - devKC_TTMS * KC_mult_high_TTMS\r\nKC_upper_mid_TTMS  = KC_basis_TTMS + devKC_TTMS * KC_mult_mid_TTMS\r\nKC_lower_mid_TTMS  = KC_basis_TTMS - devKC_TTMS * KC_mult_mid_TTMS\r\nKC_upper_low_TTMS  = KC_basis_TTMS + devKC_TTMS * KC_mult_low_TTMS\r\nKC_lower_low_TTMS  = KC_basis_TTMS - devKC_TTMS * KC_mult_low_TTMS\r\n\r\n\/\/ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n\/\/ Momentum Oscillator\r\n\/\/ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\nmid = math.avg(math.avg(ta.highest(high, length_TTMS), ta.lowest(low, length_TTMS)), ta.sma(close, length_TTMS))\r\nmom_TTMS = ta.linreg(close - mid, length_TTMS, 0)\r\n\r\nmomentumUp   = mom_TTMS > nz(mom_TTMS[1])\r\nmomentumDown = mom_TTMS < nz(mom_TTMS[1])\r\n\r\nbarColorUp   = color.new(color.aqua, 0)\r\nbarColorDown = color.new(#2962ff, 0)\r\nbarColorNegUp   = color.new(color.red, 0)\r\nbarColorNegDown = color.new(color.yellow, 0)\r\n\r\nmomColor = mom_TTMS > 0 ? (momentumUp ? barColorUp : barColorDown) : (momentumDown ? barColorNegUp : barColorNegDown)\r\nbarcolor(momColor)\r\n\r\n\/\/ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n\/\/ Squeeze Conditions\r\n\/\/ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\nNoSqz_TTMS   = BB_lower_TTMS < KC_lower_low_TTMS or BB_upper_TTMS > KC_upper_low_TTMS\r\nLowSqz_TTMS  = BB_lower_TTMS >= KC_lower_low_TTMS or BB_upper_TTMS <= KC_upper_low_TTMS\r\nMidSqz_TTMS  = BB_lower_TTMS >= KC_lower_mid_TTMS or BB_upper_TTMS <= KC_upper_mid_TTMS\r\nHighSqz_TTMS = BB_lower_TTMS >= KC_lower_high_TTMS or BB_upper_TTMS <= KC_upper_high_TTMS\r\n\r\nplotchar(NoSqz_TTMS,   char='\u25cf', color=color.green,  title=\"No Squeeze (Green)\")\r\nplotchar(LowSqz_TTMS,  char='\u25cf', color=color.white,  title=\"Low Compression (White)\")\r\nplotchar(MidSqz_TTMS,  char='\u25cf', color=color.red,    title=\"Mid Compression (Red)\")\r\nplotchar(HighSqz_TTMS, char='\u25cf', color=color.orange, title=\"High Compression (Orange)\")\r\n\r\n\/\/ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n\/\/ Signal Logic\r\n\/\/ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\nTTMS_Signals_TTMS = mom_TTMS &gt; 0 ? (momentumUp ? 1 : 2) : (momentumDown ? -1 : -2)\r\n\r\nbasicLongCondition  = redGreen_TTMS ? TTMS_Signals_TTMS == 1  : TTMS_Signals_TTMS &gt; 0\r\nbasicShortCondition = redGreen_TTMS ? TTMS_Signals_TTMS == -1 : TTMS_Signals_TTMS &lt; 0\r\n\r\nentryLong  = highlightMovements_TTMS ? NoSqz_TTMS and basicLongCondition  : basicLongCondition\r\nentryShort = highlightMovements_TTMS ? NoSqz_TTMS and basicShortCondition : basicShortCondition\r\n\r\nentryLongFinal  = cross_TTMS ? not entryLong[1] and entryLong   : entryLong\r\nentryShortFinal = cross_TTMS ? not entryShort[1] and entryShort : entryShort\r\n\r\nTTMS_SignalsLongFinal  = use_TTMS ? (inverse_TTMS ? entryShortFinal : entryLongFinal)   : true\r\nTTMS_SignalsShortFinal = use_TTMS ? (inverse_TTMS ? entryLongFinal  : entryShortFinal)  : true\r\n\r\n\/\/ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n\/\/ Signal Plots + Background\r\n\/\/ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\nplot(TTMS_SignalsLongFinal  ? 1 : 0, title=&#039;TTMS Long Signal&#039;,  display=display.data_window)\r\nplot(TTMS_SignalsShortFinal ? -1 : 0, title=&#039;TTMS Short Signal&#039;, display=display.data_window)\r\n\r\nbgcolor(TTMS_SignalsLongFinal  ? color.rgb(0, 230, 119, 75) : na)\r\nbgcolor(TTMS_SignalsShortFinal ? color.rgb(255, 0, 89, 75) : na)\r\n\r\n<\/code><\/pre>\n<h2 data-start=\"5722\" data-end=\"5749\">\ud83d\udcc4 Important Disclosures<\/h2>\n<p data-start=\"5751\" data-end=\"5974\">\ud83d\udce2 <strong data-start=\"5754\" data-end=\"5769\">Disclaimer:<\/strong> This indicator and article are for informational and educational purposes only. Nothing herein constitutes a buy or sell recommendation. I may or may not be holding a position in the securities discussed.<\/p>\n<p data-start=\"5976\" data-end=\"6068\">\ud83e\uddd1\u200d\ud83d\udcbc <strong data-start=\"5982\" data-end=\"6001\">Rajneesh Sharma<\/strong> is a SEBI-registered Research Analyst<br data-start=\"6039\" data-end=\"6042\" \/><strong data-start=\"6042\" data-end=\"6068\">Reg. No.: INH000020332<\/strong><\/p>\n<p data-start=\"6070\" data-end=\"6257\">\ud83d\udcc4 Investments are subject to market risks. Read all related documents carefully before investing.<br data-start=\"6168\" data-end=\"6171\" \/>\ud83d\udce9 Investor Charter &amp; SCORES grievance redressal information is available on our blog.<\/p>\n<hr data-start=\"6259\" data-end=\"6262\" \/>\n<h3 data-start=\"6264\" data-end=\"6307\">Closing Thought<\/h3>\n<p data-start=\"6309\" data-end=\"6399\">Markets don\u2019t break out because of indicators.<br data-start=\"6355\" data-end=\"6358\" \/>They break out because volatility cycles.<\/p>\n<p data-start=\"6401\" data-end=\"6516\">TTM Squeeze Advance is simply a lens to observe when the market is silent\u2026<br data-start=\"6475\" data-end=\"6478\" \/>and when it may be preparing to speak.<\/p>\n","protected":false},"template":"","article-category":[898],"article-tags":[613,899,900],"class_list":["post-26244","article","type-article","status-publish","hentry","article-category-indicators","article-tags-educational","article-tags-indicator","article-tags-technical-analysis"],"acf":[],"_links":{"self":[{"href":"https:\/\/signalz.pro\/api\/wp\/v2\/article\/26244","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/signalz.pro\/api\/wp\/v2\/article"}],"about":[{"href":"https:\/\/signalz.pro\/api\/wp\/v2\/types\/article"}],"wp:attachment":[{"href":"https:\/\/signalz.pro\/api\/wp\/v2\/media?parent=26244"}],"wp:term":[{"taxonomy":"article-category","embeddable":true,"href":"https:\/\/signalz.pro\/api\/wp\/v2\/article-category?post=26244"},{"taxonomy":"article-tags","embeddable":true,"href":"https:\/\/signalz.pro\/api\/wp\/v2\/article-tags?post=26244"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}