All Harmonic Patterns [theEccentricTrader]█ OVERVIEW
This indicator automatically draws and sends alerts for all of the harmonic patterns in my public library as they occur. The patterns included are as follows:
• Bearish 5-0
• Bullish 5-0
• Bearish ABCD
• Bullish ABCD
• Bearish Alternate Bat
• Bullish Alternate Bat
• Bearish Bat
• Bullish Bat
• Bearish Butterfly
• Bullish Butterfly
• Bearish Cassiopeia A
• Bullish Cassiopeia A
• Bearish Cassiopeia B
• Bullish Cassiopeia B
• Bearish Cassiopeia C
• Bullish Cassiopeia C
• Bearish Crab
• Bullish Crab
• Bearish Deep Crab
• Bullish Deep Crab
• Bearish Cypher
• Bullish Cypher
• Bearish Gartley
• Bullish Gartley
• Bearish Shark
• Bullish Shark
• Bearish Three-Drive
• Bullish Three-Drive
█ CONCEPTS
Green and Red Candles
• A green candle is one that closes with a close price equal to or above the price it opened.
• A red candle is one that closes with a close price that is lower than the price it opened.
Swing Highs and Swing Lows
• A swing high is a green candle or series of consecutive green candles followed by a single red candle to complete the swing and form the peak.
• A swing low is a red candle or series of consecutive red candles followed by a single green candle to complete the swing and form the trough.
Peak and Trough Prices
• The peak price of a complete swing high is the high price of either the red candle that completes the swing high or the high price of the preceding green candle, depending on which is higher.
• The trough price of a complete swing low is the low price of either the green candle that completes the swing low or the low price of the preceding red candle, depending on which is lower.
Historic Peaks and Troughs
The current, or most recent, peak and trough occurrences are referred to as occurrence zero. Previous peak and trough occurrences are referred to as historic and ordered numerically from right to left, with the most recent historic peak and trough occurrences being occurrence one.
Upper Trends
• A return line uptrend is formed when the current peak price is higher than the preceding peak price.
• A downtrend is formed when the current peak price is lower than the preceding peak price.
• A double-top is formed when the current peak price is equal to the preceding peak price.
Lower Trends
• An uptrend is formed when the current trough price is higher than the preceding trough price.
• A return line downtrend is formed when the current trough price is lower than the preceding trough price.
• A double-bottom is formed when the current trough price is equal to the preceding trough price.
Range
The range is simply the difference between the current peak and current trough prices, generally expressed in terms of points or pips.
Wave Cycles
A wave cycle is here defined as a complete two-part move between a swing high and a swing low, or a swing low and a swing high. The first swing high or swing low will set the course for the sequence of wave cycles that follow; for example a chart that begins with a swing low will form its first complete wave cycle upon the formation of the first complete swing high and vice versa.
Figure 1.
Retracement and Extension Ratios
Retracement and extension ratios are calculated by dividing the current range by the preceding range and multiplying the answer by 100. Retracement ratios are those that are equal to or below 100% of the preceding range and extension ratios are those that are above 100% of the preceding range.
Fibonacci Retracement and Extension Ratios
The Fibonacci sequence is a series of numbers in which each number is the sum of the two preceding numbers, starting with 0 and 1. For example 0 + 1 = 1, 1 + 1 = 2, 1 + 2 = 3, and so on. Ultimately, we could go on forever but the first few numbers in the sequence are as follows: 0 , 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144.
The extension ratios are calculated by dividing each number in the sequence by the number preceding it. For example 0/1 = 0, 1/1 = 1, 2/1 = 2, 3/2 = 1.5, 5/3 = 1.6666..., 8/5 = 1.6, 13/8 = 1.625, 21/13 = 1.6153..., 34/21 = 1.6190..., 55/34 = 1.6176..., 89/55 = 1.6181..., 144/89 = 1.6179..., and so on. The retracement ratios are calculated by inverting this process and dividing each number in the sequence by the number proceeding it. For example 0/1 = 0, 1/1 = 1, 1/2 = 0.5, 2/3 = 0.666..., 3/5 = 0.6, 5/8 = 0.625, 8/13 = 0.6153..., 13/21 = 0.6190..., 21/34 = 0.6176..., 34/55 = 0.6181..., 55/89 = 0.6179..., 89/144 = 0.6180..., and so on.
Fibonacci ranges are typically drawn from left to right, with retracement levels representing ratios inside of the current range and extension levels representing ratios extended outside of the current range. If the current wave cycle ends on a swing low, the Fibonacci range is drawn from peak to trough. If the current wave cycle ends on a swing high the Fibonacci range is drawn from trough to peak.
Measurement Tolerances
Tolerance refers to the allowable variation or deviation from a specific value or dimension. It is the range within which a particular measurement is considered to be acceptable or accurate. I have applied this concept in my pattern detection logic and have set default tolerances where applicable, as perfect patterns are, needless to say, very rare.
Chart Patterns
Generally speaking price charts are nothing more than a series of swing highs and swing lows. When demand outweighs supply over a period of time prices swing higher and when supply outweighs demand over a period of time prices swing lower. These swing highs and swing lows can form patterns that offer insight into the prevailing supply and demand dynamics at play at the relevant moment in time.
‘Let us assume… that you the reader, are not a member of that mysterious inner circle known to the boardrooms as “the insiders”… But it is fairly certain that there are not nearly so many “insiders” as amateur trader supposes and… It is even more certain that insiders can be wrong… Any success they have, however, can be accomplished only by buying and selling… hey can do neither without altering the delicate poise of supply and demand that governs prices. Whatever they do is sooner or later reflected on the charts where you… can detect it. Or detect, at least, the way in which the supply-demand equation is being affected… So, you do not need to be an insider to ride with them frequently… prices move in trends. Some of those trends are straight, some are curved; some are brief and some are long and continued… produced in a series of action and reaction waves of great uniformity. Sooner or later, these trends change direction; they may reverse (as from up to down), or they may be interrupted by some sort of sideways movement and then, after a time, proceed again in their former direction… when a price trend is in the process of reversal… a characteristic area or pattern takes shape on the chart, which becomes recognisable as a reversal formation… Needless to say, the first and most important task of the technical chart analyst is to learn to know the important reversal formations and to judge what they may signify in terms of trading opportunities’ (Edwards & Magee, 1948).
This is as true today as it was when Edwards and Magee were writing in the first half of the last Century, study your patterns and make judgements for yourself about what their implications truly are on the markets and timeframes you are interested in trading.
Over the years, traders have come to discover a multitude of chart and candlestick patterns that are supposed to pertain information on future price movements. However, it is never so clear cut in practice and patterns that where once considered to be reversal patterns are now considered to be continuation patterns and vice versa. Bullish patterns can have bearish implications and bearish patterns can have bullish implications. As such, I would highly encourage you to do your own backtesting.
There is no denying that chart patterns exist, but their implications will vary from market to market and timeframe to timeframe. So it is down to you as an individual to study them and make decisions about how they may be used in a strategic sense.
Harmonic Patterns
The concept of harmonic patterns in trading was first introduced by H.M. Gartley in his book "Profits in the Stock Market", published in 1935. Gartley observed that markets have a tendency to move in repetitive patterns, and he identified several specific patterns that he believed could be used to predict future price movements. The bullish and bearish Gartley patterns are the oldest recognized harmonic patterns in trading and all the other harmonic patterns are modifications of the original Gartley patterns. Gartley patterns are fundamentally composed of 5 points, or 4 waves.
Since then, many other traders and analysts have built upon Gartley's work and developed their own variations of harmonic patterns. One such contributor is Larry Pesavento, who developed his own methods for measuring harmonic patterns using Fibonacci ratios. Pesavento has written several books on the subject of harmonic patterns and Fibonacci ratios in trading. Another notable contributor to harmonic patterns is Scott Carney, who developed his own approach to harmonic trading in the late 1990s and also popularised the use of Fibonacci ratios to measure harmonic patterns. Carney expanded on Gartley's work and also introduced several new harmonic patterns, such as the Shark pattern and the 5-0 pattern.
█ INPUTS
• Change pattern and label colours
• Show or hide patterns individually
• Adjust pattern tolerances
• Set or remove alerts for individual patterns
█ NOTES
You can test the patterns with your own strategies manually by applying the indicator to your chart while in bar replay mode and playing through the history. You could also automate this process with PineScript by using the conditions from my swing and pattern libraries as entry conditions in the strategy tester or your own custom made strategy screener.
█ LIMITATIONS
All green and red candle calculations are based on differences between open and close prices, as such I have made no attempt to account for green candles that gap lower and close below the close price of the preceding candle, or red candles that gap higher and close above the close price of the preceding candle. This may cause some unexpected behaviour on some markets and timeframes. I can only recommend using 24-hour markets, if and where possible, as there are far fewer gaps and, generally, more data to work with.
█ SOURCES
Edwards, R., & Magee, J. (1948) Technical Analysis of Stock Trends (10th edn). Reprint, Boca Raton, Florida: Taylor and Francis Group, CRC Press: 2013.
Cari dalam skrip untuk "wave"
Honey CypherHoney Cypher Aims to do 4 things
Momentum
Trend Strength
Overbought and oversold zones
Being the most beautiful indicator you ever see
Momentum
The big yellow honey waves primary use is to see the momentum of the market, they can be used in a similar way you would use a MACD or Chaikin Money Flow
On this image you see the honey waves being plotted to the 30 minute timeframe while on the 5 minute chart to have an understanding of longer time momentum in the chart.
Trend Strength
Most tools of the indicator can be used for that but the yellow and purple slope strength lines are made specificaly for this. When you see them curl down you know trend is strengthening towards the downside.
The candle color is based on the amount of Honey waves sloping in one direction. This might be the best tool in the indicator to find Trend Strength. Bright yellow candles mean strong bears while the bright blue candles mean strong bulls.
Overbought and oversold zones
By analysing the waves on a chart you start to learn how big waves can get before a reversal or consolidation period arrives.
You can become profitable with the indicator. But to be honest, my primary focus in making this indicator was find ways to visualise alot of data in a clear and beautiful way.
You should use the indicator with some out of the box ideas instead of just trusting the signals.
examples:
Find a head and shoulders pattern on the top of a huge honey wave.
Find a bottom small wave while the others honey waves are in the opposite direction for entering a pullback.
Use the honey for direction but the yellow and purple slope line crosses for entrys.
Comment your own strategys, I made this open source to be able to get community feedback.
The Honey Cypher waves are calculated in a similar way as the MACD histogram. I've combined MACD formula with some of the lazybear formula. It looks for the distance between 2 moving averages to find trend strength. After that the end results get's smoothed out. It is very satisfying to change that as you can see the honey waves create a melting like motion on each change of smoothing.
Below a preview of the honey cypher moving average lines, all lines have a length that is based on the fibonacci number sequence. Honey cypher measures the distance between for example length 5-8 averages.
I hope this inspires coders to create very beautiful scripts.
Pragmatic risk managementINTRO
The indicator is calculating multiple moving averages on the value of price change %. It then combines the normalized (via arctan function) values into a single normalized value (via simple average).
The total error from the center of gravity and the angle in which the error is accumulating represented by 4 waves:
BLUE = Good for chance for price to go up
GREEN = Good chance for price to continue going up
ORANGE = Good chance for price to go down
RED = Good chance for price to continue going down
A full cycle of ORANGE\RED\BLUE\GREEN colors will ideally lead to the exact same cycle, if not, try to understand why.
NOTICE-
This indicator is calculating large time-windows so It can be heavy on your device. Tested on PC browser only.
My visual setup:
1. Add two indicators on-top of each other and merge their scales (It will help out later).
2. Zoom out price chart to see the maximum possible data.
3. Set different colors for both indicators for simple visual seperation.
4. Choose 2 different values, one as high as possible and one as low as possible.
(Possible - the indicator remains effective at distinguishing the cycle).
Manual calibration:
0. Select a fixed chart resolution (2H resolution minimum recommended).
1. Change the "mul2" parameter in ranges between 4-15 .
2. Observe the "Turning points" of price movement. (Typically when RED\GREEN are about to switch.)
2. Perform a segmentation of time slices and find cycles. No need to be exact!
3. Draw a square on price movement at place and color as the dominant wave currently inside the indicator.
This procedure should lead to a full price segmentation with easier anchoring.
[blackcat] L2 Ehlers Autocorrelation IndicatorLevel: 2
Background
John F. Ehlers introduced Autocorrelation Indicator in his "Cycle Analytics for Traders" chapter 8 on 2013.
Function
If we correlate a waveform composed of perfectly random numbers by itself, the correlation will be perfect. However, if we lag one of the data streams by just one bar, the correlation will be dramatically reduced. In a long memory process with normally distributed random numbers the autocorrelation follows the power law.
One of the underlying principles of technical analysis is that market data do not follow this power law of an efficient market, and we therefore can extract information from the partial correlation of the autocorrelation function. For example, assume the data being examined is a perfect sine wave whose period is 20 bars. The autocorrelation with zero lag, averaged over one full period of the sine wave, is unity. That is, the correlation is perfect. Introducing a lag of one bar in the autocorrelation process causes the average correlation to be decreased slightly. Introducing another bar of lag further decreases the average correlation, and so on. That is, until a lag of 10 bars is reached. In this case, the positive alternation of the sine wave is correlated with the negative alternation of the lagged waveform and the negative alternation of the sine wave is correlated with the positive alternation of the lagged waveform, with the result that perfect anticorrelation has been reached. Continued lag increases causes the average correlation to increase until a lag of 20 bars is reached. When the lag is equal to the period of the sine wave waveform, the correlation is again perfect. In this theoretical example, the correlation values as a function of lag vary exactly as a sine wave.
Market data are considerably messier than purely random numbers or perfect sine waves but contain features of both. However, the characteristics that are uncovered by autocorrelation offer unique trading perspectives. Aside from appearing psychedelic, there are two distinct characteristics of the autocorrelation indicator using minimum averaging. First, there is a sharp reversal from red to yellow and from yellow to red at the timing of price reversals for all periods of lag. Second, there is a variation of the thickness of the bars and the number of bars over the vertical range of the indicator as a function of time.
Key Signal
Corr --> Pearson correlation data array
Pros and Cons
I am sorry this script is NOT 100% as original Ehlers works but I modified it accordingly which demostrated with better visual effect.
Remarks
The 47th script for Blackcat1402 John F. Ehlers Week publication.
Courtesy of @RicardoSantos for RGB functions.
Readme
In real life, I am a prolific inventor. I have successfully applied for more than 60 international and regional patents in the past 12 years. But in the past two years or so, I have tried to transfer my creativity to the development of trading strategies. Tradingview is the ideal platform for me. I am selecting and contributing some of the hundreds of scripts to publish in Tradingview community. Welcome everyone to interact with me to discuss these interesting pine scripts.
The scripts posted are categorized into 5 levels according to my efforts or manhours put into these works.
Level 1 : interesting script snippets or distinctive improvement from classic indicators or strategy. Level 1 scripts can usually appear in more complex indicators as a function module or element.
Level 2 : composite indicator/strategy. By selecting or combining several independent or dependent functions or sub indicators in proper way, the composite script exhibits a resonance phenomenon which can filter out noise or fake trading signal to enhance trading confidence level.
Level 3 : comprehensive indicator/strategy. They are simple trading systems based on my strategies. They are commonly containing several or all of entry signal, close signal, stop loss, take profit, re-entry, risk management, and position sizing techniques. Even some interesting fundamental and mass psychological aspects are incorporated.
Level 4 : script snippets or functions that do not disclose source code. Interesting element that can reveal market laws and work as raw material for indicators and strategies. If you find Level 1~2 scripts are helpful, Level 4 is a private version that took me far more efforts to develop.
Level 5 : indicator/strategy that do not disclose source code. private version of Level 3 script with my accumulated script processing skills or a large number of custom functions. I had a private function library built in past two years. Level 5 scripts use many of them to achieve private trading strategy.
Momentum ArrowsThis simple indicators paints the Momentum based on Stochastic, RSI or WaveTrend onto the Price Chart by showing Green or Red arrows.
In the settings it can be selected which indicator is used, Stochastic is selected by default.
Length of the arrows is determined by the strength of the momentum:
Stochastic: Difference between D and K
RSI: Difference from RSI-50
WaveTrend: Difference between the Waves
(Thanks to @LazyBear for the WaveTrend inspiration)
PS:
If anyone has an idea how to conditionally change the color of the arrows, then please let me know - that would be the icing on the cake. Then it would be possible to indicate Overbought/Oversold levels with different colors.
Unfortunately it currently seems not to be possible to dynamically change the arrow colour.
WWV_LB pivotfix histogram jayy
This is a modification of LazyBear's WWV_LB which plots cumulative volume of waves. The reversal points are defined through relative closing prices. I made adjustments to the script to show waves turning on actual/true low or high pivots as opposed to the bar/candle identified in the LazyBear script. What I mean by that is that the actual/true low or high pivots are in fact the true WWV_LB pivots. The original WWV_LB script calculates cumulative volume from reversal confirmation bar to reversal confirmation bar as opposed to the true WWV_LB pivot bar to pivot bar. As such the waves can have slightly different start and end points. As such the cumulative volume can also be different from te WWV_LB script. This is because confirmation of a wave reversal can lag a few bars after the true reversal pivot bar. In the script notes, you will see the original key WWV_LB script lines that identify the true high or low pivots and confirm the wave direction has reversed. I have taken these lines from LazyBear's original script. I have included the LazyBear script within the script notes so that the original can be compared to what I have added/changed. Instead of "trendDetectionLength" I have inserted "Trend Detection Length". You can of course change the descriptor to what you wish by editing script line 33 to the original term or whatever you wish. You might also wish to set the default to the value "2" as per the original script. I have set the default to "3". This script should be used in conjunction with "WWV-LB zigzag pivot fix jayy" script which is shown on this screen for comparison.
Here is a link to the original LazyBear histogram script which can be used for comparison. The differences are subtle, however, the histograms will regularly be different by a bar or two:
The lowest panel has the original LazyBear WWV_LB script for comparison. All three scripts have been set to a Trend Detection Length of 3.jayy
Vegas tunnelHi all,
This is the first step in putting together a more comprehensive suite of indicators and strategies based around the original Vegas tunnel method.
You will need to know what that is before trying to use this indicator. I would implore you to take the time to read the document. It's free to the universe and is a very valuable piece of work in my opinion.
Here is the link to the original documentation dl.fxf1.com
This indicator is set up to use the original levels as described by Vegas. Future releases will allow for more custom levels.
A note on the target waves. Vegas gives us the levels of 55, 89 and 233...all in FX pips. You will need to adjust that for your instrument and it is your personal preference. If you are using BTC , you might use $55, $89 etc, for ETH $5.50, $8.90 etc, for S+P 55, 89, 233 or for FX, the number might be 0.0055 etc
The indicator has been left blank so you can fill the target waves in yourself.
A note on the templates
The original template is simply as Vegas described it in his document, change it as you wish
The TD template comes from where I first was introduced to the concept. I can't mention the full source here, but some of you will know to what I am referring to. A massive thanks to TD for all the material they have provided the world.
The HH (Hero Hedge) template is just my way of looking at the wave. It's green when the faster MA is above the slower MA and red for the opposite. It doesn't really mean much, it's just a visual reference. Perhaps you can use it to filter signals if you so wish.
Finally, some of you may notice that I am an amateur coder at best. If you think you can improve or tidy up the code, then by all means, please reach out and collaborate with me.
I am trying to produce something to the benefit of all. I hope this can help you. If it does, then please pay it forward as I am trying to do.
Hero Hedge.
Vegas tunnelHi all,
This is the first step in putting together a more comprehensive suite of indicators and strategies based around the original Vegas tunnel method.
You will need to know what that is before trying to use this indicator. I would implore you to take the time to read the document. It's free to the universe and is a very valuable piece of work in my opinion.
Here is the link to the original documentation dl.fxf1.com
This indicator is set up to use the original levels as described by Vegas. Future releases will allow for more custom levels.
A note on the target waves. Vegas gives us the levels of 55, 89 and 233...all in FX pips. You will need to adjust that for your instrument and it is your personal preference. If you are using BTC , you might use $55, $89 etc, for ETH $5.50, $8.90 etc, for S+P 55, 89, 233 or for FX, the number might be 0.0055 etc
The indicator has been left blank so you can fill the target waves in yourself.
A note on the templates
The original template is simply as Vegas described it in his document, change it as you wish
The TD template comes from where I first was introduced to the concept. I can't mention the full source here, but some of you will know to what I am referring to. A massive thanks to TD for all the material they have provided the world.
The HH (Hero Hedge) template is just my way of looking at the wave. It's green when the faster MA is above the slower MA and red for the opposite. It doesn't really mean much, it's just a visual reference. Perhaps you can use it to filter signals if you so wish.
Finally, some of you may notice that I am an amateur coder at best. If you think you can improve or tidy up the code, then by all means, please reach out and collaborate with me.
I am trying to produce something to the benefit of all. I hope this can help you. If it does, then please pay it forward as I am trying to do.
Hero Hedge.
Master Crypto Overlay [R2D2]The Gemini Master Crypto Overlay: User Guide
1. Introduction
The Gemini Master Crypto Overlay is a professional-grade TradingView script designed to consolidate six powerful institutional indicators into a single, clean "heads-up display" (HUD).
Instead of cluttering your chart with multiple sub-windows (which shrinks your view of the price), this script uses smart overlays and a data dashboard to provide actionable data instantly. It is optimized for the Daily timeframe as requested, but functions on all timeframes.
Included Indicators:
Ichimoku Cloud: Identifies the primary trend and support/resistance zones.
MACD (Custom Crypto Settings): Optimized (3-10-16) for catching fast crypto moves.
WaveTrend Oscillator: Visual signals for Overbought/Oversold entries.
Supertrend: A trailing stop-loss line to keep you in profitable trades.
Ultimate RSI (MTF): Multi-timeframe analysis to ensure you are trading with the higher trend.
Volume Reference (VWAP): An on-chart proxy for Volume Profile to spot fair value.
2. Installation Instructions
Step 1: Open Pine Editor
Launch your chart on TradingView.
At the bottom of the screen, click the tab labeled Pine Editor.
Step 2: Paste the Code
Delete any text currently in the editor window.
Copy the code block at the bottom of this response.
Paste it into the editor.
Step 3: Save and Add
Click "Save" (top right of the editor) and name it "Master Crypto Overlay".
Click "Add to chart".
Note: You may hide the "Pine Editor" panel now by clicking the arrow at the bottom center of the screen.
3. How to Use the Interface
The script is designed to be intuitive. Here is what you are looking at:
A. The Dashboard (Bottom Right)
This is your "Confluence Checker." It summarizes the status of the major indicators in real-time.
GREEN: Bullish (Buy/Hold)
RED: Bearish (Sell/Short)
GRAY: Neutral/Choppy (Stay out)
Pro Tip: Do not enter a trade unless at least 3 out of 4 signals on the dashboard match your direction.
B. On-Chart Signals
Clouds (Red/Green): If the cloud is Green and rising, only look for Long trades. If Red, only look for Short trades.
Supertrend Line: This continuous line trails the price. If price is above it (Green line), you are safe. If price closes below it, the trend has reversed.
MACD Labels: Small "MACD" text appears when momentum flips.
WaveTrend Circles:
Blue Circle (Bottom): Price is "Oversold." Good time to buy if the trend is up.
Orange Circle (Top): Price is "Overbought." Good time to take profit.
4. Strategy: Maximizing Trading Returns
To make money with this script, you need a rule-based system. Do not just blindly click when you see a label. Use this "Trend & Trigger" strategy:
The "Golden Entry" (High Probability Long)
Trend Check: Ensure price is ABOVE the Ichimoku Cloud.
Dashboard Check: Verify the RSI Status says "BULL (>50)".
The Trigger: Wait for a pullback where price touches the Supertrend Line (Green) or the top of the Cloud.
The Entry: Enter the trade when a Blue WaveTrend Circle appears OR a MACD Buy Label prints.
Stop Loss: Place your stop loss slightly below the Supertrend line.
The "Exit Strategy" (Protecting Profits)
Conservative: Sell half your position when an Orange WaveTrend Circle appears.
Trend Follower: Hold the rest of your position until the Supertrend Line turns RED.
MLExtensionsLibrary "MLExtensions"
A set of extension methods for a novel implementation of a Approximate Nearest Neighbors (ANN) algorithm in Lorentzian space.
normalizeDeriv(src, quadraticMeanLength)
Returns the smoothed hyperbolic tangent of the input series.
Parameters:
src (float) : The input series (i.e., the first-order derivative for price).
quadraticMeanLength (int) : The length of the quadratic mean (RMS).
Returns: nDeriv The normalized derivative of the input series.
normalize(src, min, max)
Rescales a source value with an unbounded range to a target range.
Parameters:
src (float) : The input series
min (float) : The minimum value of the unbounded range
max (float) : The maximum value of the unbounded range
Returns: The normalized series
rescale(src, oldMin, oldMax, newMin, newMax)
Rescales a source value with a bounded range to anther bounded range
Parameters:
src (float) : The input series
oldMin (float) : The minimum value of the range to rescale from
oldMax (float) : The maximum value of the range to rescale from
newMin (float) : The minimum value of the range to rescale to
newMax (float) : The maximum value of the range to rescale to
Returns: The rescaled series
getColorShades(color)
Creates an array of colors with varying shades of the input color
Parameters:
color (color) : The color to create shades of
Returns: An array of colors with varying shades of the input color
getPredictionColor(prediction, neighborsCount, shadesArr)
Determines the color shade based on prediction percentile
Parameters:
prediction (float) : Value of the prediction
neighborsCount (int) : The number of neighbors used in a nearest neighbors classification
shadesArr (array) : An array of colors with varying shades of the input color
Returns: shade Color shade based on prediction percentile
color_green(prediction)
Assigns varying shades of the color green based on the KNN classification
Parameters:
prediction (float) : Value (int|float) of the prediction
Returns: color
color_red(prediction)
Assigns varying shades of the color red based on the KNN classification
Parameters:
prediction (float) : Value of the prediction
Returns: color
tanh(src)
Returns the the hyperbolic tangent of the input series. The sigmoid-like hyperbolic tangent function is used to compress the input to a value between -1 and 1.
Parameters:
src (float) : The input series (i.e., the normalized derivative).
Returns: tanh The hyperbolic tangent of the input series.
dualPoleFilter(src, lookback)
Returns the smoothed hyperbolic tangent of the input series.
Parameters:
src (float) : The input series (i.e., the hyperbolic tangent).
lookback (int) : The lookback window for the smoothing.
Returns: filter The smoothed hyperbolic tangent of the input series.
tanhTransform(src, smoothingFrequency, quadraticMeanLength)
Returns the tanh transform of the input series.
Parameters:
src (float) : The input series (i.e., the result of the tanh calculation).
smoothingFrequency (int)
quadraticMeanLength (int)
Returns: signal The smoothed hyperbolic tangent transform of the input series.
n_rsi(src, n1, n2)
Returns the normalized RSI ideal for use in ML algorithms.
Parameters:
src (float) : The input series (i.e., the result of the RSI calculation).
n1 (simple int) : The length of the RSI.
n2 (simple int) : The smoothing length of the RSI.
Returns: signal The normalized RSI.
n_cci(src, n1, n2)
Returns the normalized CCI ideal for use in ML algorithms.
Parameters:
src (float) : The input series (i.e., the result of the CCI calculation).
n1 (simple int) : The length of the CCI.
n2 (simple int) : The smoothing length of the CCI.
Returns: signal The normalized CCI.
n_wt(src, n1, n2)
Returns the normalized WaveTrend Classic series ideal for use in ML algorithms.
Parameters:
src (float) : The input series (i.e., the result of the WaveTrend Classic calculation).
n1 (simple int)
n2 (simple int)
Returns: signal The normalized WaveTrend Classic series.
n_adx(highSrc, lowSrc, closeSrc, n1)
Returns the normalized ADX ideal for use in ML algorithms.
Parameters:
highSrc (float) : The input series for the high price.
lowSrc (float) : The input series for the low price.
closeSrc (float) : The input series for the close price.
n1 (simple int) : The length of the ADX.
regime_filter(src, threshold, useRegimeFilter)
Parameters:
src (float)
threshold (float)
useRegimeFilter (bool)
filter_adx(src, length, adxThreshold, useAdxFilter)
filter_adx
Parameters:
src (float) : The source series.
length (simple int) : The length of the ADX.
adxThreshold (int) : The ADX threshold.
useAdxFilter (bool) : Whether to use the ADX filter.
Returns: The ADX.
filter_volatility(minLength, maxLength, useVolatilityFilter)
filter_volatility
Parameters:
minLength (simple int) : The minimum length of the ATR.
maxLength (simple int) : The maximum length of the ATR.
useVolatilityFilter (bool) : Whether to use the volatility filter.
Returns: Boolean indicating whether or not to let the signal pass through the filter.
backtest(high, low, open, startLongTrade, endLongTrade, startShortTrade, endShortTrade, isEarlySignalFlip, maxBarsBackIndex, thisBarIndex, src, useWorstCase)
Performs a basic backtest using the specified parameters and conditions.
Parameters:
high (float) : The input series for the high price.
low (float) : The input series for the low price.
open (float) : The input series for the open price.
startLongTrade (bool) : The series of conditions that indicate the start of a long trade.
endLongTrade (bool) : The series of conditions that indicate the end of a long trade.
startShortTrade (bool) : The series of conditions that indicate the start of a short trade.
endShortTrade (bool) : The series of conditions that indicate the end of a short trade.
isEarlySignalFlip (bool) : Whether or not the signal flip is early.
maxBarsBackIndex (int) : The maximum number of bars to go back in the backtest.
thisBarIndex (int) : The current bar index.
src (float) : The source series.
useWorstCase (bool) : Whether to use the worst case scenario for the backtest.
Returns: A tuple containing backtest values
init_table()
init_table()
Returns: tbl The backtest results.
update_table(tbl, tradeStatsHeader, totalTrades, totalWins, totalLosses, winLossRatio, winrate, earlySignalFlips)
update_table(tbl, tradeStats)
Parameters:
tbl (table) : The backtest results table.
tradeStatsHeader (string) : The trade stats header.
totalTrades (float) : The total number of trades.
totalWins (float) : The total number of wins.
totalLosses (float) : The total number of losses.
winLossRatio (float) : The win loss ratio.
winrate (float) : The winrate.
earlySignalFlips (float) : The total number of early signal flips.
Returns: Updated backtest results table.
Ultimate Multi-Asset Correlation System by able eiei Ultimate Multi-Asset Correlation System - User Guide
Overview
This advanced TradingView indicator combines WaveTrend oscillator analysis with comprehensive multi-asset correlation tracking. It helps traders understand market relationships, identify regime changes, and spot high-probability trading opportunities across different asset classes.
Key Features
1. WaveTrend Oscillator
Main Signal Lines: WT1 (blue) and WT2 (red) plot momentum and its moving average
Overbought/Oversold Zones: Default levels at +60/-60
Cross Signals:
🟢 Bullish: WT1 crosses above WT2 in oversold territory
🔴 Bearish: WT1 crosses below WT2 in overbought territory
Higher Timeframe (HTF) Analysis: Shows WT1 from 4H, Daily, and Weekly timeframes for trend confirmation
2. Multi-Asset Correlation Tracking
Monitors relationships between:
Major Assets: Gold (XAUUSD), Dollar Index (DXY), US 10-Year Yield, S&P 500
Crypto Assets: Bitcoin, Ethereum, Solana, BNB
Cross-Asset Analysis: Correlation between traditional markets and crypto
3. Market Regime Detection
Automatically identifies market conditions:
Risk-On: High correlation + positive sentiment (🟢 Green background)
Risk-Off: High correlation + negative sentiment (🔴 Red background)
Crypto-Risk-On: Strong crypto correlations (🟠 Orange background)
Low-Correlation: Divergent market behavior (⚪ Gray background)
Neutral: Mixed signals (🟡 Yellow background)
How to Use
Basic Setup
Add to Chart: Apply the indicator to any chart (works on all timeframes)
Choose Display Mode (Display Options):
All: Shows everything (recommended for comprehensive analysis)
WaveTrend Only: Focus on momentum signals
Correlation Only: View market relationships
Heatmap Only: Simplified correlation view
Enable Asset Groups:
✅ Major Assets: Traditional markets (stocks, bonds, commodities)
✅ Crypto Assets: Digital currencies
Mix and match based on your trading focus
Reading the Charts
WaveTrend Section (Bottom Panel)
Above 0 = Bullish momentum
Below 0 = Bearish momentum
Above +60 = Overbought (potential reversal)
Below -60 = Oversold (potential bounce)
Lighter lines = Higher timeframe trends
Correlation Histogram (Colored Bars)
Blue bars: Major asset correlations
Orange bars: Crypto correlations
Purple bars: Cross-asset correlations
Bar height: Correlation strength (-50 to +50 scale)
Background Color
Intensity reflects correlation strength
Color shows market regime
Dashboard Elements
🎯 Market Regime Analysis (Top Left)
Current Regime: Overall market condition
Average Correlation: Strength of relationships (0-1 scale)
Risk Sentiment: -100% (risk-off) to +100% (risk-on)
HTF Alignment: Multi-timeframe trend agreement
Signal Quality: Confidence level for current signals
📊 Correlation Matrix (Top Right)
Shows correlation values between asset pairs:
1.00: Perfect positive correlation
0.75+: Strong correlation (🟢 Green)
0.50+: Medium correlation (🟡 Yellow)
0.25+: Weak correlation (🟠 Orange)
Below 0.25: Negative/no correlation (🔴 Red)
🔥 Correlation Heatmap (Bottom Right)
Visual matrix showing:
Gold vs. DXY, BTC, ETH
DXY vs. BTC, ETH
BTC vs. ETH
Color-coded strength
📈 Performance Tracker (Bottom Left)
Tracks individual asset momentum:
WT1 Values: Current momentum reading
Status: OB (overbought) / OS (oversold) / Normal
Trading Strategies
1. High-Probability Trend Following
✅ Entry Conditions:
WaveTrend bullish/bearish cross
HTF Alignment matches signal direction
Signal Quality > 70%
Correlation supports direction
2. Regime Change Trading
🎯 Watch for regime shifts:
Risk-Off → Risk-On = Consider long positions
High correlation → Low correlation = Reduce position size
Crypto-Risk-On = Focus on crypto longs
3. Divergence Trading
🔍 Look for:
Strong correlation breakdown = Potential volatility
Cross-asset correlation surge = Follow the leader
Volume-price correlation extremes = Trend confirmation
4. Overbought/Oversold Reversals
⚡ Trade reversals when:
WT crosses in extreme zones (-60/+60)
HTF alignment shows opposite trend weakening
Correlation confirms mean reversion setup
Customization Tips
Fine-Tuning Parameters
WaveTrend Core:
Channel Length (10): Lower = more sensitive, Higher = smoother
Average Length (21): Adjust for your timeframe
Correlation Settings:
Length (50): Longer = more stable, Shorter = more responsive
Smoothing (5): Reduce noise in correlation readings
Market Regime:
Risk-On Threshold (0.6): Lower = earlier regime signals
High Correlation Threshold (0.75): Adjust sensitivity
Custom Asset Selection
Replace default symbols with your preferred markets:
Major Assets: Any forex, indices, bonds
Crypto: Any digital currencies
Must use correct exchange prefix (e.g., BINANCE:BTCUSDT)
Alert System
Enable "Advanced Alerts" to receive notifications for:
✅ Market regime changes
✅ Correlation breakdowns/surges
✅ Strong signals with high correlation
✅ Extreme volume-price correlation
✅ Complete HTF alignment
Correlation Interpretation Guide
ValueMeaningTrading Implication+0.75 to +1.0Strong positiveAssets move together+0.5 to +0.75Moderate positiveGenerally aligned+0.25 to +0.5Weak positiveLoose relationship-0.25 to +0.25No correlationIndependent movements-0.5 to -0.25Weak negativeSlight inverse relationship-0.75 to -0.5Moderate negativeTend to move opposite-1.0 to -0.75Strong negativeStrongly inversely correlated
Best Practices
Use Multiple Timeframes: Check HTF alignment before trading
Confirm with Correlation: Strong signals work best with supportive correlations
Watch Regime Changes: Adjust strategy based on market conditions
Volume Matters: Enable volume-price correlation for confirmation
Quality Over Quantity: Trade only high-quality setups (>70% signal quality)
Common Patterns to Watch
🔵 Risk-On Environment:
Gold-BTC positive correlation
DXY negative correlation with risk assets
High crypto correlations
🔴 Risk-Off Environment:
Flight to safety (Gold up, stocks down)
DXY strength
Correlation breakdowns
🟡 Transition Periods:
Low correlation across assets
Mixed HTF signals
Use caution, reduce position sizes
Technical Notes
Calculation Period: Uses HLC3 (average of high, low, close)
Correlation Window: Rolling correlation over specified length
HTF Data: Accurately calculated using security() function
Performance: Optimized for real-time calculation on all timeframes
Support
For optimal performance:
Use on 15-minute to daily timeframes
Enable only needed asset groups
Adjust correlation length based on trading style
Combine with your existing strategy for confirmation
Enjoy comprehensive multi-asset analysis! 🚀
Cora Combined Suite v1 [JopAlgo]Cora Combined Suite v1 (CCSV1)
This is an 2 in 1 indicator (Overlay & Oscillator) the Cora Combined Suite v1 .
CCSV1 combines a price-pane Overlay for structure/trend with a compact Oscillator for timing/pressure. It’s designed to be clear, beginner-friendly, and largely automatic: you pick a profile (Scalp / Intraday / Swing), choose whether to run as Overlay or Oscillator, and CCSV1 tunes itself in the background.
What’s inside — at a glance
1) Overlay (price pane)
CoRa Wave: a smooth trend line based on a compound-ratio WMA (CRWMA).
Green when the slope rises (bull bias), Red when it falls (bear bias).
Asymmetric ATR Cloud around the CoRa Wave
Width expands more up when buyer pressure dominates and more down when seller pressure dominates.
Fill is intentionally light, so candlesticks remain readable.
Chop Guard (Range-Lock Gate)
When the cloud stays very narrow versus ATR (classic “dead water”), pullback alerts are muted to avoid noise.
Visuals don’t change—only the alerting logic goes quiet.
Typical Overlay reads
Trend: Follow the CoRa color; green favors long setups, red favors shorts.
Value: Pullbacks into/through the cloud in trend direction are higher-quality than chasing breaks far outside it.
Dominance: A visibly asymmetric cloud hints which side is funding the move (buyers vs sellers).
2) Oscillator (subpane or inline preview)
Stretch-Z (columns): how far price is from the CoRa mean (mean-reversion context), clipped to ±clip.
Near 0 = equilibrium; > +2 / < −2 = stretched/extended.
Slope-Z (line): z-score of CoRa’s slope (momentum of the trend line).
Crossing 0 upward = potential bullish impulse; downward = potential bearish impulse.
VPO (stepline): a normalized Volume-Pressure read (positive = buyers funding, negative = sellers).
Rendered as a clean stepline to emphasize state changes.
Event Bands ±2 (subpane): thin reference lines to spot extension/exhaustion zones fast.
Floor/Ceiling lines (optional): quiet boundaries so the panel doesn’t feel “bottomless.”
Inline vs Subpane
Inline (overlay): the oscillator auto-anchors and scales beneath price, so it never crushes the price scale.
Subpane (raw): move to a new pane for the classic ±clip view (with ±2 bands). Recommended for systematic use.
Why traders like it
Two in one: Structure on the chart, timing in the panel—built to complement each other.
Retail-first automation: Choose Scalp / Intraday / Swing and let CCSV1 auto-tune lengths, clips, and pressure windows.
Robust statistics: On fast, spiky markets/timeframes, it prefers outlier-resistant math automatically for steadier signals.
Optional HTF gate: You can require higher-timeframe agreement for oscillator alerts without changing visuals.
Quick start (simple playbook)
Run As
Overlay for structure: assess trend direction, where value is (the cloud), and whether chop guard is active.
Oscillator for timing: move to a subpane to see Stretch-Z, Slope-Z, VPO, and ±2 bands clearly.
Profile
Scalp (1–5m), Intraday (15–60m), or Swing (4H–1D). CCSV1 adjusts length/clip/pressure windows accordingly.
Overlay entries
Trade with CoRa color.
Prefer pullbacks into/through the cloud (trend direction).
If chop guard is active, wait; let the market “breathe” before engaging.
Oscillator timing
Look for Funded Flips: Slope-Z crossing 0 in the direction of VPO (i.e., momentum + funded pressure).
Use ±2 bands to manage risk: stretched conditions can stall or revert—better to scale or wait for a clean reset.
Optional HTF gate
Enable to green-light only those oscillator alerts that align with your chosen higher timeframe.
What each signal means (plain language)
CoRa turns green/red (Overlay): trend bias shift on your chart.
Cloud width tilts asymmetrically: one side (buyers/sellers) is dominating; extensions on that side are more likely.
Stretch-Z near 0: fair value around CoRa; pullback timing zone.
Stretch-Z > +2 / < −2: extended; watch for slowing momentum or scale decisions.
Slope-Z cross up/down: new impulse starting; combine with VPO sign to avoid unfunded crosses.
VPO positive/negative: net buying/selling pressure funding the move.
Alerts included
Overlay
Pullback Long OK
Pullback Short OK
Oscillator
Funded Flip Up / Funded Flip Down (Slope-Z crosses 0 with VPO agreement)
Pullback Long Ready / Pullback Short Ready (near equilibrium with aligned momentum and pressure)
Exhaustion Risk (Long/Short) (Stretch-Z beyond ±2 with weakening momentum or pressure)
Tip: Keep chart alerts concise and use strategy rules (TP/SL/filters) in your trade plan.
Best practices
One glance workflow
Read Overlay for direction + value.
Use Oscillator for trigger + confirmation.
Pairing
Combine with S/R or your preferred execution framework (e.g., your JopAlgo setups).
The suite is neutral: it won’t force trades; it highlights context and quality.
Markets
Works on crypto, indices, FX, and commodities.
Where real volume is available, VPO is strongest; on synthetic volume, treat VPO as a soft filter.
Timeframes
Use the Profile preset closest to your style; feel free to fine-tune later.
For multi-TF trading, enable the HTF gate on the oscillator alerts only.
Inputs you’ll actually use (the rest can stay on Auto)
Run As: Overlay or Oscillator.
Profile: Scalp / Intraday / Swing.
Oscillator Render: “Subpane (raw)” for a classic panel; “Inline (overlay)” only for a quick preview.
HTF gate (optional): require higher-timeframe Slope-Z agreement for oscillator alerts.
Everything else ships with sensible defaults and auto-logic.
Limitations & tips
Not a strategy: CCSV1 is a decision support tool; you still need your entry/exit rules and risk management.
Non-repainting design: Signals finalize on bar close; intrabar graphics can adjust during the bar (Pine standard).
Very flat sessions: If price and volume are extremely quiet, expect fewer alerts; that restraint is intentional.
Who is this for?
Beginners who want one clean overlay for structure and one simple oscillator for timing—without wrestling settings.
Intermediates seeking a coherent trend/pressure framework with HTF confirmation.
Advanced users who appreciate robust stats and clean engineering behind the visuals.
Disclaimer: Educational purposes only. Not financial advice. Trading involves risk. Use at your own discretion.
WT + Stoch RSI Reversal Combo📊MR.Z RSI : WT + Stochastic RSI Reversal Combo
This custom indicator combines WaveTrend oscillator and Stochastic RSI to detect high-confidence market reversal points, filtering signals so they only appear when both indicators align.
🔍 Core Components:
✅ WaveTrend Oscillator
Based on smoothed deviation from EMA (similar to TCI logic)
Plots:
WT1 (main line)
WT2 (signal line = SMA of WT1)
Uses overbought/oversold thresholds (default: ±53) to filter signals
✅ Stochastic RSI
Momentum oscillator based on RSI's stochastic value
Plots:
%K: smoothed Stoch of RSI
%D: smoothed version of %K
Adjustable oversold/overbought thresholds (default: 20/80)
🔁 Combined Reversal Signal Logic:
🔼 Buy Signal
WT1 crosses above WT2 below WT oversold level (e.g., -53)
%K crosses above %D below Stoch RSI oversold level (e.g., 20)
🔽 Sell Signal
WT1 crosses below WT2 above WT overbought level (e.g., 53)
%K crosses below %D above Stoch RSI overbought level (e.g., 80)
🔔 Signals are only plotted and alerted if both conditions are true.
📌 Features:
Toggle on/off:
WaveTrend lines and histogram
Stochastic RSI
Combined Buy/Sell signals
Horizontal reference lines (±100, OB/OS)
Fully customizable smoothing lengths and thresholds
Signal plots:
✅ Green up-triangle = Combo Buy
✅ Red down-triangle = Combo Sell
Optional: Circle/cross markers for WT-only and Stoch-only signals
🔔 Built-in alerts for Buy/Sell signals
📈 Use Cases:
Reversal Trading: Wait for both indicators to confirm momentum shift
Entry Filter: Use in combination with trend indicators (like EMA)
Scalping or Swing: Works on intraday and higher timeframes
Quantum Dip Hunter | AlphaNattQuantum Dip Hunter | AlphaNatt
🎯 Overview
The Quantum Dip Hunter is an advanced technical indicator designed to identify high-probability buying opportunities when price temporarily dips below dynamic support levels. Unlike simple oversold indicators, this system uses a sophisticated quality scoring algorithm to filter out low-quality dips and highlight only the best entry points.
"Buy the dip" - but only the right dips. Not all dips are created equal.
⚡ Key Features
5 Detection Methods: Choose from Dynamic, Fibonacci, Volatility, Volume Profile, or Hybrid modes
Quality Scoring System: Each dip is scored from 0-100% based on multiple factors
Smart Filtering: Only signals above your quality threshold are displayed
Visual Effects: Glow, Pulse, and Wave animations for the support line
Risk Management: Automatic stop-loss and take-profit calculations
Real-time Statistics: Live dashboard showing current market conditions
📊 How It Works
The indicator calculates a dynamic support line using your selected method
When price dips below this line, it evaluates the dip quality
Quality score is calculated based on: trend alignment (30%), volume (20%), RSI (20%), momentum (15%), and dip depth (15%)
If the score exceeds your minimum threshold, a buy signal arrow appears
Stop-loss and take-profit levels are automatically calculated and displayed
🚀 Detection Methods Explained
Dynamic Support
Adapts to recent price action
Best for: Trending markets
Uses ATR-adjusted lowest points
Fibonacci Support
Based on 61.8% and 78.6% retracement levels
Best for: Pullbacks in strong trends
Automatically switches between fib levels
Volatility Support
Uses Bollinger Band methodology
Best for: Range-bound markets
Adapts to changing volatility
Volume Profile Support
Finds high-volume price levels
Best for: Identifying institutional support
Updates dynamically as volume accumulates
Hybrid Mode
Combines all methods for maximum accuracy
Best for: All market conditions
Takes the most conservative support level
⚙️ Key Settings
Dip Detection Engine
Detection Method: Choose your preferred support calculation
Sensitivity: Higher = more sensitive to price movements (0.5-3.0)
Lookback Period: How far back to analyze (20-200 bars)
Dip Depth %: Minimum dip size to consider (0.5-10%)
Quality Filters
Trend Filter: Only buy dips in uptrends when enabled
Minimum Dip Score: Quality threshold for signals (0-100%)
Trend Strength: Required trend score when filter is on
📈 Trading Strategies
Conservative Approach
Use Dynamic method with Trend Filter ON
Set minimum score to 80%
Risk:Reward ratio of 2:1 or higher
Best for: Swing trading
Aggressive Approach
Use Hybrid method with Trend Filter OFF
Set minimum score to 60%
Risk:Reward ratio of 1:1
Best for: Day trading
Scalping Setup
Use Volatility method
Set sensitivity to 2.0+
Focus on Target 1 only
Best for: Quick trades
🎨 Visual Customization
Color Themes:
Neon: Bright cyan/magenta for dark backgrounds
Ocean: Cool blues and teals
Solar: Warm yellows and oranges
Matrix: Classic green terminal look
Gradient: Smooth color transitions
Line Styles:
Solid: Clean, simple line
Glow: Adds depth with glow effect
Pulse: Animated breathing effect
Wave: Oscillating wave pattern
💡 Pro Tips
Start with the Trend Filter ON to avoid catching falling knives
Higher quality scores (80%+) have better win rates but fewer signals
Use Volume Profile method near major support/resistance levels
Combine with your favorite momentum indicator for confirmation
The pulse animation can help draw attention to key levels
⚠️ Important Notes
This indicator identifies potential entries, not guaranteed profits
Always use proper risk management
Works best on liquid instruments with good volume
Backtest your settings before live trading
Not financial advice - use at your own risk
📊 Statistics Panel
The live statistics panel shows:
Current detection method
Support level value
Trend direction
Distance from support
Current signal status
🤝 Support
Created by AlphaNatt
For questions or suggestions, please comment below!
Happy dip hunting! 🎯
Not financial advice, always do your own research
Color█ OVERVIEW
This library is a Pine Script® programming tool for advanced color processing. It provides a comprehensive set of functions for specifying and analyzing colors in various color spaces, mixing and manipulating colors, calculating custom gradients and schemes, detecting contrast, and converting colors to or from hexadecimal strings.
█ CONCEPTS
Color
Color refers to how we interpret light of different wavelengths in the visible spectrum . The colors we see from an object represent the light wavelengths that it reflects, emits, or transmits toward our eyes. Some colors, such as blue and red, correspond directly to parts of the spectrum. Others, such as magenta, arise from a combination of wavelengths to which our minds assign a single color.
The human interpretation of color lends itself to many uses in our world. In the context of financial data analysis, the effective use of color helps transform raw data into insights that users can understand at a glance. For example, colors can categorize series, signal market conditions and sessions, and emphasize patterns or relationships in data.
Color models and spaces
A color model is a general mathematical framework that describes colors using sets of numbers. A color space is an implementation of a specific color model that defines an exact range (gamut) of reproducible colors based on a set of primary colors , a reference white point , and sometimes additional parameters such as viewing conditions.
There are numerous different color spaces — each describing the characteristics of color in unique ways. Different spaces carry different advantages, depending on the application. Below, we provide a brief overview of the concepts underlying the color spaces supported by this library.
RGB
RGB is one of the most well-known color models. It represents color as an additive mixture of three primary colors — red, green, and blue lights — with various intensities. Each cone cell in the human eye responds more strongly to one of the three primaries, and the average person interprets the combination of these lights as a distinct color (e.g., pure red + pure green = yellow).
The sRGB color space is the most common RGB implementation. Developed by HP and Microsoft in the 1990s, sRGB provided a standardized baseline for representing color across CRT monitors of the era, which produced brightness levels that did not increase linearly with the input signal. To match displays and optimize brightness encoding for human sensitivity, sRGB applied a nonlinear transformation to linear RGB signals, often referred to as gamma correction . The result produced more visually pleasing outputs while maintaining a simple encoding. As such, sRGB quickly became a standard for digital color representation across devices and the web. To this day, it remains the default color space for most web-based content.
TradingView charts and Pine Script `color.*` built-ins process color data in sRGB. The red, green, and blue channels range from 0 to 255, where 0 represents no intensity, and 255 represents maximum intensity. Each combination of red, green, and blue values represents a distinct color, resulting in a total of 16,777,216 displayable colors.
CIE XYZ and xyY
The XYZ color space, developed by the International Commission on Illumination (CIE) in 1931, aims to describe all color sensations that a typical human can perceive. It is a cornerstone of color science, forming the basis for many color spaces used today. XYZ, and the derived xyY space, provide a universal representation of color that is not tethered to a particular display. Many widely used color spaces, including sRGB, are defined relative to XYZ or derived from it.
The CIE built the color space based on a series of experiments in which people matched colors they perceived from mixtures of lights. From these experiments, the CIE developed color-matching functions to calculate three components — X, Y, and Z — which together aim to describe a standard observer's response to visible light. X represents a weighted response to light across the color spectrum, with the highest contribution from long wavelengths (e.g., red). Y represents a weighted response to medium wavelengths (e.g., green), and it corresponds to a color's relative luminance (i.e., brightness). Z represents a weighted response to short wavelengths (e.g., blue).
From the XYZ space, the CIE developed the xyY chromaticity space, which separates a color's chromaticity (hue and colorfulness) from luminance. The CIE used this space to define the CIE 1931 chromaticity diagram , which represents the full range of visible colors at a given luminance. In color science and lighting design, xyY is a common means for specifying colors and visualizing the supported ranges of other color spaces.
CIELAB and Oklab
The CIELAB (L*a*b*) color space, derived from XYZ by the CIE in 1976, expresses colors based on opponent process theory. The L* component represents perceived lightness, and the a* and b* components represent the balance between opposing unique colors. The a* value specifies the balance between green and red , and the b* value specifies the balance between blue and yellow .
The primary intention of CIELAB was to provide a perceptually uniform color space, where fixed-size steps through the space correspond to uniform perceived changes in color. Although relatively uniform, the color space has been found to exhibit some non-uniformities, particularly in the blue part of the color spectrum. Regardless, modern applications often use CIELAB to estimate perceived color differences and calculate smooth color gradients.
In 2020, a new LAB-oriented color space, Oklab , was introduced by Björn Ottosson as an attempt to rectify the non-uniformities of other perceptual color spaces. Similar to CIELAB, the L value in Oklab represents perceived lightness, and the a and b values represent the balance between opposing unique colors. Oklab has gained widespread adoption as a perceptual space for color processing, with support in the latest CSS Color specifications and many software applications.
Cylindrical models
A cylindrical-coordinate model transforms an underlying color model, such as RGB or LAB, into an alternative expression of color information that is often more intuitive for the average person to use and understand.
Instead of a mixture of primary colors or opponent pairs, these models represent color as a hue angle on a color wheel , with additional parameters that describe other qualities such as lightness and colorfulness (a general term for concepts like chroma and saturation). In cylindrical-coordinate spaces, users can select a color and modify its lightness or other qualities without altering the hue.
The three most common RGB-based models are HSL (Hue, Saturation, Lightness), HSV (Hue, Saturation, Value), and HWB (Hue, Whiteness, Blackness). All three define hue angles in the same way, but they define colorfulness and lightness differently. Although they are not perceptually uniform, HSL and HSV are commonplace in color pickers and gradients.
For CIELAB and Oklab, the cylindrical-coordinate versions are CIELCh and Oklch , which express color in terms of perceived lightness, chroma, and hue. They offer perceptually uniform alternatives to RGB-based models. These spaces create unique color wheels, and they have more strict definitions of lightness and colorfulness. Oklch is particularly well-suited for generating smooth, perceptual color gradients.
Alpha and transparency
Many color encoding schemes include an alpha channel, representing opacity . Alpha does not help define a color in a color space; it determines how a color interacts with other colors in the display. Opaque colors appear with full intensity on the screen, whereas translucent (semi-opaque) colors blend into the background. Colors with zero opacity are invisible.
In Pine Script, there are two ways to specify a color's alpha:
• Using the `transp` parameter of the built-in `color.*()` functions. The specified value represents transparency (the opposite of opacity), which the functions translate into an alpha value.
• Using eight-digit hexadecimal color codes. The last two digits in the code represent alpha directly.
A process called alpha compositing simulates translucent colors in a display. It creates a single displayed color by mixing the RGB channels of two colors (foreground and background) based on alpha values, giving the illusion of a semi-opaque color placed over another color. For example, a red color with 80% transparency on a black background produces a dark shade of red.
Hexadecimal color codes
A hexadecimal color code (hex code) is a compact representation of an RGB color. It encodes a color's red, green, and blue values into a sequence of hexadecimal ( base-16 ) digits. The digits are numerals ranging from `0` to `9` or letters from `a` (for 10) to `f` (for 15). Each set of two digits represents an RGB channel ranging from `00` (for 0) to `ff` (for 255).
Pine scripts can natively define colors using hex codes in the format `#rrggbbaa`. The first set of two digits represents red, the second represents green, and the third represents blue. The fourth set represents alpha . If unspecified, the value is `ff` (fully opaque). For example, `#ff8b00` and `#ff8b00ff` represent an opaque orange color. The code `#ff8b0033` represents the same color with 80% transparency.
Gradients
A color gradient maps colors to numbers over a given range. Most color gradients represent a continuous path in a specific color space, where each number corresponds to a mix between a starting color and a stopping color. In Pine, coders often use gradients to visualize value intensities in plots and heatmaps, or to add visual depth to fills.
The behavior of a color gradient depends on the mixing method and the chosen color space. Gradients in sRGB usually mix along a straight line between the red, green, and blue coordinates of two colors. In cylindrical spaces such as HSL, a gradient often rotates the hue angle through the color wheel, resulting in more pronounced color transitions.
Color schemes
A color scheme refers to a set of colors for use in aesthetic or functional design. A color scheme usually consists of just a few distinct colors. However, depending on the purpose, a scheme can include many colors.
A user might choose palettes for a color scheme arbitrarily, or generate them algorithmically. There are many techniques for calculating color schemes. A few simple, practical methods are:
• Sampling a set of distinct colors from a color gradient.
• Generating monochromatic variants of a color (i.e., tints, tones, or shades with matching hues).
• Computing color harmonies — such as complements, analogous colors, triads, and tetrads — from a base color.
This library includes functions for all three of these techniques. See below for details.
█ CALCULATIONS AND USE
Hex string conversion
The `getHexString()` function returns a string containing the eight-digit hexadecimal code corresponding to a "color" value or set of sRGB and transparency values. For example, `getHexString(255, 0, 0)` returns the string `"#ff0000ff"`, and `getHexString(color.new(color.red, 80))` returns `"#f2364533"`.
The `hexStringToColor()` function returns the "color" value represented by a string containing a six- or eight-digit hex code. The `hexStringToRGB()` function returns a tuple containing the sRGB and transparency values. For example, `hexStringToColor("#f23645")` returns the same value as color.red .
Programmers can use these functions to parse colors from "string" inputs, perform string-based color calculations, and inspect color data in text outputs such as Pine Logs and tables.
Color space conversion
All other `get*()` functions convert a "color" value or set of sRGB channels into coordinates in a specific color space, with transparency information included. For example, the tuple returned by `getHSL()` includes the color's hue, saturation, lightness, and transparency values.
To convert data from a color space back to colors or sRGB and transparency values, use the corresponding `*toColor()` or `*toRGB()` functions for that space (e.g., `hslToColor()` and `hslToRGB()`).
Programmers can use these conversion functions to process inputs that define colors in different ways, perform advanced color manipulation, design custom gradients, and more.
The color spaces this library supports are:
• sRGB
• Linear RGB (RGB without gamma correction)
• HSL, HSV, and HWB
• CIE XYZ and xyY
• CIELAB and CIELCh
• Oklab and Oklch
Contrast-based calculations
Contrast refers to the difference in luminance or color that makes one color visible against another. This library features two functions for calculating luminance-based contrast and detecting themes.
The `contrastRatio()` function calculates the contrast between two "color" values based on their relative luminance (the Y value from CIE XYZ) using the formula from version 2 of the Web Content Accessibility Guidelines (WCAG) . This function is useful for identifying colors that provide a sufficient brightness difference for legibility.
The `isLightTheme()` function determines whether a specified background color represents a light theme based on its contrast with black and white. Programmers can use this function to define conditional logic that responds differently to light and dark themes.
Color manipulation and harmonies
The `negative()` function calculates the negative (i.e., inverse) of a color by reversing the color's coordinates in either the sRGB or linear RGB color space. This function is useful for calculating high-contrast colors.
The `grayscale()` function calculates a grayscale form of a specified color with the same relative luminance.
The functions `complement()`, `splitComplements()`, `analogousColors()`, `triadicColors()`, `tetradicColors()`, `pentadicColors()`, and `hexadicColors()` calculate color harmonies from a specified source color within a given color space (HSL, CIELCh, or Oklch). The returned harmonious colors represent specific hue rotations around a color wheel formed by the chosen space, with the same defined lightness, saturation or chroma, and transparency.
Color mixing and gradient creation
The `add()` function simulates combining lights of two different colors by additively mixing their linear red, green, and blue components, ignoring transparency by default. Users can calculate a transparency-weighted mixture by setting the `transpWeight` argument to `true`.
The `overlay()` function estimates the color displayed on a TradingView chart when a specific foreground color is over a background color. This function aids in simulating stacked colors and analyzing the effects of transparency.
The `fromGradient()` and `fromMultiStepGradient()` functions calculate colors from gradients in any of the supported color spaces, providing flexible alternatives to the RGB-based color.from_gradient() function. The `fromGradient()` function calculates a color from a single gradient. The `fromMultiStepGradient()` function calculates a color from a piecewise gradient with multiple defined steps. Gradients are useful for heatmaps and for coloring plots or drawings based on value intensities.
Scheme creation
Three functions in this library calculate palettes for custom color schemes. Scripts can use these functions to create responsive color schemes that adjust to calculated values and user inputs.
The `gradientPalette()` function creates an array of colors by sampling a specified number of colors along a gradient from a base color to a target color, in fixed-size steps.
The `monoPalette()` function creates an array containing monochromatic variants (tints, tones, or shades) of a specified base color. Whether the function mixes the color toward white (for tints), a form of gray (for tones), or black (for shades) depends on the `grayLuminance` value. If unspecified, the function automatically chooses the mix behavior with the highest contrast.
The `harmonyPalette()` function creates a matrix of colors. The first column contains the base color and specified harmonies, e.g., triadic colors. The columns that follow contain tints, tones, or shades of the harmonic colors for additional color choices, similar to `monoPalette()`.
█ EXAMPLE CODE
The example code at the end of the script generates and visualizes color schemes by processing user inputs. The code builds the scheme's palette based on the "Base color" input and the additional inputs in the "Settings/Inputs" tab:
• "Palette type" specifies whether the palette uses a custom gradient, monochromatic base color variants, or color harmonies with monochromatic variants.
• "Target color" sets the top color for the "Gradient" palette type.
• The "Gray luminance" inputs determine variation behavior for "Monochromatic" and "Harmony" palette types. If "Auto" is selected, the palette mixes the base color toward white or black based on its brightness. Otherwise, it mixes the color toward the grayscale color with the specified relative luminance (from 0 to 1).
• "Harmony type" specifies the color harmony used in the palette. Each row in the palette corresponds to one of the harmonious colors, starting with the base color.
The code creates a table on the first bar to display the collection of calculated colors. Each cell in the table shows the color's `getHexString()` value in a tooltip for simple inspection.
Look first. Then leap.
█ EXPORTED FUNCTIONS
Below is a complete list of the functions and overloads exported by this library.
getRGB(source)
Retrieves the sRGB red, green, blue, and transparency components of a "color" value.
getHexString(r, g, b, t)
(Overload 1 of 2) Converts a set of sRGB channel values to a string representing the corresponding color's hexadecimal form.
getHexString(source)
(Overload 2 of 2) Converts a "color" value to a string representing the sRGB color's hexadecimal form.
hexStringToRGB(source)
Converts a string representing an sRGB color's hexadecimal form to a set of decimal channel values.
hexStringToColor(source)
Converts a string representing an sRGB color's hexadecimal form to a "color" value.
getLRGB(r, g, b, t)
(Overload 1 of 2) Converts a set of sRGB channel values to a set of linear RGB values with specified transparency information.
getLRGB(source)
(Overload 2 of 2) Retrieves linear RGB channel values and transparency information from a "color" value.
lrgbToRGB(lr, lg, lb, t)
Converts a set of linear RGB channel values to a set of sRGB values with specified transparency information.
lrgbToColor(lr, lg, lb, t)
Converts a set of linear RGB channel values and transparency information to a "color" value.
getHSL(r, g, b, t)
(Overload 1 of 2) Converts a set of sRGB channels to a set of HSL values with specified transparency information.
getHSL(source)
(Overload 2 of 2) Retrieves HSL channel values and transparency information from a "color" value.
hslToRGB(h, s, l, t)
Converts a set of HSL channel values to a set of sRGB values with specified transparency information.
hslToColor(h, s, l, t)
Converts a set of HSL channel values and transparency information to a "color" value.
getHSV(r, g, b, t)
(Overload 1 of 2) Converts a set of sRGB channels to a set of HSV values with specified transparency information.
getHSV(source)
(Overload 2 of 2) Retrieves HSV channel values and transparency information from a "color" value.
hsvToRGB(h, s, v, t)
Converts a set of HSV channel values to a set of sRGB values with specified transparency information.
hsvToColor(h, s, v, t)
Converts a set of HSV channel values and transparency information to a "color" value.
getHWB(r, g, b, t)
(Overload 1 of 2) Converts a set of sRGB channels to a set of HWB values with specified transparency information.
getHWB(source)
(Overload 2 of 2) Retrieves HWB channel values and transparency information from a "color" value.
hwbToRGB(h, w, b, t)
Converts a set of HWB channel values to a set of sRGB values with specified transparency information.
hwbToColor(h, w, b, t)
Converts a set of HWB channel values and transparency information to a "color" value.
getXYZ(r, g, b, t)
(Overload 1 of 2) Converts a set of sRGB channels to a set of XYZ values with specified transparency information.
getXYZ(source)
(Overload 2 of 2) Retrieves XYZ channel values and transparency information from a "color" value.
xyzToRGB(x, y, z, t)
Converts a set of XYZ channel values to a set of sRGB values with specified transparency information
xyzToColor(x, y, z, t)
Converts a set of XYZ channel values and transparency information to a "color" value.
getXYY(r, g, b, t)
(Overload 1 of 2) Converts a set of sRGB channels to a set of xyY values with specified transparency information.
getXYY(source)
(Overload 2 of 2) Retrieves xyY channel values and transparency information from a "color" value.
xyyToRGB(xc, yc, y, t)
Converts a set of xyY channel values to a set of sRGB values with specified transparency information.
xyyToColor(xc, yc, y, t)
Converts a set of xyY channel values and transparency information to a "color" value.
getLAB(r, g, b, t)
(Overload 1 of 2) Converts a set of sRGB channels to a set of CIELAB values with specified transparency information.
getLAB(source)
(Overload 2 of 2) Retrieves CIELAB channel values and transparency information from a "color" value.
labToRGB(l, a, b, t)
Converts a set of CIELAB channel values to a set of sRGB values with specified transparency information.
labToColor(l, a, b, t)
Converts a set of CIELAB channel values and transparency information to a "color" value.
getOKLAB(r, g, b, t)
(Overload 1 of 2) Converts a set of sRGB channels to a set of Oklab values with specified transparency information.
getOKLAB(source)
(Overload 2 of 2) Retrieves Oklab channel values and transparency information from a "color" value.
oklabToRGB(l, a, b, t)
Converts a set of Oklab channel values to a set of sRGB values with specified transparency information.
oklabToColor(l, a, b, t)
Converts a set of Oklab channel values and transparency information to a "color" value.
getLCH(r, g, b, t)
(Overload 1 of 2) Converts a set of sRGB channels to a set of CIELCh values with specified transparency information.
getLCH(source)
(Overload 2 of 2) Retrieves CIELCh channel values and transparency information from a "color" value.
lchToRGB(l, c, h, t)
Converts a set of CIELCh channel values to a set of sRGB values with specified transparency information.
lchToColor(l, c, h, t)
Converts a set of CIELCh channel values and transparency information to a "color" value.
getOKLCH(r, g, b, t)
(Overload 1 of 2) Converts a set of sRGB channels to a set of Oklch values with specified transparency information.
getOKLCH(source)
(Overload 2 of 2) Retrieves Oklch channel values and transparency information from a "color" value.
oklchToRGB(l, c, h, t)
Converts a set of Oklch channel values to a set of sRGB values with specified transparency information.
oklchToColor(l, c, h, t)
Converts a set of Oklch channel values and transparency information to a "color" value.
contrastRatio(value1, value2)
Calculates the contrast ratio between two colors values based on the formula from version 2 of the Web Content Accessibility Guidelines (WCAG).
isLightTheme(source)
Detects whether a background color represents a light theme or dark theme, based on the amount of contrast between the color and the white and black points.
grayscale(source)
Calculates the grayscale version of a color with the same relative luminance (i.e., brightness).
negative(source, colorSpace)
Calculates the negative (i.e., inverted) form of a specified color.
complement(source, colorSpace)
Calculates the complementary color for a `source` color using a cylindrical color space.
analogousColors(source, colorSpace)
Calculates the analogous colors for a `source` color using a cylindrical color space.
splitComplements(source, colorSpace)
Calculates the split-complementary colors for a `source` color using a cylindrical color space.
triadicColors(source, colorSpace)
Calculates the two triadic colors for a `source` color using a cylindrical color space.
tetradicColors(source, colorSpace, square)
Calculates the three square or rectangular tetradic colors for a `source` color using a cylindrical color space.
pentadicColors(source, colorSpace)
Calculates the four pentadic colors for a `source` color using a cylindrical color space.
hexadicColors(source, colorSpace)
Calculates the five hexadic colors for a `source` color using a cylindrical color space.
add(value1, value2, transpWeight)
Additively mixes two "color" values, with optional transparency weighting.
overlay(fg, bg)
Estimates the resulting color that appears on the chart when placing one color over another.
fromGradient(value, bottomValue, topValue, bottomColor, topColor, colorSpace)
Calculates the gradient color that corresponds to a specific value based on a defined value range and color space.
fromMultiStepGradient(value, steps, colors, colorSpace)
Calculates a multi-step gradient color that corresponds to a specific value based on an array of step points, an array of corresponding colors, and a color space.
gradientPalette(baseColor, stopColor, steps, strength, model)
Generates a palette from a gradient between two base colors.
monoPalette(baseColor, grayLuminance, variations, strength, colorSpace)
Generates a monochromatic palette from a specified base color.
harmonyPalette(baseColor, harmonyType, grayLuminance, variations, strength, colorSpace)
Generates a palette consisting of harmonious base colors and their monochromatic variants.
Topological Market Stress (TMS) - Quantum FabricTopological Market Stress (TMS) - Quantum Fabric
What Stresses The Market?
Topological Market Stress (TMS) represents a revolutionary fusion of algebraic topology and quantum field theory applied to financial markets. Unlike traditional indicators that analyze price movements linearly, TMS examines the underlying topological structure of market data—detecting when the very fabric of market relationships begins to tear, warp, or collapse.
Drawing inspiration from the ethereal beauty of quantum field visualizations and the mathematical elegance of topological spaces, this indicator transforms complex mathematical concepts into an intuitive, visually stunning interface that reveals hidden market dynamics invisible to conventional analysis.
Theoretical Foundation: Topology Meets Markets
Topological Holes in Market Structure
In algebraic topology, a "hole" represents a fundamental structural break—a place where the normal connectivity of space fails. In markets, these topological holes manifest as:
Correlation Breakdown: When traditional price-volume relationships collapse
Volatility Clustering Failure: When volatility patterns lose their predictive power
Microstructure Stress: When market efficiency mechanisms begin to fail
The Mathematics of Market Topology
TMS constructs a topological space from market data using three key components:
1. Correlation Topology
ρ(P,V) = correlation(price, volume, period)
Hole Formation = 1 - |ρ(P,V)|
When price and volume decorrelate, topological holes begin forming.
2. Volatility Clustering Topology
σ(t) = volatility at time t
Clustering = correlation(σ(t), σ(t-1), period)
Breakdown = 1 - |Clustering|
Volatility clustering breakdown indicates structural instability.
3. Market Efficiency Topology
Efficiency = |price - EMA(price)| / ATR
Measures how far price deviates from its efficient trajectory.
Multi-Scale Topological Analysis
Markets exist across multiple temporal scales simultaneously. TMS analyzes topology at three distinct scales:
Micro Scale (3-15 periods): Immediate structural changes, market microstructure stress
Meso Scale (10-50 periods): Trend-level topology, medium-term structural shifts
Macro Scale (50-200 periods): Long-term structural topology, regime-level changes
The final stress metric combines all scales:
Combined Stress = 0.3×Micro + 0.4×Meso + 0.3×Macro
How TMS Works
1. Topological Space Construction
Each market moment is embedded in a multi-dimensional topological space where:
- Price efficiency forms one dimension
- Correlation breakdown forms another
- Volatility clustering breakdown forms the third
2. Hole Detection Algorithm
The indicator continuously scans this topological space for:
Hole Formation: When stress exceeds the formation threshold
Hole Persistence: How long structural breaks maintain
Hole Collapse: Sudden topology restoration (regime shifts)
3. Quantum Visualization Engine
The visualization system translates topological mathematics into intuitive quantum field representations:
Stress Waves: Main line showing topological stress intensity
Quantum Glow: Surrounding field indicating stress energy
Fabric Integrity: Background showing structural health
Multi-Scale Rings: Orbital representations of different timeframes
4. Signal Generation
Stable Topology (✨): Normal market structure, standard trading conditions
Stressed Topology (⚡): Increased structural tension, heightened volatility expected
Topological Collapse (🕳️): Major structural break, regime shift in progress
Critical Stress (🌋): Extreme conditions, maximum caution required
Inputs & Parameters
🕳️ Topological Parameters
Analysis Window (20-200, default: 50)
Primary period for topological analysis
20-30: High-frequency scalping, rapid structure detection
50: Balanced approach, recommended for most markets
100-200: Long-term position trading, major structural shifts only
Hole Formation Threshold (0.1-0.9, default: 0.3)
Sensitivity for detecting topological holes
0.1-0.2: Very sensitive, detects minor structural stress
0.3: Balanced, optimal for most market conditions
0.5-0.9: Conservative, only major structural breaks
Density Calculation Radius (0.1-2.0, default: 0.5)
Radius for local density estimation in topological space
0.1-0.3: Fine-grained analysis, sensitive to local changes
0.5: Standard approach, balanced sensitivity
1.0-2.0: Broad analysis, focuses on major structural features
Collapse Detection (0.5-0.95, default: 0.7)
Threshold for detecting sudden topology restoration
0.5-0.6: Very sensitive to regime changes
0.7: Balanced, reliable collapse detection
0.8-0.95: Conservative, only major regime shifts
📊 Multi-Scale Analysis
Enable Multi-Scale (default: true)
- Analyzes topology across multiple timeframes simultaneously
- Provides deeper insight into market structure at different scales
- Essential for understanding cross-timeframe topology interactions
Micro Scale Period (3-15, default: 5)
Fast scale for immediate topology changes
3-5: Ultra-fast, tick/minute data analysis
5-8: Fast, 5m-15m chart optimization
10-15: Medium-fast, 30m-1H chart focus
Meso Scale Period (10-50, default: 20)
Medium scale for trend topology analysis
10-15: Short trend structures
20-25: Medium trend structures (recommended)
30-50: Long trend structures
Macro Scale Period (50-200, default: 100)
Slow scale for structural topology
50-75: Medium-term structural analysis
100: Long-term structure (recommended)
150-200: Very long-term structural patterns
⚙️ Signal Processing
Smoothing Method (SMA/EMA/RMA/WMA, default: EMA) Method for smoothing stress signals
SMA: Simple average, stable but slower
EMA: Exponential, responsive and recommended
RMA: Running average, very smooth
WMA: Weighted average, balanced approach
Smoothing Period (1-10, default: 3)
Period for signal smoothing
1-2: Minimal smoothing, noisy but fast
3-5: Balanced, recommended for most applications
6-10: Heavy smoothing, slow but very stable
Normalization (Fixed/Adaptive/Rolling, default: Adaptive)
Method for normalizing stress values
Fixed: Static 0-1 range normalization
Adaptive: Dynamic range adjustment (recommended)
Rolling: Rolling window normalization
🎨 Quantum Visualization
Fabric Style Options:
Quantum Field: Flowing energy visualization with smooth gradients
Topological Mesh: Mathematical topology with stepped lines
Phase Space: Dynamical systems view with circular markers
Minimal: Clean, simple display with reduced visual elements
Color Scheme Options:
Quantum Gradient: Deep space blue → Quantum red progression
Thermal: Black → Hot orange thermal imaging style
Spectral: Purple → Gold full spectrum colors
Monochrome: Dark gray → Light gray elegant simplicity
Multi-Scale Rings (default: true)
- Display orbital rings for different time scales
- Visualizes how topology changes across timeframes
- Provides immediate visual feedback on cross-scale dynamics
Glow Intensity (0.0-1.0, default: 0.6)
Controls the quantum glow effect intensity
0.0: No glow, pure line display
0.6: Balanced, recommended setting
1.0: Maximum glow, full quantum field effect
📋 Dashboard & Alerts
Show Dashboard (default: true)
Real-time topology status display
Current market state and trading recommendations
Stress level visualization and fabric integrity status
Show Theory Guide (default: true)
Educational panel explaining topological concepts
Dashboard interpretation guide
Trading strategy recommendations
Enable Alerts (default: true)
Extreme stress detection alerts
Topological collapse notifications
Hole formation and recovery signals
Visual Logic & Interpretation
Main Visualization Elements
Quantum Stress Line
Primary indicator showing topological stress intensity
Color intensity reflects current market state
Line style varies based on selected fabric style
Glow effect indicates stress energy field
Equilibrium Line
Silver line showing average stress level
Reference point for normal market conditions
Helps identify when stress is elevated or suppressed
Upper/Lower Bounds
Red upper bound: High stress threshold
Green lower bound: Low stress threshold
Quantum fabric fill between bounds shows stress field
Multi-Scale Rings
Aqua circles : Micro-scale topology (immediate changes)
Orange circles: Meso-scale topology (trend-level changes)
Provides cross-timeframe topology visualization
Dashboard Information
Topology State Icons:
✨ STABLE: Normal market structure, standard trading conditions
⚡ STRESSED: Increased structural tension, monitor closely
🕳️ COLLAPSE: Major structural break, regime shift occurring
🌋 CRITICAL: Extreme conditions, reduce risk exposure
Stress Bar Visualization:
Visual representation of current stress level (0-100%)
Color-coded based on current topology state
Real-time percentage display
Fabric Integrity Dots:
●●●●● Intact: Strong market structure (0-30% stress)
●●●○○ Stressed: Weakening structure (30-70% stress)
●○○○○ Fractured: Breaking down structure (70-100% stress)
Action Recommendations:
✅ TRADE: Normal conditions, standard strategies apply
⚠️ WATCH: Monitor closely, increased vigilance required
🔄 ADAPT: Change strategy, regime shift in progress
🛑 REDUCE: Lower risk exposure, extreme conditions
Trading Strategies
In Stable Topology (✨ STABLE)
- Normal trading conditions apply
- Use standard technical analysis
- Regular position sizing appropriate
- Both trend-following and mean-reversion strategies viable
In Stressed Topology (⚡ STRESSED)
- Increased volatility expected
- Widen stop losses to account for higher volatility
- Reduce position sizes slightly
- Focus on high-probability setups
- Monitor for potential regime change
During Topological Collapse (🕳️ COLLAPSE)
- Major regime shift in progress
- Adapt strategy immediately to new market character
- Consider closing positions that rely on previous regime
- Wait for new topology to stabilize before major trades
- Opportunity for contrarian plays if collapse is extreme
In Critical Stress (🌋 CRITICAL)
- Extreme market conditions
- Significantly reduce risk exposure
- Avoid new positions until stress subsides
- Focus on capital preservation
- Consider hedging existing positions
Advanced Techniques
Multi-Timeframe Topology Analysis
- Use higher timeframe TMS for regime context
- Use lower timeframe TMS for precise entry timing
- Alignment across timeframes = highest probability trades
Topology Divergence Trading
- Most powerful at regime boundaries
- Price makes new high/low but topology stress decreases
- Early warning of potential reversals
- Combine with key support/resistance levels
Stress Persistence Analysis
- Long periods of stable topology often precede major moves
- Extended stress periods often resolve in regime changes
- Use persistence tracking for position sizing decisions
Originality & Innovation
TMS represents a genuine breakthrough in applying advanced mathematics to market analysis:
True Topological Analysis: Not a simplified proxy but actual topological space construction and hole detection using correlation breakdown, volatility clustering analysis, and market efficiency measurement.
Quantum Aesthetic: Transforms complex topology mathematics into an intuitive, visually stunning interface inspired by quantum field theory visualizations.
Multi-Scale Architecture: Simultaneous analysis across micro, meso, and macro timeframes provides unprecedented insight into market structure dynamics.
Regime Detection: Identifies fundamental market character changes before they become obvious in price action, providing early warning of structural shifts.
Practical Application: Clear, actionable signals derived from advanced mathematical concepts, making theoretical topology accessible to practical traders.
This is not a combination of existing indicators or a cosmetic enhancement of standard tools. It represents a fundamental reimagining of how we measure, visualize, and interpret market dynamics through the lens of algebraic topology and quantum field theory.
Best Practices
Start with defaults: Parameters are optimized for broad market applicability
Match timeframe: Adjust scales based on your trading timeframe
Confirm with price action: TMS shows market character, not direction
Respect topology changes: Reduce risk during regime transitions
Use appropriate strategies: Adapt approach based on current topology state
Monitor persistence: Track how long topology states maintain
Cross-timeframe analysis: Align multiple timeframes for highest probability trades
Alerts Available
Extreme Topological Stress: Market fabric under severe deformation
Topological Collapse Detected: Regime shift in progress
Topological Hole Forming: Market structure breakdown detected
Topology Stabilizing: Market structure recovering to normal
Chart Requirements
Recommended Markets: All liquid markets (forex, stocks, crypto, futures)
Optimal Timeframes: 5m to Daily (adaptable to any timeframe)
Minimum History: 200 bars for proper topology construction
Best Performance: Markets with clear regime characteristics
Academic Foundation
This indicator draws from cutting-edge research in:
- Algebraic topology and persistent homology
- Quantum field theory visualization techniques
- Market microstructure analysis
- Multi-scale dynamical systems theory
- Correlation topology and network analysis
Disclaimer
This indicator is for educational and research purposes only. It does not constitute financial advice or provide direct buy/sell signals. Topological analysis reveals market structure characteristics, not future price direction. Always use proper risk management and combine with your own analysis. Past performance does not guarantee future results.
See markets through the lens of topology. Trade the structure, not the noise.
Bringing advanced mathematics to practical trading through quantum-inspired visualization.
Trade with insight. Trade with structure.
— Dskyz , for DAFE Trading Systems
MLExtensions_CoreLibrary "MLExtensions_Core"
A set of extension methods for a novel implementation of a Approximate Nearest Neighbors (ANN) algorithm in Lorentzian space, focused on computation.
normalizeDeriv(src, quadraticMeanLength)
Returns the smoothed hyperbolic tangent of the input series.
Parameters:
src (float) : The input series (i.e., the first-order derivative for price).
quadraticMeanLength (int) : The length of the quadratic mean (RMS).
Returns: nDeriv The normalized derivative of the input series.
normalize(src, min, max)
Rescales a source value with an unbounded range to a target range.
Parameters:
src (float) : The input series
min (float) : The minimum value of the unbounded range
max (float) : The maximum value of the unbounded range
Returns: The normalized series
rescale(src, oldMin, oldMax, newMin, newMax)
Rescales a source value with a bounded range to anther bounded range
Parameters:
src (float) : The input series
oldMin (float) : The minimum value of the range to rescale from
oldMax (float) : The maximum value of the range to rescale from
newMin (float) : The minimum value of the range to rescale to
newMax (float) : The maximum value of the range to rescale to
Returns: The rescaled series
getColorShades(color)
Creates an array of colors with varying shades of the input color
Parameters:
color (color) : The color to create shades of
Returns: An array of colors with varying shades of the input color
getPredictionColor(prediction, neighborsCount, shadesArr)
Determines the color shade based on prediction percentile
Parameters:
prediction (float) : Value of the prediction
neighborsCount (int) : The number of neighbors used in a nearest neighbors classification
shadesArr (array) : An array of colors with varying shades of the input color
Returns: shade Color shade based on prediction percentile
color_green(prediction)
Assigns varying shades of the color green based on the KNN classification
Parameters:
prediction (float) : Value (int|float) of the prediction
Returns: color
color_red(prediction)
Assigns varying shades of the color red based on the KNN classification
Parameters:
prediction (float) : Value of the prediction
Returns: color
tanh(src)
Returns the the hyperbolic tangent of the input series. The sigmoid-like hyperbolic tangent function is used to compress the input to a value between -1 and 1.
Parameters:
src (float) : The input series (i.e., the normalized derivative).
Returns: tanh The hyperbolic tangent of the input series.
dualPoleFilter(src, lookback)
Returns the smoothed hyperbolic tangent of the input series.
Parameters:
src (float) : The input series (i.e., the hyperbolic tangent).
lookback (int) : The lookback window for the smoothing.
Returns: filter The smoothed hyperbolic tangent of the input series.
tanhTransform(src, smoothingFrequency, quadraticMeanLength)
Returns the tanh transform of the input series.
Parameters:
src (float) : The input series (i.e., the result of the tanh calculation).
smoothingFrequency (int)
quadraticMeanLength (int)
Returns: signal The smoothed hyperbolic tangent transform of the input series.
n_rsi(src, n1, n2)
Returns the normalized RSI ideal for use in ML algorithms.
Parameters:
src (float) : The input series (i.e., the result of the RSI calculation).
n1 (simple int) : The length of the RSI.
n2 (simple int) : The smoothing length of the RSI.
Returns: signal The normalized RSI.
n_cci(src, n1, n2)
Returns the normalized CCI ideal for use in ML algorithms.
Parameters:
src (float) : The input series (i.e., the result of the CCI calculation).
n1 (simple int) : The length of the CCI.
n2 (simple int) : The smoothing length of the CCI.
Returns: signal The normalized CCI.
n_wt(src, n1, n2)
Returns the normalized WaveTrend Classic series ideal for use in ML algorithms.
Parameters:
src (float) : The input series (i.e., the result of the WaveTrend Classic calculation).
n1 (simple int)
n2 (simple int)
Returns: signal The normalized WaveTrend Classic series.
n_adx(highSrc, lowSrc, closeSrc, n1)
Returns the normalized ADX ideal for use in ML algorithms.
Parameters:
highSrc (float) : The input series for the high price.
lowSrc (float) : The input series for the low price.
closeSrc (float) : The input series for the close price.
n1 (simple int) : The length of the ADX.
regime_filter(src, threshold, useRegimeFilter)
Parameters:
src (float)
threshold (float)
useRegimeFilter (bool)
filter_adx(src, length, adxThreshold, useAdxFilter)
filter_adx
Parameters:
src (float) : The source series.
length (simple int) : The length of the ADX.
adxThreshold (int) : The ADX threshold.
useAdxFilter (bool) : Whether to use the ADX filter.
Returns: The ADX.
filter_volatility(minLength, maxLength, sensitivityMultiplier, useVolatilityFilter)
filter_volatility
Parameters:
minLength (simple int) : The minimum length of the ATR.
maxLength (simple int) : The maximum length of the ATR.
sensitivityMultiplier (float) : Multiplier for the historical ATR to control sensitivity.
useVolatilityFilter (bool) : Whether to use the volatility filter.
Returns: Boolean indicating whether or not to let the signal pass through the filter.
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.
Quantum Flow Navigator @DaviddTechQuantum Flow Navigator – DaviddTech
Precision Strategy Builder Powered by Adaptive Filters, Statistical Noise Reduction & Multi-Modal Confirmation
🚀 Bullish Signal : Enter when ALMA, FluxWave, and QuickSilver all confirm bullish trend, with high volume and valid noise filter state.
🔻 Bearish Signal : Enter short when all components align bearishly and filters validate the signal.
🚪 Exit : Automatically managed by dynamic SL/TP or indicator-based reversal logic.
✅ Overview & DaviddTech Methodology
Quantum Flow Navigator is an advanced, multi-component trading system engineered around the strict modular logic of the DaviddTech methodology .
It integrates every core component required for a fully rule-based and signal-driven strategy—baseline, confirmations, volume filter, exit system, and noise filter.
Designed for traders who demand structure, clarity, and data-backed decision-making on 15M, 1H, and 4H charts.
🔍 Indicator Components
Baseline: Adaptive ALMA Filter
Smooth and responsive dynamic trend detection, with momentum validation and optional filled zones for enhanced visual feedback.
Confirmation #1: FluxWave Oscillator
Developed from an enhanced Trendlio concept by @dudeowns , FluxWave uses ALMA-smoothed rate-of-change logic with configurable signal behavior.
Confirmation #2: QuickSilver Band System
Custom breakout engine that maps volatility envelopes using multi-layered deviation bands for clear confirmation of structure breaks and trend direction.
Volume Filter: Normalized Volume Energy
Innovative volume filter inspired by @ceyhun 's work. Filters trades by classifying energy into High, Normal, or Low based on normalized volume context.
Exit System: Dynamic Momentum Stop Loss
Choose from Smart Adaptive, Trailing, Stepped, Percentage, ATR, or Volatility-adjusted logic. Supports TP via risk/reward, ATR multiples, or percentage targets.
Noise Filtration: Quantum Statistical Noise Reduction
Fuses Kalman smoothing with wavelet decomposition to eliminate non-signal noise and improve trade quality and confidence.
🎨 Visual System & Dashboard
🚀/🔻/🚪 Emoji Labels : Buy, sell, and exit trades clearly marked for instant recognition.
Color-Shifting Bars : Reflect FluxWave’s trend bias in real-time.
ALMA Fill Zone : Visual trend envelope between price and ALMA baseline.
QuickSilver Bands : Volatility envelopes with graduated depth for support/resistance awareness.
SL & TP Visuals : Dynamic stop-loss and take-profit zones plotted directly on chart.
Navigator Panel : In-chart dashboard displays real-time trend status, volume energy, noise filter state, signal strength, and active position tracking.
📈 How to Trade with It
Entry Mode Selection : Choose between Combined, ALMA, FluxWave, QuickSilver, or Custom scoring logic.
Final Signals : Trigger only when confirmations align, volume energy is valid, and noise is low.
Dashboard Summary : Use real-time signal display to validate entry strength.
Timeframes : 15M–1H recommended for swing/intraday setups; 5M–15M for automation.
💡 Advanced Features
Entry Strength Scoring: Composite weight of all active components + filters.
Cooldown System: Limits excessive signals in volatile periods.
Multiple Exit Strategies: SL & TP modes with optional indicator-based exits.
Statistical Filtering: Wavelet + Kalman combination optimizes entry confidence.
Full Alert Suite: Covers entries, exits, filter triggers, volume states, and more.
🧠 Suggested Strategy Usage
Wait for full confirmation from ALMA, FluxWave, and QuickSilver.
Ensure volume energy is High and noise filter confirms trend clarity.
Use adaptive SL/TP or indicator-based exits.
Monitor dashboard for live signal strength ≥ threshold.
Use “Balanced” mode for general use; switch to “Aggressive” for tighter signals.
📝 Credits & Originality
Concept based on DaviddTech’s component-driven methodology .
FluxWave Oscillator built as an evolved version of Trendlio with full signal customization — credit @dudeowns .
Volume Energy Filter adapted from the work of @ceyhun .
Noise filtration and system architecture developed independently using Pine Script v6.
All code and logic is original, non-rehashed, and completely refactored to ensure uniqueness.
Quantum Flow Navigator fuses adaptive baselines, confirmation logic, energy-based filters, and statistical refinement into a precision signal engine—optimized for traders who value structure, clarity, and control.
TASC 2025.04 The Ultimate Oscillator█ OVERVIEW
This script implements an alternative, refined version of the Ultimate Oscillator (UO) designed to reduce lag and enhance responsiveness in momentum indicators, as introduced by John F. Ehlers in his article "Less Lag In Momentum Indicators, The Ultimate Oscillator" from the April 2025 edition of TASC's Traders' Tips .
█ CONCEPTS
In his article, Ehlers states that indicators are essentially filters that remove unwanted noise (i.e., unnecessary information) from market data. Simply put, they process a series of data to place focus on specific information, providing a different perspective on price dynamics. Various filter types attenuate different periodic signals within the data. For instance, a lowpass filter allows only low-frequency signals, a highpass filter allows only high-frequency signals, and a bandpass filter allows signals within a specific frequency range .
Ehlers explains that the key to removing indicator lag is to combine filters of different types in such a way that the result preserves necessary, useful signals while minimizing delay (lag). His proposed UltimateOscillator aims to maintain responsiveness to a specific frequency range by measuring the difference between two highpass filters' outputs. The oscillator uses the following formula:
UO = (HP1 - HP2) / RMS
Where:
HP1 is the first highpass filter.
HP2 is another highpass filter that allows only shorter wavelengths than the critical period of HP1.
RMS is the root mean square of the highpass filter difference, used as a scaling factor to standardize the output.
The resulting oscillator is similar to a bandpass filter , because it emphasizes wavelengths between the critical periods of the two highpass filters. Ehlers' UO responds quickly to value changes in a series, providing a responsive view of momentum with little to no lag.
█ USAGE
Ehlers' UltimateOscillator sets the critical periods of its highpass filters using two parameters: BandEdge and Bandwidth :
The BandEdge sets the critical period of the second highpass filter, which determines the shortest wavelengths in the response.
The Bandwidth is a multiple of the BandEdge used for the critical period of the first highpass filter, which determines the longest wavelengths in the response. Ehlers suggests that a Bandwidth value of 2 works well for most applications. However, traders can use any value above or equal to 1.4.
Users can customize these parameters with the "Bandwidth" and "BandEdge" inputs in the "Settings/Inputs" tab.
The script plots the UO calculated for the specified "Source" series in a separate pane, with a color based on the chart's foreground color. Positive UO values indicate upward momentum or trends, and negative UO values indicate the opposite.
Additionally, this indicator provides the option to display a "cloud" from 10 additional UO series with different settings for an aggregate view of momentum. The "Cloud" input offers four display choices: "Bandwidth", "BandEdge", "Bandwidth + BandEdge", or "None".
The "Bandwidth" option calculates oscillators with different Bandwidth values based on the main oscillator's setting. Likewise, the "BandEdge" option calculates oscillators with varying BandEdge values. The "Bandwidth + BandEdge" option calculates the extra oscillators with different values for both parameters.
When a user selects any of these options, the script plots the maximum and minimum oscillator values and fills their space with a color gradient. The fill color corresponds to the net sum of each UO's sign , indicating whether most of the UOs reflect positive or negative momentum. Green hues mean most oscillators are above zero, signifying stronger upward momentum. Red hues mean most are below zero, indicating stronger downward momentum.
SemiCircle Cycle Notation PivotsFor decades, traders have sought to decode the rhythm of the markets through cycle theory. From the groundbreaking work of HM Gartley in the 1930s to modern-day cycle trading tools on TradingView, the concept remains the same: markets move in repeating waves with larger cycles influencing smaller ones in a fractal-like structure, and understanding their timing gives traders an edge to better anticipate future price movements🔮.
Traditional cycle analysis has always been manual, requiring traders to painstakingly plot semicircles, diamonds, or sine waves to estimate pivot points and time reversals. Drawing tools like semicircle & sine wave projections exist on TradingView, but they lack automation—forcing traders to adjust cycle lengths by eye, often leading to inconsistencies.
This is where SemiCircle Cycle Notation Pivots indicator comes in. Semicircle cycle chart notation appears to have evolved as a practical visualization tool among cycle theorists rather than being pioneered by a single individual; some key influences include HM Gartley, WD Gann, JM Hurst, Walter Bressert, and RayTomes. Built upon LonesomeTheBlue's foundational ZigZag Waves indicator , this indicator takes cycle visualization to the next level by dynamically detecting price pivots and then automatically plotting semicircles based on real-time cycle length calculations & expected rhythm of price action over time.
Key Features:
Automated Cycle Detection: The indicator identifies pivot points based on your preference—highs, lows, or both—and plots semicircle waves that correspond to Hurst's cycle notation.
Customizable Cycle Lengths: Tailor the analysis to your trading strategy with adjustable cycle lengths, defaulting to 10, 20, and 40 bars, allowing for flexibility across various timeframes and assets.
Dynamic Wave Scaling: The semicircle waves adapt to different price structures, ensuring that the visualization remains proportional to the detected cycle lengths and aiding in the identification of potential reversal points.
Automated Cycle Detection: Dynamically identifies price pivot points and automatically adjusts offsets based on real-time cycle length calculations, ensuring precise semicircle wave alignment with market structure.
Color-Coded Cycle Tiers: Each cycle tier is distinctly color-coded, enabling quick differentiation and a clearer understanding of nested market cycles.
TASC 2025.02 Autocorrelation Indicator█ OVERVIEW
This script implements the Autocorrelation Indicator introduced by John Ehlers in the "Drunkard's Walk: Theory And Measurement By Autocorrelation" article from the February 2025 edition of TASC's Traders' Tips . The indicator calculates the autocorrelation of a price series across several lags to construct a periodogram , which traders can use to identify market cycles, trends, and potential reversal patterns.
█ CONCEPTS
Drunkard's walk
A drunkard's walk , formally known as a random walk , is a type of stochastic process that models the evolution of a system or variable through successive random steps.
In his article, John Ehlers relates this model to market data. He discusses two first- and second-order partial differential equations, modified for discrete (non-continuous) data, that can represent solutions to the discrete random walk problem: the diffusion equation and the wave equation. According to Ehlers, market data takes on a mixture of two "modes" described by these equations. He theorizes that when "diffusion mode" is dominant, trading success is almost a matter of luck, and when "wave mode" is dominant, indicators may have improved performance.
Pink spectrum
John Ehlers explains that many recent academic studies affirm that market data has a pink spectrum , meaning the power spectral density of the data is proportional to the wavelengths it contains, like pink noise . A random walk with a pink spectrum suggests that the states of the random variable are correlated and not independent. In other words, the random variable exhibits long-range dependence with respect to previous states.
Autocorrelation function (ACF)
Autocorrelation measures the correlation of a time series with a delayed copy, or lag , of itself. The autocorrelation function (ACF) is a method that evaluates autocorrelation across a range of lags , which can help to identify patterns, trends, and cycles in stochastic market data. Analysts often use ACF to detect and characterize long-range dependence in a time series.
The Autocorrelation Indicator evaluates the ACF of market prices over a fixed range of lags, expressing the results as a color-coded heatmap representing a dynamic periodogram. Ehlers suggests the information from the periodogram can help traders identify different market behaviors, including:
Cycles : Distinguishable as repeated patterns in the periodogram.
Reversals : Indicated by sharp vertical changes in the periodogram when the indicator uses a short data length .
Trends : Indicated by increasing correlation across lags, starting with the shortest, over time.
█ USAGE
This script calculates the Autocorrelation Indicator on an input "Source" series, smoothed by Ehlers' UltimateSmoother filter, and plots several color-coded lines to represent the periodogram's information. Each line corresponds to an analyzed lag, with the shortest lag's line at the bottom of the pane. Green hues in the line indicate a positive correlation for the lag, red hues indicate a negative correlation (anticorrelation), and orange or yellow hues mean the correlation is near zero.
Because Pine has a limit on the number of plots for a single indicator, this script divides the periodogram display into three distinct ranges that cover different lags. To see the full periodogram, add three instances of this script to the chart and set the "Lag range" input for each to a different value, as demonstrated in the chart above.
With a modest autocorrelation length, such as 20 on a "1D" chart, traders can identify seasonal patterns in the price series, which can help to pinpoint cycles and moderate trends. For instance, on the daily ES1! chart above, the indicator shows repetitive, similar patterns through fall 2023 and winter 2023-2024. The green "triangular" shape rising from the zero lag baseline over different time ranges corresponds to seasonal trends in the data.
To identify turning points in the price series, Ehlers recommends using a short autocorrelation length, such as 2. With this length, users can observe sharp, sudden shifts along the vertical axis, which suggest potential turning points from upward to downward or vice versa.
TASC 2025.01 Linear Predictive Filters█ OVERVIEW
This script implements a suite of tools for identifying and utilizing dominant cycles in time series data, as introduced by John Ehlers in the "Linear Predictive Filters And Instantaneous Frequency" article featured in the January 2025 edition of TASC's Traders' Tips . Dominant cycle information can help traders adapt their indicators and strategies to changing market conditions.
█ CONCEPTS
Conventional technical indicators and strategies often rely on static, unchanging parameters, which may fail to account for the dynamic nature of market data. In his article, John Ehlers applies digital signal processing principles to address this issue, introducing linear predictive filters to identify cyclic information for adapting indicators and strategies to evolving market conditions.
This approach treats market data as a complex series in the time domain. Analyzing the series in the frequency domain reveals information about its cyclic components. To reduce the impact of frequencies outside a range of interest and focus on a specific range of cycles, Ehlers applies second-order highpass and lowpass filters to the price data, which attenuate or remove wavelengths outside the desired range. This band-limited analysis isolates specific parts of the frequency spectrum for various trading styles, e.g., longer wavelengths for position trading or shorter wavelengths for swing trading.
After filtering the series to produce band-limited data, Ehlers applies a linear predictive filter to predict future values a few bars ahead. The filter, calculated based on the techniques proposed by Lloyd Griffiths, adaptively minimizes the error between the latest data point and prediction, successively adjusting its coefficients to align with the band-limited series. The filter's coefficients can then be applied to generate an adaptive estimate of the band-limited data's structure in the frequency domain and identify the dominant cycle.
█ USAGE
This script implements the following tools presented in the article:
Griffiths Predictor
This tool calculates a linear predictive filter to forecast future data points in band-limited price data. The crosses between the prediction and signal lines can provide potential trade signals.
Griffiths Spectrum
This tool calculates a partial frequency spectrum of the band-limited price data derived from the linear predictive filter's coefficients, displaying a color-coded representation of the frequency information in the pane. This mode's display represents the data as a periodogram . The bottom of each plotted bar corresponds to a specific analyzed period (inverse of frequency), and the bar's color represents the presence of that periodic cycle in the time series relative to the one with the highest presence (i.e., the dominant cycle). Warmer, brighter colors indicate a higher presence of the cycle in the series, whereas darker colors indicate a lower presence.
Griffiths Dominant Cycle
This tool compares the cyclic components within the partial spectrum and identifies the frequency with the highest power, i.e., the dominant cycle . Traders can use this dominant cycle information to tune other indicators and strategies, which may help promote better alignment with dynamic market conditions.
Notes on parameters
Bandpass boundaries:
In the article, Ehlers recommends an upper bound of 125 bars or higher to capture longer-term cycles for position trading. He recommends an upper bound of 40 bars and a lower bound of 18 bars for swing trading. If traders use smaller lower bounds, Ehlers advises a minimum of eight bars to minimize the potential effects of aliasing.
Data length:
The Griffiths predictor can use a relatively small data length, as autocorrelation diminishes rapidly with lag. However, for optimal spectrum and dominant cycle calculations, the length must match or exceed the upper bound of the bandpass filter. Ehlers recommends avoiding excessively long lengths to maintain responsiveness to shorter-term cycles.






















