{"id":26158,"date":"2026-01-23T20:51:11","date_gmt":"2026-01-23T15:21:11","guid":{"rendered":"http:\/\/43.205.138.160\/?post_type=article&#038;p=26158"},"modified":"2026-01-23T21:00:14","modified_gmt":"2026-01-23T15:30:14","slug":"%f0%9f%93%89-metro-heartbeat-advance-momentum-state-indicator-steprsi-based","status":"publish","type":"article","link":"https:\/\/signalz.pro\/article\/%f0%9f%93%89-metro-heartbeat-advance-momentum-state-indicator-steprsi-based\/","title":{"rendered":"\ud83d\udcc9 Metro Heartbeat Advance \u2013 Momentum State Indicator (StepRSI-Based)"},"content":{"rendered":"<p data-start=\"473\" data-end=\"557\"><strong data-start=\"473\" data-end=\"495\">By Sharma Research<\/strong><br data-start=\"495\" data-end=\"498\" \/><strong data-start=\"498\" data-end=\"557\">Concept inspired by Welles Wilder Jr. (RSI foundations)<\/strong><\/p>\n<p data-start=\"473\" data-end=\"557\"><strong data-start=\"498\" data-end=\"557\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-26162 aligncenter\" src=\"http:\/\/43.205.138.160\/wp-content\/uploads\/2026\/01\/Screenshot-2026-01-23-083851.png\" alt=\"\" width=\"554\" height=\"474\" srcset=\"https:\/\/signalz.pro\/wp-content\/uploads\/2026\/01\/Screenshot-2026-01-23-083851.png 957w, https:\/\/signalz.pro\/wp-content\/uploads\/2026\/01\/Screenshot-2026-01-23-083851-300x256.png 300w, https:\/\/signalz.pro\/wp-content\/uploads\/2026\/01\/Screenshot-2026-01-23-083851-768x656.png 768w\" sizes=\"auto, (max-width: 554px) 100vw, 554px\" \/><br \/>\n<\/strong><\/p>\n<p data-start=\"559\" data-end=\"695\">Metro Heartbeat Advance is a momentum <em data-start=\"597\" data-end=\"604\">state<\/em> indicator designed to distinguish <strong data-start=\"639\" data-end=\"664\">real momentum regimes<\/strong> from short-lived fluctuations.<\/p>\n<p data-start=\"697\" data-end=\"943\">Most momentum indicators\u2014including RSI\u2014react to <em data-start=\"745\" data-end=\"752\">every<\/em> price change. While this makes them responsive, it also makes them noisy. In sideways or choppy markets, this noise often produces frequent flips that look like momentum but fail to sustain.<\/p>\n<p data-start=\"945\" data-end=\"1053\">Metro Heartbeat Advance addresses this problem by focusing on <strong data-start=\"1007\" data-end=\"1030\">momentum continuity<\/strong>, not momentary spikes.<\/p>\n<p data-start=\"1055\" data-end=\"1134\">Instead of asking <em data-start=\"1073\" data-end=\"1101\">\u201cIs momentum high or low?\u201d<\/em>, it asks a more useful question:<\/p>\n<blockquote data-start=\"1136\" data-end=\"1197\">\n<p data-start=\"1138\" data-end=\"1197\"><strong data-start=\"1138\" data-end=\"1197\">Is momentum behaving consistently enough to be trusted?<\/strong><\/p>\n<\/blockquote>\n<hr data-start=\"1199\" data-end=\"1202\" \/>\n<h2 data-start=\"1204\" data-end=\"1249\">\ud83d\udd0d Why Traditional Momentum Often Misleads<\/h2>\n<p data-start=\"1251\" data-end=\"1304\">Classic RSI-based systems face two structural issues:<\/p>\n<ul data-start=\"1306\" data-end=\"1464\">\n<li data-start=\"1306\" data-end=\"1386\">\n<p data-start=\"1308\" data-end=\"1386\">RSI reacts instantly to price changes, even if the move lacks follow-through<\/p>\n<\/li>\n<li data-start=\"1387\" data-end=\"1464\">\n<p data-start=\"1389\" data-end=\"1464\">Short-term oscillations can look like momentum shifts but quickly reverse<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"1466\" data-end=\"1580\">This creates <strong data-start=\"1479\" data-end=\"1497\">false momentum<\/strong>\u2014signals that appear strong for a candle or two but collapse once volatility fades.<\/p>\n<p data-start=\"1582\" data-end=\"1721\">Metro Heartbeat Advance is designed to <strong data-start=\"1621\" data-end=\"1662\">filter out these short-lived impulses<\/strong> and highlight only sustained changes in momentum behavior.<\/p>\n<hr data-start=\"1723\" data-end=\"1726\" \/>\n<h2 data-start=\"1728\" data-end=\"1766\">\ud83e\udde0 Core Idea: Momentum Has a Rhythm<\/h2>\n<p data-start=\"1768\" data-end=\"1834\">At its heart, this indicator treats momentum like a <strong data-start=\"1820\" data-end=\"1833\">heartbeat<\/strong>:<\/p>\n<ul data-start=\"1836\" data-end=\"1933\">\n<li data-start=\"1836\" data-end=\"1879\">\n<p data-start=\"1838\" data-end=\"1879\">A single spike does not indicate health<\/p>\n<\/li>\n<li data-start=\"1880\" data-end=\"1933\">\n<p data-start=\"1882\" data-end=\"1933\">Consistency and rhythm matter more than intensity<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"1935\" data-end=\"2063\">To achieve this, the indicator transforms RSI into a <strong data-start=\"1988\" data-end=\"2012\">step-based structure<\/strong> that only moves when momentum meaningfully shifts.<\/p>\n<hr data-start=\"2065\" data-end=\"2068\" \/>\n<h2 data-start=\"2070\" data-end=\"2109\">\u2699\ufe0f How Metro Heartbeat Advance Works<\/h2>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-26161\" src=\"http:\/\/43.205.138.160\/wp-content\/uploads\/2026\/01\/Screenshot-2026-01-23-083959.png\" alt=\"\" width=\"558\" height=\"491\" srcset=\"https:\/\/signalz.pro\/wp-content\/uploads\/2026\/01\/Screenshot-2026-01-23-083959.png 929w, https:\/\/signalz.pro\/wp-content\/uploads\/2026\/01\/Screenshot-2026-01-23-083959-300x264.png 300w, https:\/\/signalz.pro\/wp-content\/uploads\/2026\/01\/Screenshot-2026-01-23-083959-768x676.png 768w\" sizes=\"auto, (max-width: 558px) 100vw, 558px\" \/><\/p>\n<h3 data-start=\"2111\" data-end=\"2142\">1\ufe0f\u20e3 Flexible RSI Foundation<\/h3>\n<p data-start=\"2143\" data-end=\"2218\">The indicator begins with an RSI core, allowing the user to choose between:<\/p>\n<ul data-start=\"2220\" data-end=\"2327\">\n<li data-start=\"2220\" data-end=\"2235\">\n<p data-start=\"2222\" data-end=\"2235\">Regular RSI<\/p>\n<\/li>\n<li data-start=\"2236\" data-end=\"2280\">\n<p data-start=\"2238\" data-end=\"2280\">Wilder\u2019s RSI (original smoothing method)<\/p>\n<\/li>\n<li data-start=\"2281\" data-end=\"2311\">\n<p data-start=\"2283\" data-end=\"2311\">RSX (smoothed RSI variant)<\/p>\n<\/li>\n<li data-start=\"2312\" data-end=\"2327\">\n<p data-start=\"2314\" data-end=\"2327\">Cuttler RSI<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"2329\" data-end=\"2472\">This flexibility allows users to adapt the indicator to different instruments and timeframes, while maintaining a consistent logic layer above.<\/p>\n<hr data-start=\"2474\" data-end=\"2477\" \/>\n<h3 data-start=\"2479\" data-end=\"2533\">2\ufe0f\u20e3 StepRSI Transformation (Noise Reduction Layer)<\/h3>\n<p data-start=\"2535\" data-end=\"2637\">Instead of plotting raw RSI directly, Metro Heartbeat Advance converts RSI into <strong data-start=\"2615\" data-end=\"2636\">two stepped lines<\/strong>:<\/p>\n<ul data-start=\"2639\" data-end=\"2759\">\n<li data-start=\"2639\" data-end=\"2698\">\n<p data-start=\"2641\" data-end=\"2698\"><strong data-start=\"2641\" data-end=\"2657\">StepRSI Fast<\/strong> \u2192 responds quicker to momentum changes<\/p>\n<\/li>\n<li data-start=\"2699\" data-end=\"2759\">\n<p data-start=\"2701\" data-end=\"2759\"><strong data-start=\"2701\" data-end=\"2717\">StepRSI Slow<\/strong> \u2192 represents broader momentum structure<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"2761\" data-end=\"2829\">Each line moves only in predefined <em data-start=\"2796\" data-end=\"2803\">steps<\/em>, using a clamp mechanism:<\/p>\n<ul data-start=\"2831\" data-end=\"2921\">\n<li data-start=\"2831\" data-end=\"2869\">\n<p data-start=\"2833\" data-end=\"2869\">Minor RSI fluctuations are ignored<\/p>\n<\/li>\n<li data-start=\"2870\" data-end=\"2921\">\n<p data-start=\"2872\" data-end=\"2921\">Momentum must move meaningfully to cause a step<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"2923\" data-end=\"2989\">\ud83d\udc49 Result: smoother momentum behavior without lagging excessively.<\/p>\n<p data-start=\"2991\" data-end=\"3059\">This is not smoothing for aesthetics\u2014it is <strong data-start=\"3034\" data-end=\"3058\">behavioral filtering<\/strong>.<\/p>\n<hr data-start=\"3061\" data-end=\"3064\" \/>\n<h3 data-start=\"3066\" data-end=\"3114\">3\ufe0f\u20e3 Momentum State Definition (Fast vs Slow)<\/h3>\n<p data-start=\"3116\" data-end=\"3161\">Momentum state is defined simply and clearly:<\/p>\n<ul data-start=\"3163\" data-end=\"3254\">\n<li data-start=\"3163\" data-end=\"3208\">\n<p data-start=\"3165\" data-end=\"3208\"><strong data-start=\"3165\" data-end=\"3180\">Fast &gt; Slow<\/strong> \u2192 Bullish momentum regime<\/p>\n<\/li>\n<li data-start=\"3209\" data-end=\"3254\">\n<p data-start=\"3211\" data-end=\"3254\"><strong data-start=\"3211\" data-end=\"3226\">Fast &lt; Slow<\/strong> \u2192 Bearish momentum regime<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"3256\" data-end=\"3351\">Rather than firing signals on every RSI cross, the indicator establishes <strong data-start=\"3329\" data-end=\"3344\">regime bias<\/strong> first.<\/p>\n<p data-start=\"3353\" data-end=\"3418\">This encourages users to think in terms of <em data-start=\"3396\" data-end=\"3404\">states<\/em>, not entries.<\/p>\n<hr data-start=\"3420\" data-end=\"3423\" \/>\n<h2 data-start=\"3425\" data-end=\"3472\">\u2764\ufe0f The Heartbeat Layer (Regime Confirmation)<\/h2>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-26160\" src=\"http:\/\/43.205.138.160\/wp-content\/uploads\/2026\/01\/Screenshot-2026-01-23-084453.png\" alt=\"\" width=\"586\" height=\"550\" srcset=\"https:\/\/signalz.pro\/wp-content\/uploads\/2026\/01\/Screenshot-2026-01-23-084453.png 876w, https:\/\/signalz.pro\/wp-content\/uploads\/2026\/01\/Screenshot-2026-01-23-084453-300x282.png 300w, https:\/\/signalz.pro\/wp-content\/uploads\/2026\/01\/Screenshot-2026-01-23-084453-768x721.png 768w\" sizes=\"auto, (max-width: 586px) 100vw, 586px\" \/><\/p>\n<p data-start=\"3474\" data-end=\"3541\">The optional <strong data-start=\"3487\" data-end=\"3506\">Heartbeat logic<\/strong> adds a second layer of discipline.<\/p>\n<p data-start=\"3543\" data-end=\"3567\">It can be configured to:<\/p>\n<ul data-start=\"3569\" data-end=\"3745\">\n<li data-start=\"3569\" data-end=\"3642\">\n<p data-start=\"3571\" data-end=\"3642\">Require <strong data-start=\"3579\" data-end=\"3607\">fresh cross confirmation<\/strong> (signals only on regime changes)<\/p>\n<\/li>\n<li data-start=\"3643\" data-end=\"3691\">\n<p data-start=\"3645\" data-end=\"3691\">Invert logic for alternative interpretations<\/p>\n<\/li>\n<li data-start=\"3692\" data-end=\"3745\">\n<p data-start=\"3694\" data-end=\"3745\">Completely disable heartbeat filtering if desired<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"3747\" data-end=\"3892\">When enabled, signals are generated <strong data-start=\"3783\" data-end=\"3844\">only when momentum transitions from one regime to another<\/strong>, not while it oscillates inside the same state.<\/p>\n<p data-start=\"3894\" data-end=\"3982\">This dramatically reduces signal clutter and helps isolate <em data-start=\"3953\" data-end=\"3965\">meaningful<\/em> momentum shifts.<\/p>\n<hr data-start=\"3984\" data-end=\"3987\" \/>\n<h2 data-start=\"3989\" data-end=\"4016\">\ud83c\udfa8 Visual Interpretation<\/h2>\n<p data-start=\"4018\" data-end=\"4079\">Metro Heartbeat Advance is designed to be visually intuitive:<\/p>\n<ul data-start=\"4081\" data-end=\"4325\">\n<li data-start=\"4081\" data-end=\"4138\">\n<p data-start=\"4083\" data-end=\"4138\">RSI and StepRSI lines are plotted in a dedicated pane<\/p>\n<\/li>\n<li data-start=\"4139\" data-end=\"4203\">\n<p data-start=\"4141\" data-end=\"4203\">Overbought and oversold levels provide context, not triggers<\/p>\n<\/li>\n<li data-start=\"4204\" data-end=\"4255\">\n<p data-start=\"4206\" data-end=\"4255\">Heartbeat signals appear as directional markers<\/p>\n<\/li>\n<li data-start=\"4256\" data-end=\"4325\">\n<p data-start=\"4258\" data-end=\"4325\">Optional background shading highlights the active momentum regime<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"4327\" data-end=\"4397\">The goal is not to overwhelm, but to <strong data-start=\"4364\" data-end=\"4396\">let the chart explain itself<\/strong>.<\/p>\n<hr data-start=\"4399\" data-end=\"4402\" \/>\n<h2 data-start=\"4404\" data-end=\"4446\">\ud83d\udea8 About Changes (Educational Use Only)<\/h2>\n<p data-start=\"4448\" data-end=\"4582\">Any directional markers or transitions shown by this indicator are intended <strong data-start=\"4524\" data-end=\"4581\">for learning, research, and backtesting purposes only<\/strong>.<\/p>\n<p data-start=\"4584\" data-end=\"4622\">They are not buy\/sell recommendations.<\/p>\n<p data-start=\"4624\" data-end=\"4766\">Momentum indicators describe <em data-start=\"4653\" data-end=\"4663\">behavior<\/em>, not outcomes.<br data-start=\"4678\" data-end=\"4681\" \/>They are best used in combination with structure, trend context, and risk management.<\/p>\n<hr data-start=\"4768\" data-end=\"4771\" \/>\n<h2 data-start=\"4773\" data-end=\"4798\">\ud83d\udcda Concept Inspiration<\/h2>\n<p data-start=\"4800\" data-end=\"4932\">The foundation of this indicator traces back to the work of <strong data-start=\"4860\" data-end=\"4881\">Welles Wilder Jr.<\/strong>, creator of RSI and Wilder\u2019s smoothing techniques.<\/p>\n<p data-start=\"4934\" data-end=\"4985\">Metro Heartbeat Advance builds upon these ideas by:<\/p>\n<ul data-start=\"4987\" data-end=\"5148\">\n<li data-start=\"4987\" data-end=\"5030\">\n<p data-start=\"4989\" data-end=\"5030\">Introducing step-based momentum control<\/p>\n<\/li>\n<li data-start=\"5031\" data-end=\"5086\">\n<p data-start=\"5033\" data-end=\"5086\">Separating regime identification from signal timing<\/p>\n<\/li>\n<li data-start=\"5087\" data-end=\"5148\">\n<p data-start=\"5089\" data-end=\"5148\">Emphasizing momentum continuity over short-term reactions<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"5150\" data-end=\"5230\">It is not a replacement for RSI, but an <strong data-start=\"5190\" data-end=\"5229\">evolution in how RSI is interpreted<\/strong>.<\/p>\n<hr data-start=\"5232\" data-end=\"5235\" \/>\n<p data-start=\"5260\" data-end=\"5371\">Written in Pine Script v5 for TradingView<br data-start=\"5323\" data-end=\"5326\" \/>\ud83d\udccc Copy the code below and paste it into\u00a0<strong data-start=\"3008\" data-end=\"3059\">TradingView \u2192 Pine Editor \u2192 Save &amp; Add to Chart<\/strong><\/p>\n<p>\/\/@version=5<br \/>\n\/\/ Metro Heartbeat Advance by SharmaResearch.com<br \/>\n\/\/ Concept credit: Welles Wilder Jr. (RSI + Wilder smoothing foundations)<br \/>\n\/\/<br \/>\n\/\/ How this works (quick intro):<br \/>\n\/\/ This indicator is a momentum-state system built on an RSI core (selectable: Regular\/Wilder\/RSX\/Cuttler).<br \/>\n\/\/ RSI values are transformed into two stepped lines (Fast &amp; Slow) using a step-clamp mechanism to reduce noise<br \/>\n\/\/ and highlight sustained shifts in momentum. Trend state is defined by Fast vs Slow (bullish when Fast &gt; Slow,<br \/>\n\/\/ bearish when Fast &lt; Slow). The optional \u201cHeartbeat\u201d layer can invert logic and\/or require fresh cross<br \/>\n\/\/ confirmation so signals fire only on regime changes. Visuals support arrows in pane, main-chart markers,<br \/>\n\/\/ or candle coloring, with optional background highlighting of the active heartbeat state.<\/p>\n<p>indicator(&#8220;Metro Heartbeat Advance by SharmaResearch.com (Concept: Welles Wilder Jr.) \u2014 StepRSI Fast\/Slow + Heartbeat Confirmation&#8221;,<br \/>\nshorttitle=&#8221;MetroHB+&#8221;,<br \/>\noverlay=false)<\/p>\n<p>\/\/ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500<br \/>\n\/\/ Inputs<br \/>\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<br \/>\nrsiType = input.string(&#8220;Regular&#8221;, &#8220;RSI Type&#8221;, options=[&#8220;Regular&#8221;, &#8220;Wilders&#8221;, &#8220;RSX&#8221;, &#8220;Cuttler&#8221;])<br \/>\nperiodRSI = input.int(14, &#8220;RSI Period&#8221;)<br \/>\nstepFast = input.int(5, &#8220;Step Size Fast&#8221;)<br \/>\nstepSlow = input.int(15, &#8220;Step Size Slow&#8221;)<br \/>\noverSold = input.float(10, &#8220;Oversold Level&#8221;)<br \/>\noverBought = input.float(90, &#8220;Overbought Level&#8221;)<br \/>\nuseHeartbeat = input.bool(true, &#8220;Use Heartbeat?&#8221;)<br \/>\ncrossConfirm = input.bool(true, &#8220;Cross confirmation?&#8221;)<br \/>\ninverseHB = input.bool(false, &#8220;Inverse Heartbeat?&#8221;)<br \/>\nshowBG = input.bool(true, &#8220;Show Background?&#8221;)<\/p>\n<p>\/\/ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500<br \/>\n\/\/ Helpers<br \/>\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<br \/>\nsafeDiv(n, d, fallback) =&gt;<br \/>\nd == 0.0 ? fallback : n \/ d<\/p>\n<p>\/\/ RSX<br \/>\ngetRSX(src, len) =&gt;<br \/>\nvar float smooth = na<br \/>\nvar float momentum = na<br \/>\nvar float absmomentum = na<br \/>\nalpha = 2.0 \/ (len + 1.0)<br \/>\nmom = ta.change(src)<br \/>\nabsm = math.abs(mom)<br \/>\nsmooth := alpha * mom + (1 &#8211; alpha) * nz(smooth[1])<br \/>\nmomentum := alpha * smooth + (1 &#8211; alpha) * nz(momentum[1])<br \/>\nabsmomentum := alpha * absm + (1 &#8211; alpha) * nz(absmomentum[1])<br \/>\nrsx_raw = safeDiv(momentum, absmomentum, 0.0)<br \/>\nmath.max(math.min(50 * (rsx_raw + 1), 100), 0)<\/p>\n<p>\/\/ Cuttler RSI<br \/>\ngetCuttlerRSI(src, len) =&gt;<br \/>\nch = ta.change(src)<br \/>\npos = math.sum(math.max(ch, 0), len)<br \/>\nneg = math.sum(math.max(-ch, 0), len)<br \/>\nrs = neg == 0.0 ? 999999.0 : pos \/ neg<br \/>\n100.0 &#8211; (100.0 \/ (1.0 + rs))<\/p>\n<p>\/\/ Wilders RSI<br \/>\ngetWildersRSI(src, len) =&gt;<br \/>\nch = ta.change(src)<br \/>\ngain = math.max(ch, 0)<br \/>\nloss = math.max(-ch, 0)<br \/>\navgG = ta.rma(gain, len)<br \/>\navgL = ta.rma(loss, len)<br \/>\nrs = safeDiv(avgG, avgL, 999999.0)<br \/>\n100.0 &#8211; (100.0 \/ (1.0 + rs))<\/p>\n<p>\/\/ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500<br \/>\n\/\/ RSI Type Switch<br \/>\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<br \/>\nsrc = close<br \/>\nrsiLine = switch rsiType<br \/>\n&#8220;Wilders&#8221; =&gt; getWildersRSI(src, periodRSI)<br \/>\n&#8220;RSX&#8221; =&gt; getRSX(src, periodRSI)<br \/>\n&#8220;Cuttler&#8221; =&gt; getCuttlerRSI(src, periodRSI)<br \/>\n=&gt; ta.rsi(src, periodRSI)<\/p>\n<p>\/\/ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500<br \/>\n\/\/ StepRSI Fast \/ Slow<br \/>\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<br \/>\nvar float stepRSIFast = na<br \/>\nvar float stepRSISlow = na<\/p>\n<p>stepRSIFast := na(stepRSIFast[1]) ? rsiLine :<br \/>\nmath.max(math.min(stepRSIFast[1], rsiLine + stepFast), rsiLine &#8211; stepFast)<\/p>\n<p>stepRSISlow := na(stepRSISlow[1]) ? rsiLine :<br \/>\nmath.max(math.min(stepRSISlow[1], rsiLine + stepSlow), rsiLine &#8211; stepSlow)<\/p>\n<p>\/\/ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500<br \/>\n\/\/ Heartbeat Logic<br \/>\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<br \/>\ntrend = stepRSIFast &gt; stepRSISlow ? 1 : stepRSIFast &lt; stepRSISlow ? -1 : 0<\/p>\n<p>basicLong = trend == 1<br \/>\nbasicShort = trend == -1<\/p>\n<p>hbLong = useHeartbeat ? (inverseHB ? basicShort : basicLong) : false<br \/>\nhbShort = useHeartbeat ? (inverseHB ? basicLong : basicShort) : false<\/p>\n<p>hbLongFinal = crossConfirm ? ta.crossover(stepRSIFast, stepRSISlow) : hbLong<br \/>\nhbShortFinal = crossConfirm ? ta.crossunder(stepRSIFast, stepRSISlow) : hbShort<\/p>\n<p>\/\/ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500<br \/>\n\/\/ Plots (Pane)<br \/>\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<br \/>\nplot(rsiLine, &#8220;RSI&#8221;, color=color.orange, linewidth=1)<br \/>\nplot(stepRSIFast, &#8220;StepRSI Fast&#8221;, color=color.aqua, linewidth=1)<br \/>\nplot(stepRSISlow, &#8220;StepRSI Slow&#8221;, color=color.fuchsia, linewidth=1)<\/p>\n<p>hline(overBought, &#8220;Overbought&#8221;, color=color.red, linestyle=hline.style_dotted)<br \/>\nhline(overSold, &#8220;Oversold&#8221;, color=color.green, linestyle=hline.style_dotted)<\/p>\n<p>plot(hbLongFinal ? 1 : na, &#8220;Heartbeat Long&#8221;, color=color.lime, style=plot.style_columns)<br \/>\nplot(hbShortFinal ? -1 : na, &#8220;Heartbeat Short&#8221;, color=color.red, style=plot.style_columns)<\/p>\n<p>bgcolor(showBG ? (hbLongFinal ? color.new(color.lime, 85) : hbShortFinal ? color.new(color.red, 85) : na) : na)<\/p>\n<hr data-start=\"5373\" data-end=\"5376\" \/>\n<h2 data-start=\"5378\" data-end=\"5405\">\ud83d\udcc4 Important Disclosures<\/h2>\n<p data-start=\"5407\" data-end=\"5630\">\ud83d\udce2 <strong data-start=\"5410\" data-end=\"5425\">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=\"5632\" data-end=\"5724\">\ud83e\uddd1\u200d\ud83d\udcbc <strong data-start=\"5638\" data-end=\"5657\">Rajneesh Sharma<\/strong> is a SEBI-registered Research Analyst<br data-start=\"5695\" data-end=\"5698\" \/><strong data-start=\"5698\" data-end=\"5724\">Reg. No.: INH000020332<\/strong><\/p>\n<p data-start=\"5726\" data-end=\"5913\">\ud83d\udcc4 Investments are subject to market risks. Read all related documents carefully before investing.<br data-start=\"5824\" data-end=\"5827\" \/>\ud83d\udce9 Investor Charter &amp; SCORES grievance redressal information is available on our blog.<\/p>\n","protected":false},"template":"","article-category":[898],"article-tags":[899,900,901],"class_list":["post-26158","article","type-article","status-publish","hentry","article-category-indicators","article-tags-indicator","article-tags-technical-analysis","article-tags-tradingview"],"acf":[],"_links":{"self":[{"href":"https:\/\/signalz.pro\/api\/wp\/v2\/article\/26158","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=26158"}],"wp:term":[{"taxonomy":"article-category","embeddable":true,"href":"https:\/\/signalz.pro\/api\/wp\/v2\/article-category?post=26158"},{"taxonomy":"article-tags","embeddable":true,"href":"https:\/\/signalz.pro\/api\/wp\/v2\/article-tags?post=26158"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}