[Excalibur] Ehlers AutoCorrelation Periodogram ModifiedKeep your coins folks, I don't need them, don't want them. If you wish be generous, I do hope that charitable peoples worldwide with surplus food stocks may consider stocking local food banks before stuffing monetary bank vaults, for the crusade of remedying the needs of less than fortunate children, parents, elderly, homeless veterans, and everyone else who deserves nutritional sustenance for the soul.
DEDICATION:
This script is dedicated to the memory of Nikolai Dmitriyevich Kondratiev (Никола́й Дми́триевич Кондра́тьев) as tribute for being a pioneering economist and statistician, paving the way for modern econometrics by advocation of rigorous and empirical methodologies. One of his most substantial contributions to the study of business cycle theory include a revolutionary hypothesis recognizing the existence of dynamic cycle-like phenomenon inherent to economies that are characterized by distinct phases of expansion, stagnation, recession and recovery, what we now know as "Kondratiev Waves" (K-waves). Kondratiev was one of the first economists to recognize the vital significance of applying quantitative analysis on empirical data to evaluate economic dynamics by means of statistical methods. His understanding was that conceptual models alone were insufficient to adequately interpret real-world economic conditions, and that sophisticated analysis was necessary to better comprehend the nature of trending/cycling economic behaviors. Additionally, he recognized prosperous economic cycles were predominantly driven by a combination of technological innovations and infrastructure investments that resulted in profound implications for economic growth and development.
I will mention this... nation's economies MUST be supported and defended to continuously evolve incrementally in order to flourish in perpetuity OR suffer through eras with lasting ramifications of societal stagnation and implosion.
Analogous to the realm of economics, aperiodic cycles/frequencies, both enduring and ephemeral, do exist in all facets of life, every second of every day. To name a few that any blind man can naturally see are: heartbeat (cardiac cycles), respiration rates, circadian rhythms of sleep, powerful magnetic solar cycles, seasonal cycles, lunar cycles, weather patterns, vegetative growth cycles, and ocean waves. Do not pretend for one second that these basic aforementioned examples do not affect business cycle fluctuations in minuscule and monumental ways hour to hour, day to day, season to season, year to year, and decade to decade in every nation on the planet. Kondratiev's original seminal theories in macroeconomics from nearly a century ago have proven remarkably prescient with many of his antiquated elementary observations/notions/hypotheses in macroeconomics being scholastically studied and topically researched further. Therefore, I am compelled to honor and recognize his statistical insight and foresight.
If only.. Kondratiev could hold a pocket sized computer in the cup of both hands bearing the TradingView logo and platform services, I truly believe he would be amazed in marvelous delight with a GARGANTUAN smile on his face.
INTRODUCTION:
Firstly, this is NOT technically speaking an indicator like most others. I would describe it as an advanced cycle period detector to obtain market data spectral estimates with low latency and moderate frequency resolution. Developers can take advantage of this detector by creating scripts that utilize a "Dominant Cycle Source" input to adaptively govern algorithms. Be forewarned, I would only recommend this for advanced developers, not novice code dabbling. Although, there is some Pine wizardry introduced here for novice Pine enthusiasts to witness and learn from. AI did describe the code into one super-crunched sentence as, "a rare feat of exceptionally formatted code masterfully balancing visual clarity, precision, and complexity to provide immense educational value for both programming newcomers and expert Pine coders alike."
Understand all of the above aforementioned? Buckle up and proceed for a lengthy read of verbose complexity...
This is my enhanced and heavily modified version of autocorrelation periodogram (ACP) for Pine Script v5.0. It was originally devised by the mathemagician John Ehlers for detecting dominant cycles (frequencies) in an asset's price action. I have been sitting on code similar to this for a long time, but I decided to unleash the advanced code with my fashion. Originally Ehlers released this with multiple versions, one in a 2016 TASC article and the other in his last published 2013 book "Cycle Analytics for Traders", chapter 8. He wasn't joking about "concepts of advanced technical trading" and ACP is nowhere near to his most intimidating and ingenious calculations in code. I will say the book goes into many finer details about the original periodogram, so if you wish to delve into even more elaborate info regarding Ehlers' original ACP form AND how you may adapt algorithms, you'll have to obtain one. Note to reader, comparing Ehlers' original code to my chimeric code embracing the "Power of Pine", you will notice they have little resemblance.
What you see is a new species of autocorrelation periodogram combining Ehlers' innovation with my fascinations of what ACP could be in a Pine package. One other intention of this script's code is to pay homage to Ehlers' lifelong works. Like Kondratiev, Ehlers is also a hardcore cycle enthusiast. I intend to carry on the fire Ehlers envisioned and I believe that is literally displayed here as a pleasant "fiery" example endowed with Pine. With that said, I tried to make the code as computationally efficient as possible, without going into dozens of more crazy lines of code to speed things up even more. There's also a few creative modifications I made by making alterations to the originating formulas that I felt were improvements, one of them being lag reduction. By recently questioning every single thing I thought I knew about ACP, combined with the accumulation of my current knowledge base, this is the innovative revision I came up with. I could have improved it more but decided not to mind thrash too many TV members, maybe later...
I am now confident Pine should have adequate overhead left over to attach various indicators to the dominant cycle via input.source(). TV, I apologize in advance if in the future a server cluster combusts into a raging inferno... Coders, be fully prepared to build entire algorithms from pure raw code, because not all of the built-in Pine functions fully support dynamic periods (e.g. length=ANYTHING). Many of them do, as this was requested and granted a while ago, but some functions are just inherently finicky due to implementation combinations and MUST be emulated via raw code. I would imagine some comprehensive library or numerous authored scripts have portions of raw code for Pine built-ins some where on TV if you look diligently enough.
Notice: Unfortunately, I will not provide any integration support into member's projects at all. I have my own projects that require way too much of my day already. While I was refactoring my life (forgoing many other "important" endeavors) in the early half of 2023, I primarily focused on this code over and over in my surplus time. During that same time I was working on other innovations that are far above and beyond what this code is. I hope you understand.
The best way programmatically may be to incorporate this code into your private Pine project directly, after brutal testing of course, but that may be too challenging for many in early development. Being able to see the periodogram is also beneficial, so input sourcing may be the "better" avenue to tether portions of the dominant cycle to algorithms. Unique indication being able to utilize the dominantCycle may be advantageous when tethering this script to those algorithms. The easiest way is to manually set your indicators to what ACP recognizes as the dominant cycle, but that's actually not considered dynamic real time adaption of an indicator. Different indicators may need a proportion of the dominantCycle, say half it's value, while others may need the full value of it. That's up to you to figure that out in practice. Sourcing one or more custom indicators dynamically to one detector's dominantCycle may require code like this: `int sourceDC = int(math.max(6, math.min(49, input.source(close, "Dominant Cycle Source"))))`. Keep in mind, some algos can use a float, while algos with a for loop require an integer.
I have witnessed a few attempts by talented TV members for a Pine based autocorrelation periodogram, but not in this caliber. Trust me, coding ACP is no ordinary task to accomplish in Pine and modifying it blessed with applicable improvements is even more challenging. For over 4 years, I have been slowly improving this code here and there randomly. It is beautiful just like a real flame, but... this one can still burn you! My mind was fried to charcoal black a few times wrestling with it in the distant past. My very first attempt at translating ACP was a month long endeavor because PSv3 simply didn't have arrays back then. Anyways, this is ACP with a newer engine, I hope you enjoy it. Any TV subscriber can utilize this code as they please. If you are capable of sufficiently using it properly, please use it wisely with intended good will. That is all I beg of you.
Lastly, you now see how I have rasterized my Pine with Ehlers' swami-like tech. Yep, this whole time I have been using hline() since PSv3, not plot(). Evidently, plot() still has a deficiency limited to only 32 plots when it comes to creating intense eye candy indicators, the last I checked. The use of hline() is the optimal choice for rasterizing Ehlers styled heatmaps. This does only contain two color schemes of the many I have formerly created, but that's all that is essentially needed for this gizmo. Anything else is generally for a spectacle or seeing how brutal Pine can be color treated. The real hurdle is being able to manipulate colors dynamically with Merlin like capabilities from multiple algo results. That's the true challenging part of these heatmap contraptions to obtain multi-colored "predator vision" level indication. You now have basic hline() food for thought empowerment to wield as you can imaginatively dream in Pine projects.
PERIODOGRAM UTILITY IN REAL WORLD SCENARIOS:
This code is a testament to the abilities that have yet to be fully realized with indication advancements. Periodograms, spectrograms, and heatmaps are a powerful tool with real-world applications in various fields such as financial markets, electrical engineering, astronomy, seismology, and neuro/medical applications. For instance, among these diverse fields, it may help traders and investors identify market cycles/periodicities in financial markets, support engineers in optimizing electrical or acoustic systems, aid astronomers in understanding celestial object attributes, assist seismologists with predicting earthquake risks, help medical researchers with neurological disorder identification, and detection of asymptomatic cardiovascular clotting in the vaxxed via full body thermography. In either field of study, technologies in likeness to periodograms may very well provide us with a better sliver of analysis beyond what was ever formerly invented. Periodograms can identify dominant cycles and frequency components in data, which may provide valuable insights and possibly provide better-informed decisions. By utilizing periodograms within aspects of market analytics, individuals and organizations can potentially refrain from making blinded decisions and leverage data-driven insights instead.
PERIODOGRAM INTERPRETATION:
The periodogram renders the power spectrum of a signal, with the y-axis representing the periodicity (frequencies/wavelengths) and the x-axis representing time. The y-axis is divided into periods, with each elevation representing a period. In this periodogram, the y-axis ranges from 6 at the very bottom to 49 at the top, with intermediate values in between, all indicating the power of the corresponding frequency component by color. The higher the position occurs on the y-axis, the longer the period or lower the frequency. The x-axis of the periodogram represents time and is divided into equal intervals, with each vertical column on the axis corresponding to the time interval when the signal was measured. The most recent values/colors are on the right side.
The intensity of the colors on the periodogram indicate the power level of the corresponding frequency or period. The fire color scheme is distinctly like the heat intensity from any casual flame witnessed in a small fire from a lighter, match, or camp fire. The most intense power would be indicated by the brightest of yellow, while the lowest power would be indicated by the darkest shade of red or just black. By analyzing the pattern of colors across different periods, one may gain insights into the dominant frequency components of the signal and visually identify recurring cycles/patterns of periodicity.
SETTINGS CONFIGURATIONS BRIEFLY EXPLAINED:
Source Options: These settings allow you to choose the data source for the analysis. Using the `Source` selection, you may tether to additional data streams (e.g. close, hlcc4, hl2), which also may include samples from any other indicator. For example, this could be my "Chirped Sine Wave Generator" script found in my member profile. By using the `SineWave` selection, you may analyze a theoretical sinusoidal wave with a user-defined period, something already incorporated into the code. The `SineWave` will be displayed over top of the periodogram.
Roofing Filter Options: These inputs control the range of the passband for ACP to analyze. Ehlers had two versions of his highpass filters for his releases, so I included an option for you to see the obvious difference when performing a comparison of both. You may choose between 1st and 2nd order high-pass filters.
Spectral Controls: These settings control the core functionality of the spectral analysis results. You can adjust the autocorrelation lag, adjust the level of smoothing for Fourier coefficients, and control the contrast/behavior of the heatmap displaying the power spectra. I provided two color schemes by checking or unchecking a checkbox.
Dominant Cycle Options: These settings allow you to customize the various types of dominant cycle values. You can choose between floating-point and integer values, and select the rounding method used to derive the final dominantCycle values. Also, you may control the level of smoothing applied to the dominant cycle values.
DOMINANT CYCLE VALUE SELECTIONS:
External to the acs() function, the code takes a dominant cycle value returned from acs() and changes its numeric form based on a specified type and form chosen within the indicator settings. The dominant cycle value can be represented as an integer or a decimal number, depending on the attached algorithm's requirements. For example, FIR filters will require an integer while many IIR filters can use a float. The float forms can be either rounded, smoothed, or floored. If the resulting value is desired to be an integer, it can be rounded up/down or just be in an integer form, depending on how your algorithm may utilize it.
AUTOCORRELATION SPECTRUM FUNCTION BASICALLY EXPLAINED:
In the beginning of the acs() code, the population of caches for precalculated angular frequency factors and smoothing coefficients occur. By precalculating these factors/coefs only once and then storing them in an array, the indicator can save time and computational resources when performing subsequent calculations that require them later.
In the following code block, the "Calculate AutoCorrelations" is calculated for each period within the passband width. The calculation involves numerous summations of values extracted from the roofing filter. Finally, a correlation values array is populated with the resulting values, which are normalized correlation coefficients.
Moving on to the next block of code, labeled "Decompose Fourier Components", Fourier decomposition is performed on the autocorrelation coefficients. It iterates this time through the applicable period range of 6 to 49, calculating the real and imaginary parts of the Fourier components. Frequencies 6 to 49 are the primary focus of interest for this periodogram. Using the precalculated angular frequency factors, the resulting real and imaginary parts are then utilized to calculate the spectral Fourier components, which are stored in an array for later use.
The next section of code smooths the noise ridden Fourier components between the periods of 6 and 49 with a selected filter. This species also employs numerous SuperSmoothers to condition noisy Fourier components. One of the big differences is Ehlers' versions used basic EMAs in this section of code. I decided to add SuperSmoothers.
The final sections of the acs() code determines the peak power component for normalization and then computes the dominant cycle period from the smoothed Fourier components. It first identifies a single spectral component with the highest power value and then assigns it as the peak power. Next, it normalizes the spectral components using the peak power value as a denominator. It then calculates the average dominant cycle period from the normalized spectral components using Ehlers' "Center of Gravity" calculation. Finally, the function returns the dominant cycle period along with the normalized spectral components for later external use to plot the periodogram.
POST SCRIPT:
Concluding, I have to acknowledge a newly found analyst for assistance that I couldn't receive from anywhere else. For one, Claude doesn't know much about Pine, is unfortunately color blind, and can't even see the Pine reference, but it was able to intuitively shred my code with laser precise realizations. Not only that, formulating and reformulating my description needed crucial finesse applied to it, and I couldn't have provided what you have read here without that artificial insight. Finding the right order of words to convey the complexity of ACP and the elaborate accompanying content was a daunting task. No code in my life has ever absorbed so much time and hard fricking work, than what you witness here, an ACP gem cut pristinely. I'm unveiling my version of ACP for an empowering cause, in the hopes a future global army of code wielders will tether it to highly functional computational contraptions they might possess. Here is ACP fully blessed poetically with the "Power of Pine" in sublime code. ENJOY!
Cari dalam skrip untuk "wave"
Bitcoin Indicator CBitcoin Indicator C is the missing part of the whole picture. It must be used together with Bitcoin Indicator B for the best results possible!
Indicator B is to find the entry on the market sharp, while the new Indicator C will help you to find the zone where it's time to look for the entry. The dots do NOT represent the start nor the end of the trend, they only show the cross of the waves. Indicator C was created to see the bigger picture of the market. You will see 3 waves on the indicator. The white wave is the main indication of the trend, however all of them should be considered together. Think about it as a painting so just step back and watch the whole picture. If you see the waves topping and start to form a downtrend it's time to find your entry on Indicator B. Also when you see waves bottoming it's time to look for the entry of the Long trade.
When all of 3 waves moving together parallel from the top to the bottom that's a strong downtrend. Opposite occurs when there is a strong uptrend on the market.
These waves were created to show unique repeating patterns, too. For example: White wave bottoming while others keep painting on the upside of the zero line. Other example if repeating waves getting lower and lower... Learn more about unique patterns on our website!
MME NimblrTA Setup v1.0Hi All,
This is a Candlestick template script to be used for identifying momentum and waves.
There are only 2 types of candles - Momentum Candles ( MC - Body height >= 50%) and Indecision Candles ( IC ).
ICs are further separated as Tiny Beast based on NimblrTAs, Candle height ratio compared to certain % Open price of the day. The % varies based on TF of the chart.
Green and Red are MCs .
IC is colored white
Tiny Beast based on Candle height is colored blue.
Tiny Beast based on Candle height + Body Height is marked $.
This setup is used to identify Waves (ascending waves, descending waves, binets, reverse binets etc) - Per Line chart, Zig Zag .
Intraday EMA setup - 5, 13, 34 is used for EMA alignment
Investment EMA setup - 5, 21, 55 is used for EMA alignment.
PSAR 0.01 setting is normally used for trailing / to check ascending or descending wave at high level.
PSAR 0.005 is additionally added to check for follow-up of move. So when PSAR 0.01 is broken, expect PSAR 0.005 to be broken. That can be a scalping target or confirmation of capturing the right trend.
This setup is used for Intraday as well as Investments. The settings have been defaulted for Intraday setup.
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.
MathConstantsAtomicLibrary "MathConstantsAtomic"
Mathematical Constants
FineStructureConstant() Fine Structure Constant: alpha = e^2/4*Pi*e_0*h_bar*c_0 (2007 CODATA)
RydbergConstant() Rydberg Constant: R_infty = alpha^2*m_e*c_0/2*h (2007 CODATA)
BohrRadius() Bor Radius: a_0 = alpha/4*Pi*R_infty (2007 CODATA)
HartreeEnergy() Hartree Energy: E_h = 2*R_infty*h*c_0 (2007 CODATA)
QuantumOfCirculation() Quantum of Circulation: h/2*m_e (2007 CODATA)
FermiCouplingConstant() Fermi Coupling Constant: G_F/(h_bar*c_0)^3 (2007 CODATA)
WeakMixingAngle() Weak Mixin Angle: sin^2(theta_W) (2007 CODATA)
ElectronMass() Electron Mass: (2007 CODATA)
ElectronMassEnergyEquivalent() Electron Mass Energy Equivalent: (2007 CODATA)
ElectronMolarMass() Electron Molar Mass: (2007 CODATA)
ComptonWavelength() Electron Compton Wavelength: (2007 CODATA)
ClassicalElectronRadius() Classical Electron Radius: (2007 CODATA)
ThomsonCrossSection() Thomson Cross Section: (2002 CODATA)
ElectronMagneticMoment() Electron Magnetic Moment: (2007 CODATA)
ElectronGFactor() Electon G-Factor: (2007 CODATA)
MuonMass() Muon Mass: (2007 CODATA)
MuonMassEnegryEquivalent() Muon Mass Energy Equivalent: (2007 CODATA)
MuonMolarMass() Muon Molar Mass: (2007 CODATA)
MuonComptonWavelength() Muon Compton Wavelength: (2007 CODATA)
MuonMagneticMoment() Muon Magnetic Moment: (2007 CODATA)
MuonGFactor() Muon G-Factor: (2007 CODATA)
TauMass() Tau Mass: (2007 CODATA)
TauMassEnergyEquivalent() Tau Mass Energy Equivalent: (2007 CODATA)
TauMolarMass() Tau Molar Mass: (2007 CODATA)
TauComptonWavelength() Tau Compton Wavelength: (2007 CODATA)
ProtonMass() Proton Mass: (2007 CODATA)
ProtonMassEnergyEquivalent() Proton Mass Energy Equivalent: (2007 CODATA)
ProtonMolarMass() Proton Molar Mass: (2007 CODATA)
ProtonComptonWavelength() Proton Compton Wavelength: (2007 CODATA)
ProtonMagneticMoment() Proton Magnetic Moment: (2007 CODATA)
ProtonGFactor() Proton G-Factor: (2007 CODATA)
ShieldedProtonMagneticMoment() Proton Shielded Magnetic Moment: (2007 CODATA)
ProtonGyromagneticRatio() Proton Gyro-Magnetic Ratio: (2007 CODATA)
ShieldedProtonGyromagneticRatio() Proton Shielded Gyro-Magnetic Ratio: (2007 CODATA)
NeutronMass() Neutron Mass: (2007 CODATA)
NeutronMassEnegryEquivalent() Neutron Mass Energy Equivalent: (2007 CODATA)
NeutronMolarMass() Neutron Molar Mass: (2007 CODATA)
NeutronComptonWavelength() Neuron Compton Wavelength: (2007 CODATA)
NeutronMagneticMoment() Neutron Magnetic Moment: (2007 CODATA)
NeutronGFactor() Neutron G-Factor: (2007 CODATA)
NeutronGyromagneticRatio() Neutron Gyro-Magnetic Ratio: (2007 CODATA)
DeuteronMass() Deuteron Mass: (2007 CODATA)
DeuteronMassEnegryEquivalent() Deuteron Mass Energy Equivalent: (2007 CODATA)
DeuteronMolarMass() Deuteron Molar Mass: (2007 CODATA)
DeuteronMagneticMoment() Deuteron Magnetic Moment: (2007 CODATA)
HelionMass() Helion Mass: (2007 CODATA)
HelionMassEnegryEquivalent() Helion Mass Energy Equivalent: (2007 CODATA)
HelionMolarMass() Helion Molar Mass: (2007 CODATA)
Avogadro() Avogadro constant: (2010 CODATA)
MTF VWAPA simple wavetrend oscillator based off WaveTrend Oscillator by @LazyBear to visualise 4 different timeframe vwap under 1 chart.
Timeframe can be changed in indicator settings in minutes. Unnecessary waves can be removed by unchecking said TF wave in Style settings.
MktCurves‴ | Market Curves‴What does it do?
Imagin being able to watch the money flow between markets and figure out when it's time to make your own move. This is what this my proposal and this is what the Market Curves (MktCurves) indicator is all about!
You are able to see the money flowing into Core Commodities, T-Bonds (2, 5, 10, 20 and 30 years), High Yield Corporate Bonds, Gold, Silver, Bitcoin and Dollar.
Don't let the big guys get you off guard, know their moves and move with them.
How does it work?
By analysing the current curve data it is possible to notice that one or more of the curves start an up trend while others move sideway or a down trend, this is how you can have a guess where the smart money is moving from and to.
Curves available:
. Core Commodities
. T-Bond 2 Years
. T-Bond 5 Years
. T-Bond 10 Years
. T-Bond 20 Years
. T-Bond 30 years
. High Yield Corporate Bonds
. Gold
. Silver
. Bitcoin
. Dollar
What's my filling?
I'm still testing this indicator for only a week and so far still trying to understand its signs. I'm using it in conjunction with Volume Wave (VolWave) and Price Spread Wave (PSWave).
What does it do?
This indicator allows you to identify possible asset top and bottom reversals by having a prior Volatility acting among the price movement with a sequential positive (top reversal) or negative (bottom reversal) waves.
How does it work?
Everytime the wave starts showing a curved top movement (ascending price movment) or a curved bottom movement (descending price movment), it might be signing that a price reversal is on its way. It is possible to adjust the wave shape by increasing/decreasing its gradient value analysis, but it's so easy to use that most of the times no reconfiguration is needed, just add it and let it guide you.
Important to mention that the positive wave band, histogram bars and moving average line are calculate totally separete from the the negative wave.
What's my filling?
It definitely gives me a great insight into the smart money moves, which gives me the confidence to make my own moves.
To have access to this indicator,
Please DM me.
Don't contact me in the comment area.
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 Relative Vigor IndexLevel: 2
Background
John F. Ehlers introuced Relative Vigor Index in his "Cybernetic Analysis for Stocks and Futures" chapter 6 on 2004.
Function
Relative Vigor Index (RVI) uses concepts dating back over three decades and also uses modern filter and digital signal processing theory to realize those concepts as a practical and useful indicator. The RVI merges the old concepts with the new technologies. The basic idea of the RVI is that prices tend to close higher than
they open in up markets and tend to close lower than they open in down markets. The vigor of the move is thus established by where the prices reside at the end of the day. To normalize the index to the daily trading range, the change in price is divided by the maximum range of prices for the day.
The RVI is an oscillator, and we are therefore only concerned with the cycle modes of the market in its use. The sharpest rate of change for a cycle is at its midpoint. Therefore, in the ascending part of the cycle we would expect the difference between the close and open to be at a maximum. This is like a derivative in calculus, where the derivative of a sinewave produces a negative cosine wave. The derivative is therefore a waveform that leads the original sinewave by a quarter cycle. Also, from calculus, integration of a sinewave over a half-cycle period results in another sinewave delayed by a quarter cycle. Summing over a half cycle is basically the same as mathematically integrating, with the result that the waveshape of the sum is delayed by a quarter wavelength relative to the input. The net result of taking the differences and summing produces an oscillator output in phase with the cyclic component of the price. It is also possible to generate a leading function if the summation window is less than a half wavelength of the Dominant Cycle. If a cycle measurement is not available, you can sum the RVI components over a fixed default period. A nominal value of 8 is suggested because this is approximately half the period of most cycles of interest.
Key Signal
RVI ---> Relative Vigor Index fast line
Trigger ---> Relative Vigor Index slow line
Pros and Cons
100% John F. Ehlers definition translation of original work, even variable names are the same. This help readers who would like to use pine to read his book. If you had read his works, then you will be quite familiar with my code style.
Remarks
The 27th script for Blackcat1402 John F. Ehlers Week publication.
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
GA - Value at RiskGA Value at Risk is a multifunctional tool. Its main purpose is to plot on the chart the Value at Risk . But it shows also integrated features related to the Volatility.
Value at Risk is a measure of the risk of loss for investments, given normal market conditions, in a period.
It measures and quantifies the level of financial risk. In this case, the risk is within position over a specific time frame.
Defining p as VaR, the probability of a loss greater than VaR is p, at most. Instead, the probability of loss that is less than VaR is 1-p, at least.
The VaR Breach occurs when a loss exceeds the VaR threshold .
For this case, VaR calculation uses the volatility estimation in a time interval. It defines the Probability Confidence according to the Normal Distribution. VaR is a percentile of the Normal Distribution. This is a multiplier of the Standard Deviation that define a Volatility Range.
The Normal Distribution Area around +- the Standard Deviation gives 68% of Confidence. 2 times the Standard Deviation returns a 95% of probability area. 3 time the Standard Deviation the Area returns 99.7% of Confidence.
Knowing VaR modeling, it is possible to determine the amount of a potential loss . Then, it is possible to know if there is enough capital to cover losses. In the same way, higher-than-acceptable risks forces reducing exposure in a financial instrument.
One of its practical use is to estimate the risk of an investment that is already at portfolio. Indeed, this is the purpose of the Value at Risk calculated in this script.
At the VaR Breach that investment has reached its worst scenario. Then, it can be the case to manage that investment into the balanced portfolio.
The Value at Risk does not tell when to enter the market.
Moving Averages
GA Value at Risk bases its calculations on a set of Moving Averages. Every feature of the script uses one of these Moving Averages for its algorithm.
Moving Averages from MA0 to MA8, are the core of each feature of the script.
By default, from MA0 to MA8, Moving Averages use the Fibonacci Series to define their lengths. This happens because of the power of the Golden Ratio in the market behavior.
Instead, the first moving average is an extra resource. Its purpose is to plot a Signal Line on the chart.
The script does not consider plotting every Moving Average on the chart. But it lets you enable the plotting of 7 Moving Averages (from MA0 to MA5 + Signal Line).
It is possible to select the Moving Average Formula to use in the script. This is a setting that affects every Moving Average. Then, it changes also the result of every feature of the script.
The selection is between:
Exponential Moving Average.
Simple Moving Average.
Weighted moving Average.
Simple Moving Averages and Pointers - Full Visibility
Moving Averages and Partial Visibility
The plotting of each Moving Average can be total or partial.
By default, the plotting of Moving Averages and Signal Line is partial.
When the price approaches a Moving Average a little part of the curve becomes visible. This highlights supports or resistances.
Besides, this tracking remains on the chart. Then it shows supports and resistances that the price reached during its progression.
The Partial Visibility Algorithm is a great advantage, ruling how to plot curves. It uses a parameter to set how much of the curves is to plot.
Exponential Moving Averages and Pointers - Partial Visibility
Exponential Moving Averages and Pointers - Full Visibility
Moving Averages and Pointers
As it is clear, it is not necessary to plot entire curves of Moving Averages on the chart. But it becomes relevant to plot Pointers to Moving Averages.
Indeed, the script plots horizontal segments that point to the latest Average Prices.
Every segment has a Label that shows Average Price, Length, and its related Moving Average (from MA0 to MA8). Besides, it is possible to extend the segment to right.
These pointers are a very useful automatization. They point to the Moving Averages. In this way, they show Dynamic Supports and Resistances as horizontal segments.
They are adaptive. Used together with the Volume Profile their progression approaches Edges of High Nodes.
This adaptive behavior makes easy to see when the price reaches Volume High Nodes and slows down.
Moving Average Pointers use the Partial Visibility Algorithm. In this case, the algorithm shows pointers with higher frequency than curves.
Moving Averages Pointers have:
Horizontal Segment as a Pointer with Arrow.
Label with details.
Circle to the current Average Price.
Weighted Moving Averages and Pointers - Full Visibility
Volatility Channels
Having Moving Averages, from MA0 to MA8, it is possible to plot 9 Volatility Channels.
Each Volatility Channel uses one of the Moving Averages, from MA0 to MA8.
Indeed, each Volatility Channel has the same designation of the Moving Average used.
The Standard Deviation defines the Volatility Range. It uses the length of the Moving Average related to the Volatility Channel.
The Volatility Range is unique for each Volatility Channel. In the same way, each Volatility Channel is unique because of its relation to only one Moving Average.
By default, each volatility channel has the 2 value as Standard Deviation Multiplier. This gives 95% of Confidence that the price will stay into the Volatility Range.
Using the Simple Moving Average, each Volatility Channel becomes a Bollinger Bands envelop.
Volatility Channels work very well even using Exponential or Weighted Moving Averages.
MA0 - Volatility Channel
Volatility Channels - From MA0 to MA8
Value at Risk (VaR)
GA Value at Risk plots VaR according to the volatility. The VaR plotting follows the Trend Momentum or Buying-Selling Waves.
By default, VaR follows the Trend Momentum by 2 times the Standard Deviation of MA0. Where MA0 is the first Moving Average and Volatility Channel of the set.
Besides, by default, the calculation of the Value at Risk is adaptive. It does not follow the Volatility Channel Bands. But it changes according to the fast reaction of the price into the Volatility Range.
By default, VaR follows the main momentum even if the price is moving in opposition to it. This occurs as long as the Trend Momentum persists.
In the settings box, It is possible to select the following of the latest Buying Wave or Selling Wave.
In this case, VaR changes according to the change of Buying Wave or Selling Wave. This means that, on these conditions, VaR follows main swings. Then it follows the weakening and the strengthening of the trend momentum as long as it persists.
The plotting of the Value at Risk can show these features:
Red cycle to show the Value at Risk at the current price.
Look Back Red Line that shows the progression of the Value at Risk.
Label with details.
MA0 - Value at Risk - Not Adaptive
MA0 - Value at Risk - Adaptive
It is possible to use a different Moving Average and Volatility Channel from the set. This affects the calculation and the plotting of the Value at Risk. In this way, the algorithm return the Value at Risk for the short, middle, or long-term.
Then, you can get the Value at Risk for that Financial Instrument, calculated for ~1 year or more so as for 1 month.
The Value at Risk does not tell you when to enter the market. Besides, it does not show you that the trend is changing.
MA3 - Value at Risk - Adaptive
Value at Profit (VaP)
The Value at Profit has a descriptive purpose. It points the Volatility Band that is opposite to the Value at Risk.
I chose Value at Profit as a designation for this feature. It does not tell you where to exit the market.
But is shows what the price progression is pointing on. This happens following the switching between Volatility Ranges.
The VaP follows the Volatility Band where the price tends to converge.
An outperforming or underperforming price is running faster than the average trend. Then when the price runs enough to converge to the Volatility Band, it is over extended or under extended.
At these conditions, the increased buying or selling pressure affects the price behavior. This slows down the price progression.
The Algorithm behind the Value at Profit is adaptive. Then the pointer jumps up and down the Volatility Bands of the 9 Volatility Channels. This occurs according to the price progression, following the switching between Volatility Ranges.
So, the VaP points a Volatility Band as long as the price can have chances to converges on it. Instead, when the price has chances to exceed the Volatility Band, the VaP points to the next one.
The plotting of the Value at Profit occurs enabling its Label with details.
Value at Profit - MA0 Volatility Channel Upper Band
Value at Profit - MA6 Volatility Channel Upper Band
Price Extension
When the price runs far away from the average trend price, GA Value at Risk can plot the price extension.
It shows the distance in percentage of the price from a Moving Average of the set. This tends to highlight conditions where the price is over or under extended.
An overbought or oversold condition precedes the shortening of the Trust. It is a cause of the hesitation of the price to continue its progression. This includes also Climactic Points and Signs of Dominance.
The Price Extension plotting uses a variation of the Partial Visibility Algorithm. It plots the Price Extension Arrow only when there are specific volatility conditions.
When the Partial Visibility is set to 0, the Price Extension Arrow is always visible on the chart.
The plotting of the Price Extension includes a Label with details.
Over Extension - The Price is Outperforming MA0
Under Extension - The Price is Underperforming MA0
Price Extension Coloring for Bars and Line Chart
GA Value at Risk lets you enable the coloring of vertical charts. Green and Red colors mark the over and under extended price on bars, candle sticks, and also on the Line Chart.
The Price Extension Algorithm colors Bars and Line Chart by a momentum function.
Indeed, the coloring happens following Relative Strength Index or Bollinger Bands %B.
These 2 Momentum functions are different. Indeed, they color the chart according to the purpose of their curves.
Coloring the Line Chart, it is necessary to put on front the script visibility.
Overbought and Oversold Conditions on Line Chart by Bollinger Bands %B
Overbought and Oversold Conditions on Candlesticks Chart by Relative Strength Index
Note: I restrict access to the tool. Use the links in my signature field to gain access to the script. Feel free to send me a PM for any question.
Thank you
Girolamo Aloe
Founder of Profiting Me Finance Analytics
-
Disclaimer
Nobody in Girolamo Aloe websites and trading view profile is a Financial Advisor. Nothing therein is intended to be constructed as Financial Advice. The content on his websites is for information and educational purposes only.
Trading carries high risk. You should not invest money that you cannot afford to lose. Past performance is not an indication of future results.
MarketDecryptor BThis is a private indicator available to MarketDecryptor members.
Purple wave : Momentum slow wave
Light blue wave: Momentum fast wave
Yellow/Red line: VWAP oscillator
Orange/Gray wave: Directional strength indicator
Green dot: Bullish cross
Red Dot: Bearish cross
Weis zig zag vol JayyI have had a few requests to publish the script I used here: in May 2015. I have been reluctant because it was a very cumbersome script. However, for those few people who actually want to play with this script here it is. I have cleaned it up to make the script more usable. Read my notes associated with "Weis Wave Jayy" for more details on the use of the Weis wave. There are some additional inputs to show the correct volume range on the screen. I think a short video is the best way to convey the information.
The traditional way of displaying Weis Wave as developed by David Weis is to use price. This is a bit of a tricky concept. I hope my video helps to clarify.
In a nutshell to use: open the script. The default is the traditional method used by Weis. Change the value to a wave size of interest in the "Select Weis Wave size" dialogue box. To use "What percent of avg price to set wave size" first click on "Use percent of avg price to set wave size". To use "What percent of last leg to determine reverse" click on "Use percent of last leg?" and be sure that "Use percent of avg price to set wave size" is unclicked.
To display volume correctly as three digits it is necessary to take a number such as 176,895,570 to value that can be displayed within three digits. The number must also be relative to other numbers in the field. If the highest volume on the page is: 2,654,763,889 and with only three numbers available to display the result. The values shown must be 18 and 265 respectively so that the relative magnitudes are understood. Therefore, all numbers in the field of view must be truncated by the same factor.
To do this make sure that "input multiplication factor to show volume must be non zero, if zero multiplication factors shown " is set at 0. Then click on ok at the bottom of the dialogue box. you should see various numbers across the screen each at a pivot point. Scan and select the highest number visible. I some red zeros are visible you should go back to the dialogue box and choose a smaller wave size.
Go back to the dialogue box and replace the 0 in the "input multiplication factor to show volume must be non zero, if zero multiplication factors shown " box with the value you have chosen, Click ok. You should now see the wave with volume. Represented as 1, 2 or 3 numbers read vertically.
Lastly, you can toggle between what I call a lagged wave or a no lag version using "Show weis wave (lagged pivots) unclick to show the no lag version?". What does this mean? The no lag version has a wave that turns at the actual top or bottom. However, price lags the turning point. Price is printed above or below the point at which a new wave is confirmed. What I mean by this is as follows. Suppose that closing prices are in a downward wave over several bars. Each new bar is examined relative to the "Weis wave size". Suppose the current bar closes at a new low, within the current down wave, at $30.00. If the Weis wave size is $0.10 then the algorithm will remember the $30.00 close and compare it to the close of the next bar. If the price goes lower to $29.99, for example, that is the new low and price is continuing down. If price climbs back up to a close of $30.11 then because price has moved more than $0.10 (the Weis wave size) then that is a wave reversal with a new wave starting up.
However if instead of rising by 11 cents it rose only 5 cents $30.05. Since price did not rise 10 cents The wave is still in a downward trend and the trend is not reversed. It is a bit in limbo. As long a closing price on the ensuing bars does not close at or below $30.00 or at or above $30.10 the wave remains in limbo. Suppose price closes for 5 bars between $30.00 and $30.10 and then on the 6th bar closes at or below $30.00. In that case, the downward trend is confirmed and the wave continues. The bars that closed in limbo are part of the downward trend. On the other hand, if the 6th bar close is 30.11 this means that a trend reversal is confirmed - now the trend is up. The turning point of the wave is 6 bars before at the $30.00 closing bar.
As such, turning points of waves can take some time to be confirmed to reverse in direction. Turning points can be 1, 2, 3 or more bars ahead of wave confirmation. A nice straight line for waves connecting highs and lows as used by Weis is not possible since series are not allowed in the plot statement for offsets. As such price is plotted above or below the point at which the wave was confirmed not the actual turning point. The Weis wave turning points plot at the same place as price. The "no lag" wave plot is not a straight line but does show the actual turning points. The volume is the volume for the actual turning point, not the point at which it is plotted.
The smaller the "Weis wave size" the less the lag will be.
If you have questions message me.
Jayy
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.
Rubotics TDI Top/Bottom Indicator**Rubotics TDI Top/Bottom Indicator (Rubots TDI T/B)**
This proprietary indicator integrates several technical analysis tools into one cohesive system to help traders identify potential top and bottom signals directly on the price chart. Unlike standard indicators that merely plot common metrics, this script uniquely fuses a custom moving average algorithm with established oscillators to enhance signal clarity and market timing.
**Core Components and Unique Features:**
- **Global Visual Settings:**
- Easily toggle visual elements (tables, background highlights) that display key metrics and trading setup information.
- Provides a detailed on-chart display of strategy data and essential trading parameters.
- **MAVW Calculation (Proprietary):**
- Computes a series of weighted moving averages using Fibonacci-inspired lengths (3, 5, 8, 13, 21, 34) to generate a dynamic moving average (MAVW).
- The MAVW line is color-coded—blue when trending upward, red when trending downward, and yellow when neutral—to offer an immediate visual cue of market direction.
- **RSI Module:**
- Calculates the RSI on a user-selected price source (default: close) with a customizable period (default: 14).
- Adjustable thresholds (default: 45 and 55) allow for fine-tuning of overbought and oversold conditions.
- **TDI Component:**
- Adapts the RSI into a dynamic channel using a simple moving average and a scaled standard deviation (multiplied by 1.6185) to form upper and lower bands.
- Incorporates both fast and slow moving averages (default periods: 2 and 7) with optional band filling to visually highlight momentum changes.
- **Note:** The TDI logic is based on public methodologies for converting RSI data into a dynamic indicator.
- **WaveTrend Oscillator:**
- Uses configurable channel and smoothing parameters to generate a WaveTrend line for additional momentum confirmation.
- The oscillator is used to further validate top and bottom signals by identifying overbought or oversold conditions.
- **Note:** The WaveTrend calculations are derived from widely available, public-domain techniques.
- **Signal Generation:**
- **Buy Signal:** Generated when the RSI is below its lower threshold, the TDI fast MA crosses above the lower band (with prior bar confirmation), the price is below the MAVW, and the WaveTrend indicates oversold conditions.
- **Sell Signal:** Generated when the RSI is above its upper threshold, the TDI fast MA crosses below the upper band (with prior bar confirmation), the price is above the MAVW, and the WaveTrend signals overbought conditions.
- Signals are visually marked on the chart with upward and downward triangles and accompanied by alert conditions.
- **Volume-Based Bar Coloring & Additional Visuals:**
- Colors price bars based on volume relative to a moving average to highlight the strength of moves.
- Provides background color changes and a dynamic table of key metric values (MAVW, RSI, TDI bands, WaveTrend) for real-time analysis.
**Customization and Originality:**
- Extensive input parameters allow traders to adjust each component to suit their trading style and market conditions.
- The unique combination of the proprietary MAVW calculation with traditional RSI, TDI, and WaveTrend elements creates a robust system for detecting market tops and bottoms.
- **Closed-Source Justification:**
This indicator is published as a closed-source script due to the proprietary enhancements integrated into the MAVW algorithm and signal generation logic. These unique modifications provide added value beyond standard public indicators.
Dragon Harmonic Pattern [TradingFinder] Dragon Detector🔵 Introduction
The Dragon Harmonic Pattern is one of the technical analysis tools that assists traders in identifying Potential Reversal Zones (PRZ). Resembling an "M" or "W" shape, this pattern is recognized in financial markets as a method for predicting bullish and bearish trends. By leveraging precise Fibonacci ratios and measuring price movements, traders can use this pattern to forecast market trends with high accuracy.
The Dragon Harmonic Pattern is built on the XABCD structure, where each point plays a significant role in shaping and forecasting price movements. Point X marks the beginning of the trend, representing the initial price movement. Point A indicates the first retracement, usually falling within the 0.380 to 0.620 range of the XA wave.
Next, point B signals the second retracement, which lies within 0.200 to 0.400 of the AB wave. Point C, acting as the hump of the pattern, is generally located within 0.800 to 1.100 of the XA wave. Finally, point D represents the endpoint of the pattern and the Potential Reversal Zone (PRZ), where the primary price reversal occurs.
In bullish scenarios, the Dragon Pattern indicates a reversal from a downtrend to an uptrend, where prices move upward from point D. Conversely, in bearish scenarios, prices decline after reaching point D. Accurate identification of this pattern through Fibonacci ratio analysis and PRZ examination can significantly increase the success rate of trades, enabling traders to adjust their strategies based on key market levels such as 0.618 or 1.100.
Due to its high accuracy in identifying Potential Reversal Zones (PRZ) and its alignment with Fibonacci ratios, the Dragon Harmonic Pattern is considered one of the most popular tools in technical analysis. Traders can use this pattern to pinpoint entry and exit points with greater confidence while minimizing trading risks.
Bullish :
Bearish :
🔵 How to Use
The Dragon Harmonic Pattern indicator helps traders identify bullish and bearish patterns in the market, allowing them to capitalize on available trading opportunities. By analyzing Fibonacci ratios and the XABCD structure, the indicator highlights Potential Reversal Zones (PRZ).
🟣 Bullish Dragon Pattern
In the Bullish Dragon Pattern, the price transitions from a downtrend to an uptrend after reaching point D. At this stage, points X, A, B, C, and D must be carefully identified.
Fibonacci ratios for these points are as follows: Point A should fall within 0.380 to 0.620 of the XA wave, point B within 0.200 to 0.400 of the AB wave, and point C within 0.800 to 1.100 of the XA wave.
When the price reaches point D, traders should look for bullish signals such as reversal candlesticks or increased trading volume to enter a buy position. The take-profit level can be set near the previous price high or based on the 1.272 Fibonacci ratio of the XA wave, while the stop-loss should be placed slightly below point D.
🟣 Bearish Dragon Pattern
In the Bearish Dragon Pattern, the price shifts from an uptrend to a downtrend after reaching point D. In this pattern, points X, A, B, C, and D must also be identified. Fibonacci ratios for these points are as follows: Point A should fall within 0.380 to 0.620 of the XA wave, point B within 0.200 to 0.400 of the AB wave, and point C within 0.800 to 1.100 of the XA wave.
Upon reaching point D, bearish signals such as reversal candlesticks or decreasing trading volume indicate the opportunity to enter a sell position. The take-profit level can be set near the previous price low or based on the 1.272 Fibonacci ratio of the XA wave, while the stop-loss should be placed slightly above point D.
By combining the Dragon Harmonic Pattern indicator with precise Fibonacci ratio analysis, traders can identify key opportunities while minimizing risks and improving their decision-making in both bullish and bearish market conditions.
🔵 Setting
🟣 Logical Setting
ZigZag Pivot Period : You can adjust the period so that the harmonic patterns are adjusted according to the pivot period you want. This factor is the most important parameter in pattern recognition.
Show Valid Forma t: If this parameter is on "On" mode, only patterns will be displayed that they have exact format and no noise can be seen in them. If "Off" is, the patterns displayed that maybe are noisy and do not exactly correspond to the original pattern.
Show Formation Last Pivot Confirm : if Turned on, you can see this ability of patterns when their last pivot is formed. If this feature is off, it will see the patterns as soon as they are formed. The advantage of this option being clear is less formation of fielded patterns, and it is accompanied by the latest pattern seeing and a sharp reduction in reward to risk.
Period of Formation Last Pivot : Using this parameter you can determine that the last pivot is based on Pivot period.
🟣 Genaral Setting
Show : Enter "On" to display the template and "Off" to not display the template.
Color : Enter the desired color to draw the pattern in this parameter.
LineWidth : You can enter the number 1 or numbers higher than one to adjust the thickness of the drawing lines. This number must be an integer and increases with increasing thickness.
LabelSize : You can adjust the size of the labels by using the "size.auto", "size.tiny", "size.smal", "size.normal", "size.large" or "size.huge" entries.
🟣 Alert Setting
Alert : On / Off
Message Frequency : This string parameter defines the announcement frequency. Choices include: "All" (activates the alert every time the function is called), "Once Per Bar" (activates the alert only on the first call within the bar), and "Once Per Bar Close" (the alert is activated only by a call at the last script execution of the real-time bar upon closing). The default setting is "Once per Bar".
Show Alert Time by Time Zone : The date, hour, and minute you receive in alert messages can be based on any time zone you choose. For example, if you want New York time, you should enter "UTC-4". This input is set to the time zone "UTC" by default.
🔵 Conclusion
The Dragon Harmonic Pattern is an advanced and practical technical analysis tool that aids traders in accurately predicting bullish and bearish trends by identifying Potential Reversal Zones (PRZ) and utilizing Fibonacci ratios. Built on the XABCD structure, this pattern stands out for its flexibility and precision in identifying price movements, making it a valuable resource among technical analysts. One of its key advantages is its compatibility with other technical tools such as trendlines, support and resistance levels, and Fibonacci retracements.
By using the Dragon Harmonic Pattern indicator, traders can accurately determine entry and exit points for their trades. The indicator analyzes key Fibonacci ratios—0.380 to 0.620, 0.200 to 0.400, and 0.800 to 1.100—to identify critical levels such as price highs and lows, offering precise trading strategies. In bullish scenarios, traders can profit from rising prices, while in bearish scenarios, they can capitalize on price declines.
In conclusion, the Dragon Harmonic Pattern is a highly reliable tool for identifying trading opportunities with exceptional accuracy. However, for optimal results, it is recommended to combine this pattern with other analytical tools and thoroughly assess market conditions. By utilizing this indicator, traders can reduce their trading risks while achieving higher profitability and confidence in their trading strategies.
Next Candle Predictor with Auto HedgingThe "Next Candle Predictor with Auto Hedging" is a Pine Script indicator designed for use on TradingView. It combines predictive analysis and basic hedging techniques to assist traders in making informed decisions. Here's a detailed explanation suitable for public sharing on TradingView:
Overview
This script predicts the closing price of the next candle based on the current candle's open and close prices. It also includes an auto hedging feature that suggests potential hedging levels to mitigate risk based on the predicted price movement. The indicator is particularly useful for traders looking to enhance their trading strategies with predictive analytics.
Key Features
Next Candle Prediction:
The indicator analyzes the current candle's data (open and close prices) to predict whether the next candle will close higher or lower.
If the current candle is bullish (close > open), it predicts a higher close for the next candle. Conversely, if the candle is bearish, it predicts a lower close.
Auto Hedging:
The script calculates a hedging level based on the predicted close price.
If the predicted close indicates a bullish move, the hedge level is set slightly below the predicted close, suggesting where a trader might consider placing a hedge. If the prediction indicates a bearish move, the hedge level is set above the predicted close.
Elliott Wave Analysis:
The script includes a basic implementation of identifying significant price movements, akin to Elliott Wave analysis, by detecting peaks and troughs over a specified number of bars (wave length).
This can help traders identify potential trend reversals or continuations.
How It Works
Input Parameters: Users can customize the waveLength parameter, which determines how many bars back the script looks to identify significant highs and lows.
Peak and Trough Detection: The script identifies the highest high and lowest low within the specified wave length, plotting these points on the chart for visual reference.
Prediction Logic: The predicted close is calculated based on the current candle's behavior, allowing traders to anticipate price movements.
Hedging Level Calculation: The script dynamically calculates a hedging level based on the predicted close, providing a visual cue for potential risk management strategies.
Visual Representation
The indicator plots:
Elliott Wave Highs: Marked in green.
Elliott Wave Lows: Marked in red.
Predicted Close: Shown as a blue step line.
Hedge Level: Displayed as an orange step line.
Benefits
Enhanced Decision-Making: By providing predictions and potential hedging levels, traders can make more informed decisions about entering or exiting positions.
Risk Management: The auto hedging feature helps traders manage risk by suggesting levels where they might place hedges against adverse price movements.
Customizable: The script allows for user-defined parameters, making it adaptable to different trading strategies and market conditions.
Conclusion
The "Next Candle Predictor with Auto Hedging" indicator is a powerful tool for traders seeking to enhance their trading strategies with predictive analytics and risk management techniques. By utilizing this indicator, traders can gain insights into potential price movements and make more informed trading decisions.
Feel free to explore the script, customize it to fit your trading style, and engage with the TradingView community for further insights and improvements!
Related
[GYTS-Pro] Flux Composer🧬 Flux Composer (Professional Edition)
🌸 Confluence indicator in GoemonYae Trading System (GYTS) 🌸
The Flux Composer is a powerful tool in the GYTS suite that is designed to aggregate signals from multiple Signal Providers, apply advanced decaying functions, and offer customisable and advanced confluence mechanisms. This allows making informed decisions by considering the strength and agreement ("when all stars align") of various input signals.
🌸 --------- TABLE OF CONTENTS --------- 🌸
1️⃣ Main Highlights
2️⃣ Flux Composer’s Features
Multi Signal Provider support
Advanced decaying functions
Customisable Flux confluence mechanisms
Actionable trading experience
Filtering options
User-friendly experience
Upgrades compared to Community Edition
3️⃣ User Guide
Selecting Signal Providers
Connecting Signal Providers to the Flux Composer
Understanding the Flux
Tuning the decaying functions
Choosing Flux confluence mechanism
Choosing sensitivity
Utilising the filtering options
Interpreting the Flux for trading signals
4️⃣ Limitations
🌸 ------ 1️⃣ --- MAIN HIGHLIGHTS --- 1️⃣ ------ 🌸
- Signal aggregation : Combines signals from multiple different 📡 Signal Providers, each of which can be tuned and adjusted independently.
- Decaying function : Utilises advanced decaying functions to model the diminishing effect of signals over time, ensuring that recent signals have more weight. In addition to the decaying effect, the "quality" of the original signals (e.g. a "strong" GDM from WaveTrend 4D ) are accounted for as well.
- Flux confluence mechanism : The aggregation of all decaying functions form the "Flux", which is the core signal measurement of the Flux Composer. Multiple mechanisms are available for creating the Flux and effectively using it for actionable trading signals.
- Visualisation : Provides detailed visualisation options to help users understand and tune the contributions of individual Signal Providers and their decaying functions.
- Backtesting : The 🧬 Flux Composer is a core component of the TradingView suite of the 🌸 GoemonYae Trading System (GYTS) 🌸. It connects multiple 📡 Signal Providers, such as the WaveTrend 4D, and processes their signals to produce a unified "Flux". This Flux can then be used by the GYTS "🎼 Order Orchestrator" for backtesting and trade automation.
🌸 ------ 2️⃣ --- FLUX COMPOSER'S FEATURES --- 2️⃣ ------ 🌸
Let's delve into more details...
💮 1. Multi Signal Provider support
Using the name of the GYTS "🎼 Order Orchestrator" as an analogy: Imagine a symphony where each instrument plays its own unique part, contributing to the overall harmony. The Flux Composer operates similarly, integrating multiple Signal Providers to create a comprehensive and robust trading signal -- the "Flux". Currently, it supports up to four streams from the WaveTrend 4D's ’s Gradient Divergence Measure (GDM) and another four streams from the Quantile Median Cross (QMC). These can be either four "Professional Edition" Signal Providers or eight "Community Editions".
Note that the GDM includes 2 different continuous signals and the QMC 3 different continuous signals (from different frequencies). This means that the Community Edition can handle 2*2 + 2*3 = 10 different continuous signals and the Professional Edition as much as 20.
As GYTS evolves, more Signal Providers will be added; at the moment of releasing the Flux Composer, only WaveTrend 4D is publicly available.
💮 2. Advanced decaying functions
A trading signal can be relevant today, less relevant tomorrow, and irrelevant in a week's time. In other words, its relevance diminishes, or decays , over time. The Flux Composer utilises decaying functions that ensure that recent signals carry more weight, while older signals fade away. This is crucial for accurate signal processing. The intensity and decay settings allow for precise control, allowing emphasising certain signals based on their strength and relevance over time. On top of that, unlike binary signals ("buy now"), the Flux Composer utilises the actual values from the Signal Providers, differentiating between the exact quality of signals, and thus offering a detailed representation of the trading landscape. We will illustrate this in a further section.
💮 3. Customisable Flux confluence mechanisms
Another core component of the Flux Composer is the ability of intelligently combining the decaying functions. It offers four sophisticated confluence mechanisms: Amplitude Compression, Accentuated Amplitude Compression, Trigonometric, and GYTSynthesis. Each mechanism has its unique way of processing the Flux, tailored to different trading needs. For instance, the Amplitude Compression method scales the Flux based on recent values, much like the Stochastic Oscillator, while the Trigonometric method uses smooth functions to reduce outliers’ impact. The GYTSynthesis is a proprietary method, striking a balance between signal strength and discriminative power.
We'll discuss this in more detail in the User Guide section.
💮 4. Actionable trading experience
While the mathematical abilities might seem overwhelming, the goal of the Flux Composer is to transform complex signal data into actionable trading signals. When the Flux reaches certain thresholds, it generates clear bullish or bearish signals, making it easy for traders to interpret. The inclusion of upper and lower thresholds (UT and LT) helps in identifying strong signals visually and should be a familiar behaviour similar to how many other indicators operate. Furthermore, the Flux Composer can plot trading signals directly on the oscillator, showing triangle shapes for buy or sell signals. This visual aid is complemented by the possibility to setup TradingView alerts.
💮 5. Filtering options
The Professional Edition also offers filtering options to possibly further improve the quality of Flux signals. Signal streams can be divided into “Signal Flux” and “Filter Flux.” The Filter Flux acts as a gatekeeper, ensuring that only signals meeting the Filter's criteria (which consist of similar UT/LT thresholds) are considered for trading. This dual-layer approach enhances the reliability of trading signals, reducing the chances of false positives.
💮 6. User-friendly experience
GYTS is all about sophisticated, robust methods but also "elegance". One of the interpretations of the latter, is that the users' experience is very important. Despite the Flux Composer's mathematical underpinnings, it offers intuitive settings that with omprehensive tooltips to help with a smooth setup process. For those looking to fine-tune their signals, the Flux Composer allows the visualisation of individual decaying functions. This feature helps users understand the impact of each setting and make informed adjustments. Additionally, the background of the chart can be coloured to indicate the trading direction suggested by the Filter Flux, providing an at-a-glance overview of market conditions.
💮 7. Upgrades compared to Community Edition
Number of signal streams -- At the moment of writing, the Professional Edition works with 4x GDM and 4x QMC signal streams from WaveTrend 4D Signal Provider , while Community Edition (CE) Flux Composer (FC) only works with 2x GDM and 2x QMC signal streams.
Flux confluence mechanism -- CE includes the Amplitude Compression and Trigonometric confluence mechanisms, while the Pro Edition also includes the Accentuated Amplitude Compression and the GYTSynthesis mechanisms.
Signal streams as filters -- The Pro Edition can use Signal Providers as filters.
🌸 ------ 3️⃣ --- USER GUIDE --- 3️⃣ ------ 🌸
💮 1. Selecting Signal Providers
The Flux Composer’s foundation lies in its Signal Providers. When starting with the Flux Composer, using a single Signal Provider can already provide significant value due to the nature of decaying functions. For instance, the WaveTrend 4D signal provider includes up to 5 signal types (GDM and QMC in different frequencies) in a single direction (long/short). Moreover, the various confluence mechanisms that enhance the resulting Flux result in improved discrimination between weak and strong signals. This approach is akin to ensemble learning in machine learning, where multiple models are combined to improve predictive performance.
While using a single Signal Provider is beneficial, the true power of the Flux Composer is realised with multiple Signal Providers. Here are two general approaches to selecting Signal Providers:
Diverse Behaviours
Use Signal Providers with different behaviours, such as WaveTrend 4D on various assets/timeframes or entirely different Signal Providers. This approach leverages diversification to achieve robustness, rooted in the principle that varied sources enhance the overall signal quality. To explain this with an analogy, this strategy aligns with the theory of diversification in portfolio management, where combining uncorrelated assets reduces overall risk. Similarly, combining uncorrelated signals can mitigate the risk of signal failure. A practical example can be integrating a mean-reversion signal with a trend-following signal -- these can balance each other out, providing more stable outputs over different market conditions.
Enhancing a Single Provider
If you consider a particular Signal Provider highly effective, you could improve its robustness by using multiple instances with slight variations. These variations could include different sources (e.g., close, HL2, HLC3), data providers (same asset across different brokers/exchanges), or parameter adjustments. This method mirrors Monte Carlo simulations, often used in risk management and derivative pricing, which involve running many simulations with varied inputs to estimate the probability of different outcomes. By applying similar principles, the strategy becomes less susceptible to overfitting, ensuring the signals are not overly dependent on specific data conditions.
💮 2. Connecting Signal Providers to the Flux Composer
Moving on to practicalities: how do you connect Signal Providers with the Flux Composer? You may have noticed that when you open the drawdown of a data source in a TradingView indicator (with "open", "high", "low", etc.), you also see names from other indicators on your chart. We call these "streams", and the Signal Providers are designed such that they output this stream in a way that the Flux Composer can interpret it. Thus, to connect a Signal Provider with the Flux Composer, you should first have that Signal Provider on your chart. Obviously you should set it up an a way that it seems to provide good signals. After that, in the Data Stream dropdown in the Flux Composer, you can select the stream that is outputted by your Signal Provider. This will always be with a prefix of "🔗 STREAM" (after the Signal Provider's indicator name). See the chart below.
There is one important nuance: when you have multiple (similar) Signal Providers on your chart, it may be hard to select the correct data stream in the Flux Composer as the names of the streams keep repeating when you use identical indicators. So be sure to be attentive as you might end up using the same signals multiple times.
Also, the Signal Providers have an "Indicator name" parameter (and another parameter to repeat this name) that is handy to use when you have multiple Signal Providers on your screen. It is handy to give names that describe the unique settings of that Signal Provider so you can better differentiate what you are looking at on your screen.
💮 3. Understanding the Flux
Let's understand how the Signal Provider's signals are processed. In the chart below, you see we have one Signal Provider (WaveTrend 4D) connected to the Flux Composer and that it gives a bearish QMC signal. The Flux Composer converts this into a decaying function. You can show these functions per Signal Provider when the option "Show decaying function of Signal Provider" is enabled (as it is in the chart).
In our opinion, of crucial importance is the ability to process the quality of signals, rather than just any signal. In mathematical terms, we are interested in continuous signals as these provide a spectrum of values. These signals can reflect varying degrees of market sentiment or trend strength, offering richer information than binary signals, which offer only two states (e.g., buy/sell). Especially in the context of the Flux Composer, where you aggregate multiple signals, it makes a big difference whether you combine 10 weak signals or 10 strong signals. To illustrate this principle, look at the chart below where there are 4 signals of different strengths. As you can see, each of the signals affects the Flux with different intensities.
💮 4. Tuning the decaying functions
As previously mentioned, the decaying functions are a way to give more importance to recent signals while allowing older ones to fade away gradually. This mimics the natural way we assess information, giving more weight to recent events. The decaying functions in the Flux Composer are highly customisable while remaining easy to use. You can adjust the initial intensity , which sets the starting strength of a signal, and the decay rate, which determines how quickly this signal diminishes over time. Let's look at specific examples.
If we add 3 Flux Composers on the chart, connect the same Signal Provider, keep all settings the same with one exception, we get the chart below. Here we have changed the "intensity" parameter of the specific signal. As you can see, the decaying functions are different. The intensity determines the initial strength of the decayed function. Adjusting the intensity allows you to emphasise certain signal types based on their perceived reliability or importance.
Let's now keep the intensity the same ("normal"), but change the "decay" parameter. As you can see in the image below, the decay controls how quickly the signal’s strength diminishes over time. By adjusting the decay, you can model the longevity of the signal’s impact. A faster decay means the signal loses its influence quickly, while a slower decay means it remains relevant for a longer period.
So how do multiple signals interact? You can see this as a simple "stacking of decaying functions" (although there is more to it, see next section). In the chart below we different strenghts of signals and different decay rates to illustrate how the Flux is constructed.
Hopefully this helps with developing some intuition how signals are converted to decaying functions, how you can control them, and how the Flux is constructed. When tuning these parameters, use the visualisation options to see how individual decaying functions contribute to the overall Flux. This helps in understanding and refining the parameters to achieve the desired trading signal behaviour.
💮 5. Choosing Flux confluence mechanism
While we mentioned that the Flux is a "stacking of individual decaying functions", in the back-end, that is not exactly that simple. Like previously mentioned, for GYTS, "elegance" is very important. One of the interpretations is "user friendliness" and the Flux confluence mechanism is one of the essential developments for this characteristic. The Flux confluence mechanism is critical in synthesising the aggregated signals into the Flux. The choice of mechanism affects how the signals are combined and the resulting trading signals. The Professional Edition offers four distinct mechanisms, each with its strengths.
The Amplitude Compression mechanism is intuitive, scaling the Flux based on recent values, intuitively not unlike the method of the well-known Stochastic Oscillator. The Accentuated Amplitude Compression method takes this a step further, giving more weight to strong Flux values. The Trigonometric mechanism smooths the Flux and reduces the impact of outliers, providing a balanced approach. Finally, the GYTSynthesis mechanism, a proprietary approach, balances signal strength and discriminative power, making it easier to tune and generalise.
It's difficult to convey the workings of the Flux confluence mechanism in a chart, but let's take the opportunity to show how the Flux would look like when connecting both one WaveTrend 4D Signal Provider signals to four Flux Composers with default settings, except the Flux confluence mechanism:
You may notice subtle differences between the four methods. They react differently to different values and their overall shape is slightly be different. The Amplitude Compression is more "pointy" and GYTSynthesis doesn't react to low values. There are many nuances, especially in combination with tuning the sensitivity and upper/lower threshold (UT/LT) parameters.
💮 6. Choosing sensitivity
Speaking of the sensitivity , this parameters fine-tunes how responsive the Flux is to the input signals. Higher sensitivity results in more pronounced responses, leading to more frequent trading signals. Lower sensitivity makes the Flux less responsive, resulting in fewer but potentially more reliable signals.
You might think that changing the upper/lower threshold (UT/LT) parameters would be equivalent, but that's not the case. The sensitivity In case of the Amplitude Compression mechanisms, changing the sensitivity would change the relative Flux shape over time, and with the Trigonometric and GYTSynthesis mechanisms, the Flux shape itself (independent of time) would change. In other words, these are all good parameters for tuning.
💮 7. Utilising the filtering options
When choosing the signal stream of a Signal Provider, you can also change the default "Signal" category of that Signal Provider to a "Filter". In the example below, two Signal Providers are connected; the second is set as a filter. You can see that a second row of a Flux is shown in the Flux Composer (this visualisation can be disabled), corresponding with the signals of the second Signal Provider.
Logically, only when the Filter Flux gives a signal in a certain direction, signals from the regular Signal Flux are registered. Generally speaking, for this use case it is handy to set the thresholds for the Filter Flux low and possibly to decrease the decay rate so that the filtering is active for a long enough time.
💮 8. Interpreting the Flux for trading signals
Lastly, the Signal Flux gives buy and sell signals when it crosses the upper/lower thresholds (UT/LT), when the filter allows it (if enabled). This can be visualised with the triangles as you may have seen in the charts in the previous sections. For people using TradingView's alerts -- these would work too out of the box. And finally, for backtesting and possibly trade automation, we will have the GYTS "🎼 Order Orchestrator" that connects with the Flux Composer.
🌸 ------ 4️⃣ --- LIMITATIONS --- 4️⃣ ------ 🌸
Only 🌸 GYTS 📡 Signal Providers are supported, as there is a specific method to pass continuous (non-binary) data in the data stream
At the moment of release, only the WaveTrend 4D Signal Provider is available. Other Signal Providers will be gradually released.
[GYTS-CE] Flux Composer🧬 Flux Composer (Community Edition)
🌸 Confluence indicator in GoemonYae Trading System (GYTS) 🌸
The Flux Composer is a powerful tool in the GYTS suite that is designed to aggregate signals from multiple Signal Providers, apply customisable decaying functions, and offer customisable and advanced confluence mechanisms. This allows making informed decisions by considering the strength and agreement ("when all stars align") of various input signals.
🌸 --------- TABLE OF CONTENTS --------- 🌸
1️⃣ Main Highlights
2️⃣ Flux Composer’s Features
Multi Signal Provider support
Advanced decaying functions
Customisable Flux confluence mechanisms
Actionable trading experience
User-friendly experience
3️⃣ User Guide
Selecting Signal Providers
Connecting Signal Providers to the Flux Composer
Understanding the Flux
Tuning the decaying functions
Choosing Flux confluence mechanism
Choosing sensitivity
Interpreting the Flux for trading signals
4️⃣ Limitations
🌸 ------ 1️⃣ --- MAIN HIGHLIGHTS --- 1️⃣ ------ 🌸
- Signal aggregation : Combines signals from multiple different 📡 Signal Providers, each of which can be tuned and adjusted independently.
- Decaying function : Utilises advanced decaying functions to model the diminishing effect of signals over time, ensuring that recent signals have more weight. In addition to the decaying effect, the "quality" of the original signals (e.g. a "strong" GDM from WaveTrend 4D with GDM ) are accounted for as well.
- Flux confluence mechanism : The aggregation of all decaying functions form the "Flux", which is the core signal measurement of the Flux Composer. Multiple mechanisms are available for creating the Flux and effectively using it for actionable trading signals.
- Visualisation : Provides detailed visualisation options to help users understand and tune the contributions of individual Signal Providers and their decaying functions.
- Backtesting : The 🧬 Flux Composer is a core component of the TradingView suite of the 🌸 GoemonYae Trading System (GYTS) 🌸. It connects multiple 📡 Signal Providers, such as the WaveTrend 4D, and processes their signals to produce a unified "Flux". This Flux can then be used by the GYTS "🎼 Order Orchestrator" for backtesting and trade automation.
🌸 ------ 2️⃣ --- FLUX COMPOSER'S FEATURES --- 2️⃣ ------ 🌸
Let's delve into more details...
💮 1. Multi Signal Provider support
Using the name of the GYTS "🎼 Order Orchestrator" as an analogy: Imagine a symphony where each instrument plays its own unique part, contributing to the overall harmony. The Flux Composer operates similarly, integrating multiple Signal Providers to create a comprehensive and robust trading signal -- the "Flux". Currently, it supports up to two streams from the WaveTrend 4D’s Gradient Divergence Measure (GDM) and another two streams from the WaveTrend 4D's Quantile Median Cross (QMC) .
Note that the GDM includes 2 different continuous signals and the QMC 3 different continuous signals (from different frequencies). This means that the Community Edition can handle 2*2 + 2*3 = 10 different continuous signals.
As GYTS evolves, more Signal Providers will be added; at the moment of releasing the Flux Composer, only WaveTrend 4D with GDM and with QMC are publicly available.
💮 2. Advanced decaying functions
A trading signal can be relevant today, less relevant tomorrow, and irrelevant in a week's time. In other words, its relevance diminishes, or decays , over time. The Flux Composer utilises decaying functions that ensure that recent signals carry more weight, while older signals fade away. This is crucial for accurate signal processing. The intensity and decay settings allow for precise control, allowing emphasising certain signals based on their strength and relevance over time. On top of that, unlike binary signals ("buy now"), the Flux Composer utilises the actual values from the Signal Providers, differentiating between the exact quality of signals, and thus offering a detailed representation of the trading landscape. We will illustrate this in a further section.
💮 3. Customisable Flux confluence mechanisms
Another core component of the Flux Composer is the ability of intelligently combining the decaying functions. It offers two sophisticated confluence mechanisms: Amplitude Compression and Trigonometric. Each mechanism has its unique way of processing the Flux, tailored to different trading needs. The Amplitude Compression method scales the Flux based on recent values, much like the Stochastic Oscillator, while the Trigonometric method uses smooth functions to reduce outliers’ impact We'll discuss this in more detail in the User Guide section.
💮 4. Actionable trading experience
While the mathematical abilities might seem overwhelming, the goal of the Flux Composer is to transform complex signal data into actionable trading signals. When the Flux reaches certain thresholds, it generates clear bullish or bearish signals, making it easy for traders to interpret. The inclusion of upper and lower thresholds (UT and LT) helps in identifying strong signals visually and should be a familiar behaviour similar to how many other indicators operate. Furthermore, the Flux Composer can plot trading signals directly on the oscillator, showing triangle shapes for buy or sell signals. This visual aid is complemented by the possibility to setup TradingView alerts.
💮 5. User-friendly experience
GYTS is all about sophisticated, robust methods but also "elegance". One of the interpretations of the latter, is that the users' experience is very important. Despite the Flux Composer's mathematical underpinnings, it offers intuitive settings that with omprehensive tooltips to help with a smooth setup process. For those looking to fine-tune their signals, the Flux Composer allows the visualisation of individual decaying functions. This feature helps users understand the impact of each setting and make informed adjustments.
🌸 ------ 3️⃣ --- USER GUIDE --- 3️⃣ ------ 🌸
💮 1. Selecting Signal Providers
The Flux Composer’s foundation lies in its Signal Providers. When starting with the Flux Composer, using a single Signal Provider can already provide significant value due to the nature of decaying functions. For instance, the WaveTrend 4D signal provider includes up to two GDM and three QMC signals in a single direction (long/short). Moreover, the various confluence mechanisms that enhance the resulting Flux result in improved discrimination between weak and strong signals. This approach is akin to ensemble learning in machine learning, where multiple models are combined to improve predictive performance.
While using a single Signal Provider is beneficial, the true power of the Flux Composer is realised with multiple Signal Providers. Here are two general approaches to selecting Signal Providers:
Diverse Behaviours
Use Signal Providers with different behaviours, such as WaveTrend 4D on various assets/timeframes or entirely different Signal Providers. This approach leverages diversification to achieve robustness, rooted in the principle that varied sources enhance the overall signal quality. To explain this with an analogy, this strategy aligns with the theory of diversification in portfolio management, where combining uncorrelated assets reduces overall risk. Similarly, combining uncorrelated signals can mitigate the risk of signal failure. A practical example can be integrating a mean-reversion signal with a trend-following signal -- these can balance each other out, providing more stable outputs over different market conditions.
Enhancing a Single Provider
If you consider a particular Signal Provider highly effective, you could improve its robustness by using multiple instances with slight variations. These variations could include different sources (e.g., close, HL2, HLC3), data providers (same asset across different brokers/exchanges), or parameter adjustments. This method mirrors Monte Carlo simulations, often used in risk management and derivative pricing, which involve running many simulations with varied inputs to estimate the probability of different outcomes. By applying similar principles, the strategy becomes less susceptible to overfitting, ensuring the signals are not overly dependent on specific data conditions.
💮 2. Connecting Signal Providers to the Flux Composer
Moving on to practicalities: how do you connect Signal Providers with the Flux Composer? You may have noticed that when you open the drawdown of a data source in a TradingView indicator (with "open", "high", "low", etc.), you also see names from other indicators on your chart. We call these "streams", and the Signal Providers are designed such that they output this stream in a way that the Flux Composer can interpret it. Thus, to connect a Signal Provider with the Flux Composer, you should first have that Signal Provider on your chart. Obviously you should set it up an a way that it seems to provide good signals. After that, in the Data Stream dropdown in the Flux Composer, you can select the stream that is outputted by your Signal Provider. This will always be with a prefix of "🔗 STREAM" (after the Signal Provider's indicator name). See the chart below.
There is one important nuance: when you have multiple (similar) Signal Providers on your chart, it may be hard to select the correct data stream in the Flux Composer as the names of the streams keep repeating when you use identical indicators. So be sure to be attentive as you might end up using the same signals multiple times.
Also, the Signal Providers have an "Indicator name" parameter (and another parameter to repeat this name) that is handy to use when you have multiple Signal Providers on your screen. It is handy to give names that describe the unique settings of that Signal Provider so you can better differentiate what you are looking at on your screen.
💮 3. Understanding the Flux
Let's understand how the Signal Provider's signals are processed. In the chart below, you see we have one Signal Provider (WaveTrend 4D) connected to the Flux Composer and that it gives a bearish QMC signal. The Flux Composer converts this into a decaying function. You can show these functions per Signal Provider when the option "Show decaying function of Signal Provider" is enabled (as it is in the chart).
In our opinion, of crucial importance is the ability to process the quality of signals, rather than just any signal. In mathematical terms, we are interested in continuous signals as these provide a spectrum of values. These signals can reflect varying degrees of market sentiment or trend strength, offering richer information than binary signals, which offer only two states (e.g., buy/sell). Especially in the context of the Flux Composer, where you aggregate multiple signals, it makes a big difference whether you combine 10 weak signals or 10 strong signals. To illustrate this principle, look at the chart below where there are 4 signals of different strengths. As you can see, each of the signals affects the Flux with different intensities.
💮 4. Tuning the decaying functions
As previously mentioned, the decaying functions are a way to give more importance to recent signals while allowing older ones to fade away gradually. This mimics the natural way we assess information, giving more weight to recent events. The decaying functions in the Flux Composer are highly customisable while remaining easy to use. You can adjust the initial intensity , which sets the starting strength of a signal, and the decay rate, which determines how quickly this signal diminishes over time. Let's look at specific examples.
If we add 3 Flux Composers on the chart, connect the same Signal Provider, keep all settings the same with one exception, we get the chart below. Here we have changed the "intensity" parameter of the specific signal. As you can see, the decaying functions are different. The intensity determines the initial strength of the decayed function. Adjusting the intensity allows you to emphasise certain signal types based on their perceived reliability or importance.
Let's now keep the intensity the same ("normal"), but change the "decay" parameter. As you can see in the image below, the decay controls how quickly the signal’s strength diminishes over time. By adjusting the decay, you can model the longevity of the signal’s impact. A faster decay means the signal loses its influence quickly, while a slower decay means it remains relevant for a longer period.
So how do multiple signals interact? You can see this as a simple "stacking of decaying functions" (although there is more to it, see next section). In the chart below we use different "intensity" and "decay" parameters to discuss how the Flux is created.
Hopefully this helps with developing some intuition how signals are converted to decaying functions, how you can control them, and how the Flux is constructed. When tuning these parameters, use the visualisation options to see how individual decaying functions contribute to the overall Flux. This helps in understanding and refining the parameters to achieve the desired trading signal behaviour.
💮 5. Choosing Flux confluence mechanism
While we mentioned that the Flux is a "stacking of individual decaying functions", in the back-end, that is not exactly that simple. Like previously mentioned, for GYTS, "elegance" is very important. One of the interpretations is "user friendliness" and the Flux confluence mechanism is one of the essential developments for this characteristic. The Flux confluence mechanism is critical in synthesising the aggregated signals into the Flux. The choice of mechanism affects how the signals are combined and the resulting trading signals. The Community Edition offers two distinct mechanisms, each with its strengths.
The Amplitude Compression mechanism is intuitive, scaling the Flux based on recent values, intuitively not unlike the method of the well-known Stochastic Oscillator. On the other hand, the Trigonometric mechanism smooths the Flux and reduces the impact of outliers, providing a balanced approach. It's difficult to convey the workings of the Flux confluence mechanism in a chart, but let's take the opportunity to show how the Flux would look like when connecting both GDM and QMC signals to two Flux Composers with default settings, except the Flux confluence mechanism:
You can notice that the upper Flux Converter (FC) triggered two signals while the other FC triggered only one. There are more nuances, especially in combination with tuning the sensitivity and upper/lower threshold (UT/LT) parameters.
💮 6. Choosing sensitivity
Speaking of the sensitivity , this parameters fine-tunes how responsive the Flux is to the input signals. Higher sensitivity results in more pronounced responses, leading to more frequent trading signals. Lower sensitivity makes the Flux less responsive, resulting in fewer but potentially more reliable signals.
You might think that changing the upper/lower threshold (UT/LT) parameters would be equivalent, but that's not the case. The sensitivity In case of the Amplitude Compression mechanism, changing the sensitivity would change the relative Flux shape over time, and with the Trigonometric mechanism, the Flux shape itself (independent of time) would change. In other words, these are all good parameters for tuning.
💮 8. Interpreting the Flux for trading signals
Lastly, the Signal Flux gives buy and sell signals when it crosses the upper/lower thresholds (UT/LT) This can be visualised with the triangles as you may have seen in the charts in the previous sections. For people using TradingView's alerts -- these would work out of the box. And finally, for backtesting and possibly trade automation, we will have the GYTS "🎼 Order Orchestrator" that connects with the Flux Composer.
🌸 ------ 4️⃣ --- LIMITATIONS --- 4️⃣ ------ 🌸
Only 🌸 GYTS 📡 Signal Providers are supported, as there is a specific method to pass continuous (non-binary) data in the data stream
At the moment of release, only WaveTrend 4D with GDM and with QMC are available. Other Signal Providers will be gradually released.
REV01 - Combined WT and SQZMOM Indicator and VWAP [KMARHOUMI]The Combined WaveTrend and Squeeze Momentum Indicator with VWAP (CWT_SQZMOM) is a powerful trading tool designed for traders looking to capitalize on market momentum and volatility squeezes, with the added insight of volume-weighted average price (VWAP) levels.
This custom indicator integrates three key components:
WaveTrend Oscillator: A momentum indicator that highlights potential reversal points in the market by identifying overbought and oversold conditions.
Squeeze
Momentum Indicator (SQZMOM): Identifies market consolidation periods (squeeze) and potential momentum breakouts, offering visual cues for significant price movements.
Volume-Weighted Average Price (VWAP): Provides a baseline measure of the average price based on volume, crucial for understanding market direction within a trading day.
Features
Visual Cues: Utilizes color-coded histograms, circles, and triangles to provide clear visual signals for trading opportunities.
Customizable Parameters: Allows traders to adjust input values for the WaveTrend Oscillator and Squeeze Momentum Indicator to fit various trading styles and timeframes.
Dynamic Indicators: Combines price momentum with volume data, offering a comprehensive view of market conditions.
How to Use
Setup: Apply the indicator to any chart in a trading platform that supports Pine Script (e.g., TradingView). Adjust the input parameters as needed to match your trading strategy and the asset's volatility.
Reading the Indicator:
WaveTrend Crossovers: Look for blue circles indicating a bullish crossover of the WaveTrend lines (wt1 crosses above wt2) and fuchsia circles for a bearish crossover (wt1 crosses below wt2). These points signal potential reversal opportunities.
Squeeze Momentum (SQZMOM): Green triangles at the bottom indicate a "Squeeze On" condition, suggesting market consolidation and potential for a breakout. Red triangles at the top signal a "Squeeze Off" condition, indicating the end of the squeeze and the start of a momentum phase.
VWAP: The price position relative to the VWAP line helps identify the overall market trend. Prices above VWAP may indicate bullish conditions, while prices below VWAP suggest bearish conditions.
Example Scenario for Going Long
Imagine the asset's price has been consolidating, and you observe a green triangle ("Squeeze On") at the bottom of the chart, indicating a potential breakout. Shortly after, a blue circle appears, signaling a bullish crossover in the WaveTrend Oscillator. If this crossover occurs above the VWAP line, it strengthens the signal for a long position. Traders might enter a long trade at this point, setting a stop loss below the recent low and a take profit at a previous resistance level or using a risk-reward ratio that suits their strategy.
Trend Direction Sequence | Auto-Multi-TimeframeThe main benefit of this indicator is the ability to see multiple higher timeframes at ones to get a better overview of signals that could mark possible trend reversals with more weight than those on the selected timeframe. Since the higher timeframes are calculated automatically, the user needs to set a Period Multiplier that multiplies the selected timeframe several times to determine the higher timeframes. Equal periods are filtered out. And the current highest timeframe is capped at 1 year by TradingView.
It is possible to alter the sequence Count Limit and the underlying Wavelength. The Wavelength defines the distance between the starting and ending candle. This builds the minimum condition to find a trend. A longer Wavelength means that the distortions between the start and end candle can be bigger, so it can become easier to find a trending sequence. But be careful not to set the length too high as this could mean that the resulting sequence does not really represent a trend anymore. The Count Limit defines the completion of a trending sequence. A higher number makes it more difficult to find a completed sequence, but also makes the result more reliable. If the Wavelength is changed, the Count Limit should be adjusted accordingly.
There is also a qualifier for the completion of a sequence. A completed sequence only will be labeled on the chart, if it is proved that the lowest low/highest high of the last two candlesticks of a period is lower/higher than that of the previous two candlesticks. It does not require the trend to be continuous on the last candlestick. On the contrary, a trend shift may already have begun.
By default, the labeling of completed sequences will appear on the highs and lows of the specific periods. Because the higher periods will take time and several candlesticks to appear, the labels will be redrawn accordingly. As an option it is possible to disable the Count Limit for completed sequences so that the labels will be fluently redrawn until the corresponding sequences are interrupted by trend breaks. Only activate this option, if it can serve a plausible strategy.
The count status of all sequences in the specific timeframe periods is listed in a table. Also the results of the trends in higher timeframes are accumulated and combined into an overall trend. Positive trends are counted as positive, negative in the opposite case. To see the resulting Trend Shift Signals, the user can set a filter under 100% so that not all of them will be filtered out and therefore labeled on the chart (this signals cannot be redrawn). An “External Indicator Analysis Overlay” can be used to analyze the profitability with the provided Trend Shift Signal (TSS) which switches from 0 to 1, if the trend becomes positive or from 0 to -1, if the trend becomes negative.