Cyclic Smoothed RSI with Motive-Corrective Wave Indicator
This indicator uses the cyclic smoothed Relative Strength Index (cRSI) instead of the traditional Relative Strength Index (RSI). See below for more info on the benefits to the cRSI.
My key contributions
1) A Weighted Moving Average (WMA) to track the general trend of the cRSI signal. This is very helpful in determining when the equity switches from bullish to bearish, which can be used to determine buy/sell points. This is then is used to color the region between the upper and lower cRSI bands (green above, red below).
2) An attempt to detect the motive (impulse) and corrective and waves. Corrective waves are indicated A, B, C, D, E, F, G. F and G waves are not technically Elliot Waves, but the way I detect waves it is really hard to always get it right. Once and a while you could actually see G and F a second time. Motive waves are identified as s (strong) and w (weak). Strong waves have a peak above the cRSI upper band and weak waves have a peak below the upper band.
3) My own divergence indicator for bull, hidden bull, bear, and hidden bear. I was not able to replicate the TradingView style of drawing a line from peak to peak, but for this indicator I think in the end it makes the chart cleaner.
There is a latency issue with an indicator that is based on moving averages. That means they tend to trigger right after key events. Perfect timing is not possible strictly with these indicators, but they do work very well "on average." However, my implementation has minimal latency as peaks (tops/bottoms) only require one bar to detect.
As a bit of an Easter Egg, this code can be tweaked and run as a strategy to get buy/sell signals. I use this code for both my indicator and for trading strategy. Just copy and past it into a new strategy script and just change it from study to a strategy, something like this:
strategy("cRSI + Waves Strategy with VWMA overlay", overlay=overlay)
The buy/sell code is at the end and just needs to be uncommented. I make no promises or guarantees about how good it is as a strategy, but it gives you some code and ideas to work with.
Tuning
1) Volume Weighted Moving Average (VWMA): This is a “hidden strategy” feature implemented that will display the high-low bands of the VWMA on the price chart if run the code using “overlay = true”.
- If the equity does not have volume, then the VWMA will not show up. Uncheck this box and it will use the regular WMA (no volume).
- defines how far back the WMA averages price.
2) cRSI (Black line in the indicator)
- Increase to length that amount of time a band (upper/lower) stays high/low after a peak. Reduce the value to shorten the time. Just increment it up/down to see the effect.
- defines how far back the SMA averages the cRSI. This affects the purple line in the indicator.
- defines how many bars back the peak detector looks to determine if a peak has occurred. For example, a top is detected like this: current-bar down relative to the 1-bar-back, 1-bar-back up relative to 2-bars-back (look back = 1), c) 2-bars-back up relative to 3-bars-back (lookback = 2), and d) 3-bars-back up relative to 4-bars-back (lookback = 3). I hope that makes sense. There are only 2 options for this setting: 2 or 3 bars. 2 bars will be able to detect small peaks but create more “false” peaks that may not be meaningful. 3 bars will be more robust but can miss short duration peaks.
3) Waves
- The check boxes are self explanatory for which labels they turn on and off on the plot.
4) Divergence Indicators
- The check boxes are self explanatory for which labels they turn on and off on the plot.
Hints
- The most common parameter to change is the . Different stocks will have different levels of strength in their peaks. A setting of 2 may generate too many corrective waves.
- Different times scales will give you different wave counts. This is to be expected. A counter impulse wave inside a corrective wave may actually go above the cRSI WMA on a smaller time frame. You may need to increase it one or two levels to see large waves.
- Just because you see divergence (bear or hidden bear) does not mean a price is going to go down. Often price continues to rise through bears, so take note and that is normal. Bulls are usually pretty good indicators especially if you see them on C,E,G waves.
----------------------------------------------------------------------------------------------------------------------------
cyclic smoothed RSI (cRSI) indicator
----------------------------------------------------------------------------------------------------------------------------
The “core” code for the cyclic smoothed RSI (cRSI) indicator was written by Lars von Theinen and is subject to the terms of the Mozilla Public License 2.0 at mozilla.org Copyright (C) 2017 CC BY, whentotrade / Lars von Thienen. For more details on the cRSI Indicator:
The cyclic smoothed RSI indicator is an enhancement of the classic RSI, adding
1) additional smoothing according to the market vibration,
2) adaptive upper and lower bands according to the cyclic memory and
3) using the current dominant cycle length as input for the indicator.
It is much more responsive to market moves than the basic RSI. The indicator uses the dominant cycle as input to optimize signal, smoothing, and cyclic memory. To get more in-depth information on the cyclic-smoothed RSI indicator, please read Decoding The Hidden Market Rhythm - Part 1: Dynamic Cycles (2017), Chapter 4: "Fine-tuning technical indicators." You need to derive the dominant cycle as input parameter for the cycle length as described in chapter 4.
Hope this helps and good luck.
Cari dalam skrip untuk "bar"
Time Range StatisticsA good amount of users requested a text box showing various price statistics, the following script returns various of these stats in a user-selected range, and include classical ones such as a central tendency measurement (mean), dispersion (normalized range) and percent change, but also include less common statistics such as average traded volume and number of gaps. The script also calculates the correlation between the closing price and another user-selected instrument.
The script is currently the longest one I ever made and took some efforts, as I wasn't satisfied with the statistics to be originally included. Big thx to Gael for the enormous feedback and the idea of the normalized range, to user @Cookiecrush for the feedback ( without ya I would have posted something bad you know umu ? ), and Lulidolce for the support, friendship is magic!
Selected Range
The setting Start determine the bar at which the range starts, while End determine at which bar the range end. To help you select these values, the current bar number (bar index) is displayed at the right of the indicator title in blue.
The setting evaluate to last bar will use a range starting at Start and ending at the last bar, as such you can use a full range by using Start = 0 and select evaluate to last bar
The range is highlighted by an area on the chart. By default Start = 9000 and End = 10000, you might not have this amount of data in your chart, as such use the displayed bar index to select Start and End, then set the settings as default.
Displayed Statistics
The statistics panel is displayed on the right side of the last bar, the panel has 3 sections, a title section who shows the symbol ticker, timeframe, and overall trends represented by a chart emoji, the overall trends are determined by comparing the number of higher highs with the number of lower low.
Below are displayed the date ranges with time format: year/month/day/hour:minute.
The second section shows the general statistics. The first one is the mean, also represented by the orange line in the chart, the blue line displayed represent the highest price value in the range, while the red one represents the lowest price value.
The second stat is the normalized range, and determine how spread is the price in the user-selected range, why not the standard deviation? Because the standard deviation might return results varying widely depending on the scale of the closing price, you could get measures such as 0.0156 or 16 or even 56 depending on the instrument, as such using a normalized range can be more appropriate as it lays in a range of (0,1). Lower values indicate a low degree of price variation. Note that I still want to find another measure in the future.
The percentage change (or relative change) indicates at which percentage the price has increased or decreased, and is calculated by subtracting the closing at bar Start with the price at bar End , divided by the price at bar End , the result is then multiplied by 100.
The average traded volume calculate the mean of the volume in the selected range, I used the same format used by the original volume indicator for clarity.
Finally, the last stats of the section is the number of gaps, this stat is by default hidden. An up gap is detected when the open price is superior to the previous high, while a down gap is detected when the open price is inferior to the previous low, this allow to only retain significant gaps.
The last section of the indicator panel shows the correlation between the closing price and another instrument, by default GOOG, this correlation is also calculated within the user-selected range. Positive values indicate a positive relationship, that is the two instruments tend to move in the same direction. Negative values indicate a negative relationship, both instruments tend to move in a direction opposite to each other. Values closer to 1 or -1 indicate a stronger relationship, while values closer to 0 indicate no relationship.
In Summary
The script shows various stats, each calculated within a user-selected range, in general one would be more interested in how these stats might evolve with time, but checking them in a custom range can be quite interesting.
Thx for reading. umu
Multi SMA EMA WMA HMA BB (4x5 MAs Bollinger Bands) Adv MTF - RRBMulti SMA EMA WMA HMA 4x5 Moving Averages with Bollinger Bands Advanced MTF by RagingRocketBull 2019
Version 1.0
This indicator shows multiple MAs of any type SMA EMA WMA HMA etc with BB and MTF support, can show MAs as dynamically moving levels.
There are 4 MA groups + 1 BB group, a total of 4 TFs * 5 MAs = 20 MAs. You can assign any type/timeframe combo to a group, for example:
- EMAs 12,26,50,100,200 x H1, H4, D1, W1 (4 TFs x 5 MAs x 1 type)
- EMAs 8,10,13,21,30,50,55,100,200,400 x M15, H1 (2 TFs x 10 MAs x 1 type)
- D1 EMAs and SMAs 8,10,12,26,30,50,55,100,200,400 (1 TF x 10 MAs x 2 types)
- H1 WMAs 7,77,89,167,231; H4 HMAs 12,26,50,100,200; D1 EMAs 89,144,169,233,377; W1 SMAs 12,26,50,100,200 (4 TFs x 5 MAs x 4 types)
- +1 extra MA type/timeframe for BB
There are several versions: Simple, MTF, Pro MTF, Advanced MTF and Ultimate MTF. This is the Advanced MTF version. The Differences are listed below. All versions have BB
- Simple: you have 2 groups of MAs that can be assigned any type (5+5)
- MTF: +2 custom Timeframes for each group (2x5 MTF) +1 TF for BB, TF XY smoothing
- Pro MTF: 4 custom Timeframes for each group (4x3 MTF), 1 TF for BB, MA levels and show max bars back options
- Advanced MTF: +2 extra MAs/group (4x5 MTF), custom Ticker/Symbols, Timeframe <>= filter, Remove Duplicates Option
- Ultimate MTF: +individual settings for each MA, custom Ticker/Symbols
Features:
- 4x5 = 20 MAs of any type
- 4x MTF groups with XY step line smoothing
- +1 extra TF/type for BB MAs
- 4x5 = 20 MA levels with adjustable group offsets, indents and shift
- supports any existing type of MA: SMA, EMA, WMA, Hull Moving Average (HMA)
- custom tickers/symbols for each group - you can compare MAs of the same symbol across exchanges
- show max bars back option
- show/hide both groups of MAs/levels/BB and individual MAs
- timeframe filter: show only MAs/Levels with TFs <>= Current TF
- hide MAs/Levels with duplicate TFs
- support for custom TFs that are not available in free accounts: 2D, 3D etc
- support for timeframes in H: H, 2H, 4H etc
Notes:
- Uses timeframe textbox instead of input resolution dropdown to allow for 240 120 and other custom TFs
- Uses symbol textbox instead of input symbol to avoid establishing multiple dummy security connections to the current ticker - otherwise empty symbols will prevent script from running
- Possible reasons for missing MAs on a chart:
- there may not be enough bars in history to start plotting it. For example, W1 EMA200 needs at least 200 bars on a weekly chart.
- price << default Y smoothing step 5. For charts with low/fractional prices (i.e. 0.00002 << 5) adjust X Y smoothing as needed (set Y = 0.0000001) or disable it completely (set X,Y to 0,0)
- TradingView Replay Mode UI and Pinescript security calls are limited to TFs >= D (D,2D,W,MN...) for free accounts
- attempting to plot any TF < D1 in Replay Mode will only result in straight lines, but all TFs will work properly in history and real-time modes. This is not a bug.
- Max Bars Back (num_bars) is limited to 5000 for free accounts (10000 for paid), will show error when exceeded. To plot on all available history set to 0 (default)
- Slow load/redraw times. This indicator becomes slower, its UI less responsive when:
- Pinescript Node.js graphics library is too slow and inefficient at plotting bars/objects in a browser window. Code optimization doesn't help much - the graphics engine is the main reason for general slowness.
- the chart has a long history (10000+ bars) in a browser's cache (you have scrolled back a couple of screens in a max zoom mode).
- Reload the page/Load a fresh chart and then apply the indicator or
- Switch to another Timeframe (old TF history will still remain in cache and that TF will be slow)
- in max possible zoom mode around 4500 bars can fit on 1 screen - this also slows down responsiveness. Reset Zoom level
- initial load and redraw times after a param change in UI also depend on TF. For example:
D1/W1 - 2 sec, H1/H4 - 5-6 sec, M30 - 10 sec, M15/M5 - 4 sec, M1 - 5 sec.
M30 usually has the longest history (up to 16000 bars) and W1 - the shortest (1000 bars).
- when indicator uses more MAs (plots) and timeframes it will redraw slower. Seems that up to 5 Timeframes is acceptable, but 6+ Timeframes can become very slow.
- show_last=last_bars plot limit doesn't affect load/redraw times, so it was removed from MA plot
- Max Bars Back (num_bars) default/custom set UI value doesn't seem to affect load/redraw times
- In max zoom mode all dynamic levels disappear (they behave like text)
1. based on 3EmaBB, uses plot*, barssince and security functions
2. you can't set certain constants from input due to Pinescript limitations - change the code as needed, recompile and use as a private version
3. Levels = trackprice implementation
4. Show Max Bars Back = show_last implementation
5. swma has a fixed length = 4, alma and linreg have additional offset and smoothing params
6. Smoothing is applied by default for visual aesthetics on MTF. To use exact ma mtf values (lines with stair stepping) - disable it
Good Luck! You can explore, modify/reuse the code to build your own indicators.
The Zone Trades v1.0The Zone is mention in New Trading Dimensions by Bill Williams,PhD.
The Zone is used for Entry Signal
Green Zone are painting Green Bars when Awesome Oscillator (AO) and Accelerater/Decelerator (AC) are both increasing.
Red Zone are painting Red Bars when Awesome Oscillator (AO) and Accelerater/Decelerator (AC) are both decreasing.
Gray Zone are painting Gray Bars AO and AC in difference changing
Gray Zone are indicate the indecision between bulls and bears.
Bill Williams, PhD. mention that Green Zone or Red Zone usually happen 6-8 bars Continuously.
The First Bar that change to be Green or Red color is the Signal Bar.
Entry Signal is the second bar in the same color as the Signal bar happen with Volume
Price go higher the high of previous Green Bar is Buy Signal. Entry Buy (Long) and place Stop at 1 tick lower the Low of previous bar.
Price go ;ower the Low of previous Red Bars is Sell Signal. Entry Sell (Short) and place Stop at 1 tick higher the High of previous bar.
Do not Entry if Green Bars or Red Bars completed 5 bars continuously.
The Zone Trades v1.0The Zone v.1.0
The Zone is mention in New Trading Dimensions by Bill Williams,PhD. The Zone is used for Entry Signal of Both Long and Short side.
Green Zone are painting Green Bars when Awesome Oscillator (AO) and Accelerater/Decelerator (AC) are both increasing.
Red Zone are painting Red Bars when Awesome Oscillator (AO) and Accelerater/Decelerator (AC) are both decreasing.
Gray Zone are painting Gray Bars AO and AC in difference changing. Gray Zone are indicate the indecision between bulls and bears.
Bill Williams, PhD. mention that Green Zone or Red Zone usually happen 6-8 bars Continuously.
The First Bar that change to be Green or Red color is the Signal Bar.
Entry Signal is the second bar in the same color as the Signal bar happen with Volume
Price go higher the high of previous Green Bar is Buy Signal. Entry Buy (Long) and place Stop at 1 tick lower the Low of previous bar.
Price go ;ower the Low of previous Red Bars is Sell Signal. Entry Sell (Short) and place Stop at 1 tick higher the High of previous bar.
Do not Entry if Green Bars or Red Bars completed 5 bars continuously.
Indicator: Relative Volume Indicator & Freedom Of MovementRelative Volume Indicator
------------------------------
RVI is a support-resistance technical indicator developed by Melvin E. Dickover. Unlike many conventional support and resistance indicators, the Relative Volume Indicator takes into account price-volume behavior in order to detect the supply and demand pools. These pools are marked by "Defended Price Lines" (DPLs), also introduced by the author.
RVI is usually plotted as a histogram; its bars are highlighted (black, by default) when the volume is unusually large. According to the author, this happens if the indicator value exceeds 2.0, thus signifying that a possible DPL is present.
DPLs are horizontal lines that run across the chart at levels defined by following conditions:
* Overlapping bars: If the indicator spike (i.e., indicator is above 2.0 or a custom value)
corresponds to a price bar overlapping the previous one, the previous close can be used as the
DPL value.
* Very large bars: If the indicator spike corresponds to a price bar of a large size, use its
close price as the DPL value.
* Gapping bars: If the indicator spike corresponds to a price bar gapping from the previous bar,
the DPL value will depend on the gap size. Small gaps can be ignored: the author suggests using
the previous close as the DPL value. When the gap is big, the close of the latter bar is used
instead.
* Clustering spikes: If the indicator spikes come in clusters, use the extreme close or open
price of the bar corresponding to the last or next to last spike in cluster.
DPLs can be used as support and resistance levels. In order confirm and refine them, RVI is used along with the FreedomOfMovement indicator discussed next.
Freedom of Movement Indicator
------------------------------
FOM is a support-resistance technical indicator, also by Melvin E. Dickover. FOM is the ratio of relative effect (relative price change) to the relative effort (normalized volume), expressed in standard deviations. This value is plotted as a histogram; its bars are highlighted (black, by default( when this ratio is unusually high. These highlighted bars, or "spikes", define the positioning of the DPLs.
Suggestions for placing DPLs are the same as for the Relative Volume Indicator discussed above.
Note that clustering spikes provide the strongest DPLs while isolated spikes can be used to confirm and refine those provided by the Relative Volume Indicator. Coincidence of spikes of the two indicator can be considered a sign of greater strength of the DPL.
More info:
S&C magazine, April 2014.
I am still trying these on various instruments to understand the workings more. Don't forget to share what you learn -- any use cases / ideal scenarios / gotchas, would love to hear them all.
Volume Profile + VAH, VAL, and POCWhat it is
A clean, on-chart volume profile that approximates your visible range using a configurable Bars Back window. It builds a horizontal histogram of volume by price, splits each price bin into Buy vs Sell volume, draws POC, and computes Value Area High/Low (VAH/VAL). A Stealth Mode toggle switches to a subtle grayscale palette for low-key charts.
Why this instead of the built-in VPVR?
Buy/Sell split per bin: See which prices were defended by buyers vs sellers, not just total volume.
Value Area from POC outward: Classic expansion method until the selected % of total volume (default 70%).
Sleek borders & Stealth Mode: Crisp bin outlines and a one-click professional colorway.
Deterministic & fast: No sessions or anchors needed—set your Bars Back and go.
How it works (under the hood)
Window selection – Pine can’t read your viewport, so we approximate it with Bars Back (user input).
Binning – The window’s price range is divided into N bins.
Volume allocation – For each bar in the window:
Distribute Across Hi–Lo (optional): Spread volume across all bins the bar overlaps, weighted by overlap; or
Single-price mode: Assign all volume to one bin using a representative price (hlc3).
Buy/Sell split (two methods):
Body Proportional (recommended): Split by relative up/down body size (|close−open|).
Up/Down Candle: 100% buy if close ≥ open, else 100% sell.
POC & VA: Point of Control is the bin with max total volume. VAH/VAL expands from POC toward the higher-volume neighbor until the selected % of total volume is included.
Reading the visuals
Horizontal bars (right side): Total volume per price bin.
Left sub-segment = Sell volume
Right sub-segment = Buy volume
POC line: Price level with peak total volume.
VAH / VAL (dashed): Upper and lower bounds of the selected Value Area.
Borders: Each bin has a clean outer outline so the profile looks tight and organized.
Stealth Mode: Grayscale palette that preserves contrast without loud colors.
Key inputs (organized for clarity)
Theme
Stealth Mode: Toggles the grayscale look.
Core
Price Bins: Vertical resolution of the profile.
Lookback (Bars): Approximates your visible range.
Style
Profile Width (bars): How far the histogram extends to the right.
Bin Border Width: Outline thickness.
Markers & Lines
Show POC, Show VAH/VAL, Value Area %, VA line width.
Advanced
Distribute Volume Across Hi–Lo: More accurate, heavier compute.
Buy/Sell Split Method: Body Proportional (realistic) or Up/Down (simple).
Tips & best practices
Start with Body Proportional + Distribute Across ON for intraday accuracy.
If the chart lags, reduce Price Bins or Bars Back, or switch off distribution.
For small windows, fewer bins often looks cleaner (e.g., 30–60).
Stealth Mode plays nicely with both dark and light chart themes.
Limitations & notes
Viewport: Pine can’t access the actual visible bars; Bars Back is a practical stand-in.
Buy/Sell split: This is an approximation from candle bodies, not true bid/ask delta.
Designed for overlay; profile renders to the right of the latest bar.
Accumulation / Manipulation / Distribution [mqsxn]Spot, box, and label classic A→M→D market structure in real time.
This tool objectively classifies price action into Accumulation, Manipulation, and Distribution phases, draws a box around each qualifying segment, and (optionally) only reveals clean, direct A→M→D triplets. It works on any symbol and timeframe, and supports nested triplets (smaller AMD sequences appearing inside larger ones).
Accumulation (A) — Compression bars: range is small vs ATR and body is relatively small.
Manipulation (M) — Stop-run + rejection: takes out a prior swing (high or low), shows a long wick, and (optionally) closes back inside the prior range.
Distribution (D) — Expansion + drive: range expands vs ATR, close is near an extreme and aligns with EMA slope.
Contiguous bars with the same phase form a segment. Each finalized segment becomes a box spanning that segment’s high/low and first/last bars. Segments below your minimum bar thresholds are discarded (no box). Labels are plain text at the top-center of each visible box; label color matches the box fill, and you can nudge it upward by a configurable tick offset.
When three consecutive segments form A→M→D, the indicator can (optionally) draw an outline around their combined span and, if you enable the filter, hide everything that isn’t part of such a direct triplet (no border, no label on non-triplet segments).
Key features
- Objective AMD detection (ATR, wick fraction, EMA slope, swing breaks)
- Minimum bars per phase (default 3/3/3) to avoid micro noise
- Only show direct A→M→D filter to keep charts clean
- Triplet outline box (configurable history length)
- Top-center labels (plain text, no background; color = box fill; configurable vertical offset)
- Optional A/M/D dots at the top of the chart for quick bar-by-bar debugging
- Works on any timeframe; supports nested AMD sequences
Inputs
Core
- ATR Lookback (14)
- Trend EMA (21)
- Swing Ref (10)
Accumulation
- Range < ATR × (0.55)
- Body / Range ≤ (0.45)
Manipulation
- Min Wick Fraction (0.6)
- Close Back Inside Prior Range (On)
Distribution
- Range ≥ ATR × (1.2)
- Close near extreme ≤ (0.25)
Minimum Candles per Section
- Min bars for Accumulation (3)
- Min bars for Manipulation (3)
- Min bars for Distribution (3)
Visualization
- Phase fill colors (A / M up / M down / D up / D down)
- Box Border color
- Extend boxes right (bars)
- Show Phase Labels (On)
- Label Font Size
- Label Offset (ticks above box top)
Filters
- Only show boxes that are part of a direct A→M→D sequence (On by default)
AMD Triplet Outline
- Draw outline (On)
- Outline Border color
- Keep last N outlines (20)
Debug / Markers
- Show A/M/D dots at top (Off by default)
Advanced
- Priority: Manipulation overrides others (On)
- Carry last phase through “None” bars (On)
Follow @mqsxn for updates on this indicator, and find my strategies and more in my paid Discord: whop.com
ConcatenatedAlertsHi all!
This library is useful if you want to concatenate every tick alert for sending on bar close. The 'alert()' function, provided by Tradingview, with the 'freq' parameter set to 'alert.freq_once_per_bar_close' only fires when the realtime bar closes. So if something has happened intrabar, the alert wont be sent.
This library concatenates all alert messages during the bar and sends them on bar close with a header saying how many messages it contains.
It's useful in many cases, but here are a few examples:
When you want alerts for a zone having a breakout (with a candle close) and another one being entered, like this:
When a candle breaks through 2, or more, lines. Like in this example:
There are of course more useful use cases, but above is 2 examples.
The library uses an own enum saying 'alert.freq_all', 'alert.freq_once_per_bar' and 'alert.freq_once_per_bar_close'. The value of this enumeration represents how often an alert will be sent. 'alert.freq_all' and 'alert.freq_once_per_bar' will behave as the once in the 'alert()' function provided by Tradingview. No concatenatination will take place in this case. However, when 'alert.freq_once_per_bar_close' is set, concatenatination will happen with all alert messages during the bar and sent on bar close. Helper functions can be used for both the string value used by the 'alert()' function by Tradingview and this enum type. Example code is provided in the source code, with the usage of input values for both this string and the enumeration.
Hope this is of help!
Concatenate(a_lert, message)
Concatenates all alert messages (called on every tick) to fire all of them with 'Alert()'.
Parameters:
a_lert (Alert) : The 'Alert' object to be used for the alert messages concatination.
message (string) : The string message to be added to the bar alert.
Alert(a_lert)
When the 'Alert.Frequency' is set to fire on the current tick, this function will concatenate all messages on the current bar and fire an alert. Concatenation will occur if 'alert.freq_once_per_bar_close' is set on 'a_lert.Frequency' separated by new lines and a header saying how many messages the bar contains.
Parameters:
a_lert (Alert) : The 'Alert' object to be used for the alert messages concatination and all its 'Messages' will be alerted.
Create(frequency)
Helper function to create an 'Alert' object.
Parameters:
frequency (series Frequency) : The 'Frequency' in the created 'Alert' object.
Returns: The 'Alert' object that can be used for concatination.
CreateFromAlertFreq(alertFreq)
Helper function to convert 'alert.freq_all', 'alert.freq_once_per_bar' or 'lert.freq_once_per_bar_close'.
Parameters:
alertFreq (string) : The 'alert.freq_all', 'alert.freq_once_per_bar' or 'lert.freq_once_per_bar_close' to convert to 'Frequency' enum.
Returns: The 'Alert' object that can be used for concatination.
Alert
Holds all the values for the 'Alert' to be used.
Fields:
Messages (array) : Holds the alert messages within the current bar that will be sent according to 'Frequency'.
Frequency (series Frequency) : The frequency for the final alert. One of 'alert.freq_all', 'alert.freq_once_per_bar' or 'alert.freq_once_per_bar_close'. If 'alert.freq_all' is set the alert messages will be fired on each tick and no concatination will occure. The same when 'alert.freq_once_per_bar' is set, but the alert will only fire once per bar. If 'alert.freq_once_per_bar_close' is set concatenation will occure before sending an alert (with all concatenated messages) on bar close.
SkipAddition (series bool) : Will skip addition of messages. Used internally if 'Frequency' is 'alert.freq_once_per_bar'.
Wickless Tap Signals Wickless Tap Signals — TradingView Indicator (v6)
A precision signal-only tool that marks BUY/SELL events when price “retests” the base of a very strong impulse candle (no wick on the retest side) in the direction of trend.
What it does (in plain English)
Finds powerful impulse candles:
Bull case: a green candle with no lower wick (its open ≈ low).
Bear case: a red candle with no upper wick (its open ≈ high).
Confirms trend with an EMA filter:
Only looks for bullish bases while price is above the EMA.
Only looks for bearish bases while price is below the EMA.
Waits for the retest (“tap”):
Later, if price revisits the base of that wickless candle
Bullish: taps the candle’s low/open → BUY signal
Bearish: taps the candle’s high/open → SELL signal
Optional level “consumption” so each base can trigger one signal, not many.
The idea: a wickless impulse often marks strong initiative order flow. The first retest of that base frequently acts as a springboard (bull) or ceiling (bear).
Exact rules (formal)
Let tick = syminfo.mintick, tol = tapTicks * tick.
Trend filter
inUp = close > EMA(lenEMA)
inDn = close < EMA(lenEMA)
Wickless impulse candles (confirmed on bar close)
Bullish wickless: close > open and abs(low - open) ≤ tol
Bearish wickless: close < open and abs(high - open) ≤ tol
When such a candle closes with trend alignment:
Store bullTapLevel = low (for bull case) and its bar index.
Store bearTapLevel = high (for bear case) and its bar index.
Signals (must happen on a later bar than the origin)
BUY: low ≤ bullTapLevel + tol and inUp and bar_index > bullBarIdx
SELL: high ≥ bearTapLevel - tol and inDn and bar_index > bearBarIdx
One-shot option
If enabled, once a signal fires, the stored level is cleared so it won’t trigger again.
Inputs (Settings)
Trend EMA Length (lenEMA): Default 200.
Use 50–100 for intraday, 200 for swing/position.
Tap Tolerance (ticks) (tapTicks): Default 1.
Helps account for tiny feed discrepancies. Set 0 for strict equality.
One Signal per Level (oneShot): Default ON.
If OFF, multiple taps can create multiple signals.
Plot Tap Levels (plotLevels): Draws horizontal lines at active bases.
Show Pattern Labels (showLabels): Marks the origin wickless candles.
Plots & Visuals
EMA trend line for context.
Tap Levels:
Green line at bullish base (origin candle’s low/open).
Red line at bearish base (origin candle’s high/open).
Signals:
BUY: triangle-up below the bar on the tap.
SELL: triangle-down above the bar on the tap.
Labels (optional):
Marks the original wickless impulse candle that created each level.
Alerts
Two alert conditions are built in:
“BUY Signal” — fires when a bullish tap occurs.
“SELL Signal” — fires when a bearish tap occurs.
How to set:
Add the indicator to your chart.
Click Alerts (⏰) → Condition = this indicator.
Choose BUY Signal or SELL Signal.
Set your alert frequency and delivery method.
Recommended usage
Timeframes: Works on any; start with 5–15m intraday, or 1H–1D for swing.
Markets: Equities, futures, FX, crypto. For thin/illiquid assets, consider a slightly larger Tap Tolerance.
Confluence ideas (optional, but helpful):
Higher-timeframe trend agreeing with your chart timeframe.
Volume surge on the origin wickless candle.
S/R, order blocks, or SMC structures near the tap level.
Avoid major news moments when slippage is high.
No-repaint behavior
Origin patterns are detected only on bar close (barstate.isconfirmed), so bases are created with confirmed data.
Signals come after the origin bar, on subsequent taps.
There is no lookahead; lines and shapes reflect information known at the time.
(As with all real-time indicators, an intrabar tap can trigger an alert during the live bar; the signal then remains if that condition held at bar close.)
Known limitations & design choices
Single active level per side: The script tracks only the most recent bullish base and most recent bearish base.
Want a queue of multiple simultaneous bases? That’s possible with arrays; ask and we’ll extend it.
Heikin Ashi / non-standard candles: Wick definitions change; for consistent behavior use regular OHLC candles.
Gaps: On large gaps, taps can occur instantly at the open. Consider one-shot ON to avoid rapid repeats.
This is an indicator, not a strategy: It does not place trades or compute PnL. For backtesting, we can convert it into a strategy with SL/TP logic (ATR or structure-based).
Practical tips
Tap Tolerance:
If you miss obvious taps by a hair, increase to 1–2 ticks.
For FX/crypto with tiny ticks, even 0 or 1 is often enough.
EMA length:
Shorten for faster signals; lengthen for cleaner trend selection.
Risk management (manual suggestion):
For BUY signals, consider a stop slightly below the tap level (or ATR-based).
For SELL signals, consider a stop slightly above the tap level.
Scale out or trail using structure or ATR.
Quick checklist
✅ Price above EMA → watch for a green no-lower-wick candle → store its low → BUY on tap.
✅ Price below EMA → watch for a red no-upper-wick candle → store its high → SELL on tap.
✅ Use Tap Tolerance to avoid missing precise touches by one tick.
✅ Consider One Signal per Level to keep trades uncluttered.
FAQ
Q: Why did I not get a signal even though price touched the level?
A: Check Tap Tolerance (maybe too strict), trend alignment at the tap bar, and that the tap happened after the origin candle. Also confirm you’re on regular candles.
Q: Can I see multiple bases at once?
A: This version tracks the latest bull and bear bases. We can extend to arrays to keep N recent bases per side.
Q: Will it repaint?
A: No. Bases form on confirmed closes, and signals only on later bars.
Q: Can I backtest it?
A: This is a study. Ask for the strategy variant and we’ll add entries, exits, SL/TP, and stats.
Spice • Micro Suite (T/r & B/r)What it is
A single Pine v5 indicator that stacks:
EMA ribbon + a “special” EMA (11 vs 34) line that flips color on trend.
MTF-RSI “pressure” check with simple up/down arrows.
Bollinger-Band re-entry system with Top/Bottom triggers (T/B) and confirmations (r) in the next N bars.
Classic candlestick add-ons: 3-Line Strike and Leledc exhaustion dots.
Your Micro Dots engine (ATR-based regime + Variable Moving Average filter) + an optional VMA trend line.
Alerts for all the above.
Key signals (what prints on the chart)
EMAs (20/50/100/200): plotted faintly; EMA-34 is drawn and colored by the 11>34 trend.
RSI arrows
Checks RSI(6) on the current TF and (optionally) 5m/15m/30m/1h/4h/1D.
Down arrow: current RSI > 70 and the selected higher TF RSIs are also > 70 (pressure cluster just cooled; barssince(redZone)<2).
Up arrow: current RSI < 30 and selected higher TFs also < 30 (barssince(greenZone)<2).
Bollinger Reversals (your update)
T (Top trigger): first close back inside the upper BB (crossunder(close, upper)).
B (Bottom trigger): first close back inside the lower BB (crossover(close, lower)).
r (Confirm): within the next confirmBars bars (input), price also
closes below the T-bar’s low → top r above bar
closes above the B-bar’s high → bottom r below bar
Bar tinting
Only the T/B trigger bars are tinted (yellow/orange). Everything else stays your normal candle colors (unless you add the optional “trend candles” block I gave you).
3-Line Strike
Prints a small green/red circle when the 3-line strike pattern appears (bull/bear).
Leledc Exhaustion
Calculates a running buy/sell index; prints a small ∘ at major highs/lows when exhaustion conditions hit (major==-1 high, major==1 low).
Micro Dots (your second script, merged)
ATR “micro supertrend” defines regime (up/down).
A fast Variable Moving Average + a simple MA(18) filter.
Green dot below bar when: VMA < price, price > MA(18), regime up, and VMA not pointing down.
Red dot above bar for the bearish mirror.
Separate VMA trend line (length = Fast/Med/Slow) that colors green/red/orange by slope.
Inputs you’ll care about
Top/Bot Reversal → confirmBars (how many bars you allow to confirm the T/B trigger).
RSI Timeframes → toggle which HTFs must agree with the OB/OS condition.
EMAs → show/hide and lengths.
BB → show/hide basis/bands (used for T/B even if hidden).
Micro → show dots, show VMA line, choose intensity (Fast/Med/Slow).
Alerts
Prebuilt alerts for: RSI Up/Down, T/B triggers, T/B confirmations, 3-Line Strike bull/bear, Leledc highs/lows, EMA crosses (20/50/100/200), the special 11/34 trend change, Micro Dots, and VMA price cross. (Alert messages are const strings so they compile cleanly.)
How to read clusters (quick playbook)
Reversal short: see T on/near upper band → get an r within your window → bonus confidence if an RSI down arrow or Leledc ∘ high shows up around the same time.
Reversal long: mirror with B then r, plus RSI up arrow / Leledc ∘ low.
Continuation: ignore lone T/B if Micro Dot stays green (or red) and EMA-11 > EMA-34 remains true.
Why your candles look “normal”
By design, the script only colors bars on T or B trigger bars. If you want always-on trend candles, use the small block I gave you to color by EMA(20/50) (or any rule you like) and let T/B override on trigger bars.
Cumulative Volume Delta (SB-1) 2.0
📈 Cumulative Volume Delta (CVD) — Stair-Step + Threshold Alerts
🔍 Overview
This Cumulative Volume Delta (CVD) tool visualizes aggressive buying and selling pressure in the market by plotting candlestick-style bars based on volume delta. It helps traders understand which side — buyers or sellers — is exerting more control on lower timeframes and highlights momentum shifts through stair-step patterns and delta threshold breaks. Resets to zero at EOD
Ideal for futures traders, scalpers, and intraday strategists looking for orderflow-based confirmation.
🧠 What Is CVD?
CVD (Cumulative Volume Delta) measures the difference between market buys and sells over a specific timeframe. When the delta is rising, it suggests buyers are being more aggressive. Falling delta suggests seller dominance.
This script aggregates volume delta from a lower timeframe and plots it in a higher timeframe context, allowing you to track microstructure shifts within larger candles.
📊 Features
✅ CVD Candlesticks
Each bar represents volume delta as an OHLC-style candle using:
Open: Delta at the start of the bar
High/Low: Peak delta range
Close: Final delta value at bar close
Teal candles = Net buying pressure
Red candles = Net selling pressure
✅ Threshold Levels (Key Visual Zones)
The script includes horizontal dashed lines at:
+5,000 and +10,000 → Signify strong buying pressure
-5,000 and -10,000 → Signify strong selling pressure
0 line → Neutrality line (no net pressure)
These levels act as volume-based support/resistance zones and breakout confirmation tools. For example:
A CVD cross above +5,000 shows buyers taking control
A CVD cross above +10,000 implies strong bullish momentum
A CVD cross below -5,000 or -10,000 signals intense selling pressure
📈 Stair-Step Pattern Detection
Detects two specific volume-based continuation setups:
Bullish Stair-Step: Both the high and low of the CVD candle are higher than the previous candle
Bearish Stair-Step: Both the high and low of the CVD candle are lower than the previous candle
These patterns often appear during trending moves and serve as confirmation of strength or continuation.
Visual markers:
🟢 Green triangles below bars = Bullish stair-step
🔴 Red triangles above bars = Bearish stair-step
🔔 Alert Conditions
Get real-time alerts when:
Bullish Stair-Step is detected
Bearish Stair-Step is detected
CVD crosses above +5,000
CVD crosses below -5,000
📢 Alerts only trigger on crossover, not every time CVD remains above or below. This avoids repetitive notifications.
⚙️ Inputs & Customization
Anchor Timeframe: The higher timeframe to which CVD data is applied (default: 1D)
Lower Timeframe: The timeframe used to calculate the CVD delta (default: 5 minutes)
Optional Override: Use custom timeframe toggle to force your own micro timeframe
📌 How to Use This CVD Indicator (Step-by-Step Guide)
✅ 1. Confirm Bias Using the Zero Line
The zero line (0 CVD) represents neutral pressure — neither buyers nor sellers are dominating.
Use it as your first filter:
🔼 If CVD is above 0 and rising → Buyer control
🔽 If CVD is below 0 and falling → Seller control
🧠 Tip: CVD rising while price is consolidating may signal hidden buyer interest.
✅ 2. Watch for Crosses of Key Levels: +5,000 and +10,000
These levels act as momentum thresholds:
Level Signal Type What It Means
+5,000 Buyer breakout Buyers are starting to dominate
+10,000 Strong bull bias Strong institutional or algorithmic buying flow
-5,000 Seller breakout Sellers are taking control
-10,000 Strong bear bias Heavy selling pressure is entering the market
Wait for CVD to cross above +5K or below -5K to confirm the active side.
Use these crossovers as entry triggers, breakout confirmations, or trade filters.
🔔 Alerts fire only when the level is first crossed, not every bar above/below.
✅ 3. Use Stair-Step Patterns for Continuation Confirmation
The indicator shows stair-step patterns using triangle signals:
🟢 Green triangle below bar = Bullish stair-step
Suggests a higher high and higher low in delta → buyers stepping up
🔴 Red triangle above bar = Bearish stair-step
Suggests lower highs and lower lows in delta → selling pressure building
Use stair-step signals:
To confirm a continuation of trend
As an entry or add-on signal
Especially after a threshold breakout
🧠 Example: If CVD breaks above +5K and forms bullish stairs → confirms strong trend, ideal for momentum entries.
✅ 4. Combine with Price Action or Structure
CVD works best when used with price, not in isolation. For example:
📉 Price makes a new low but CVD doesn’t → potential bullish divergence
📈 CVD surges while price lags → buyers are absorbing, breakout likely
Use it with:
VWAP
Orderblocks
Liquidity sweeps
Break of market structure/MSS/BOS
✅ 5.
Set Anchor Timeframe = Daily
Set Lower Timeframe = 5 minutes (default)
This lets you:
See intraday flow inside daily bars
Confirm whether a daily candle is being built on net buying or selling
🧠 You’re essentially seeing intra-bar aggression within a bigger time structure.
🧭 Example Trading Setup
Bullish Scenario:
CVD is rising and above 0
CVD crosses above +5,000 → alert fires
Green stair-step appears
Price breaks local resistance or liquidity sweep completes
✅ Consider long entry with structure and CVD alignment
🎯 Place stops below last stair-step or structural low
📌 Final Notes
This tool does not repaint and is designed to work in real-time across all futures, crypto, and equity instruments that support volume data. If your symbol does not provide volume, the script will notify you.
Use it in confluence with VWAP, liquidity zones, or structure breaks for high-confidence trades.
z-score-calkusi-v1.143z-scores incorporate the moment of N look-back bars to allow future price projection.
z-score = (X - mean)/std.deviation ; X = close
z-scores update with each new close print and with each new bar. Each new bar augments the mean and std.deviation for the N bars considered. The old Nth bar falls away from consideration with each new historical bar.
The indicator allows two other options for X: RSI or Moving Average.
NOTE: While trading use the "price" option only.
The other two options are provided for visualisation of RSI and Moving Average as z-score curves.
Use z-scores to identify tops and bottoms in the future as well as intermediate intersections through which a z-score will pass through with each new close and each new bar.
Draw lines from peaks and troughs in the past through intermediate peaks and troughs to identify projected intersections in the future. The most likely intersections are those that are formed from a line that comes from a peak in the past and another line that comes from a trough in the past. Try getting at least two lines from historical peaks and two lines from historical troughs to pass through a future intersection.
Compute the target intersection price in the future by clicking on the z-score indicator header to see a drag-able horizontal line to drag over the intersection. The target price is the last value displayed in the indicator's status bar after the closing price.
When the indicator header is clicked, a white horizontal drag-able line will appear to allow dragging the line over an intersection that has been drawn on the indicator for a future z-score projection and the associated future closing price.
With each new bar that appears, it is necessary to repeat the procedure of clicking the z-score indicator header to be able to drag the drag-able horizontal line to see the new target price for the selected intersection. The projected price will be different from the current close price providing a price arbitrage in time.
New intermediate peaks and troughs that appear require new lines be drawn from the past through the new intermediate peak to find a new intersection in the future and a new projected price. Since z-score curves are sort of cyclical in nature, it is possible to see where one has to locate a future intersection by drawing lines from past peaks and troughs.
Do not get fixated on any one projected price as the market decides which projected price will be realised. All prospective targets should be manually updated with each new bar.
When the z-score plot moves outside a channel comprised of lines that are drawn from the past, be ready to adjust to new market conditions.
z-score plots that move above the zero line indicate price action that is either rising or ranging. Similarly, z-score plots that move below the zero line indicate price action that is either falling or ranging. Be ready to adjust to new market conditions when z-scores move back and forth across the zero line.
A bar with highest absolute z-score for a cycle screams "reversal approaching" and is followed by a bar with a lower absolute z-score where close price tops and bottoms are realised. This can occur either on the next bar or a few bars later.
The indicator also displays the required N for a Normal(0,1) distribution that can be set for finer granularity for the z-score curve.This works with the Confidence Interval (CI) z-score setting. The default z-score is 1.96 for 95% CI.
Common Confidence Interval z-scores to find N for Normal(0,1) with a Margin of Error (MOE) of 1:
70% 1.036
75% 1.150
80% 1.282
85% 1.440
90% 1.645
95% 1.960
98% 2.326
99% 2.576
99.5% 2.807
99.9% 3.291
99.99% 3.891
99.999% 4.417
9-Jun-2025
Added a feature to display price projection labels at z-score levels 3, 2, 1, 0, -1, -2, 3.
This provides a range for prices available at the current time to help decide whether it is worth entering a trade. If the range of prices from say z=|2| to z=|1| is too narrow, then a trade at the current time may not be worth the risk.
Added plot for z-score moving average.
28-Jun-2025
Added Settings option for # of Std.Deviation level Price Labels to display. The default is 3. Min is 2. Max is 6.
This feature allows likelihood assessment for Fibonacci price projections from higher time frames at lower time frames. A Fibonacci price projection that falls outside |3.x| Std.Deviations is not likely.
Added Settings option for Chart Bar Count and Target Label Offset to allow placement of price labels for the standard z-score levels to the right of the window so that these are still visible in the window.
Target Label Offset allows adjustment of placement of Target Price Label in cases when the Target Price Label is either obscured by the price labels for the standard z-score levels or is too far right to be visible in the window.
9-Jul-2025
z-score 1.142 updates:
Displays in the status line before the close price the range for the selected Std. Deviation levels specified in Settings and |z-zMa|.
When |z-zMa| > |avg(z-zMa)| and zMa rising, |z-zMa| and zMa displays in aqua.
When |z-zMa| > |avg(z-zMa)| and zMa falling, |z-zMa| and zMa displays in red.
When |z-zMa| <= |avg(z-zMa)|, z and zMa display in gray.
z usually crosses over zMa when zMa is gray but not always. So if cross-over occurs when zMa is not gray, it implies a strong move in progress.
Practice makes perfect.
Use this indicator at your own risk
Perfect MA Touch – Full Setup 1,3,5,7,8,9This indicator helps you track a precise candle countdown from a moving average touch, labeling key bars (1, 3, 5, 7, 8, 9) for timing entries and momentum setups — with optional coloring, alerts, and full customization.
What It Detects
1. MA Touch Trigger
The sequence starts when any selected moving average (up to 6 MAs, customizable) is touched by the candle's high/low range.
This "perfect touch" initiates the count and labels that candle as "1".
2. Candle Number Labels
After a perfect MA touch:
Candle 1 = the bar that touches the MA
Candle 3 = two bars after Candle 1
Candle 5 = the fifth bar after the touch
Candle 7 = third bar after Candle 5
Candle 8 = fourth bar after Candle 5
Candle 9 = fifth bar after Candle 5
It creates a time-based sequence you can use to anticipate reactions or momentum shifts.
3. Customization
You can:
Choose between EMA or SMA for each MA (6 total)
Set custom lengths for each MA (9, 20, 50, 100, 150, 200)
Choose which candle numbers (1, 3, 5, 7, 8, 9) to highlight
Pick font size and label color
4. Highlighting and Alerts
Highlight candles (with color) when certain bars (like 3, 5, 7) print
Alerts are available for all tracked bars (1, 3, 5, 7, 8, 9)
Use Case Example
Let’s say you want to enter trades on the 3rd candle after a perfect MA touch:
You set the script to highlight candle 3.
When a candle hits your chosen MA (say EMA 9), it’s labeled “1”.
Two bars later, bar 3 appears — giving you a timed signal to enter if price behavior aligns.
This method is especially useful when paired with:
Volume confirmation
Breakout or reversal patterns
Support/resistance or order block zones
Market Zone Analyzer[BullByte]Understanding the Market Zone Analyzer
---
1. Purpose of the Indicator
The Market Zone Analyzer is a Pine Script™ (version 6) indicator designed to streamline market analysis on TradingView. Rather than scanning multiple separate tools, it unifies four core dimensions—trend strength, momentum, price action, and market activity—into a single, consolidated view. By doing so, it helps traders:
• Save time by avoiding manual cross-referencing of disparate signals.
• Reduce decision-making errors that can arise from juggling multiple indicators.
• Gain a clear, reliable read on whether the market is in a bullish, bearish, or sideways phase, so they can more confidently decide to enter, exit, or hold a position.
---
2. Why a Trader Should Use It
• Unified View: Combines all essential market dimensions into one easy-to-read score and dashboard, eliminating the need to piece together signals manually.
• Adaptability: Automatically adjusts its internal weighting for trend, momentum, and price action based on current volatility. Whether markets are choppy or calm, the indicator remains relevant.
• Ease of Interpretation: Outputs a simple “BULLISH,” “BEARISH,” or “SIDEWAYS” label, supplemented by an intuitive on-chart dashboard and an oscillator plot that visually highlights market direction.
• Reliability Features: Built-in smoothing of the net score and hysteresis logic (requiring consecutive confirmations before flips) minimize false signals during noisy or range-bound phases.
---
3. Why These Specific Indicators?
This script relies on a curated set of well-established technical tools, each chosen for its particular strength in measuring one of the four core dimensions:
1. Trend Strength:
• ADX/DMI (Average Directional Index / Directional Movement Index): Measures how strong a trend is, and whether the +DI line is above the –DI line (bullish) or vice versa (bearish).
• Moving Average Slope (Fast MA vs. Slow MA): Compares a shorter-period SMA to a longer-period SMA; if the fast MA sits above the slow MA, it confirms an uptrend, and vice versa for a downtrend.
• Ichimoku Cloud Differential (Senkou A vs. Senkou B): Provides a forward-looking view of trend direction; Senkou A above Senkou B signals bullishness, and the opposite signals bearishness.
2. Momentum:
• Relative Strength Index (RSI): Identifies overbought (above its dynamically calculated upper bound) or oversold (below its lower bound) conditions; changes in RSI often precede price reversals.
• Stochastic %K: Highlights shifts in short-term momentum by comparing closing price to the recent high/low range; values above its upper band signal bullish momentum, below its lower band signal bearish momentum.
• MACD Histogram: Measures the difference between the MACD line and its signal line; a positive histogram indicates upward momentum, a negative histogram indicates downward momentum.
3. Price Action:
• Highest High / Lowest Low (HH/LL) Range: Over a defined lookback period, this captures breakout or breakdown levels. A closing price near the recent highs (with a positive MA slope) yields a bullish score, and near the lows (with a negative MA slope) yields a bearish score.
• Heikin-Ashi Doji Detection: Uses Heikin-Ashi candles to identify indecision or continuation patterns. A small Heikin-Ashi body (doji) relative to recent volatility is scored as neutral; a larger body in the direction of the MA slope is scored bullish or bearish.
• Candle Range Measurement: Compares each candle’s high-low range against its own dynamic band (average range ± standard deviation). Large candles aligning with the prevailing trend score bullish or bearish accordingly; unusually small candles can indicate exhaustion or consolidation.
4. Market Activity:
• Bollinger Bands Width (BBW): Measures the distance between BB upper and lower bands; wide bands indicate high volatility, narrow bands indicate low volatility.
• Average True Range (ATR): Quantifies average price movement (volatility). A sudden spike in ATR suggests a volatile environment, while a contraction suggests calm.
• Keltner Channels Width (KCW): Similar to BBW but uses ATR around an EMA. Provides a second layer of volatility context, confirming or contrasting BBW readings.
• Volume (with Moving Average): Compares current volume to its moving average ± standard deviation. High volume validates strong moves; low volume signals potential lack of conviction.
By combining these tools, the indicator captures trend direction, momentum strength, price-action nuances, and overall market energy, yielding a more balanced and comprehensive assessment than any single tool alone.
---
4. What Makes This Indicator Stand Out
• Multi-Dimensional Analysis: Rather than relying on a lone oscillator or moving average crossover, it simultaneously evaluates trend, momentum, price action, and activity.
• Dynamic Weighting: The relative importance of trend, momentum, and price action adjusts automatically based on real-time volatility (Market Activity State). For example, in highly volatile conditions, trend and momentum signals carry more weight; in calm markets, price action signals are prioritized.
• Stability Mechanisms:
• Smoothing: The net score is passed through a short moving average, filtering out noise, especially on lower timeframes.
• Hysteresis: Both Market Activity State and the final bullish/bearish/sideways zone require two consecutive confirmations before flipping, reducing whipsaw.
• Visual Interpretation: A fully customizable on-chart dashboard displays each sub-indicator’s value, regime, score, and comment, all color-coded. The oscillator plot changes color to reflect the current market zone (green for bullish, red for bearish, gray for sideways) and shows horizontal threshold lines at +2, 0, and –2.
---
5. Recommended Timeframes
• Short-Term (5 min, 15 min): Day traders and scalpers can benefit from rapid signals, but should enable smoothing (and possibly disable hysteresis) to reduce false whipsaws.
• Medium-Term (1 h, 4 h): Swing traders find a balance between responsiveness and reliability. Less smoothing is required here, and the default parameters (e.g., ADX length = 14, RSI length = 14) perform well.
• Long-Term (Daily, Weekly): Position traders tracking major trends can disable smoothing for immediate raw readings, since higher-timeframe noise is minimal. Adjust lookback lengths (e.g., increase adxLength, rsiLength) if desired for slower signals.
Tip: If you keep smoothing off, stick to timeframes of 1 h or higher to avoid excessive signal “chatter.”
---
6. How Scoring Works
A. Individual Indicator Scores
Each sub-indicator is assigned one of three discrete scores:
• +1 if it indicates a bullish condition (e.g., RSI above its dynamically calculated upper bound).
• 0 if it is neutral (e.g., RSI between upper and lower bounds).
• –1 if it indicates a bearish condition (e.g., RSI below its dynamically calculated lower bound).
Examples of individual score assignments:
• ADX/DMI:
• +1 if ADX ≥ adxThreshold and +DI > –DI (strong bullish trend)
• –1 if ADX ≥ adxThreshold and –DI > +DI (strong bearish trend)
• 0 if ADX < adxThreshold (trend strength below threshold)
• RSI:
• +1 if RSI > RSI_upperBound
• –1 if RSI < RSI_lowerBound
• 0 otherwise
• ATR (as part of Market Activity):
• +1 if ATR > (ATR_MA + stdev(ATR))
• –1 if ATR < (ATR_MA – stdev(ATR))
• 0 otherwise
Each of the four main categories shares this same +1/0/–1 logic across their sub-components.
B. Category Scores
Once each sub-indicator reports +1, 0, or –1, these are summed within their categories as follows:
• Trend Score = (ADX score) + (MA slope score) + (Ichimoku differential score)
• Momentum Score = (RSI score) + (Stochastic %K score) + (MACD histogram score)
• Price Action Score = (Highest-High/Lowest-Low score) + (Heikin-Ashi doji score) + (Candle range score)
• Market Activity Raw Score = (BBW score) + (ATR score) + (KC width score) + (Volume score)
Each category’s summed value can range between –3 and +3 (for Trend, Momentum, and Price Action), and between –4 and +4 for Market Activity raw.
C. Market Activity State and Dynamic Weight Adjustments
Rather than contributing directly to the netScore like the other three categories, Market Activity determines how much weight to assign to Trend, Momentum, and Price Action:
1. Compute Market Activity Raw Score by summing BBW, ATR, KCW, and Volume individual scores (each +1/0/–1).
2. Bucket into High, Medium, or Low Activity:
• High if raw Score ≥ 2 (volatile market).
• Low if raw Score ≤ –2 (calm market).
• Medium otherwise.
3. Apply Hysteresis (if enabled): The state only flips after two consecutive bars register the same high/low/medium label.
4. Set Category Weights:
• High Activity: Trend = 50 %, Momentum = 35 %, Price Action = 15 %.
• Low Activity: Trend = 25 %, Momentum = 20 %, Price Action = 55 %.
• Medium Activity: Use the trader’s base weight inputs (e.g., Trend = 40 %, Momentum = 30 %, Price Action = 30 % by default).
D. Calculating the Net Score
5. Normalize Base Weights (so that the sum of Trend + Momentum + Price Action always equals 100 %).
6. Determine Current Weights based on the Market Activity State (High/Medium/Low).
7. Compute Each Category’s Contribution: Multiply (categoryScore) × (currentWeight).
8. Sum Contributions to get the raw netScore (a floating-point value that can exceed ±3 when scores are strong).
9. Smooth the netScore over two bars (if smoothing is enabled) to reduce noise.
10. Apply Hysteresis to the Final Zone:
• If the smoothed netScore ≥ +2, the bar is classified as “Bullish.”
• If the smoothed netScore ≤ –2, the bar is classified as “Bearish.”
• Otherwise, it is “Sideways.”
• To prevent rapid flips, the script requires two consecutive bars in the new zone before officially changing the displayed zone (if hysteresis is on).
E. Thresholds for Zone Classification
• BULLISH: netScore ≥ +2
• BEARISH: netScore ≤ –2
• SIDEWAYS: –2 < netScore < +2
---
7. Role of Volatility (Market Activity State) in Scoring
Volatility acts as a dynamic switch that shifts which category carries the most influence:
1. High Activity (Volatile):
• Detected when at least two sub-scores out of BBW, ATR, KCW, and Volume equal +1.
• The script sets Trend weight = 50 % and Momentum weight = 35 %. Price Action weight is minimized at 15 %.
• Rationale: In volatile markets, strong trending moves and momentum surges dominate, so those signals are more reliable than nuanced candle patterns.
2. Low Activity (Calm):
• Detected when at least two sub-scores out of BBW, ATR, KCW, and Volume equal –1.
• The script sets Price Action weight = 55 %, Trend = 25 %, and Momentum = 20 %.
• Rationale: In quiet, sideways markets, subtle price-action signals (breakouts, doji patterns, small-range candles) are often the best early indicators of a new move.
3. Medium Activity (Balanced):
• Raw Score between –1 and +1 from the four volatility metrics.
• Uses whatever base weights the trader has specified (e.g., Trend = 40 %, Momentum = 30 %, Price Action = 30 %).
Because volatility can fluctuate rapidly, the script employs hysteresis on Market Activity State: a new High or Low state must occur on two consecutive bars before weights actually shift. This avoids constant back-and-forth weight changes and provides more stability.
---
8. Scoring Example (Hypothetical Scenario)
• Symbol: Bitcoin on a 1-hour chart.
• Market Activity: Raw volatility sub-scores show BBW (+1), ATR (+1), KCW (0), Volume (+1) → Total raw Score = +3 → High Activity.
• Weights Selected: Trend = 50 %, Momentum = 35 %, Price Action = 15 %.
• Trend Signals:
• ADX strong and +DI > –DI → +1
• Fast MA above Slow MA → +1
• Ichimoku Senkou A > Senkou B → +1
→ Trend Score = +3
• Momentum Signals:
• RSI above upper bound → +1
• MACD histogram positive → +1
• Stochastic %K within neutral zone → 0
→ Momentum Score = +2
• Price Action Signals:
• Highest High/Lowest Low check yields 0 (close not near extremes)
• Heikin-Ashi doji reading is neutral → 0
• Candle range slightly above upper bound but trend is strong, so → +1
→ Price Action Score = +1
• Compute Net Score (before smoothing):
• Trend contribution = 3 × 0.50 = 1.50
• Momentum contribution = 2 × 0.35 = 0.70
• Price Action contribution = 1 × 0.15 = 0.15
• Raw netScore = 1.50 + 0.70 + 0.15 = 2.35
• Since 2.35 ≥ +2 and hysteresis is met, the final zone is “Bullish.”
Although the netScore lands at 2.35 (Bullish), smoothing might bring it slightly below 2.00 on the first bar (e.g., 1.90), in which case the script would wait for a second consecutive reading above +2 before officially classifying the zone as Bullish (if hysteresis is enabled).
---
9. Correlation Between Categories
The four categories—Trend Strength, Momentum, Price Action, and Market Activity—often reinforce or offset one another. The script takes advantage of these natural correlations:
• Bullish Alignment: If ADX is strong and pointed upward, fast MA is above slow MA, and Ichimoku is positive, that usually coincides with RSI climbing above its upper bound and the MACD histogram turning positive. In such cases, both Trend and Momentum categories generate +1 or +2. Because the Market Activity State is likely High (given the accompanying volatility), Trend and Momentum weights are at their peak, so the netScore quickly crosses into Bullish territory.
• Sideways/Consolidation: During a low-volatility, sideways phase, ADX may fall below its threshold, MAs may flatten, and RSI might hover in the neutral band. However, subtle price-action signals (like a small breakout candle or a Heikin-Ashi candle with a slight bias) can still produce a +1 in the Price Action category. If Market Activity is Low, Price Action’s weight (55 %) can carry enough influence—even if Trend and Momentum are neutral—to push the netScore out of “Sideways” into a mild bullish or bearish bias.
• Opposing Signals: When Trend is bullish but Momentum turns negative (for example, price continues up but RSI rolls over), the two scores can partially cancel. Market Activity may remain Medium, in which case the netScore lingers near zero (Sideways). The trader can then wait for either a clearer momentum shift or a fresh price-action breakout before committing.
By dynamically recognizing these correlations and adjusting weights, the indicator ensures that:
• When Trend and Momentum align (and volatility supports it), the netScore leaps strongly into Bullish or Bearish.
• When Trend is neutral but Price Action shows an early move in a low-volatility environment, Price Action’s extra weight in the Low Activity State can still produce actionable signals.
---
10. Market Activity State & Its Role (Detailed)
The Market Activity State is not a direct category score—it is an overarching context setter for how heavily to trust Trend, Momentum, or Price Action. Here’s how it is derived and applied:
1. Calculate Four Volatility Sub-Scores:
• BBW: Compare the current band width to its own moving average ± standard deviation. If BBW > (BBW_MA + stdev), assign +1 (high volatility); if BBW < (BBW_MA × 0.5), assign –1 (low volatility); else 0.
• ATR: Compare ATR to its moving average ± standard deviation. A spike above the upper threshold is +1; a contraction below the lower threshold is –1; otherwise 0.
• KCW: Same logic as ATR but around the KCW mean.
• Volume: Compare current volume to its volume MA ± standard deviation. Above the upper threshold is +1; below the lower threshold is –1; else 0.
2. Sum Sub-Scores → Raw Market Activity Score: Range between –4 and +4.
3. Assign Market Activity State:
• High Activity: Raw Score ≥ +2 (at least two volatility metrics are strongly spiking).
• Low Activity: Raw Score ≤ –2 (at least two metrics signal unusually low volatility or thin volume).
• Medium Activity: Raw Score is between –1 and +1 inclusive.
4. Hysteresis for Stability:
• If hysteresis is enabled, a new state only takes hold after two consecutive bars confirm the same High, Medium, or Low label.
• This prevents the Market Activity State from bouncing around when volatility is on the fence.
5. Set Category Weights Based on Activity State:
• High Activity: Trend = 50 %, Momentum = 35 %, Price Action = 15 %.
• Low Activity: Trend = 25 %, Momentum = 20 %, Price Action = 55 %.
• Medium Activity: Use trader’s base weights (e.g., Trend = 40 %, Momentum = 30 %, Price Action = 30 %).
6. Impact on netScore: Because category scores (–3 to +3) multiply by these weights, High Activity amplifies the effect of strong Trend and Momentum scores; Low Activity amplifies the effect of Price Action.
7. Market Context Tooltip: The dashboard includes a tooltip summarizing the current state—e.g., “High activity, trend and momentum prioritized,” “Low activity, price action prioritized,” or “Balanced market, all categories considered.”
---
11. Category Weights: Base vs. Dynamic
Traders begin by specifying base weights for Trend Strength, Momentum, and Price Action that sum to 100 %. These apply only when volatility is in the Medium band. Once volatility shifts:
• High Volatility Overrides:
• Trend jumps from its base (e.g., 40 %) to 50 %.
• Momentum jumps from its base (e.g., 30 %) to 35 %.
• Price Action is reduced to 15 %.
Example: If base weights were Trend = 40 %, Momentum = 30 %, Price Action = 30 %, then in High Activity they become 50/35/15. A Trend score of +3 now contributes 3 × 0.50 = +1.50 to netScore; a Momentum +2 contributes 2 × 0.35 = +0.70. In total, Trend + Momentum can easily push netScore above the +2 threshold on its own.
• Low Volatility Overrides:
• Price Action leaps from its base (30 %) to 55 %.
• Trend falls to 25 %, Momentum falls to 20 %.
Why? When markets are quiet, subtle candle breakouts, doji patterns, and small-range expansions tend to foreshadow the next swing more effectively than raw trend readings. A Price Action score of +3 in this state contributes 3 × 0.55 = +1.65, which can carry the netScore toward +2—even if Trend and Momentum are neutral or only mildly positive.
Because these weight shifts happen only after two consecutive bars confirm a High or Low state (if hysteresis is on), the indicator avoids constantly flipping its emphasis during borderline volatility phases.
---
12. Dominant Category Explained
Within the dashboard, a label such as “Trend Dominant,” “Momentum Dominant,” or “Price Action Dominant” appears when one category’s absolute weighted contribution to netScore is the largest. Concretely:
• Compute each category’s weighted contribution = (raw category score) × (current weight).
• Compare the absolute values of those three contributions.
• The category with the highest absolute value is flagged as Dominant for that bar.
Why It Matters:
• Momentum Dominant: Indicates that the combined force of RSI, Stochastic, and MACD (after weighting) is pushing netScore farther than either Trend or Price Action. In practice, it means that short-term sentiment and speed of change are the primary drivers right now, so traders should watch for continued momentum signals before committing to a trade.
• Trend Dominant: Means ADX, MA slope, and Ichimoku (once weighted) outweigh the other categories. This suggests a strong directional move is in place; trend-following entries or confirming pullbacks are likely to succeed.
• Price Action Dominant: Occurs when breakout/breakdown patterns, Heikin-Ashi candle readings, and range expansions (after weighting) are the most influential. This often happens in calmer markets, where subtle shifts in candle structure can foreshadow bigger moves.
By explicitly calling out which category is carrying the most weight at any moment, the dashboard gives traders immediate insight into why the netScore is tilting toward bullish, bearish, or sideways.
---
13. Oscillator Plot: How to Read It
The “Net Score” oscillator sits below the dashboard and visually displays the smoothed netScore as a line graph. Key features:
1. Value Range: In normal conditions it oscillates roughly between –3 and +3, but extreme confluences can push it outside that range.
2. Horizontal Threshold Lines:
• +2 Line (Bullish threshold)
• 0 Line (Neutral midline)
• –2 Line (Bearish threshold)
3. Zone Coloring:
• Green Background (Bullish Zone): When netScore ≥ +2.
• Red Background (Bearish Zone): When netScore ≤ –2.
• Gray Background (Sideways Zone): When –2 < netScore < +2.
4. Dynamic Line Color:
• The plotted netScore line itself is colored green in a Bullish Zone, red in a Bearish Zone, or gray in a Sideways Zone, creating an immediate visual cue.
Interpretation Tips:
• Crossing Above +2: Signals a strong enough combined trend/momentum/price-action reading to classify as Bullish. Many traders wait for a clear crossing plus a confirmation candle before entering a long position.
• Crossing Below –2: Indicates a strong Bearish signal. Traders may consider short or exit strategies.
• Rising Slope, Even Below +2: If netScore climbs steadily from neutral toward +2, it demonstrates building bullish momentum.
• Divergence: If price makes a higher high but the oscillator fails to reach a new high, it can warn of weakening momentum and a potential reversal.
---
14. Comments and Their Necessity
Every sub-indicator (ADX, MA slope, Ichimoku, RSI, Stochastic, MACD, HH/LL, Heikin-Ashi, Candle Range, BBW, ATR, KCW, Volume) generates a short comment that appears in the detailed dashboard. Examples:
• “Strong bullish trend” or “Strong bearish trend” for ADX/DMI
• “Fast MA above slow MA” or “Fast MA below slow MA” for MA slope
• “RSI above dynamic threshold” or “RSI below dynamic threshold” for RSI
• “MACD histogram positive” or “MACD histogram negative” for MACD Hist
• “Price near highs” or “Price near lows” for HH/LL checks
• “Bullish Heikin Ashi” or “Bearish Heikin Ashi” for HA Doji scoring
• “Large range, trend confirmed” or “Small range, trend contradicted” for Candle Range
Additionally, the top-row comment for each category is:
• Trend: “Highly Bullish,” “Highly Bearish,” or “Neutral Trend.”
• Momentum: “Strong Momentum,” “Weak Momentum,” or “Neutral Momentum.”
• Price Action: “Bullish Action,” “Bearish Action,” or “Neutral Action.”
• Market Activity: “Volatile Market,” “Calm Market,” or “Stable Market.”
Reasons for These Comments:
• Transparency: Shows exactly how each sub-indicator contributed to its category score.
• Education: Helps traders learn why a category is labeled bullish, bearish, or neutral, building intuition over time.
• Customization: If, for example, the RSI comment says “RSI neutral” despite an impending trend shift, a trader might choose to adjust RSI length or thresholds.
In the detailed dashboard, hovering over each comment cell also reveals a tooltip with additional context (e.g., “Fast MA above slow MA” or “Senkou A above Senkou B”), helping traders understand the precise rule behind that +1, 0, or –1 assignment.
---
15. Real-Life Example (Consolidated)
• Instrument & Timeframe: Bitcoin (BTCUSD), 1-hour chart.
• Current Market Activity: BBW and ATR both spike (+1 each), KCW is moderately high (+1), but volume is only neutral (0) → Raw Market Activity Score = +2 → State = High Activity (after two bars, if hysteresis is on).
• Category Weights Applied: Trend = 50 %, Momentum = 35 %, Price Action = 15 %.
• Trend Sub-Scores:
1. ADX = 25 (above threshold 20) with +DI > –DI → +1.
2. Fast MA (20-period) sits above Slow MA (50-period) → +1.
3. Ichimoku: Senkou A > Senkou B → +1.
→ Trend Score = +3.
• Momentum Sub-Scores:
4. RSI = 75 (above its moving average +1 stdev) → +1.
5. MACD histogram = +0.15 → +1.
6. Stochastic %K = 50 (mid-range) → 0.
→ Momentum Score = +2.
• Price Action Sub-Scores:
7. Price is not within 1 % of the 20-period high/low and slope = positive → 0.
8. Heikin-Ashi body is slightly larger than stdev over last 5 bars with haClose > haOpen → +1.
9. Candle range is just above its dynamic upper bound but trend is already captured, so → +1.
→ Price Action Score = +2.
• Calculate netScore (before smoothing):
• Trend contribution = 3 × 0.50 = 1.50
• Momentum contribution = 2 × 0.35 = 0.70
• Price Action contribution = 2 × 0.15 = 0.30
• Raw netScore = 1.50 + 0.70 + 0.30 = 2.50 → Immediately classified as Bullish.
• Oscillator & Dashboard Output:
• The oscillator line crosses above +2 and turns green.
• Dashboard displays:
• Trend Regime “BULLISH,” Trend Score = 3, Comment = “Highly Bullish.”
• Momentum Regime “BULLISH,” Momentum Score = 2, Comment = “Strong Momentum.”
• Price Action Regime “BULLISH,” Price Action Score = 2, Comment = “Bullish Action.”
• Market Activity State “High,” Comment = “Volatile Market.”
• Weights: Trend 50 %, Momentum 35 %, Price Action 15 %.
• Dominant Category: Trend (because 1.50 > 0.70 > 0.30).
• Overall Score: 2.50, posCount = (three +1s in Trend) + (two +1s in Momentum) + (two +1s in Price Action) = 7 bullish signals, negCount = 0.
• Final Zone = “BULLISH.”
• The trader sees that both Trend and Momentum are reinforcing each other under high volatility. They might wait one more candle for confirmation but already have strong evidence to consider a long.
---
• .
---
Disclaimer
This indicator is strictly a technical analysis tool and does not constitute financial advice. All trading involves risk, including potential loss of capital. Past performance is not indicative of future results. Traders should:
• Always backtest the “Market Zone Analyzer ” on their chosen symbols and timeframes before committing real capital.
• Combine this tool with sound risk management, position sizing, and, if possible, fundamental analysis.
• Understand that no indicator is foolproof; always be prepared for unexpected market moves.
Goodluck
-BullByte!
---
Canuck Trading Projection IndicatorCanuck Trading Projection Indicator
Overview
The Canuck Trading Projection Indicator is a powerful PineScript v6 tool designed for TradingView to project potential bullish and bearish price trajectories based on historical price and volume movements. It provides traders with actionable insights by estimating future price targets and assigning confidence levels to each outlook, helping to identify probable market directions across any timeframe. Ideal for both short-term and long-term traders, this indicator combines momentum analysis, RSI filtering, support/resistance detection, and time-weighted trend analysis to deliver robust projections.
Features
Bullish and Bearish Projections: Forecasts price targets for upward (bullish) and downward (bearish) movements over a user-defined projection period (default 20 bars).
Confidence Levels: Assigns percentage confidence scores to each outlook, reflecting the likelihood of the projected price based on historical trends, volatility, and volume.
RSI Filter: Incorporates a 14-period Relative Strength Index (RSI) to validate trends, requiring RSI > 50 for bullish and RSI < 50 for bearish signals.
Support/Resistance Detection: Adjusts confidence levels when projections are near key swing highs/lows (within 2% of average price), boosting confidence by 5% for alignments.
Time-Based Weighting: Prioritizes recent price movements in trend analysis, giving more weight to newer bars for improved relevance.
Customizable Inputs: Allows users to tailor lookback period, projection bars, RSI period, confidence threshold, colors, and label positioning.
Forced Label Spacing: Prevents overlap of bullish and bearish text labels, even for tight projections, using fixed vertical slots when price differences are small (<2% of average price).
Timeframe Flexibility: Works seamlessly across all TradingView timeframes (e.g., 30-minute, hourly, daily, weekly, monthly), adapting projections to the chart’s resolution.
Clean Visualization: Displays projections as green (bullish) and red (bearish) dashed lines, with non-overlapping text labels at the projection endpoints showing price targets and confidence levels.
How It Works
The indicator analyzes historical price and volume data over a user-defined lookback period (default 50 bars) to calculate:
Momentum: Combines price changes and volume to assess trend strength, using a weighted moving average (WMA) for directional bias.
Trend Analysis: Counts bullish (price up, volume above average, RSI > 50) and bearish (price down, volume above average, RSI < 50) trends, weighting recent bars more heavily.
Projections:
Bullish Slope: Positive or flat when momentum is upward, scaled by price change and momentum intensity.
Bearish Slope: Negative or flat when momentum is downward, amplified by bearish confidence for stronger projections.
Projects prices forward by 20 bars (default) using current close plus slope times projection bars.
Confidence Levels:
Base confidence derived from the proportion of bullish/bearish trends, with a 5% minimum to avoid zero confidence.
Adjusted by volatility (lower volatility increases confidence), volume trends, and proximity to support/resistance levels.
Visualization:
Draws projection lines from the current close to the 20-bar future target.
Places text labels at line endpoints, showing price targets and confidence percentages, with forced spacing for readability.
Input Parameters
Lookback Period (default: 50): Number of bars for historical analysis (minimum 10).
Projection Bars (default: 20): Number of bars to project forward (minimum 5).
Confidence Threshold (default: 0.6): Minimum confidence for strong trend indication (0.1 to 1.0).
Bullish Projection Line Color (default: Green): Color for bullish projection line and label.
Bearish Projection Line Color (default: Red): Color for bearish projection line and label.
RSI Period (default: 14): Period for RSI momentum filter (minimum 5).
Label Vertical Offset (%) (default: 1.0): Base offset for labels as a percentage of price range (0.1% to 5.0%).
Minimum Label Spacing (%) (default: 2.0): Minimum vertical spacing between labels for tight projections (0.5% to 10.0%).
Usage Instructions
Add to Chart: Copy the script into TradingView’s Pine Editor, save, and add the indicator to your chart.
Select Timeframe: Apply to any timeframe (e.g., 30-minute, hourly, daily, weekly, monthly) to match your trading strategy.
Interpret Outputs:
Green Line/Label: Bullish price target and confidence (e.g., "Bullish: 414.37, Confidence: 35%").
Red Line/Label: Bearish price target and confidence (e.g., "Bearish: 279.08, Confidence: 41.3%").
Higher confidence indicates a stronger likelihood of the projected outcome.
Adjust Inputs:
Modify Lookback Period to focus on shorter/longer historical trends (e.g., 20 for short-term, 100 for long-term).
Change Projection Bars to adjust forecast horizon (e.g., 10 for shorter, 50 for longer).
Tweak RSI Period or Confidence Threshold for sensitivity to momentum or trend strength.
Customize Colors for visual preference.
Increase Minimum Label Spacing if labels overlap in volatile markets.
Combine with Analysis: Use alongside other indicators (e.g., moving averages, Bollinger Bands) or fundamental analysis to confirm signals, as projections are probabilistic.
Example: TSLA Across Timeframes
Using live TSLA data (close ~346.46 USD, May 31, 2025), the indicator produces:
30-Minute: Bullish 341.93 (13.3%), Bearish 327.96 (86.7%) – Strong bearish sentiment due to intraday volatility.
1-Hour: Bullish 342.00 (33.9%), Bearish 327.50 (62.3%) – Bearish but less intense, reflecting hourly swings.
4-Hour: Bullish 345.52 (73.4%), Bearish 344.44 (19.0%) – Flat outlook, indicating consolidation.
Daily: Bullish 391.26 (68.8%), Bearish 302.22 (31.2%) – Bullish bias from recent uptrend, bearish tempered by longer lookback.
Weekly: Bullish 414.37 (35.0%), Bearish 279.08 (41.3%) – Wide range, reflecting annual volatility.
Monthly: Bullish 396.70 (54.9%), Bearish 296.93 (10.2%) – Long-term bullish optimism.
These results align with market dynamics: short-term intervals capture volatility, while longer intervals smooth trends, providing balanced outlooks.
Notes
Accuracy: Projections are estimates based on historical data and should be used with other analysis tools. Confidence levels indicate likelihood, not certainty.
Timeframe Sensitivity: Short-term intervals (e.g., 30-minute) show larger price swings and higher confidence due to volatility, while longer intervals (e.g., monthly) are more stable.
Customization: Adjust inputs to match your trading style (e.g., shorter lookback for day trading, longer for swing trading).
Performance: Tested on volatile stocks like TSLA, NVIDIA, and others, ensuring robust performance across markets.
Limitations: May produce conservative bearish projections in strong uptrends due to momentum weighting. Adjust lookback or projection_bars for sensitivity.
Feedback
If you encounter issues (e.g., label overlap, projection mismatches), please share your timeframe, settings, or a screenshot. Suggestions for enhancements (e.g., additional filters, visual tweaks) are welcome!
Disclaimer
The Canuck Trading Projection Indicator is provided for educational and informational purposes only. It is not financial advice. Trading involves significant risks, and past performance is not indicative of future results. Always perform your own due diligence and consult a qualified financial advisor before making trading decisions.
FvgObject█ OVERVIEW
This library provides a suite of methods designed to manage the visual representation and lifecycle of Fair Value Gap (FVG) objects on a Pine Script™ chart. It extends the `fvgObject` User-Defined Type (UDT) by attaching object-oriented functionalities for drawing, updating, and deleting FVG-related graphical elements. The primary goal is to encapsulate complex drawing logic, making the main indicator script cleaner and more focused on FVG detection and state management.
█ CONCEPTS
This library is built around the idea of treating each Fair Value Gap as an "object" with its own visual lifecycle on the chart. This is achieved by defining methods that operate directly on instances of the `fvgObject` UDT.
Object-Oriented Approach for FVGs
Pine Script™ v6 introduced the ability to define methods for User-Defined Types (UDTs). This library leverages this feature by attaching specific drawing and state management functions (methods) directly to the `fvgObject` type. This means that instead of calling global functions with an FVG object as a parameter, you call methods *on* the FVG object itself (e.g., `myFvg.updateDrawings(...)`). This approach promotes better code organization and a more intuitive way to interact with FVG data.
FVG Visual Lifecycle Management
The core purpose of this library is to manage the complete visual journey of an FVG on the chart. This lifecycle includes:
Initial Drawing: Creating the first visual representation of a newly detected FVG, including its main box and optionally its midline and labels.
State Updates & Partial Fills: Modifying the FVG's appearance as it gets partially filled by price. This involves drawing a "mitigated" portion of the box and adjusting the `currentTop` or `currentBottom` of the remaining FVG.
Full Mitigation & Tested State: Handling how an FVG is displayed once fully mitigated. Depending on user settings, it might be hidden, or its box might change color/style to indicate it has been "tested." Mitigation lines can also be managed (kept or deleted).
Midline Interaction: Visually tracking if the price has touched the FVG's 50% equilibrium level (midline).
Visibility Control: Dynamically showing or hiding FVG drawings based on various criteria, such as user settings (e.g., hide mitigated FVGs, timeframe-specific visibility) or external filters (e.g., proximity to current price).
Deletion: Cleaning up all drawing objects associated with an FVG when it's no longer needed or when settings dictate its removal.
Centralized Drawing Logic
By encapsulating all drawing-related operations within the methods of this library, the main indicator script is significantly simplified. The main script can focus on detecting FVGs and managing their state (e.g., in arrays), while delegating the complex task of rendering and updating them on the chart to the methods herein.
Interaction with `fvgObject` and `drawSettings` UDTs
All methods within this library operate on an instance of the `fvgObject` UDT. This `fvgObject` holds not only the FVG's price/time data and state (like `isMitigated`, `currentTop`) but also the IDs of its associated drawing elements (e.g., `boxId`, `midLineId`).
The appearance of these drawings (colors, styles, visibility, etc.) is dictated by a `drawSettings` UDT instance, which is passed as a parameter to most drawing-related methods. This `drawSettings` object is typically populated from user inputs in the main script, allowing for extensive customization.
Stateful Drawing Object Management
The library's methods manage Pine Script™ drawing objects (boxes, lines, labels) by storing their IDs within the `fvgObject` itself (e.g., `fvgObject.boxId`, `fvgObject.mitigatedBoxId`, etc.). Methods like `draw()` create these objects and store their IDs, while methods like `updateDrawings()` modify them, and `deleteDrawings()` removes them using these stored IDs.
Drawing Optimization
The `updateDrawings()` method, which is the most comprehensive drawing management function, incorporates optimization logic. It uses `prev_*` fields within the `fvgObject` (e.g., `prevIsMitigated`, `prevCurrentTop`) to store the FVG's state from the previous bar. By comparing the current state with the previous state, and also considering changes in visibility or relevant drawing settings, it can avoid redundant and performance-intensive drawing operations if nothing visually significant has changed for that FVG.
█ METHOD USAGE AND WORKFLOW
The methods in this library are designed to be called in a logical sequence as an FVG progresses through its lifecycle. A crucial prerequisite for all visual methods in this library is a properly populated `drawSettings` UDT instance, which dictates every aspect of an FVG's appearance, from colors and styles to visibility and labels. This `settings` object must be carefully prepared in the main indicator script, typically based on user inputs, before being passed to these methods.
Here’s a typical workflow within a main indicator script:
1. FVG Instance Creation (External to this library)
An `fvgObject` instance is typically created by functions in another library (e.g., `FvgCalculations`) when a new FVG pattern is identified. This object will have its core properties (top, bottom, startTime, isBullish, tfType) initialized.
2. Initial Drawing (`draw` method)
Once a new `fvgObject` is created and its initial visibility is determined:
Call the `myFvg.draw(settings)` method on the new FVG object.
`settings` is an instance of the `drawSettings` UDT, containing all relevant visual configurations.
This method draws the primary FVG box, its midline (if enabled in `settings`), and any initial labels. It also initializes the `currentTop` and `currentBottom` fields of the `fvgObject` if they are `na`, and stores the IDs of the created drawing objects within the `fvgObject`.
3. Per-Bar State Updates & Interaction Checks
On each subsequent bar, for every active `fvgObject`:
Interaction Check (External Logic): It's common to first use logic (e.g., from `FvgCalculations`' `fvgInteractionCheck` function) to determine if the current bar's price interacts with the FVG.
State Field Updates (External Logic): Before calling the `FvgObjectLib` methods below, ensure that your `fvgObject`'s state fields (such as `isMitigated`, `currentTop`, `currentBottom`, `isMidlineTouched`) are updated using the current bar's price data and relevant functions from other libraries (e.g., `FvgCalculations`' `checkMitigation`, `checkPartialMitigation`, etc.). This library's methods render the FVG based on these pre-updated state fields.
If interaction occurs and the FVG is not yet fully mitigated:
Full Mitigation Update (`updateMitigation` method): Call `myFvg.updateMitigation(high, low)`. This method updates `myFvg.isMitigated` and `myFvg.mitigationTime` if full mitigation occurs, based on the interaction determined by external logic.
Partial Fill Update (`updatePartialFill` method): If not fully mitigated, call `myFvg.updatePartialFill(high, low, settings)`. This method updates `myFvg.currentTop` or `myFvg.currentBottom` and adjusts drawings to show the filled portion, again based on prior interaction checks and fill level calculations.
Midline Touch Check (`checkMidlineTouch` method): Call `myFvg.checkMidlineTouch(high, low)`. This method updates `myFvg.isMidlineTouched` if the price touches the FVG's 50% level.
4. Comprehensive Visual Update (`updateDrawings` method)
After the FVG's state fields have been potentially updated by external logic and the methods in step 3:
Call `myFvg.updateDrawings(isVisibleNow, settings)` on each FVG object.
`isVisibleNow` is a boolean indicating if the FVG should currently be visible.
`settings` is the `drawSettings` UDT instance.
This method synchronizes the FVG's visual appearance with its current state and settings, managing all drawing elements (boxes, lines, labels), their styles, and visibility. It efficiently skips redundant drawing operations if the FVG's state or visibility has not changed, thanks to its internal optimization using `prev_*` fields, which are also updated by this method.
5. Deleting Drawings (`deleteDrawings` method)
When an FVG object is no longer tracked:
Call `myFvg.deleteDrawings(deleteTestedToo)`.
This method removes all drawing objects associated with that `fvgObject`.
This workflow ensures that FVG visuals are accurately maintained throughout their existence on the chart.
█ NOTES
Dependencies: This library relies on `FvgTypes` for `fvgObject` and `drawSettings` definitions, and its methods (`updateMitigation`, `updatePartialFill`) internally call functions from `FvgCalculations`.
Drawing Object Management: Be mindful of TradingView's limits on drawing objects per script. The main script should manage the number of active FVG objects.
Performance and `updateDrawings()`: The `updateDrawings()` method is comprehensive. Its internal optimization (checking `hasStateChanged` based on `prev_*` fields) is crucial for performance. Call it judiciously.
Role of `settings.currentTime`: The `currentTime` field in `drawSettings` is key for positioning time-dependent elements like labels and the right edge of non-extended drawings.
Mutability of `fvgObject` Instances: Methods in this library directly modify the `fvgObject` instance they are called upon (e.g., its state fields and drawing IDs).
Drawing ID Checks: Methods generally check if drawing IDs are `na` before acting on them, preventing runtime errors.
█ EXPORTED FUNCTIONS
method draw(this, settings)
Draws the initial visual representation of the FVG object on the chart. This includes the main FVG box, its midline (if enabled), and a label
(if enabled for the specific timeframe). This method is typically invoked
immediately after an FVG is first detected and its initial properties are set. It uses drawing settings to customize the appearance based on the FVG's timeframe type.
Namespace types: types.fvgObject
Parameters:
this (fvgObject type from no1x/FvgTypes/1) : The FVG object instance to be drawn. Core properties (top, bottom,
startTime, isBullish, tfType) should be pre-initialized. This method will
initialize boxId, midLineId, boxLabelId (if applicable), and
currentTop/currentBottom (if currently na) on this object.
settings (drawSettings type from no1x/FvgTypes/1) : A drawSettings object providing all visual parameters. Reads display settings (colors, styles, visibility for boxes, midlines, labels,
box extension) relevant to this.tfType. settings.currentTime is used for
positioning labels and the right boundary of non-extended boxes.
method updateMitigation(this, highVal, lowVal)
Checks if the FVG has been fully mitigated by the current bar's price action.
Namespace types: types.fvgObject
Parameters:
this (fvgObject type from no1x/FvgTypes/1) : The FVG object instance. Reads this.isMitigated, this.isVisible,
this.isBullish, this.top, this.bottom. Updates this.isMitigated and
this.mitigationTime if full mitigation occurs.
highVal (float) : The high price of the current bar, used for mitigation check.
lowVal (float) : The low price of the current bar, used for mitigation check.
method updatePartialFill(this, highVal, lowVal, settings)
Checks for and processes partial fills of the FVG.
Namespace types: types.fvgObject
Parameters:
this (fvgObject type from no1x/FvgTypes/1) : The FVG object instance. Reads this.isMitigated, this.isVisible,
this.isBullish, this.currentTop, this.currentBottom, original this.top/this.bottom,
this.startTime, this.tfType, this.isLV. Updates this.currentTop or
this.currentBottom, creates/updates this.mitigatedBoxId, and may update this.boxId's
top/bottom to reflect the filled portion.
highVal (float) : The high price of the current bar, used for partial fill check.
lowVal (float) : The low price of the current bar, used for partial fill check.
settings (drawSettings type from no1x/FvgTypes/1) : The drawing settings. Reads timeframe-specific colors for mitigated
boxes (e.g., settings.mitigatedBullBoxColor, settings.mitigatedLvBullColor),
box extension settings (settings.shouldExtendBoxes, settings.shouldExtendMtfBoxes, etc.),
and settings.currentTime to style and position the mitigatedBoxId and potentially adjust the main boxId.
method checkMidlineTouch(this, highVal, lowVal)
Checks if the FVG's midline (50% level or Equilibrium) has been touched.
Namespace types: types.fvgObject
Parameters:
this (fvgObject type from no1x/FvgTypes/1) : The FVG object instance. Reads this.midLineId, this.isMidlineTouched,
this.top, this.bottom. Updates this.isMidlineTouched if a touch occurs.
highVal (float) : The high price of the current bar, used for midline touch check.
lowVal (float) : The low price of the current bar, used for midline touch check.
method deleteDrawings(this, deleteTestedToo)
Deletes all visual drawing objects associated with this FVG object.
Namespace types: types.fvgObject
Parameters:
this (fvgObject type from no1x/FvgTypes/1) : The FVG object instance. Deletes drawings referenced by boxId,
mitigatedBoxId, midLineId, mitLineId, boxLabelId, mitLineLabelId,
and potentially testedBoxId, keptMitLineId. Sets these ID fields to na.
deleteTestedToo (simple bool) : If true, also deletes drawings for "tested" FVGs
(i.e., testedBoxId and keptMitLineId).
method updateDrawings(this, isVisibleNow, settings)
Manages the comprehensive update of all visual elements of an FVG object
based on its current state (e.g., active, mitigated, partially filled) and visibility. It handles the drawing, updating, or deletion of FVG boxes (main and mitigated part),
midlines, mitigation lines, and their associated labels. Visibility is determined by the isVisibleNow parameter and relevant settings
(like settings.shouldHideMitigated or timeframe-specific show flags). This method is central to the FVG's visual lifecycle and includes optimization
to avoid redundant drawing operations if the FVG's relevant state or appearance
settings have not changed since the last bar. It also updates the FVG object's internal prev_* state fields for future optimization checks.
Namespace types: types.fvgObject
Parameters:
this (fvgObject type from no1x/FvgTypes/1) : The FVG object instance to update. Reads most state fields (e.g.,
isMitigated, currentTop, tfType, etc.) and updates all drawing ID fields
(boxId, midLineId, etc.), this.isVisible, and all this.prev_* state fields.
isVisibleNow (bool) : A flag indicating whether the FVG should be currently visible. Typically determined by external logic (e.g., visual range filter). Affects
whether active FVG drawings are created/updated or deleted by this method.
settings (drawSettings type from no1x/FvgTypes/1) : A fully populated drawSettings object. This method extensively
reads its fields (colors, styles, visibility toggles, timeframe strings, etc.)
to render FVG components according to this.tfType and current state. settings.currentTime is critical for positioning elements like labels and extending drawings.
Gann Swing PointsIndicator Logic
This is a GANN-style swing indicator that classifies bars based on their high/low structure relative to the previous bar.
I strongly encourage you to replay bars on Tradingview using this indicator to get a sense of how it creates pivot (or swing) points
Bar Classification:
Up-Bar (direction: 'up'): Higher High and Higher Low (HH/HL)
Down-Bar (direction: 'down'): Lower High and Lower Low (LH/LL)
Outside-Bar (generates 2 directions):
Green: 'down' then 'up'
Red: 'up' then 'down'
Inside-Bar: No direction generated (HL/LH)
Swing Line Logic
The swing line continues in the current direction until n opposite directions are detected.
n is the "n-direction" parameter (commonly set to 2, so 2 consecutive opposite direction is needed to turn the swing)
When n opposing directions occur, the swing turns, creating a pivot point
Inside bar is ignored, so e.g up-bar -> inside-bar -> up-bar generates "up", "up" direction
A top pivot is formed when the swing turns down
A bottom pivot is formed when it turns up
Note: This swing logic is inherently lagging — it only confirms tops/bottoms after the fact
This swing structure gives the system a clear and noise-resistant way to identify pivot points (swing-points)
Rate of Change HistogramExplanation of Modifications
Converting ROC to Histogram:
Original ROC: The ROC is calculated as roc = 100 * (source - source ) / source , plotted as a line oscillating around zero.
Modification: Instead of plotting roc as a line, it’s now plotted as a histogram using style=plot.style_columns. This makes the ROC values visually resemble the MACD histogram, with bars extending above or below the zero line based on momentum.
Applying MACD’s Four-Color Scheme:
Logic: The histogram’s color is determined by:
Above Zero (roc >= 0): Bright green (#26A69A) if ROC is rising (roc > roc ), light green (#B2DFDB) if falling (roc < roc ).
Below Zero (roc < 0): Bright red (#FF5252) if ROC is falling (roc < roc ), light red (#FFCDD2) if rising (roc > roc ).
Implementation: Used the exact color logic and hex codes from the MACD code, applied to the ROC histogram. This highlights momentum ebbs (falling ROC, fading waves) and flows (rising ROC, strengthening waves).
Removing Signal Line:
Unlike the previous attempt, no signal line is added. The histogram is purely the ROC value, ensuring it directly reflects price change momentum without additional smoothing, making it faster and more responsive to pulse waves, as you indicated ROC performs better than other oscillators.
Alert Conditions:
Added alerts to match the MACD’s logic, triggering when the ROC histogram crosses the zero line:
Rising to Falling: When roc >= 0 and roc < 0, signaling a potential wave peak (e.g., end of Wave 3 or C).
Falling to Rising: When roc <= 0 and roc > 0, indicating a potential wave bottom (e.g., start of Wave 1 or rebound).
These alerts help identify transitions in 3-4 wave pulse patterns.
Plotting:
Histogram: Plotted as columns (plot.style_columns) with the four-color scheme, directly representing ROC momentum.
Zero Line: Kept the gray zero line (#787B86) for reference, consistent with the MACD.
Removed ROC Line/Signal Line: Since you want the ROC to act as the histogram itself, no additional lines are plotted.
Inputs:
Retained the original length (default 9) and source (default close) inputs for consistency.
Removed signal-related inputs (e.g., signal_length, sma_signal) as they’re not needed for a pure ROC histogram.
How This ROC Histogram Works for Wave Pulses
Wave Alignment:
Above Zero (Bullish Momentum): Positive ROC bars indicate flows (e.g., impulse Waves 1, 3, or rebounds in Wave B/C). Bright green bars show accelerating momentum (strong pulses), while light green bars suggest fading momentum (potential wave tops).
Below Zero (Bearish Momentum): Negative ROC bars indicate ebbs (e.g., corrective Waves 2, 4, A, or C). Bright red bars show increasing bearish momentum (strong pullbacks), while light red bars suggest slowing declines (potential wave bottoms).
3-4 Wave Pulses:
In a 3-wave A-B-C correction: Wave A (down) shows bright red bars (falling ROC), Wave B (up) shows bright/light green bars (rising ROC), and Wave C (down) shifts back to red bars.
In a 4-wave consolidation: Alternating green/red bars highlight the rhythmic ebbs and flows as momentum oscillates.
Timing:
Zero-line crossovers mark wave transitions (e.g., from Wave 2 to Wave 3).
Color changes (e.g., bright to light green) signal momentum shifts within waves, helping identify pulse peaks/troughs.
Advantages Over MACD:
The ROC histogram is more responsive than the MACD histogram because ROC directly measures price change percentage, while MACD relies on moving average differences, which introduce lag. This makes the ROC histogram better for capturing rapid 3-4 wave pulses, as you noted.
Example Usage
For a stock with 3-4 wave pulses on a 5-minute chart:
Wave 1 (Flow): ROC rises above zero, histogram turns bright green (rising momentum), indicating a strong bullish pulse.
Wave 2 (Ebb): ROC falls below zero, histogram shifts to bright red (falling momentum), signaling a corrective pullback.
Wave 3 (Flow): ROC crosses back above zero, histogram becomes bright green again, confirming a powerful pulse.
Wave 4 (Ebb): ROC dips slightly, histogram turns light green (falling momentum above zero) or light red (rising momentum below zero), indicating consolidation.
Alerts trigger on zero-line crosses (e.g., from Wave 2 to Wave 3), helping time trades.
Settings Recommendations
Default (length=9): Works well for most time frames, balancing sensitivity and smoothness.
Intraday Pulses: Use length=5 or length=7 for faster signals on 5-minute or 15-minute charts.
Daily Charts: Try length=12 or length=14 for broader wave cycles.
Testing: Apply to a stock with clear wave patterns (e.g., tech stocks like AAPL or TSLA) and adjust length to match the pulse frequency you observe.
Notes
Confirmation: Pair the ROC histogram with price action (e.g., Fibonacci retracements, support/resistance) to validate wave counts, as momentum oscillators can be noisy in choppy markets.
Divergences: Watch for divergences (e.g., price makes a higher high, but ROC histogram bars are lower) to spot wave reversals, especially at Wave 3 or C ends.
Comparison to MACD: The ROC histogram is faster and more direct, making it ideal for short-term pulse waves, but it may be more volatile, so use with technical levels for precision.
H4 3-Candle Pattern (Persistent Signals)Below is an example in Pine Script v5 that detects a pattern using the last three completed 4H candles and then plots a permanent arrow on the fourth candle (i.e. on the current bar) when the conditions are met. The arrow stays on that bar even after new bars form.
In this version, the pattern is evaluated as follows on each bar (when there are enough candles):
Bullish Pattern:
The candle three bars ago (oldest of the three) is bullish (its close is greater than its open).
The candle two bars ago closes above the high of that older candle.
The last completed candle (one bar ago) closes at or above the low of the candle two bars ago.
Bearish Pattern:
The candle three bars ago is bearish (its close is less than its open).
The candle two bars ago closes below the low of that older candle.
The last completed candle closes at or below the high of the candle two bars ago.
When the conditions are met the script draws a green up arrow below the current (fourth) candle for a bullish pattern and a red down arrow above the current candle for a bearish pattern. These arrows are drawn as regular plot symbols and remain on the chart permanently.
Copy and paste the code into TradingView’s Pine Script Editor:
Volume Predictor [PhenLabs]📊 Volume Predictor
Version: PineScript™ v6
📌 Description
The Volume Predictor is an advanced technical indicator that leverages machine learning and statistical modeling techniques to forecast future trading volume. This innovative tool analyzes historical volume patterns to predict volume levels for upcoming bars, providing traders with valuable insights into potential market activity. By combining multiple prediction algorithms with pattern recognition techniques, the indicator delivers forward-looking volume projections that can enhance trading strategies and market analysis.
🚀 Points of Innovation:
Machine learning pattern recognition using Lorentzian distance metrics
Multi-algorithm prediction framework with algorithm selection
Ensemble learning approach combining multiple prediction methods
Real-time accuracy metrics with visual performance dashboard
Dynamic volume normalization for consistent scale representation
Forward-looking visualization with configurable prediction horizon
🔧 Core Components
Pattern Recognition Engine : Identifies similar historical volume patterns using Lorentzian distance metrics
Multi-Algorithm Framework : Offers five distinct prediction methods with configurable parameters
Volume Normalization : Converts raw volume to percentage scale for consistent analysis
Accuracy Tracking : Continuously evaluates prediction performance against actual outcomes
Advanced Visualization : Displays actual vs. predicted volume with configurable future bar projections
Interactive Dashboard : Shows real-time performance metrics and prediction accuracy
🔥 Key Features
The indicator provides comprehensive volume analysis through:
Multiple Prediction Methods : Choose from Lorentzian, KNN Pattern, Ensemble, EMA, or Linear Regression algorithms
Pattern Matching : Identifies similar historical volume patterns to project future volume
Adaptive Predictions : Generates volume forecasts for multiple bars into the future
Performance Tracking : Calculates and displays real-time prediction accuracy metrics
Normalized Scale : Presents volume as a percentage of historical maximums for consistent analysis
Customizable Visualization : Configure how predictions and actual volumes are displayed
Interactive Dashboard : View algorithm performance metrics in a customizable information panel
🎨 Visualization
Actual Volume Columns : Color-coded green/red bars showing current normalized volume
Prediction Columns : Semi-transparent blue columns representing predicted volume levels
Future Bar Projections : Forward-looking volume predictions with configurable transparency
Prediction Dots : Optional white dots highlighting future prediction points
Reference Lines : Visual guides showing the normalized volume scale
Performance Dashboard : Customizable panel displaying prediction method and accuracy metrics
📖 Usage Guidelines
History Lookback Period
Default: 20
Range: 5-100
This setting determines how many historical bars are analyzed for pattern matching. A longer period provides more historical data for pattern recognition but may reduce responsiveness to recent changes. A shorter period emphasizes recent market behavior but might miss longer-term patterns.
🧠 Prediction Method
Algorithm
Default: Lorentzian
Options: Lorentzian, KNN Pattern, Ensemble, EMA, Linear Regression
Selects the algorithm used for volume prediction:
Lorentzian: Uses Lorentzian distance metrics for pattern recognition, offering excellent noise resistance
KNN Pattern: Traditional K-Nearest Neighbors approach for historical pattern matching
Ensemble: Combines multiple methods with weighted averaging for robust predictions
EMA: Simple exponential moving average projection for trend-following predictions
Linear Regression: Projects future values based on linear trend analysis
Pattern Length
Default: 5
Range: 3-10
Defines the number of bars in each pattern for machine learning methods. Shorter patterns increase sensitivity to recent changes, while longer patterns may identify more complex structures but require more historical data.
Neighbors Count
Default: 3
Range: 1-5
Sets the K value (number of nearest neighbors) used in KNN and Lorentzian methods. Higher values produce smoother predictions by averaging more historical patterns, while lower values may capture more specific patterns but could be more susceptible to noise.
Prediction Horizon
Default: 5
Range: 1-10
Determines how many future bars to predict. Longer horizons provide more forward-looking information but typically decrease accuracy as the prediction window extends.
📊 Display Settings
Display Mode
Default: Overlay
Options: Overlay, Prediction Only
Controls how volume information is displayed:
Overlay: Shows both actual volume and predictions on the same chart
Prediction Only: Displays only the predictions without actual volume
Show Prediction Dots
Default: false
When enabled, adds white dots to future predictions for improved visibility and clarity.
Future Bar Transparency (%)
Default: 70
Range: 0-90
Controls the transparency of future prediction bars. Higher values make future bars more transparent, while lower values make them more visible.
📱 Dashboard Settings
Show Dashboard
Default: true
Toggles display of the prediction accuracy dashboard. When enabled, shows real-time accuracy metrics.
Dashboard Location
Default: Bottom Right
Options: Top Left, Top Right, Bottom Left, Bottom Right
Determines where the dashboard appears on the chart.
Dashboard Text Size
Default: Normal
Options: Small, Normal, Large
Controls the size of text in the dashboard for various display sizes.
Dashboard Style
Default: Solid
Options: Solid, Transparent
Sets the visual style of the dashboard background.
Understanding Accuracy Metrics
The dashboard provides key performance metrics to evaluate prediction quality:
Average Error
Shows the average difference between predicted and actual values
Positive values indicate the prediction tends to be higher than actual volume
Negative values indicate the prediction tends to be lower than actual volume
Values closer to zero indicate better prediction accuracy
Accuracy Percentage
A measure of how close predictions are to actual outcomes
Higher percentages (>70%) indicate excellent prediction quality
Moderate percentages (50-70%) indicate acceptable predictions
Lower percentages (<50%) suggest weaker prediction reliability
The accuracy metrics are color-coded for quick assessment:
Green: Strong prediction performance
Orange: Moderate prediction performance
Red: Weaker prediction performance
✅ Best Use Cases
Anticipate upcoming volume spikes or drops
Identify potential volume divergences from price action
Plan entries and exits around expected volume changes
Filter trading signals based on predicted volume support
Optimize position sizing by forecasting market participation
Prepare for potential volatility changes signaled by volume predictions
Enhance technical pattern analysis with volume projection context
⚠️ Limitations
Volume predictions become less accurate over longer time horizons
Performance varies based on market conditions and asset characteristics
Works best on liquid assets with consistent volume patterns
Requires sufficient historical data for pattern recognition
Sudden market events can disrupt prediction accuracy
Volume spikes may be muted in predictions due to normalization
💡 What Makes This Unique
Machine Learning Approach : Applies Lorentzian distance metrics for robust pattern matching
Algorithm Selection : Offers multiple prediction methods to suit different market conditions
Real-time Accuracy Tracking : Provides continuous feedback on prediction performance
Forward Projection : Visualizes multiple future bars with configurable display options
Normalized Scale : Presents volume as a percentage of maximum volume for consistent analysis
Interactive Dashboard : Displays key metrics with customizable appearance and placement
🔬 How It Works
The Volume Predictor processes market data through five main steps:
1. Volume Normalization:
Converts raw volume to percentage of maximum volume in lookback period
Creates consistent scale representation across different timeframes and assets
Stores historical normalized volumes for pattern analysis
2. Pattern Detection:
Identifies similar volume patterns in historical data
Uses Lorentzian distance metrics for robust similarity measurement
Determines strength of pattern match for prediction weighting
3. Algorithm Processing:
Applies selected prediction algorithm to historical patterns
For KNN/Lorentzian: Finds K nearest neighbors and calculates weighted prediction
For Ensemble: Combines multiple methods with optimized weighting
For EMA/Linear Regression: Projects trends based on statistical models
4. Accuracy Calculation:
Compares previous predictions to actual outcomes
Calculates average error and prediction accuracy
Updates performance metrics in real-time
5. Visualization:
Displays normalized actual volume with color-coding
Shows current and future volume predictions
Presents performance metrics through interactive dashboard
💡 Note:
The Volume Predictor performs optimally on liquid assets with established volume patterns. It’s most effective when used in conjunction with price action analysis and other technical indicators. The multi-algorithm approach allows adaptation to different market conditions by switching prediction methods. Pay special attention to the accuracy metrics when evaluating prediction reliability, as sudden market changes can temporarily reduce prediction quality. The normalized percentage scale makes the indicator consistent across different assets and timeframes, providing a standardized approach to volume analysis.
Enhanced VSA Volume & Candle Colors with MA SelectionOverview:
This script aims to enhance the visualization of volume spikes and price action by coloring volume bars and price candles dynamically based on the volume behavior. It allows traders to customize the type of volume moving average (SMA, EMA, or VWMA) used and apply various color schemes to highlight high, low, and extreme volume conditions. Additionally, alerts are generated when extreme or low-volume conditions occur.
---------------------------------------------------------------------------------------------------------------------
Key Features:
Customizable Volume Lookback Period:
The script allows users to define the period for calculating the moving average of volume (default: 200).
Volume Multiplier Settings:
High and low volume thresholds are defined using multipliers. Users can adjust these to customize how volume is categorized (default multipliers: 1.5 for high volume, 0.5 for low volume).
Percentile-Based Extreme Volume Detection:
The script calculates a percentile threshold for extreme volume (default: 90th percentile) based on the volume data, highlighting exceptionally high volume spikes.
Moving Average Selection:
Users can choose between Simple Moving Average (SMA), Exponential Moving Average (EMA), or Volume Weighted Moving Average (VWMA) to track volume trends over the selected lookback period.
Volume-Based Price Bar Coloring:
Price bars can be colored according to the volume conditions (high, low, or extreme). This feature can be toggled on or off.
Dynamic Transparency and Color Customization:
The script allows users to set custom colors for different volume conditions (high, low, neutral, extreme) and adjusts the transparency of volume bars based on the relative size of the volume.
Alerts:
Alerts can be set for when extreme volume spikes or low volume conditions are detected.
---------------------------------------------------------------------------------------------------------------------
Script Components:
Volume Histogram Plot:
Displays the volume bars with dynamic coloring based on the volume condition (high, low, or extreme). The color of the bars adjusts for clarity, with transparency based on volume levels.
Moving Average Plot:
Plots the selected volume moving average (SMA, EMA, or VWMA) to visualize the trend of volume over the chosen lookback period.
Smoothed Average Volume (EMA of Volume):
A smoothed EMA line is plotted to provide a clear representation of volume trends over time.
Price Bar Coloring:
If enabled, price bars are colored according to the current volume condition, providing immediate visual feedback to the trader.
---------------------------------------------------------------------------------------------------------------------
How It Can Be Used:
Volume Analysis for Entry/Exit Points: Traders can use the volume conditions (high, low, and extreme) to identify potential entry or exit points. High-volume bars often signal strong market activity, while low-volume bars may indicate consolidation or indecision.
Volume Confirmation for Trend Reversal: Extreme volume spikes can sometimes precede significant price movements. Traders can monitor these spikes for potential trend reversal signals.
Customizing Alerts: Alerts based on volume conditions help traders stay updated on important volume events without constantly monitoring the chart.
Color-Coded Price Action: The dynamic coloring of price bars makes it easier to identify periods of strong or weak market participation, allowing traders to make informed decisions quickly.
---------------------------------------------------------------------------------------------------------------------
Compliance with TradingView's House Rules:
No Promotion of Financial Products: The script does not promote any specific financial instruments or products, ensuring compliance with TradingView’s content guidelines.
Clear Functionality: The script provides clear, functional analysis tools without making unsupported claims about predicting market movements.
No Automated Trading: The script does not include any automated trading or order execution features, which complies with TradingView’s policy on non-automated scripts.
This breakdown ensures clarity on the script’s purpose, features, and how it might be used by traders. It's written in a way that fits TradingView's content guidelines, keeping the focus on providing valuable analytical tools rather than making promises or promoting any financial product.
Advanced Support and Resistance Levels[MAP]Advanced Support and Resistance Levels Indicator
Author
Developed by:
Overview
The "Advanced Support and Resistance Levels" indicator, created, is a sophisticated tool designed for TradingView's Pine Script v6 platform. It identifies and plots key support and resistance levels on a price chart, enhancing technical analysis by incorporating pivot strength, volume weighting, and level decay. The indicator overlays lines, zones, and labels on the chart, providing a visual representation of significant price levels where the market has historically reversed or consolidated.
Purpose
This indicator, authored by , aims to:
Detect significant pivot points (highs and lows) with customizable strength requirements.
Track and rank support/resistance levels based on their recency, volume, and number of touches.
Display these levels as lines and optional zones, with strength-based visual cues (e.g., line thickness and opacity).
Offer flexibility through user-configurable settings to adapt to different trading styles and market conditions.
Features
Pivot Detection:
Identifies high and low pivots using a strength parameter, requiring a specified number of bars on either side where no higher highs or lower lows occur.
Incorporates closing price checks and SMA-based trend confirmation to filter out noise and ensure pivots align with the broader market direction.
Level Management:
Maintains a dynamic array of levels with attributes: price, type (support/resistance), bars since last touch, strength, and volume.
Merges nearby levels within a tolerance percentage, updating prices with a strength-weighted average.
Prunes weaker or older levels when exceeding the maximum allowed, prioritizing those with higher calculated strength.
Strength Calculation:
Combines the number of touches (strength), volume (if enabled), and age decay (if enabled) into a single metric.
Volume weighting uses a logarithmic scale to emphasize high-volume pivots without over-amplifying extreme values.
Age decay reduces the importance of older levels over time, ensuring relevance to current price action.
Visualization:
Draws horizontal lines at each level, with thickness reflecting the number of touches (up to a user-defined maximum).
Optional price zones around levels, sized as a percentage of the price, to indicate areas of influence.
Labels display the level type (S for support, R for resistance), price, and strength score, with position (left or right) customizable.
Line opacity varies with strength, providing a visual hierarchy of level significance.
Plots small triangles at detected pivot points for reference.
Inputs
Lookback Period (lookback, default: 20): Number of bars to consider for trend confirmation via SMA. Range: 5–100.
Pivot Strength (strength, default: 2): Number of bars required on each side of a pivot to confirm it. Range: 1–10.
Price Tolerance % (tolerance, default: 0.5): Percentage range for merging similar levels. Range: 0.1–5.
Max Levels to Show (maxLevels, default: 10): Maximum number of levels displayed. Range: 2–50.
Zone Size % (zoneSizePercent, default: 0.1): Size of the S/R zone as a percentage of the price. Range: 0–1.
Line Width (lineWidth, default: 1): Maximum thickness of level lines. Range: 1–5.
Show Labels (showLabels, default: true): Toggle visibility of level labels.
Label Position (labelPos, default: "Right"): Position of labels ("Left" or "Right").
Level Strength Decay (levelDecay, default: true): Enable gradual reduction in strength for older levels.
Volume Weighting (volumeWeight, default: true): Incorporate volume into level strength calculations.
Support Color (supportColor, default: green): Color for support levels.
Resistance Color (resistColor, default: red): Color for resistance levels.
How It Works
Pivot Detection:
Checks for pivots only after enough bars (2 * strength) have passed.
A high pivot requires strength bars before and after with no higher highs or closes, and a short-term SMA above a long-term SMA.
A low pivot requires strength bars before and after with no lower lows or closes, and a short-term SMA below a long-term SMA.
Level Tracking:
New pivots create levels with initial strength and volume.
Existing levels within tolerance are updated: strength increases, volume takes the maximum value, and price adjusts via a weighted average.
Levels older than lookback * 4 bars with strength below 0.5 are removed.
If the number of levels exceeds maxLevels, the weakest (by calculated strength) are pruned using a selection sort algorithm.
Drawing:
Updates on the last confirmed bar or in real-time.
Lines extend lookback bars left and right from the current bar, with thickness based on touches.
Zones (if enabled) are drawn symmetrically around the level price.
Labels show detailed info, with opacity tied to strength.
Usage
Add to Chart: Apply the indicator to any TradingView chart via the Pine Script editor, as designed by .
Adjust Settings: Customize inputs to match your trading strategy (e.g., increase strength for stronger pivots, adjust tolerance for tighter level merging).
Interpret Levels: Focus on thicker, less transparent lines for stronger levels; use zones to identify potential reversal areas.
Combine with Other Tools: Pair with trend indicators or oscillators for confluence in trading decisions.
Notes
Performance: The indicator uses arrays and sorting, which may slow down on very long charts with many levels. Keep maxLevels reasonable for efficiency.
Accuracy: Enhanced by trend confirmation and volume weighting, making it more reliable than basic S/R indicators, thanks to 's design.
Limitations: Real-time updates may shift levels as new pivots form; historical levels are more stable.
Example Settings
For day trading: lookback=10, strength=1, tolerance=0.3, maxLevels=5.
For swing trading: lookback=50, strength=3, tolerance=0.7, maxLevels=10.
Credits
Author: – Creator of this advanced support and resistance tool, blending precision and customization for traders.