Periodic CycleAllows visualizing a periodic cycle based on startdate, cycle period and part of cycle to be highlighed.
Komut dosyalarını "Cycle" için ara
Pi Cycle Bitcoin BottomThe Pi Cycle Bottom is an on-chain indicator designed to pinpoint Bitcoin market cycle lows. It uses two moving averages: the 471-day Simple Moving Average (SMA) and 150 times the 350-day Exponential Moving Average (EMA). Historically, when these two lines cross, it has accurately signaled the bottom of major Bitcoin bear markets — often within just a few days.
Core Idea: It measures extreme downside market exhaustion by combining price and time factors to highlight periods of maximum capitulation.
Important: Like any indicator, it’s not a guarantee — just a tool. Strong historical performance, but no promises for the future.
Goertzel Cycle Composite Wave [Loxx]As the financial markets become increasingly complex and data-driven, traders and analysts must leverage powerful tools to gain insights and make informed decisions. One such tool is the Goertzel Cycle Composite Wave indicator, a sophisticated technical analysis indicator that helps identify cyclical patterns in financial data. This powerful tool is capable of detecting cyclical patterns in financial data, helping traders to make better predictions and optimize their trading strategies. With its unique combination of mathematical algorithms and advanced charting capabilities, this indicator has the potential to revolutionize the way we approach financial modeling and trading.
*** To decrease the load time of this indicator, only XX many bars back will render to the chart. You can control this value with the setting "Number of Bars to Render". This doesn't have anything to do with repainting or the indicator being endpointed***
█ Brief Overview of the Goertzel Cycle Composite Wave
The Goertzel Cycle Composite Wave is a sophisticated technical analysis tool that utilizes the Goertzel algorithm to analyze and visualize cyclical components within a financial time series. By identifying these cycles and their characteristics, the indicator aims to provide valuable insights into the market's underlying price movements, which could potentially be used for making informed trading decisions.
The Goertzel Cycle Composite Wave is considered a non-repainting and endpointed indicator. This means that once a value has been calculated for a specific bar, that value will not change in subsequent bars, and the indicator is designed to have a clear start and end point. This is an important characteristic for indicators used in technical analysis, as it allows traders to make informed decisions based on historical data without the risk of hindsight bias or future changes in the indicator's values. This means traders can use this indicator trading purposes.
The repainting version of this indicator with forecasting, cycle selection/elimination options, and data output table can be found here:
Goertzel Browser
The primary purpose of this indicator is to:
1. Detect and analyze the dominant cycles present in the price data.
2. Reconstruct and visualize the composite wave based on the detected cycles.
To achieve this, the indicator performs several tasks:
1. Detrending the price data: The indicator preprocesses the price data using various detrending techniques, such as Hodrick-Prescott filters, zero-lag moving averages, and linear regression, to remove the underlying trend and focus on the cyclical components.
2. Applying the Goertzel algorithm: The indicator applies the Goertzel algorithm to the detrended price data, identifying the dominant cycles and their characteristics, such as amplitude, phase, and cycle strength.
3. Constructing the composite wave: The indicator reconstructs the composite wave by combining the detected cycles, either by using a user-defined list of cycles or by selecting the top N cycles based on their amplitude or cycle strength.
4. Visualizing the composite wave: The indicator plots the composite wave, using solid lines for the cycles. The color of the lines indicates whether the wave is increasing or decreasing.
This indicator is a powerful tool that employs the Goertzel algorithm to analyze and visualize the cyclical components within a financial time series. By providing insights into the underlying price movements, the indicator aims to assist traders in making more informed decisions.
█ What is the Goertzel Algorithm?
The Goertzel algorithm, named after Gerald Goertzel, is a digital signal processing technique that is used to efficiently compute individual terms of the Discrete Fourier Transform (DFT). It was first introduced in 1958, and since then, it has found various applications in the fields of engineering, mathematics, and physics.
The Goertzel algorithm is primarily used to detect specific frequency components within a digital signal, making it particularly useful in applications where only a few frequency components are of interest. The algorithm is computationally efficient, as it requires fewer calculations than the Fast Fourier Transform (FFT) when detecting a small number of frequency components. This efficiency makes the Goertzel algorithm a popular choice in applications such as:
1. Telecommunications: The Goertzel algorithm is used for decoding Dual-Tone Multi-Frequency (DTMF) signals, which are the tones generated when pressing buttons on a telephone keypad. By identifying specific frequency components, the algorithm can accurately determine which button has been pressed.
2. Audio processing: The algorithm can be used to detect specific pitches or harmonics in an audio signal, making it useful in applications like pitch detection and tuning musical instruments.
3. Vibration analysis: In the field of mechanical engineering, the Goertzel algorithm can be applied to analyze vibrations in rotating machinery, helping to identify faulty components or signs of wear.
4. Power system analysis: The algorithm can be used to measure harmonic content in power systems, allowing engineers to assess power quality and detect potential issues.
The Goertzel algorithm is used in these applications because it offers several advantages over other methods, such as the FFT:
1. Computational efficiency: The Goertzel algorithm requires fewer calculations when detecting a small number of frequency components, making it more computationally efficient than the FFT in these cases.
2. Real-time analysis: The algorithm can be implemented in a streaming fashion, allowing for real-time analysis of signals, which is crucial in applications like telecommunications and audio processing.
3. Memory efficiency: The Goertzel algorithm requires less memory than the FFT, as it only computes the frequency components of interest.
4. Precision: The algorithm is less susceptible to numerical errors compared to the FFT, ensuring more accurate results in applications where precision is essential.
The Goertzel algorithm is an efficient digital signal processing technique that is primarily used to detect specific frequency components within a signal. Its computational efficiency, real-time capabilities, and precision make it an attractive choice for various applications, including telecommunications, audio processing, vibration analysis, and power system analysis. The algorithm has been widely adopted since its introduction in 1958 and continues to be an essential tool in the fields of engineering, mathematics, and physics.
█ Goertzel Algorithm in Quantitative Finance: In-Depth Analysis and Applications
The Goertzel algorithm, initially designed for signal processing in telecommunications, has gained significant traction in the financial industry due to its efficient frequency detection capabilities. In quantitative finance, the Goertzel algorithm has been utilized for uncovering hidden market cycles, developing data-driven trading strategies, and optimizing risk management. This section delves deeper into the applications of the Goertzel algorithm in finance, particularly within the context of quantitative trading and analysis.
Unveiling Hidden Market Cycles:
Market cycles are prevalent in financial markets and arise from various factors, such as economic conditions, investor psychology, and market participant behavior. The Goertzel algorithm's ability to detect and isolate specific frequencies in price data helps trader analysts identify hidden market cycles that may otherwise go unnoticed. By examining the amplitude, phase, and periodicity of each cycle, traders can better understand the underlying market structure and dynamics, enabling them to develop more informed and effective trading strategies.
Developing Quantitative Trading Strategies:
The Goertzel algorithm's versatility allows traders to incorporate its insights into a wide range of trading strategies. By identifying the dominant market cycles in a financial instrument's price data, traders can create data-driven strategies that capitalize on the cyclical nature of markets.
For instance, a trader may develop a mean-reversion strategy that takes advantage of the identified cycles. By establishing positions when the price deviates from the predicted cycle, the trader can profit from the subsequent reversion to the cycle's mean. Similarly, a momentum-based strategy could be designed to exploit the persistence of a dominant cycle by entering positions that align with the cycle's direction.
Enhancing Risk Management:
The Goertzel algorithm plays a vital role in risk management for quantitative strategies. By analyzing the cyclical components of a financial instrument's price data, traders can gain insights into the potential risks associated with their trading strategies.
By monitoring the amplitude and phase of dominant cycles, a trader can detect changes in market dynamics that may pose risks to their positions. For example, a sudden increase in amplitude may indicate heightened volatility, prompting the trader to adjust position sizing or employ hedging techniques to protect their portfolio. Additionally, changes in phase alignment could signal a potential shift in market sentiment, necessitating adjustments to the trading strategy.
Expanding Quantitative Toolkits:
Traders can augment the Goertzel algorithm's insights by combining it with other quantitative techniques, creating a more comprehensive and sophisticated analysis framework. For example, machine learning algorithms, such as neural networks or support vector machines, could be trained on features extracted from the Goertzel algorithm to predict future price movements more accurately.
Furthermore, the Goertzel algorithm can be integrated with other technical analysis tools, such as moving averages or oscillators, to enhance their effectiveness. By applying these tools to the identified cycles, traders can generate more robust and reliable trading signals.
The Goertzel algorithm offers invaluable benefits to quantitative finance practitioners by uncovering hidden market cycles, aiding in the development of data-driven trading strategies, and improving risk management. By leveraging the insights provided by the Goertzel algorithm and integrating it with other quantitative techniques, traders can gain a deeper understanding of market dynamics and devise more effective trading strategies.
█ Indicator Inputs
src: This is the source data for the analysis, typically the closing price of the financial instrument.
detrendornot: This input determines the method used for detrending the source data. Detrending is the process of removing the underlying trend from the data to focus on the cyclical components.
The available options are:
hpsmthdt: Detrend using Hodrick-Prescott filter centered moving average.
zlagsmthdt: Detrend using zero-lag moving average centered moving average.
logZlagRegression: Detrend using logarithmic zero-lag linear regression.
hpsmth: Detrend using Hodrick-Prescott filter.
zlagsmth: Detrend using zero-lag moving average.
DT_HPper1 and DT_HPper2: These inputs define the period range for the Hodrick-Prescott filter centered moving average when detrendornot is set to hpsmthdt.
DT_ZLper1 and DT_ZLper2: These inputs define the period range for the zero-lag moving average centered moving average when detrendornot is set to zlagsmthdt.
DT_RegZLsmoothPer: This input defines the period for the zero-lag moving average used in logarithmic zero-lag linear regression when detrendornot is set to logZlagRegression.
HPsmoothPer: This input defines the period for the Hodrick-Prescott filter when detrendornot is set to hpsmth.
ZLMAsmoothPer: This input defines the period for the zero-lag moving average when detrendornot is set to zlagsmth.
MaxPer: This input sets the maximum period for the Goertzel algorithm to search for cycles.
squaredAmp: This boolean input determines whether the amplitude should be squared in the Goertzel algorithm.
useAddition: This boolean input determines whether the Goertzel algorithm should use addition for combining the cycles.
useCosine: This boolean input determines whether the Goertzel algorithm should use cosine waves instead of sine waves.
UseCycleStrength: This boolean input determines whether the Goertzel algorithm should compute the cycle strength, which is a normalized measure of the cycle's amplitude.
WindowSizePast: These inputs define the window size for the composite wave.
FilterBartels: This boolean input determines whether Bartel's test should be applied to filter out non-significant cycles.
BartNoCycles: This input sets the number of cycles to be used in Bartel's test.
BartSmoothPer: This input sets the period for the moving average used in Bartel's test.
BartSigLimit: This input sets the significance limit for Bartel's test, below which cycles are considered insignificant.
SortBartels: This boolean input determines whether the cycles should be sorted by their Bartel's test results.
StartAtCycle: This input determines the starting index for selecting the top N cycles when UseCycleList is set to false. This allows you to skip a certain number of cycles from the top before selecting the desired number of cycles.
UseTopCycles: This input sets the number of top cycles to use for constructing the composite wave when UseCycleList is set to false. The cycles are ranked based on their amplitudes or cycle strengths, depending on the UseCycleStrength input.
SubtractNoise: This boolean input determines whether to subtract the noise (remaining cycles) from the composite wave. If set to true, the composite wave will only include the top N cycles specified by UseTopCycles.
█ Exploring Auxiliary Functions
The following functions demonstrate advanced techniques for analyzing financial markets, including zero-lag moving averages, Bartels probability, detrending, and Hodrick-Prescott filtering. This section examines each function in detail, explaining their purpose, methodology, and applications in finance. We will examine how each function contributes to the overall performance and effectiveness of the indicator and how they work together to create a powerful analytical tool.
Zero-Lag Moving Average:
The zero-lag moving average function is designed to minimize the lag typically associated with moving averages. This is achieved through a two-step weighted linear regression process that emphasizes more recent data points. The function calculates a linearly weighted moving average (LWMA) on the input data and then applies another LWMA on the result. By doing this, the function creates a moving average that closely follows the price action, reducing the lag and improving the responsiveness of the indicator.
The zero-lag moving average function is used in the indicator to provide a responsive, low-lag smoothing of the input data. This function helps reduce the noise and fluctuations in the data, making it easier to identify and analyze underlying trends and patterns. By minimizing the lag associated with traditional moving averages, this function allows the indicator to react more quickly to changes in market conditions, providing timely signals and improving the overall effectiveness of the indicator.
Bartels Probability:
The Bartels probability function calculates the probability of a given cycle being significant in a time series. It uses a mathematical test called the Bartels test to assess the significance of cycles detected in the data. The function calculates coefficients for each detected cycle and computes an average amplitude and an expected amplitude. By comparing these values, the Bartels probability is derived, indicating the likelihood of a cycle's significance. This information can help in identifying and analyzing dominant cycles in financial markets.
The Bartels probability function is incorporated into the indicator to assess the significance of detected cycles in the input data. By calculating the Bartels probability for each cycle, the indicator can prioritize the most significant cycles and focus on the market dynamics that are most relevant to the current trading environment. This function enhances the indicator's ability to identify dominant market cycles, improving its predictive power and aiding in the development of effective trading strategies.
Detrend Logarithmic Zero-Lag Regression:
The detrend logarithmic zero-lag regression function is used for detrending data while minimizing lag. It combines a zero-lag moving average with a linear regression detrending method. The function first calculates the zero-lag moving average of the logarithm of input data and then applies a linear regression to remove the trend. By detrending the data, the function isolates the cyclical components, making it easier to analyze and interpret the underlying market dynamics.
The detrend logarithmic zero-lag regression function is used in the indicator to isolate the cyclical components of the input data. By detrending the data, the function enables the indicator to focus on the cyclical movements in the market, making it easier to analyze and interpret market dynamics. This function is essential for identifying cyclical patterns and understanding the interactions between different market cycles, which can inform trading decisions and enhance overall market understanding.
Bartels Cycle Significance Test:
The Bartels cycle significance test is a function that combines the Bartels probability function and the detrend logarithmic zero-lag regression function to assess the significance of detected cycles. The function calculates the Bartels probability for each cycle and stores the results in an array. By analyzing the probability values, traders and analysts can identify the most significant cycles in the data, which can be used to develop trading strategies and improve market understanding.
The Bartels cycle significance test function is integrated into the indicator to provide a comprehensive analysis of the significance of detected cycles. By combining the Bartels probability function and the detrend logarithmic zero-lag regression function, this test evaluates the significance of each cycle and stores the results in an array. The indicator can then use this information to prioritize the most significant cycles and focus on the most relevant market dynamics. This function enhances the indicator's ability to identify and analyze dominant market cycles, providing valuable insights for trading and market analysis.
Hodrick-Prescott Filter:
The Hodrick-Prescott filter is a popular technique used to separate the trend and cyclical components of a time series. The function applies a smoothing parameter to the input data and calculates a smoothed series using a two-sided filter. This smoothed series represents the trend component, which can be subtracted from the original data to obtain the cyclical component. The Hodrick-Prescott filter is commonly used in economics and finance to analyze economic data and financial market trends.
The Hodrick-Prescott filter is incorporated into the indicator to separate the trend and cyclical components of the input data. By applying the filter to the data, the indicator can isolate the trend component, which can be used to analyze long-term market trends and inform trading decisions. Additionally, the cyclical component can be used to identify shorter-term market dynamics and provide insights into potential trading opportunities. The inclusion of the Hodrick-Prescott filter adds another layer of analysis to the indicator, making it more versatile and comprehensive.
Detrending Options: Detrend Centered Moving Average:
The detrend centered moving average function provides different detrending methods, including the Hodrick-Prescott filter and the zero-lag moving average, based on the selected detrending method. The function calculates two sets of smoothed values using the chosen method and subtracts one set from the other to obtain a detrended series. By offering multiple detrending options, this function allows traders and analysts to select the most appropriate method for their specific needs and preferences.
The detrend centered moving average function is integrated into the indicator to provide users with multiple detrending options, including the Hodrick-Prescott filter and the zero-lag moving average. By offering multiple detrending methods, the indicator allows users to customize the analysis to their specific needs and preferences, enhancing the indicator's overall utility and adaptability. This function ensures that the indicator can cater to a wide range of trading styles and objectives, making it a valuable tool for a diverse group of market participants.
The auxiliary functions functions discussed in this section demonstrate the power and versatility of mathematical techniques in analyzing financial markets. By understanding and implementing these functions, traders and analysts can gain valuable insights into market dynamics, improve their trading strategies, and make more informed decisions. The combination of zero-lag moving averages, Bartels probability, detrending methods, and the Hodrick-Prescott filter provides a comprehensive toolkit for analyzing and interpreting financial data. The integration of advanced functions in a financial indicator creates a powerful and versatile analytical tool that can provide valuable insights into financial markets. By combining the zero-lag moving average,
█ In-Depth Analysis of the Goertzel Cycle Composite Wave Code
The Goertzel Cycle Composite Wave code is an implementation of the Goertzel Algorithm, an efficient technique to perform spectral analysis on a signal. The code is designed to detect and analyze dominant cycles within a given financial market data set. This section will provide an extremely detailed explanation of the code, its structure, functions, and intended purpose.
Function signature and input parameters:
The Goertzel Cycle Composite Wave function accepts numerous input parameters for customization, including source data (src), the current bar (forBar), sample size (samplesize), period (per), squared amplitude flag (squaredAmp), addition flag (useAddition), cosine flag (useCosine), cycle strength flag (UseCycleStrength), past sizes (WindowSizePast), Bartels filter flag (FilterBartels), Bartels-related parameters (BartNoCycles, BartSmoothPer, BartSigLimit), sorting flag (SortBartels), and output buffers (goeWorkPast, cyclebuffer, amplitudebuffer, phasebuffer, cycleBartelsBuffer).
Initializing variables and arrays:
The code initializes several float arrays (goeWork1, goeWork2, goeWork3, goeWork4) with the same length as twice the period (2 * per). These arrays store intermediate results during the execution of the algorithm.
Preprocessing input data:
The input data (src) undergoes preprocessing to remove linear trends. This step enhances the algorithm's ability to focus on cyclical components in the data. The linear trend is calculated by finding the slope between the first and last values of the input data within the sample.
Iterative calculation of Goertzel coefficients:
The core of the Goertzel Cycle Composite Wave algorithm lies in the iterative calculation of Goertzel coefficients for each frequency bin. These coefficients represent the spectral content of the input data at different frequencies. The code iterates through the range of frequencies, calculating the Goertzel coefficients using a nested loop structure.
Cycle strength computation:
The code calculates the cycle strength based on the Goertzel coefficients. This is an optional step, controlled by the UseCycleStrength flag. The cycle strength provides information on the relative influence of each cycle on the data per bar, considering both amplitude and cycle length. The algorithm computes the cycle strength either by squaring the amplitude (controlled by squaredAmp flag) or using the actual amplitude values.
Phase calculation:
The Goertzel Cycle Composite Wave code computes the phase of each cycle, which represents the position of the cycle within the input data. The phase is calculated using the arctangent function (math.atan) based on the ratio of the imaginary and real components of the Goertzel coefficients.
Peak detection and cycle extraction:
The algorithm performs peak detection on the computed amplitudes or cycle strengths to identify dominant cycles. It stores the detected cycles in the cyclebuffer array, along with their corresponding amplitudes and phases in the amplitudebuffer and phasebuffer arrays, respectively.
Sorting cycles by amplitude or cycle strength:
The code sorts the detected cycles based on their amplitude or cycle strength in descending order. This allows the algorithm to prioritize cycles with the most significant impact on the input data.
Bartels cycle significance test:
If the FilterBartels flag is set, the code performs a Bartels cycle significance test on the detected cycles. This test determines the statistical significance of each cycle and filters out the insignificant cycles. The significant cycles are stored in the cycleBartelsBuffer array. If the SortBartels flag is set, the code sorts the significant cycles based on their Bartels significance values.
Waveform calculation:
The Goertzel Cycle Composite Wave code calculates the waveform of the significant cycles for specified time windows. The windows are defined by the WindowSizePast parameters, respectively. The algorithm uses either cosine or sine functions (controlled by the useCosine flag) to calculate the waveforms for each cycle. The useAddition flag determines whether the waveforms should be added or subtracted.
Storing waveforms in a matrix:
The calculated waveforms for the cycle is stored in the matrix - goeWorkPast. This matrix holds the waveforms for the specified time windows. Each row in the matrix represents a time window position, and each column corresponds to a cycle.
Returning the number of cycles:
The Goertzel Cycle Composite Wave function returns the total number of detected cycles (number_of_cycles) after processing the input data. This information can be used to further analyze the results or to visualize the detected cycles.
The Goertzel Cycle Composite Wave code is a comprehensive implementation of the Goertzel Algorithm, specifically designed for detecting and analyzing dominant cycles within financial market data. The code offers a high level of customization, allowing users to fine-tune the algorithm based on their specific needs. The Goertzel Cycle Composite Wave's combination of preprocessing, iterative calculations, cycle extraction, sorting, significance testing, and waveform calculation makes it a powerful tool for understanding cyclical components in financial data.
█ Generating and Visualizing Composite Waveform
The indicator calculates and visualizes the composite waveform for specified time windows based on the detected cycles. Here's a detailed explanation of this process:
Updating WindowSizePast:
The WindowSizePast is updated to ensure they are at least twice the MaxPer (maximum period).
Initializing matrices and arrays:
The matrix goeWorkPast is initialized to store the Goertzel results for specified time windows. Multiple arrays are also initialized to store cycle, amplitude, phase, and Bartels information.
Preparing the source data (srcVal) array:
The source data is copied into an array, srcVal, and detrended using one of the selected methods (hpsmthdt, zlagsmthdt, logZlagRegression, hpsmth, or zlagsmth).
Goertzel function call:
The Goertzel function is called to analyze the detrended source data and extract cycle information. The output, number_of_cycles, contains the number of detected cycles.
Initializing arrays for waveforms:
The goertzel array is initialized to store the endpoint Goertzel.
Calculating composite waveform (goertzel array):
The composite waveform is calculated by summing the selected cycles (either from the user-defined cycle list or the top cycles) and optionally subtracting the noise component.
Drawing composite waveform (pvlines):
The composite waveform is drawn on the chart using solid lines. The color of the lines is determined by the direction of the waveform (green for upward, red for downward).
To summarize, this indicator generates a composite waveform based on the detected cycles in the financial data. It calculates the composite waveforms and visualizes them on the chart using colored lines.
█ Enhancing the Goertzel Algorithm-Based Script for Financial Modeling and Trading
The Goertzel algorithm-based script for detecting dominant cycles in financial data is a powerful tool for financial modeling and trading. It provides valuable insights into the past behavior of these cycles. However, as with any algorithm, there is always room for improvement. This section discusses potential enhancements to the existing script to make it even more robust and versatile for financial modeling, general trading, advanced trading, and high-frequency finance trading.
Enhancements for Financial Modeling
Data preprocessing: One way to improve the script's performance for financial modeling is to introduce more advanced data preprocessing techniques. This could include removing outliers, handling missing data, and normalizing the data to ensure consistent and accurate results.
Additional detrending and smoothing methods: Incorporating more sophisticated detrending and smoothing techniques, such as wavelet transform or empirical mode decomposition, can help improve the script's ability to accurately identify cycles and trends in the data.
Machine learning integration: Integrating machine learning techniques, such as artificial neural networks or support vector machines, can help enhance the script's predictive capabilities, leading to more accurate financial models.
Enhancements for General and Advanced Trading
Customizable indicator integration: Allowing users to integrate their own technical indicators can help improve the script's effectiveness for both general and advanced trading. By enabling the combination of the dominant cycle information with other technical analysis tools, traders can develop more comprehensive trading strategies.
Risk management and position sizing: Incorporating risk management and position sizing functionality into the script can help traders better manage their trades and control potential losses. This can be achieved by calculating the optimal position size based on the user's risk tolerance and account size.
Multi-timeframe analysis: Enhancing the script to perform multi-timeframe analysis can provide traders with a more holistic view of market trends and cycles. By identifying dominant cycles on different timeframes, traders can gain insights into the potential confluence of cycles and make better-informed trading decisions.
Enhancements for High-Frequency Finance Trading
Algorithm optimization: To ensure the script's suitability for high-frequency finance trading, optimizing the algorithm for faster execution is crucial. This can be achieved by employing efficient data structures and refining the calculation methods to minimize computational complexity.
Real-time data streaming: Integrating real-time data streaming capabilities into the script can help high-frequency traders react to market changes more quickly. By continuously updating the cycle information based on real-time market data, traders can adapt their strategies accordingly and capitalize on short-term market fluctuations.
Order execution and trade management: To fully leverage the script's capabilities for high-frequency trading, implementing functionality for automated order execution and trade management is essential. This can include features such as stop-loss and take-profit orders, trailing stops, and automated trade exit strategies.
While the existing Goertzel algorithm-based script is a valuable tool for detecting dominant cycles in financial data, there are several potential enhancements that can make it even more powerful for financial modeling, general trading, advanced trading, and high-frequency finance trading. By incorporating these improvements, the script can become a more versatile and effective tool for traders and financial analysts alike.
█ Understanding the Limitations of the Goertzel Algorithm
While the Goertzel algorithm-based script for detecting dominant cycles in financial data provides valuable insights, it is important to be aware of its limitations and drawbacks. Some of the key drawbacks of this indicator are:
Lagging nature:
As with many other technical indicators, the Goertzel algorithm-based script can suffer from lagging effects, meaning that it may not immediately react to real-time market changes. This lag can lead to late entries and exits, potentially resulting in reduced profitability or increased losses.
Parameter sensitivity:
The performance of the script can be sensitive to the chosen parameters, such as the detrending methods, smoothing techniques, and cycle detection settings. Improper parameter selection may lead to inaccurate cycle detection or increased false signals, which can negatively impact trading performance.
Complexity:
The Goertzel algorithm itself is relatively complex, making it difficult for novice traders or those unfamiliar with the concept of cycle analysis to fully understand and effectively utilize the script. This complexity can also make it challenging to optimize the script for specific trading styles or market conditions.
Overfitting risk:
As with any data-driven approach, there is a risk of overfitting when using the Goertzel algorithm-based script. Overfitting occurs when a model becomes too specific to the historical data it was trained on, leading to poor performance on new, unseen data. This can result in misleading signals and reduced trading performance.
Limited applicability:
The Goertzel algorithm-based script may not be suitable for all markets, trading styles, or timeframes. Its effectiveness in detecting cycles may be limited in certain market conditions, such as during periods of extreme volatility or low liquidity.
While the Goertzel algorithm-based script offers valuable insights into dominant cycles in financial data, it is essential to consider its drawbacks and limitations when incorporating it into a trading strategy. Traders should always use the script in conjunction with other technical and fundamental analysis tools, as well as proper risk management, to make well-informed trading decisions.
█ Interpreting Results
The Goertzel Cycle Composite Wave indicator can be interpreted by analyzing the plotted lines. The indicator plots two lines: composite waves. The composite wave represents the composite wave of the price data.
The composite wave line displays a solid line, with green indicating a bullish trend and red indicating a bearish trend.
Interpreting the Goertzel Cycle Composite Wave indicator involves identifying the trend of the composite wave lines and matching them with the corresponding bullish or bearish color.
█ Conclusion
The Goertzel Cycle Composite Wave indicator is a powerful tool for identifying and analyzing cyclical patterns in financial markets. Its ability to detect multiple cycles of varying frequencies and strengths make it a valuable addition to any trader's technical analysis toolkit. However, it is important to keep in mind that the Goertzel Cycle Composite Wave indicator should be used in conjunction with other technical analysis tools and fundamental analysis to achieve the best results. With continued refinement and development, the Goertzel Cycle Composite Wave indicator has the potential to become a highly effective tool for financial modeling, general trading, advanced trading, and high-frequency finance trading. Its accuracy and versatility make it a promising candidate for further research and development.
█ Footnotes
What is the Bartels Test for Cycle Significance?
The Bartels Cycle Significance Test is a statistical method that determines whether the peaks and troughs of a time series are statistically significant. The test is named after its inventor, George Bartels, who developed it in the mid-20th century.
The Bartels test is designed to analyze the cyclical components of a time series, which can help traders and analysts identify trends and cycles in financial markets. The test calculates a Bartels statistic, which measures the degree of non-randomness or autocorrelation in the time series.
The Bartels statistic is calculated by first splitting the time series into two halves and calculating the range of the peaks and troughs in each half. The test then compares these ranges using a t-test, which measures the significance of the difference between the two ranges.
If the Bartels statistic is greater than a critical value, it indicates that the peaks and troughs in the time series are non-random and that there is a significant cyclical component to the data. Conversely, if the Bartels statistic is less than the critical value, it suggests that the peaks and troughs are random and that there is no significant cyclical component.
The Bartels Cycle Significance Test is particularly useful in financial analysis because it can help traders and analysts identify significant cycles in asset prices, which can in turn inform investment decisions. However, it is important to note that the test is not perfect and can produce false signals in certain situations, particularly in noisy or volatile markets. Therefore, it is always recommended to use the test in conjunction with other technical and fundamental indicators to confirm trends and cycles.
Deep-dive into the Hodrick-Prescott Fitler
The Hodrick-Prescott (HP) filter is a statistical tool used in economics and finance to separate a time series into two components: a trend component and a cyclical component. It is a powerful tool for identifying long-term trends in economic and financial data and is widely used by economists, central banks, and financial institutions around the world.
The HP filter was first introduced in the 1990s by economists Robert Hodrick and Edward Prescott. It is a simple, two-parameter filter that separates a time series into a trend component and a cyclical component. The trend component represents the long-term behavior of the data, while the cyclical component captures the shorter-term fluctuations around the trend.
The HP filter works by minimizing the following objective function:
Minimize: (Sum of Squared Deviations) + λ (Sum of Squared Second Differences)
Where:
1. The first term represents the deviation of the data from the trend.
2. The second term represents the smoothness of the trend.
3. λ is a smoothing parameter that determines the degree of smoothness of the trend.
The smoothing parameter λ is typically set to a value between 100 and 1600, depending on the frequency of the data. Higher values of λ lead to a smoother trend, while lower values lead to a more volatile trend.
The HP filter has several advantages over other smoothing techniques. It is a non-parametric method, meaning that it does not make any assumptions about the underlying distribution of the data. It also allows for easy comparison of trends across different time series and can be used with data of any frequency.
However, the HP filter also has some limitations. It assumes that the trend is a smooth function, which may not be the case in some situations. It can also be sensitive to changes in the smoothing parameter λ, which may result in different trends for the same data. Additionally, the filter may produce unrealistic trends for very short time series.
Despite these limitations, the HP filter remains a valuable tool for analyzing economic and financial data. It is widely used by central banks and financial institutions to monitor long-term trends in the economy, and it can be used to identify turning points in the business cycle. The filter can also be used to analyze asset prices, exchange rates, and other financial variables.
The Hodrick-Prescott filter is a powerful tool for analyzing economic and financial data. It separates a time series into a trend component and a cyclical component, allowing for easy identification of long-term trends and turning points in the business cycle. While it has some limitations, it remains a valuable tool for economists, central banks, and financial institutions around the world.
Market Time Cycle (Expo)█ Time Cycles Overview
Time cycles are a fascinating and powerful concept in the world of trading and investing. They are all about understanding and predicting the timing of market moves based on the premise that market events and price movements are not random, but instead occur in repeatable, cyclical patterns.
The Concept of Time Cycles: The foundation of time cycles lies in the belief that historical market patterns tend to repeat themselves over specific periods. These periods or cycles could be influenced by a myriad of factors like economic data releases, earnings reports, geopolitical events, or even natural human behavior. For example, some traders observe increased market activity around the start and end of a trading day, which is a form of intraday time cycle.
Understanding time cycles can provide traders with a roadmap, helping them anticipate potential trend shifts and make more informed decisions about when to buy or sell.
█ Indicator Overview
The Market Time Cycle (Expo) is designed to help traders track and analyze market cycles and generate signals for potential trading opportunities. It uses mathematical techniques to analyze market cycles and detect possible turning points. It does this by projecting the estimated cycle timeline and providing visual indications of cyclical phases through the use of color-coded lines and sine wave cycles.
Time cycles offer a compelling way to forecast market trends and time your trades better. By adding time cycles to your trading toolbox, you could potentially gain a new perspective on market movements and refine your trading strategy further. The indicator generates trading signals based on the sine wave's behavior. When the sine wave crosses certain thresholds, the indicator generates a signal suggesting a potential trading opportunity based on cycle behavior.
█ How to use
This indicator can be a valuable tool to help traders understand and predict market trends and time their trades more accurately. By visualizing the cyclic nature of markets, traders can better anticipate potential turning points and adjust their trading strategies accordingly. It helps traders to spot ideal entry and exit points based on the cyclical nature of financial markets.
█ Settings
You can customize the number of bars (NumbOfBars) that are taken into consideration for the cycle. Including a higher number of bars will provide more data, which can be helpful for analyzing long-term trends.
-----------------
Disclaimer
The information contained in my Scripts/Indicators/Ideas/Algos/Systems does not constitute financial advice or a solicitation to buy or sell any securities of any type. I will not accept liability for any loss or damage, including without limitation any loss of profit, which may arise directly or indirectly from the use of or reliance on such information.
All investments involve risk, and the past performance of a security, industry, sector, market, financial product, trading strategy, backtest, or individual's trading does not guarantee future results or returns. Investors are fully responsible for any investment decisions they make. Such decisions should be based solely on an evaluation of their financial circumstances, investment objectives, risk tolerance, and liquidity needs.
My Scripts/Indicators/Ideas/Algos/Systems are only for educational purposes!
Poly Cycle [Loxx]This is an example of what can be done by combining Legendre polynomials and analytic signals. I get a way of determining a smooth period and relative adaptive strength indicator without adding time lag.
This indicator displays the following:
The Least Squares fit of a polynomial to a DC subtracted time series - a best fit to a cycle.
The normalized analytic signal of the cycle (signal and quadrature).
The Phase shift of the analytic signal per bar.
The Period and HalfPeriod lengths, in bars of the current cycle.
A relative strength indicator of the time series over the cycle length. That is, adaptive relative strength over the cycle length.
The Relative Strength Indicator, is adaptive to the time series, and it can be smoothed by increasing the length of decreasing the number of degrees of freedom.
Other adaptive indicators based upon the period and can be similarly constructed.
There is some new math here, so I have broken the story up into 5 Parts:
Part 1:
Any time series can be decomposed into a orthogonal set of polynomials .
This is just math and here are some good references:
Legendre polynomials - Wikipedia, the free encyclopedia
Peter Seffen, "On Digital Smoothing Filters: A Brief Review of Closed Form Solutions and Two New Filter Approaches", Circuits Systems Signal Process, Vol. 5, No 2, 1986
I gave some thought to what should be done with this and came to the conclusion that they can be used for basic smoothing of time series. For the analysis below, I decompose a time series into a low number of degrees of freedom and discard the zero mode to introduce smoothing.
That is:
time series => c_1 t + c_2 t^2 ... c_Max t^Max
This is the cycle. By construction, the cycle does not have a zero mode and more physically, I am defining the "Trend" to be the zero mode.
The data for the cycle and the fit of the cycle can be viewed by setting
ShowDataAndFit = TRUE;
There, you will see the fit of the last bar as well as the time series of the leading edge of the fits. If you don't know what I mean by the "leading edge", please see some of the postings in . The leading edges are in grayscale, and the fit of the last bar is in color.
I have chosen Length = 17 and Degree = 4 as the default. I am simply making sure by eye that the fit is reasonably good and degree 4 is the lowest polynomial that can represent a sine-like wave, and 17 is the smallest length that lets me calculate the Phase Shift (Part 3 below) using the Hilbert Transform of width=7 (Part 2 below).
Depending upon the fit you make, you will capture different cycles in the data. A fit that is too "smooth" will not see the smaller cycles, and a fit that is too "choppy" will not see the longer ones. The idea is to use the fit to try to suppress the smaller noise cycles while keeping larger signal cycles.
Part 2:
Every time series has an Analytic Signal, defined by applying the Hilbert Transform to it. You can think of the original time series as amplitude * cosine(theta) and the transformed series, called the quadrature, can be thought of as amplitude * sine(theta). By taking the ratio, you can get the angle theta, and this is exactly what was done by John Ehlers in . It lets you get a frequency out of the time series under consideration.
Amazon.com: Rocket Science for Traders: Digital Signal Processing Applications (9780471405672): John F. Ehlers: Books
It helps to have more references to understand this. There is a nice article on Wikipedia on it.
Read the part about the discrete Hilbert Transform:
en.wikipedia.org
If you really want to understand how to go from continuous to discrete, look up this article written by Richard Lyons:
www.dspguru.com
In the indicator below, I am calculating the normalized analytic signal, which can be written as:
s + i h where i is the imagery number, and s^2 + h^2 = 1;
s= signal = cosine(theta)
h = Hilbert transformed signal = quadrature = sine(theta)
The angle is therefore given by theta = arctan(h/s);
The analytic signal leading edge and the fit of the last bar of the cycle can be viewed by setting
ShowAnalyticSignal = TRUE;
The leading edges are in grayscale fit to the last bar is in color. Light (yellow) is the s term, and Dark (orange) is the quadrature (hilbert transform). Note that for every bar, s^2 + h^2 = 1 , by construction.
I am using a width = 7 Hilbert transform, just like Ehlers. (But you can adjust it if you want.) This transform has a 7 bar lag. I have put the lag into the plot statements, so the cycle info should be quite good at displaying minima and maxima (extrema).
Part 3:
The Phase shift is the amount of phase change from bar to bar.
It is a discrete unitary transformation that takes s + i h to s + i h
explicitly, T = (s+ih)*(s -ih ) , since s *s + h *h = 1.
writing it out, we find that T = T1 + iT2
where T1 = s*s + h*h and T2 = s*h -h*s
and the phase shift is given by PhaseShift = arctan(T2/T1);
Alas, I have no reference for this, all I doing is finding the rotation what takes the analytic signal at bar to the analytic signal at bar . T is the transfer matrix.
Of interest is the PhaseShift from the closest two bars to the present, given by the bar and bar since I am using a width=7 Hilbert transform, bar is the earliest bar with an analytic signal.
I store the phase shift from bar to bar as a time series called PhaseShift. It basically gives you the (7-bar delayed) leading edge the amount of phase angle change in the series.
You can see it by setting
ShowPhaseShift=TRUE
The green points are positive phase shifts and red points are negative phase shifts.
On most charts, I have looked at, the indicator is mostly green, but occasionally, the stock "retrogrades" and red appears. This happens when the cycle is "broken" and the cycle length starts to expand as a trend occurs.
Part 4:
The Period:
The Period is the number of bars required to generate a sum of PhaseShifts equal to 360 degrees.
The Half-period is the number of bars required to generate a sum of phase shifts equal to 180 degrees. It is usually not equal to 1/2 of the period.
You can see the Period and Half-period by setting
ShowPeriod=TRUE
The code is very simple here:
Value1=0;
Value2=0;
while Value1 < bar_index and math.abs(Value2) < 360 begin
Value2 = Value2 + PhaseShift ;
Value1 = Value1 + 1;
end;
Period = Value1;
The period is sensitive to the input length and degree values but not overly so. Any insight on this would be appreciated.
Part 5:
The Relative Strength indicator:
The Relative Strength is just the current value of the series minus the minimum over the last cycle divided by the maximum - minimum over the last cycle, normalized between +1 and -1.
RelativeStrength = -1 + 2*(Series-Min)/(Max-Min);
It therefore tells you where the current bar is relative to the cycle. If you want to smooth the indicator, then extend the period and/or reduce the polynomial degree.
In code:
NewLength = floor(Period + HilbertWidth+1);
Max = highest(Series,NewLength);
Min = lowest(Series,NewLength);
if Max>Min then
Note that the variable NewLength includes the lag that comes from the Hilbert transform, (HilbertWidth=7 by default).
Conclusion:
This is an example of what can be done by combining Legendre polynomials and analytic signals to determine a smooth period without adding time lag.
________________________________
Changes in this one : instead of using true/false options for every single way to display, use Type parameter as following :
1. The Least Squares fit of a polynomial to a DC subtracted time series - a best fit to a cycle.
2. The normalized analytic signal of the cycle (signal and quadrature).
3. The Phase shift of the analytic signal per bar.
4. The Period and HalfPeriod lengths, in bars of the current cycle.
5. A relative strength indicator of the time series over the cycle length. That is, adaptive relative strength over the cycle length.
Fibonacci Cycle Finder🟩 Fibonacci Cycle Finder is an indicator designed to explore Fibonacci-based waves and cycles through visualization and experimentation, introducing a trigonometric approach to market structure analysis. Unlike traditional Fibonacci tools that rely on static horizontal levels, this indicator incorporates the dynamic nature of market cycles, using adjustable wavelength, phase, and amplitude settings to visualize the rhythm of price movements. By applying a sine function, it provides a structured way to examine Fibonacci relationships in a non-linear context.
Fibonacci Cycle Finder unifies Fibonacci principles with a wave-based method by employing adjustable parameters to align each wave with real-time price action. By default, the wave begins with minimal curvature, preserving the structural familiarity of horizontal Fibonacci retracements. By adjusting the input parameters, the wave can subtly transition from a horizontal line to a more pronounced cycle,visualizing cyclical structures within price movement. This projective structure extends potential cyclical outlines on the chart, opening deeper exploration of how Fibonacci relationships may emerge over time.
Fibonacci Cycle Finder further underscores a non-linear representation of price by illustrating how wave-based logic can uncover shifts that are missed by static retracement tools. Rather than imposing immediate oscillatory behavior, the indicator encourages a progressive approach, where the parameters may be incrementally modified to align wave structures with observed price action. This refinement process deepens the exploration of Fibonacci relationships, offering a systematic way to experiment with non-linear price dynamics. In doing so, it revisits fundamental Fibonacci concepts, demonstrating their broader adaptability beyond fixed horizontal retracements.
🌀 THEORY & CONCEPT 🌀
What if Fibonacci relationships could be visualized as dynamic waves rather than confined to fixed horizontal levels? Fibonacci Cycle Finder introduces a trigonometric approach to market structure analysis, offering a different perspective on Fibonacci-based cycles. This tool provides a way to visualize market fluctuations through cyclical wave motion, opening the door to further exploration of Fibonacci’s role in non-linear price behavior.
Traditional Fibonacci tools, such as retracements and extensions, have long been used to identify potential support and resistance levels. While valuable for analyzing price trends, these tools assume linear price movement and rely on static horizontal levels. However, market fluctuations often exhibit cyclical tendencies , where price follows natural wave-like structures rather than strictly adhering to fixed retracement points. Although Fibonacci-based tools such as arcs, fans, and time zones attempt to address these patterns, they primarily apply geometric projections. The Fibonacci Cycle Finder takes a different approach by mapping Fibonacci ratios along structured wave cycles, aligning these relationships with the natural curvature of market movement rather than forcing them onto rigid price levels.
Rather than replacing traditional Fibonacci methods, the Fibonacci Cycle Finder supplements existing Fibonacci theory by introducing an exploratory approach to price structure analysis. It encourages traders to experiment with how Fibonacci ratios interact with cyclical price structures, offering an additional layer of insight beyond static retracements and extensions. This approach allows Fibonacci levels to be examined beyond their traditional static form, providing deeper insights into market fluctuations.
📊 FIBONACCI WAVE IMPLEMENTATION 📊
The Fibonacci Cycle Finder uses two user-defined swing points, A and B, as the foundation for projecting these Fibonacci waves. It first establishes standard horizontal levels that correspond to traditional Fibonacci retracements, ensuring a baseline reference before wave adjustments are applied. By default, the wave is intentionally subtle— Wavelength is set to 1 , Amplitude is set to 1 , and Phase is set to 0 . In other words, the wave starts as “stretched out.” This allows a slow, measured start, encouraging users to refine parameters incrementally rather than producing abrupt oscillations. As these parameters are increased, the wave takes on more distinct sine and cosine characteristics, offering a flexible approach to exploring Fibonacci-based cyclicity within price action.
Three parameters control the shape of the Fibonacci wave:
1️⃣ Wavelength Controls the horizontal spacing of the wave along the time axis, determining the length of one full cycle from peak to peak (or trough to trough). In this indicator, Wavelength acts as a scaling input that adjusts how far the wave extends across time, rather than a strict mathematical “wavelength.” Lower values further stretch the wave, increasing the spacing between oscillations, while higher values compress it into a more frequent cycle. Each full cycle is divided into four quarter-cycle segments, a deliberate design choice to minimize curvature by default. This allows for subtle oscillations and smoother transitions, preventing excessive distortion while maintaining flexibility in wave projections. The wavelength is calculated relative to the A-B swing, ensuring that its scale adapts dynamically to the selected price range.
2️⃣ Amplitude Defines the vertical displacement of the wave relative to the baseline Fibonacci level. Higher values increase the height of oscillations, while lower values reduce the height, Negative values will invert the wave’s initial direction. The amplitude is dynamically applied in relation to the A-B swing direction, ensuring that an upward swing results in upward oscillations and a downward swing results in downward oscillations.
3️⃣ Phase Shifts the wave’s starting position along its cycle, adjusting alignment relative to the swing points. A phase of 0 aligns with a sine wave, where the cycle starts at zero and rises. A phase of 25 aligns with a cosine wave, starting at a peak and descending. A phase of 50 inverts the sine wave, beginning at zero but falling first, while a phase of 75 aligns with an inverted cosine , starting at a trough and rising. Intermediate values between these phases create gradual shifts in wave positioning, allowing for finer alignment with observed market structures.
By fine-tuning these parameters, users can adapt Fibonacci waves to better reflect observed market behaviors. The wave structure integrates with price movements rather than simply overlaying static levels, allowing for a more dynamic representation of cyclical price tendencies. This indicator serves as an exploratory tool for understanding potential market rhythms, encouraging traders to test and visualize how Fibonacci principles extend beyond their traditional applications.
🖼️ CHART EXAMPLES 🖼️
Following this downtrend, price interacts with curved Fibonacci levels, highlighting resistance at the 0.236 and 0.382 levels, where price stalls before pulling back. Support emerges at the 0.5, 0.618, and 0.786 levels, where price finds stability and rebounds
In this Fibonacci retracement, price initially finds support at the 1.0 level, following the natural curvature of the cycle. Resistance forms at 0.786, leading to a pullback before price breaks through and tests 0.618 as resistance. Once 0.618 is breached, price moves upward to test 0.5, illustrating how Fibonacci-based cycles may align with evolving market structure beyond static, horizontal retracements.
Following this uptrend, price retraces downward and interacts with the Fibonacci levels, demonstrating both support and resistance at key levels such as 0.236, 0.382, 0.5, and 0.618.
With only the 0.5 and 1.0 levels enabled, this chart remains uncluttered while still highlighting key price interactions. The short cycle length results in a mild curvature, aligning smoothly with market movement. Price finds resistance at the 0.5 level while showing strong support at 1.0, which follows the natural flow of the market. Keeping the focus on fewer levels helps maintain clarity while still capturing how price reacts within the cycle.
🛠️ CONFIGURATION AND SETTINGS 🛠️
Wave Parameters
Wavelength : Stretches or compresses the wave along the time axis, determining the length of one full cycle. Higher values extend the wave across more bars, while lower values compress it into a shorter time frame.
Amplitude : Expands or contracts the wave along the price axis, determining the height of oscillations relative to Fibonacci levels. Higher values increase the vertical range, while negative values invert the wave’s initial direction.
Phase : Offsets the wave along the time axis, adjusting where the cycle begins. Higher values shift the starting position forward within the wave pattern.
Fibonacci Levels
Levels : Enable or disable specific Fibonacci levels (0.0, 0.236, 0.382, 0.5, 0.618, 0.786, 1.0) to focus on relevant price zones.
Color : Modify level colors for enhanced visual clarity.
Visibility
Trend Line/Color : Toggle and customize the trend line connecting swing points A and B.
Setup Lines : Show or hide lines linking Fibonacci levels to projected waves.
A/B Labels Visibility : Control the visibility of swing point labels.
Left/Right Labels : Manage the display of Fibonacci level labels on both sides of the chart.
Fill % : Adjust shading intensity between Fibonacci levels (0% = no fill, 100% = maximum fill).
A and B Points (Time/Price):
These user-defined anchor points serve as the basis for Fibonacci wave calculations and can be manually set. A and B points can also be adjusted directly on the chart, with automatic synchronization to the settings panel, allowing for seamless modifications without needing to manually input values.
⚠️ DISCLAIMER ⚠️
The Fibonacci Cycle Finder is a visual analysis tool designed to illustrate Fibonacci relationships and serve as a supplement to traditional Fibonacci tools. While the indicator employs mathematical and geometric principles, no guarantee is made that its calculations will align with other Fibonacci tools or proprietary methods. Like all technical and visual indicators, the Fibonacci levels generated by this tool may appear to visually align with key price zones in hindsight. However, these levels are not intended as standalone signals for trading decisions. This indicator is intended for educational and analytical purposes, complementing other tools and methods of market analysis.
🧠 BEYOND THE CODE 🧠
Fibonacci Cycle Finder is the latest indicator in the Fibonacci Geometry Series. Building on the concepts of the Fibonacci Time-Price Zones and the Fibonacci 3-D indicators, this tool introduces a trigonometric approach to market structure analysis.
The Fibonacci Cycle Finder indicator, like other xxattaxx indicators , is designed to encourage both education and community engagement. Your feedback and insights are invaluable to refining and enhancing the Fibonacci Cycle Finder indicator. We look forward to the creative applications, observations, and discussions this tool inspires within the trading community.
Adaptivity: Measures of Dominant Cycles and Price Trend [Loxx]Adaptivity: Measures of Dominant Cycles and Price Trend is an indicator that outputs adaptive lengths using various methods for dominant cycle and price trend timeframe adaptivity. While the information output from this indicator might be useful for the average trader in one off circumstances, this indicator is really meant for those need a quick comparison of dynamic length outputs who wish to fine turn algorithms and/or create adaptive indicators.
This indicator compares adaptive output lengths of all publicly known adaptive measures. Additional adaptive measures will be added as they are discovered and made public.
The first released of this indicator includes 6 measures. An additional three measures will be added with updates. Please check back regularly for new measures.
Ehers:
Autocorrelation Periodogram
Band-pass
Instantaneous Cycle
Hilbert Transformer
Dual Differentiator
Phase Accumulation (future release)
Homodyne (future release)
Jurik:
Composite Fractal Behavior (CFB)
Adam White:
Veritical Horizontal Filter (VHF) (future release)
What is an adaptive cycle, and what is Ehlers Autocorrelation Periodogram Algorithm?
From his Ehlers' book Cycle Analytics for Traders Advanced Technical Trading Concepts by John F. Ehlers , 2013, page 135:
"Adaptive filters can have several different meanings. For example, Perry Kaufman's adaptive moving average (KAMA) and Tushar Chande's variable index dynamic average (VIDYA) adapt to changes in volatility . By definition, these filters are reactive to price changes, and therefore they close the barn door after the horse is gone.The adaptive filters discussed in this chapter are the familiar Stochastic , relative strength index (RSI), commodity channel index (CCI), and band-pass filter.The key parameter in each case is the look-back period used to calculate the indicator. This look-back period is commonly a fixed value. However, since the measured cycle period is changing, it makes sense to adapt these indicators to the measured cycle period. When tradable market cycles are observed, they tend to persist for a short while.Therefore, by tuning the indicators to the measure cycle period they are optimized for current conditions and can even have predictive characteristics.
The dominant cycle period is measured using the Autocorrelation Periodogram Algorithm. That dominant cycle dynamically sets the look-back period for the indicators. I employ my own streamlined computation for the indicators that provide smoother and easier to interpret outputs than traditional methods. Further, the indicator codes have been modified to remove the effects of spectral dilation.This basically creates a whole new set of indicators for your trading arsenal."
What is this Hilbert Transformer?
An analytic signal allows for time-variable parameters and is a generalization of the phasor concept, which is restricted to time-invariant amplitude, phase, and frequency. The analytic representation of a real-valued function or signal facilitates many mathematical manipulations of the signal. For example, computing the phase of a signal or the power in the wave is much simpler using analytic signals.
The Hilbert transformer is the technique to create an analytic signal from a real one. The conventional Hilbert transformer is theoretically an infinite-length FIR filter. Even when the filter length is truncated to a useful but finite length, the induced lag is far too large to make the transformer useful for trading.
From his Ehlers' book Cycle Analytics for Traders Advanced Technical Trading Concepts by John F. Ehlers , 2013, pages 186-187:
"I want to emphasize that the only reason for including this section is for completeness. Unless you are interested in research, I suggest you skip this section entirely. To further emphasize my point, do not use the code for trading. A vastly superior approach to compute the dominant cycle in the price data is the autocorrelation periodogram. The code is included because the reader may be able to capitalize on the algorithms in a way that I do not see. All the algorithms encapsulated in the code operate reasonably well on theoretical waveforms that have no noise component. My conjecture at this time is that the sample-to-sample noise simply swamps the computation of the rate change of phase, and therefore the resulting calculations to find the dominant cycle are basically worthless.The imaginary component of the Hilbert transformer cannot be smoothed as was done in the Hilbert transformer indicator because the smoothing destroys the orthogonality of the imaginary component."
What is the Dual Differentiator, a subset of Hilbert Transformer?
From his Ehlers' book Cycle Analytics for Traders Advanced Technical Trading Concepts by John F. Ehlers , 2013, page 187:
"The first algorithm to compute the dominant cycle is called the dual differentiator. In this case, the phase angle is computed from the analytic signal as the arctangent of the ratio of the imaginary component to the real component. Further, the angular frequency is defined as the rate change of phase. We can use these facts to derive the cycle period."
What is the Phase Accumulation, a subset of Hilbert Transformer?
From his Ehlers' book Cycle Analytics for Traders Advanced Technical Trading Concepts by John F. Ehlers , 2013, page 189:
"The next algorithm to compute the dominant cycle is the phase accumulation method. The phase accumulation method of computing the dominant cycle is perhaps the easiest to comprehend. In this technique, we measure the phase at each sample by taking the arctangent of the ratio of the quadrature component to the in-phase component. A delta phase is generated by taking the difference of the phase between successive samples. At each sample we can then look backwards, adding up the delta phases.When the sum of the delta phases reaches 360 degrees, we must have passed through one full cycle, on average.The process is repeated for each new sample.
The phase accumulation method of cycle measurement always uses one full cycle's worth of historical data.This is both an advantage and a disadvantage.The advantage is the lag in obtaining the answer scales directly with the cycle period.That is, the measurement of a short cycle period has less lag than the measurement of a longer cycle period. However, the number of samples used in making the measurement means the averaging period is variable with cycle period. longer averaging reduces the noise level compared to the signal.Therefore, shorter cycle periods necessarily have a higher out- put signal-to-noise ratio."
What is the Homodyne, a subset of Hilbert Transformer?
From his Ehlers' book Cycle Analytics for Traders Advanced Technical Trading Concepts by John F. Ehlers , 2013, page 192:
"The third algorithm for computing the dominant cycle is the homodyne approach. Homodyne means the signal is multiplied by itself. More precisely, we want to multiply the signal of the current bar with the complex value of the signal one bar ago. The complex conjugate is, by definition, a complex number whose sign of the imaginary component has been reversed."
What is the Instantaneous Cycle?
The Instantaneous Cycle Period Measurement was authored by John Ehlers; it is built upon his Hilbert Transform Indicator.
From his Ehlers' book Cybernetic Analysis for Stocks and Futures: Cutting-Edge DSP Technology to Improve Your Trading by John F. Ehlers, 2004, page 107:
"It is obvious that cycles exist in the market. They can be found on any chart by the most casual observer. What is not so clear is how to identify those cycles in real time and how to take advantage of their existence. When Welles Wilder first introduced the relative strength index (rsi), I was curious as to why he selected 14 bars as the basis of his calculations. I reasoned that if i knew the correct market conditions, then i could make indicators such as the rsi adaptive to those conditions. Cycles were the answer. I knew cycles could be measured. Once i had the cyclic measurement, a host of automatically adaptive indicators could follow.
Measurement of market cycles is not easy. The signal-to-noise ratio is often very low, making measurement difficult even using a good measurement technique. Additionally, the measurements theoretically involve simultaneously solving a triple infinity of parameter values. The parameters required for the general solutions were frequency, amplitude, and phase. Some standard engineering tools, like fast fourier transforms (ffs), are simply not appropriate for measuring market cycles because ffts cannot simultaneously meet the stationarity constraints and produce results with reasonable resolution. Therefore i introduced maximum entropy spectral analysis (mesa) for the measurement of market cycles. This approach, originally developed to interpret seismographic information for oil exploration, produces high-resolution outputs with an exceptionally short amount of information. A short data length improves the probability of having nearly stationary data. Stationary data means that frequency and amplitude are constant over the length of the data. I noticed over the years that the cycles were ephemeral. Their periods would be continuously increasing and decreasing. Their amplitudes also were changing, giving variable signal-to-noise ratio conditions. Although all this is going on with the cyclic components, the enduring characteristic is that generally only one tradable cycle at a time is present for the data set being used. I prefer the term dominant cycle to denote that one component. The assumption that there is only one cycle in the data collapses the difficulty of the measurement process dramatically."
What is the Band-pass Cycle?
From his Ehlers' book Cycle Analytics for Traders Advanced Technical Trading Concepts by John F. Ehlers , 2013, page 47:
"Perhaps the least appreciated and most underutilized filter in technical analysis is the band-pass filter. The band-pass filter simultaneously diminishes the amplitude at low frequencies, qualifying it as a detrender, and diminishes the amplitude at high frequencies, qualifying it as a data smoother. It passes only those frequency components from input to output in which the trader is interested. The filtering produced by a band-pass filter is superior because the rejection in the stop bands is related to its bandwidth. The degree of rejection of undesired frequency components is called selectivity. The band-stop filter is the dual of the band-pass filter. It rejects a band of frequency components as a notch at the output and passes all other frequency components virtually unattenuated. Since the bandwidth of the deep rejection in the notch is relatively narrow and since the spectrum of market cycles is relatively broad due to systemic noise, the band-stop filter has little application in trading."
From his Ehlers' book Cycle Analytics for Traders Advanced Technical Trading Concepts by John F. Ehlers , 2013, page 59:
"The band-pass filter can be used as a relatively simple measurement of the dominant cycle. A cycle is complete when the waveform crosses zero two times from the last zero crossing. Therefore, each successive zero crossing of the indicator marks a half cycle period. We can establish the dominant cycle period as twice the spacing between successive zero crossings."
What is Composite Fractal Behavior (CFB)?
All around you mechanisms adjust themselves to their environment. From simple thermostats that react to air temperature to computer chips in modern cars that respond to changes in engine temperature, r.p.m.'s, torque, and throttle position. It was only a matter of time before fast desktop computers applied the mathematics of self-adjustment to systems that trade the financial markets.
Unlike basic systems with fixed formulas, an adaptive system adjusts its own equations. For example, start with a basic channel breakout system that uses the highest closing price of the last N bars as a threshold for detecting breakouts on the up side. An adaptive and improved version of this system would adjust N according to market conditions, such as momentum, price volatility or acceleration.
Since many systems are based directly or indirectly on cycles, another useful measure of market condition is the periodic length of a price chart's dominant cycle, (DC), that cycle with the greatest influence on price action.
The utility of this new DC measure was noted by author Murray Ruggiero in the January '96 issue of Futures Magazine. In it. Mr. Ruggiero used it to adaptive adjust the value of N in a channel breakout system. He then simulated trading 15 years of D-Mark futures in order to compare its performance to a similar system that had a fixed optimal value of N. The adaptive version produced 20% more profit!
This DC index utilized the popular MESA algorithm (a formulation by John Ehlers adapted from Burg's maximum entropy algorithm, MEM). Unfortunately, the DC approach is problematic when the market has no real dominant cycle momentum, because the mathematics will produce a value whether or not one actually exists! Therefore, we developed a proprietary indicator that does not presuppose the presence of market cycles. It's called CFB (Composite Fractal Behavior) and it works well whether or not the market is cyclic.
CFB examines price action for a particular fractal pattern, categorizes them by size, and then outputs a composite fractal size index. This index is smooth, timely and accurate
Essentially, CFB reveals the length of the market's trending action time frame. Long trending activity produces a large CFB index and short choppy action produces a small index value. Investors have found many applications for CFB which involve scaling other existing technical indicators adaptively, on a bar-to-bar basis.
What is VHF Adaptive Cycle?
Vertical Horizontal Filter (VHF) was created by Adam White to identify trending and ranging markets. VHF measures the level of trend activity, similar to ADX DI. Vertical Horizontal Filter does not, itself, generate trading signals, but determines whether signals are taken from trend or momentum indicators. Using this trend information, one is then able to derive an average cycle length.
Grover Llorens Cycle Oscillator [alexgrover & Lucía Llorens]Cycles represent relatively smooth fluctuations with mean 0 and of varying period and amplitude, their estimation using technical indicators has always been a major task. In the additive model of price, the cycle is a component :
Price = Trend + Cycle + Noise
Based on this model we can deduce that :
Cycle = Price - Trend - Noise
The indicators specialized on the estimation of cycles are oscillators, some like bandpass filters aim to return a correct estimate of the cycles, while others might only show a deformation of them, this can be done in order to maximize the visualization of the cycles.
Today an oscillator who aim to maximize the visualization of the cycles is presented, the oscillator is based on the difference between the price and the previously proposed Grover Llorens activator indicator. A relative strength index is then applied to this difference in order to minimize the change of amplitude in the cycles.
The Indicator
The indicator include the length and mult settings used by the Grover Llorens activator. Length control the rate of convergence of the activator, lower values of length will output cycles of a faster period.
here length = 50
Mult is responsible for maximizing the visualization of the cycles, low values of mult will return a less cyclical output.
Here mult = 1
Finally you can smooth the indicator output if you want (smooth by default), you can uncheck the option if you want a noisy output.
The smoothing amount is also linked with the period of the rsi.
Here the smoothing amount = 100.
Conclusion
An oscillator based on the recently posted Grover Llorens activator has been proposed. The oscillator aim to maximize the visualization of cycles.
Maximizing the visualization of cycles don't comes with no cost, the indicator output can be uncorrelated with the actual cycles or can return cycles that are not present in the price. Other problems arises from the indicator settings, because cycles are of a time-varying periods it isn't optimal to use fixed length oscillators for their estimation.
Thanks for reading !
If my work has ever been of use to you you can donate, addresses on my signature :)
CCT Pi Cycle Top/BottomPi Cycle Top/bottom: The Ultimate Market Cycle Indicator
Introduction
The Pi Cycle Top/bottom Indicator is one of the most reliable tools for identifying Bitcoin market cycle peaks and bottoms. Its effectiveness lies in the strategic combination of moving averages that historically align with major market cycle reversals. Unlike traditional moving average crossovers, this indicator applies an advanced iterative approach to pinpoint price extremes with higher accuracy.
This version, built entirely with Pine Script™ v6, introduces unprecedented precision in detecting both the Pi Cycle Top and Pi Cycle Bottom, eliminating redundant labels, optimizing visual clarity, and ensuring the indicator adapts dynamically to evolving market conditions.
What is the Pi Cycle Theory?
The Pi Cycle Top and Pi Cycle Bottom were originally introduced based on a simple yet profound discovery: key moving average crossovers consistently align with macro market tops and bottoms.
Pi Cycle Top: The crossover of the 111-day Simple Moving Average (SMA) and the 350-day SMA multiplied by 2 has historically signaled market tops with astonishing accuracy.
Pi Cycle Bottom: The intersection of the 150-day Exponential Moving Average (EMA) and the 471-day SMA has repeatedly marked significant market bottoms.
While traditional moving average strategies often suffer from lag and false signals, the Pi Cycle Indicator enhances accuracy by applying a range-based scanning methodology, ensuring that only the most critical reversals are detected.
How This Indicator Works
Unlike basic moving average crossovers, this script introduces a unique iteration process to refine the detection of Pi Cycle points. Here’s how it works:
Detecting Crossovers:
Identifies the Golden Cross (bullish crossover) and Death Cross (bearish crossover) for both the Pi Cycle Top and Pi Cycle Bottom.
Iterating Through the Cycle:
Instead of plotting a simple crossover point, this script scans the range between each Golden and Death Cross to identify the absolute lowest price (Pi Cycle Bottom) and highest price (Pi Cycle Top) within that cycle.
Precision Labeling:
The indicator dynamically adjusts label positioning:
If the price at the crossover is below the fast moving average → the label is placed on the moving average with a downward pointer.
If the price is above the fast moving average → the label is placed below the candle with an upward pointer.
This ensures optimal visibility and prevents misleading signal placement.
Advanced Pine Script v6 Features:
Labels and moving average names are only shown on the last candle, reducing chart noise while maintaining clarity.
Offers full user customization, allowing traders to toggle:
Pi Cycle Top & Bottom visibility
Moving average labels
Crossover labels
Why This Indicator is Superior
This script is not just another moving average crossover tool—it is a market cycle tracker designed for long-term investors and analysts who seek:
✔ High-accuracy macro cycle identification
✔ Elimination of false signals using an iterative range-based scan
✔ Automatic detection of market extremes without manual adjustments
✔ Optimized visuals with smart label positioning
✔ First-of-its-kind implementation using Pine Script™ v6 capabilities
How to Use It?
Bull Market Tops:
When the Pi Cycle Top indicator flashes, consider the potential for a market cycle peak.
Historically, Bitcoin has corrected significantly after these signals.
Bear Market Bottoms:
When the Pi Cycle Bottom appears, it suggests a macro accumulation phase.
These signals have aligned perfectly with historical cycle bottoms.
Final Thoughts
The Pi Cycle Top/bottom Indicator is a must-have tool for traders, investors, and analysts looking to anticipate long-term trend reversals with precision. With its refined methodology, superior label positioning, and cutting-edge Pine Script™ v6 optimizations, this is the most reliable version ever created.
4-Year Cycles [jpkxyz]Overview of the Script
I wanted to write a script that encompasses the wide-spread macro fund manager investment thesis: "Crypto is simply and expression of macro." A thesis pioneered by the likes of Raoul Pal (EXPAAM) , Andreesen Horowitz (A16Z) , Joe McCann (ASYMETRIC) , Bob Loukas and many more.
Cycle Theory Background:
The 2007-2008 financial crisis transformed central bank monetary policy by introducing:
- Quantitative Easing (QE): Creating money to buy assets and inject liquidity
- Coordinated global monetary interventions
Proactive 4-year economic cycles characterised by:
- Expansionary periods (low rates, money creation)
- Followed by contraction/normalisation
Central banks now deliberately manipulate liquidity, interest rates, and asset prices to control economic cycles, using monetary policy as a precision tool rather than a blunt instrument.
Cycle Characteristics (based on historical cycles):
- A cycle has 4 seasons (Spring, Summer, Fall, Winter)
- Each season with a cycle lasts 365 days
- The Cycle Low happens towards the beginning of the Spring Season of each new cycle
- This is followed by a run up throughout the Spring and Summer Season
- The Cycle High happens towards the end of the Fall Season
- The Winter season is characterised by price corrections until establishing a new floor in the Spring of the next cycle
Key Functionalities
1. Cycle Tracking
- Divides market history into 4-year cycles (Spring, Summer, Fall, Winter)
- Starts tracking cycles from 2011 (first cycle after the 2007 crisis cycle)
- Identifies and marks cycle boundaries
2. Visualization
- Colors background based on current cycle season
- Draws lines connecting:
- Cycle highs and lows
- Inter-cycle price movements
- Adds labels showing:
- Percentage gains/losses between cycles
- Number of days between significant points
3. Customization Options
- Allows users to customize:
- Colors for each season
- Line and label colors
- Label size
- Background opacity
Detailed Mechanism
Cycle Identification
- Uses a modulo calculation to determine the current season in the 4-year cycle
- Preset boundary years include 2015, 2019, 2023, 2027
- Automatically tracks and marks cycle transitions
Price Analysis
- Tracks highest and lowest prices within each cycle
- Calculates percentage changes:
- Intra-cycle (low to high)
- Inter-cycle (previous high to current high/low)
Visualization Techniques
- Background color changes based on current cycle season
- Dashed and solid lines connect significant price points
- Labels provide quantitative insights about price movements
Unique Aspects
1. Predictive Cycle Framework: Provides a structured way to view market movements beyond traditional technical analysis
2. Seasonal Color Coding: Intuitive visual representation of market cycle stages
3. Comprehensive Price Tracking: Captures both intra-cycle and inter-cycle price dynamics
4. Highly Customizable: Users can adjust visual parameters to suit their preferences
Potential Use Cases
- Technical analysis for long-term investors
- Identifying market cycle patterns
- Understanding historical price movement rhythms
- Educational tool for market cycle theory
Limitations/Considerations
- Based on a predefined 4-year cycle model (Liquidity Cycles)
- Historic Cycle Structures are not an indication for future performance
- May not perfectly represent all market behavior
- Requires visual interpretation
This script is particularly interesting for investors who believe in cyclical market theories and want a visual, data-driven representation of market stages.
Super Cycle Low FinderHow the Indicator Works
1. Inputs
Users can adjust the cycle lengths:
Daily Cycle: Default is 40 days (within 36-44 days).
Weekly Cycle: Default is 26 weeks (182 days, within 22-31 weeks).
Yearly Cycle: Default is 4 years (1460 days).
2. Cycle Low Detection
Function: detect_cycle_low finds the lowest low over the specified period and confirms it with a bullish candle (close > open).
Timeframes: Daily lows are calculated directly; weekly and yearly lows use request.security to fetch data from higher timeframes.
3. Half Cycle Lows
Detected over half the cycle length, plotted to show mid-cycle strength or weakness.
4. Cycle Translation
Logic: Compares the position of the highest high to the cycle’s midpoint.
Output: "R" for right translated (bullish), "L" for left translated (bearish), displayed above bars.
5. Cycle Failure
Flags when a new low falls below the previous cycle low, indicating a breakdown.
6. Visualization
Cycle Lows: Diamonds below bars (yellow for daily, green for weekly, blue for yearly).
Half Cycle Lows: Circles below bars (orange, lime, aqua).
Translations: "R" or "L" above bars in distinct colors.
Failures: Downward triangles below bars (red, orange, purple).
Bitcoin Cycles IndicatorBitcoin Cycles Indicator
The "Bitcoin Cycles Indicator" is designed to provide insights into the current market cycle of Bitcoin. It utilizes a combination of market cap real and total volume transfer to generate a visual representation of the market cycle.
Indicator Phases:
Cycle Lows (Green): Indicates potential low points in the cycle.
Under Valued (Aqua): Represents phases where Bitcoin might be undervalued.
Fair Market Value (Purple): Reflects periods considered to be at fair market value.
Aggressively Valued (Orange): Marks phases where Bitcoin might be aggressively valued.
Over Valued (Red): Suggests potential overvaluation of Bitcoin in the cycle.
Bitcoin Cycles can identify periods of increased risk when transaction behavior on-chain is indicative of major cycle highs. It also identifies areas of value opportunity where on-chain transaction behavior signals major cycle lows.
Historically, Bitcoin has exhibited cyclical behavior roughly every four years, coinciding with significant events known as "halvings."
While the historical correlation between Bitcoin's cycles and halving events is compelling, market dynamics are subject to change. Traders and investors should approach the market with a comprehensive strategy, incorporating multiple indicators and risk management techniques to navigate Bitcoin's evolving landscape.
Market Cycles
The Market Cycles indicator transforms market price data into a stochastic wave, offering a unique perspective on market cycles. The wave is bounded between positive and negative values, providing clear visual cues for potential bullish and bearish trends. When the wave turns green, it signals a bullish cycle, while red indicates a bearish cycle.
Designed to show clarity and precision, this tool helps identify market momentum and cyclical behavior in an intuitive way. Ideal for fine-tuning entries or analyzing broader trends, this indicator aims to enhance the decision-making process with simplicity and elegance.
Benner Cycles📜 Overview
The Benner Cycles indicator is a visually intuitive overlay that maps out one of the most historically referenced market timing models—Samuel T. Benner’s Cycles—directly onto your chart. This tool highlights three distinct types of market years: Panic, Peak, and Buy years, based on the rhythmic patterns first published by Benner in the late 19th century.
Benner's work is legendary among financial historians and cycle theorists. His original charts, dating back to the 1800s, remarkably anticipated economic booms, busts, and recoveries by following repeating year intervals. This modern adaptation brings that ancient rhythm into your TradingView workspace.
🔍 Background
Samuel T. Benner (1832–1913) was an Ohioan ironworks businessman and farmer who, after losing everything in the Panic of 1873, sought to uncover the secrets of economic cycles. His work led to the famous Benner's Cycle Chart, which forecasts business activity using repeatable intervals of panic, prosperity, and opportunity.
Benner’s method was based on a combination of numerological, agricultural, and empirical observations—not unlike early forms of technical and cyclical analysis. His legacy survives through a set of three rotating intervals for each market condition.
George Tritch was the individual responsible for preserving and publishing Samuel T. Benner’s economic cycle charts after Benner's death. While Benner was the original creator of the Benner Cycle, Tritch is known for reproducing and circulating the Benner chart in the early 20th century, helping it gain broader recognition among traders, economists, and financial historians.
🛠️ Features
Overlay Background Highlights shades the chart background to reflect the current year's cycle type
Configurable Year Range defines your own historical scope using Start Year and End Year
Fully Customizable Colors & Opacity
Live Statistics Table (optional) displays next projected Panic, Peak, and Buy years as well as current year’s market phase
Cycle Phase Logic (optional) prioritizes highlighting in order of Panic > Peak > Buy if overlaps occur
📈 Use Cases
Macro Timing Tool – Use the cycle phases to align with broader economic rhythms (especially useful for long-term investors or cycle traders).
Market Sentiment Guide – Panic years may coincide with recessions or major selloffs; Buy years may signal deep value or accumulation opportunities.
Overlay for Historical Studies – Perfect for comparing past major market movements (e.g., 1837, 1929, 2008) with their corresponding cycle phase. See known limitations below.
Forecasting Reference – Identify where we are in the repeating Benner rhythm and prepare for what's likely ahead.
⚠️ Limitations
❗ Not Predictive in Isolation: Use in conjunction with other tools.
❗ Calendar-Based Only: This indicator is strictly time-based and does not factor in price action, volume, or volatility.
❗ Historical Artifact, Not a Guarantee
❗ Data Availability: This indicator's historical output is constrained by the available price history of the underlying ticker. Therefore, it cannot display cycles prior to the earliest candle on the chart.
Dominant Cycle Detection OscillatorThis is a Dominant Cycle Detection Oscillator that searches multiple ranges of wavelengths within a spectrum. Choose one of 4 different dominant cycle detection methods (MESA MAMA cycle, Pearson Autocorrelation, Discreet Fourier Transform, and Phase Accumulation) to determine the most dominant cycles and see the historical results. Straight lines can indicate a steady dominant cycle; while Wavy lines might indicate a varying dominant cycle length. The steadier the cycle, the easier it may be to predict future events in that cycle (keep the log scale in mind when considering steadiness). The presence of evenly divisible (or harmonic) cycle lengths may also indicate stronger cycles; for example, 19, 38, and 76 dominant lengths for the 2x, 4x, and 8x cycles. Practically, a trader can use these cycle outputs as the default settings for other Hurst/cycle indicators. For example, if you see dominant cycle oscillator outputs of 38 & 76 for the 4x and 8x cycle respectively, you might want to test/use defaults of 38 & 76 for the 4x & 8x lengths in the bandpass, diamond/semi-circle notation, moving average & envelope, and FLD instead of the defaults 40 & 80 for a more fine-tuned analysis.
Muting the oscillator's historical lines and overlaying the indicator on the chart can visually cue a trader to the cycle lengths without taking up extra panes. The DFT Cycle lengths with muted historical lines have been overlayed on the chart in the photo.
The y-axis scale for this indicator's pane (just the oscillator pane, not the chart) most likely needs to be changed to logarithmic to look normal, but it depends on the search ranges in your settings. There are instructions in the settings. In the photo, the MESA MAMA scale is set to regular (not logarithmic) which demonstrates how difficult it can be to read if not changed.
In the Spectral Analysis chapter of Hurst's book Profit Magic, he recommended doing a Fourier analysis across a spectrum of frequencies. Hurst acknowledged there were many ways to do this analysis but recommended the method described by Lanczos. Currently in this indicator, the closest thing to the method described by Lanczos is the DFT Discreet Fourier Transform method.
Shoutout to @lastguru for the dominant cycle library referenced in this code. He mentioned that he may add more methods in the future.
SemiCircle Cycle Notation PivotsFor decades, traders have sought to decode the rhythm of the markets through cycle theory. From the groundbreaking work of HM Gartley in the 1930s to modern-day cycle trading tools on TradingView, the concept remains the same: markets move in repeating waves with larger cycles influencing smaller ones in a fractal-like structure, and understanding their timing gives traders an edge to better anticipate future price movements🔮.
Traditional cycle analysis has always been manual, requiring traders to painstakingly plot semicircles, diamonds, or sine waves to estimate pivot points and time reversals. Drawing tools like semicircle & sine wave projections exist on TradingView, but they lack automation—forcing traders to adjust cycle lengths by eye, often leading to inconsistencies.
This is where SemiCircle Cycle Notation Pivots indicator comes in. Semicircle cycle chart notation appears to have evolved as a practical visualization tool among cycle theorists rather than being pioneered by a single individual; some key influences include HM Gartley, WD Gann, JM Hurst, Walter Bressert, and RayTomes. Built upon LonesomeTheBlue's foundational ZigZag Waves indicator , this indicator takes cycle visualization to the next level by dynamically detecting price pivots and then automatically plotting semicircles based on real-time cycle length calculations & expected rhythm of price action over time.
Key Features:
Automated Cycle Detection: The indicator identifies pivot points based on your preference—highs, lows, or both—and plots semicircle waves that correspond to Hurst's cycle notation.
Customizable Cycle Lengths: Tailor the analysis to your trading strategy with adjustable cycle lengths, defaulting to 10, 20, and 40 bars, allowing for flexibility across various timeframes and assets.
Dynamic Wave Scaling: The semicircle waves adapt to different price structures, ensuring that the visualization remains proportional to the detected cycle lengths and aiding in the identification of potential reversal points.
Automated Cycle Detection: Dynamically identifies price pivot points and automatically adjusts offsets based on real-time cycle length calculations, ensuring precise semicircle wave alignment with market structure.
Color-Coded Cycle Tiers: Each cycle tier is distinctly color-coded, enabling quick differentiation and a clearer understanding of nested market cycles.
Market Cycle Phases IndicatorOverview
The Market Cycle Phases Indicator is a powerful tool designed to help traders identify and visualize the different phases of market cycles. By distinguishing between Accumulation, Uptrend, Distribution, and Downtrend phases, this indicator provides a clear and color-coded representation of market conditions, aiding in better decision-making and strategy development. It is especially useful for long-term investors to observe and understand market cycles over extended periods. The phases are color-coded for easy identification: Green for Accumulation, Blue for Uptrend, Yellow for Distribution, and Red for Downtrend.
Key Features
Identifies four key market phases: Accumulation, Uptrend, Distribution, and Downtrend
Uses a combination of moving averages and volatility measures
Color-coded background for easy visualization of market phases
Adjustable parameters for moving average length, volatility length, and volatility threshold
Plots the moving average and Average True Range (ATR) for reference
Suitable for both short-term trading and long-term investing
Concepts Underlying the Calculations
The calculations behind the Market Cycle Phases Indicator are straightforward, combining the principles of moving averages and volatility measures:
Moving Average (MA): A simple moving average is used to determine the overall trend direction.
Average True Range (ATR): This measures market volatility over a specified period.
Volatility Threshold: A multiplier is applied to the ATR to distinguish between high and low volatility conditions.
How It Works
The indicator first calculates a moving average (MA) of the closing prices and the Average True Range (ATR) to measure market volatility. Based on the position of the price relative to the MA and the current volatility level, the indicator determines the current market phase:
Accumulation Phase: Price is below the MA, and volatility is low (Green background). This phase often indicates a period of consolidation and potential buying interest before an uptrend.
Uptrend Phase: Price is above the MA, and volatility is high (Blue background). This phase represents a strong upward movement in price, often driven by increased buying activity.
Distribution Phase: Price is above the MA, and volatility is low (Yellow background). This phase suggests a period of consolidation at the top of an uptrend, where selling interest may start to increase.
Downtrend Phase: Price is below the MA, and volatility is high (Red background). This phase indicates a strong downward movement in price, often driven by increased selling activity.
How Traders Can Use It
Traders can use the Market Cycle Phases Indicator to:
Identify potential entry and exit points based on market phase transitions.
Confirm trends and avoid false signals by considering both trend direction and volatility.
Develop and refine trading strategies tailored to specific market conditions.
Enhance risk management by recognizing periods of high and low volatility.
Observe long-term market cycles to make informed investment decisions.
Example Usage Instructions
Add the Market Cycle Phases Indicator to your chart.
Adjust the input parameters as needed:
Base Length: Default is 50.
Volatility Length: Default is 14.
Volatility Threshold: Default is 1.5.
Observe the color-coded background to identify the current market phase
Use the identified phases to inform your trading decisions:
Consider buying during the Accumulation or Uptrend phases.
Consider selling or shorting during the Distribution or Downtrend phases.
Combine with other indicators and analysis techniques for comprehensive market insights.
By incorporating the Market Cycle Phases Indicator into your trading toolkit, you can gain a clearer understanding of market dynamics and enhance your ability to navigate different market conditions, making it a valuable asset for long-term investing.
Bitcoin Cycle High/Low with functional Alert [heswaikcrypt]Introduction
Just as machines are fine-tuned for maximum efficiency, trading indicators must evolve to meet the demands of ever-changing markets.
Credit goes to the initial author, @NoCreditsLeft I only improved the existing Pi-cycle indicator with a functional alert and included a bull mode indicator in the script. The alert can help you get a live alert at candle close when the cycle tops, bottoms, and the potential bull phase switch occurs.
Philip Swift’s Pi Cycle Top Indicator is a brilliant example of leveraging mathematical relationships to signal critical turning points in Bitcoin’s price cycles. Historically, it has identified market and local tops with some relative accuracy, often within three days, as demonstrated in all the previous bull run cycles.
At its core, the Pi Cycle Indicator derives its name from the mathematical constant π (pi), achieved by using simple moving averages (MAs) in a specific ratio: 𝜋 = Long MA/short MA
The Bull mode switch is calculated using a crossover of the short exponentia moving average and the long moving average.
.
.
.
Knowing when Bitcoin reaches its top—and receiving timely alerts about it—is crucial for successful trading. The indicator is designed to signal;
Potential Bitcoin tops: Purple label
Potential Bitcoin bottoms : green Label, and
Parabolic swing : Yellow diamond shape (relating to the market switching to a potential bull mode)
"Please note: This indicator is tailored for Bitcoin using historical data analysis and should not be considered definitive. However accurate it might be."
Setting alerts
To set the alert conditions, select any alert function call to get alert whenever the conditions are met. The script is configured on dialy TF; you can set it on 1D or weekly TF.
Enjoy and Trade smartly
Goertzel Cycle Period [Loxx]Goertzel Cycle Period is an indicator that uses Goertzel algorithm to extract the cycle period of ticker's price input to then be injected into advanced, adaptive indicators and technical analysis algorithms.
The following information is extracted from: "MESA vs Goertzel-DFT, 2003 by Dennis Meyers"
Background
MESA which stands for Maximum Entropy Spectral Analysis is a widely used mathematical technique designed to find the frequencies present in data. MESA was developed by J.P Burg for his Ph.D dissertation at Stanford University in 1975. The use of the MESA technique for stocks has been written about in many articles and has been popularized as a trading technique by John Ehlers.
The Fourier Transform is a mathematical technique named after the famed French mathematician Jean Baptiste Joseph Fourier 1768-1830. In its digital form, namely the discrete-time Fourier Transform (DFT) series, is a widely used mathematical technique to find the frequencies of discrete time sampled data. The use of the DFT has been written about in many articles in this magazine (see references section).
Today, both MESA and DFT are widely used in science and engineering in digital signal processing. The application of MESA and Fourier mathematical techniques are prevalent in our everyday life from everything from television to cell phones to wireless internet to satellite communications.
MESA Advantages & Disadvantage
MESA is a mathematical technique that calculates the frequencies of a time series from the autoregressive coefficients of the time series. We have all heard of regression. The simplest regression is the straight line regression of price against time where price(t) = a+b*t and where a and b are calculated such that the square of the distance between price and the best fit straight line is minimized (also called least squares fitting). With autoregression we attempt to predict tomorrows price by a linear combination of M past prices.
One of the major advantages of MESA is that the frequency examined is not constrained to multiples of 1/N (1/N is equal to the DFT frequency spacing and N is equal to the number of sample points). For instance with the DFT and N data points we can only look a frequencies of 1/N, 2/N, Ö.., 0.5. With MESA we can examine any frequency band within that range and any frequency spacing between i/N and (i+1)/N . For example, if we had 100 bars of price data, we might be interested in looking for all cycles between 3 bars per cycle and 30 bars/ cycle only and with a frequency spacing of 0.5 bars/cycle. DFT would examine all bars per cycle of between 2 and 50 with a frequency spacing constrained to 1/100.
Another of the major advantages of MESA is that the dominant spectral (frequency) peaks of the price series, if they exist, can be identified with fewer samples than the DFT technique. For instance if we had a 10 bar price period and a high signal to noise ratio we could accurately identify this period with 40 data samples using the MESA technique. This same resolution might take 128 samples for the DFT. One major disadvantage of the MESA technique is that with low signal to noise ratios, that is below 6db (signal amplitude/noise amplitude < 2), the ability of MESA to find the dominant frequency peaks is severely diminished.(see Kay, Ref 10, p 437). With noisy price series this disadvantage can become a real problem. Another disadvantage of MESA is that when the dominant frequencies are found another procedure has to be used to get the amplitude and phases of these found frequencies. This two stage process can make MESA much slower than the DFT and FFT . The FFT stands for Fast Fourier Transform. The Fast Fourier Transform(FFT) is a computationally efficient algorithm which is a designed to rapidly evaluate the DFT. We will show in examples below the comparisons between the DFT & MESA using constructed signals with various noise levels.
DFT Advantages and Disadvantages.
The mathematical technique called the DFT takes a discrete time series(price) of N equally spaced samples and transforms or converts this time series through a mathematical operation into set of N complex numbers defined in what is called the frequency domain. Why would we what to do that? Well it turns out that we can do all kinds of neat analysis tricks in the frequency domain which are just to hard to do, computationally wise, with the original price series in the time domain. If we make the assumption that the price series we are examining is made up of signals of various frequencies plus noise, than in the frequency domain we can easily filter out the frequencies we have no interest in and minimize the noise in the data. We could then transform the resultant back into the time domain and produce a filtered price series that hopefully would be easier to trade. The advantages of the DFT and itís fast computation algorithm the FFT, are that it is extremely fast in calculating the frequencies of the input price series. In addition it can determine frequency peaks for very noisy price series even when the signal amplitude is less than the noise amplitude. One of the disadvantages of the FFT is that straight line, parabolic trends and edge effects in the price series can distort the frequency spectrum. In addition, end effects in the price series can distort the frequency spectrum. Another disadvantage of the FFT is that it needs a lot more data than MESA for spectral resolution. However this disadvantage has largely been nullified by the speed of today's computers.
Goertzel algorithm attempts to resolve these problems...
What is the Goertzel algorithm?
The Goertzel algorithm is a technique in digital signal processing (DSP) for efficient evaluation of the individual terms of the discrete Fourier transform (DFT). It is useful in certain practical applications, such as recognition of dual-tone multi-frequency signaling (DTMF) tones produced by the push buttons of the keypad of a traditional analog telephone. The algorithm was first described by Gerald Goertzel in 1958.
Like the DFT, the Goertzel algorithm analyses one selectable frequency component from a discrete signal. Unlike direct DFT calculations, the Goertzel algorithm applies a single real-valued coefficient at each iteration, using real-valued arithmetic for real-valued input sequences. For covering a full spectrum, the Goertzel algorithm has a higher order of complexity than fast Fourier transform (FFT) algorithms, but for computing a small number of selected frequency components, it is more numerically efficient. The simple structure of the Goertzel algorithm makes it well suited to small processors and embedded applications.
The main calculation in the Goertzel algorithm has the form of a digital filter, and for this reason the algorithm is often called a Goertzel filter
Where is Goertzel algorithm used?
This package contains the advanced mathematical technique called the Goertzel algorithm for discrete Fourier transforms. This mathematical technique is currently used in today's space-age satellite and communication applications and is applied here to stock and futures trading.
While the mathematical technique called the Goertzel algorithm is unknown to many, this algorithm is used everyday without even knowing it. When you press a cell phone button have you ever wondered how the telephone company knows what button tone you pushed? The answer is the Goertzel algorithm. This algorithm is built into tiny integrated circuits and immediately detects which of the 12 button tones(frequencies) you pushed.
Future Additions:
Bartels test for cycle significance, testing output cycles for utility
Hodrick Prescott Detrending, smoothing
Zero-Lag Regression Detrending, smoothing
High-pass or Double WMA filtering of source input price data
References:
1. Burg, J. P., ëMaximum Entropy Spectral Analysisî, Ph.D. dissertation, Stanford University, Stanford, CA. May 1975.
2. Kay, Steven M., ìModern Spectral Estimationî, Prentice Hall, 1988
3. Marple, Lawrence S. Jr., ìDigital Spectral Analysis With Applicationsî, Prentice Hall, 1987
4. Press, William H., et al, ìNumerical Receipts in C++: the Art of Scientific Computingî,
Cambridge Press, 2002.
5. Oppenheim, A, Schafer, R. and Buck, J., ìDiscrete Time Signal Processingî, Prentice Hall,
1996, pp663-634
6. Proakis, J. and Manolakis, D. ìDigital Signal Processing-Principles, Algorithms and
Applicationsî, Prentice Hall, 1996., pp480-481
7. Goertzel, G., ìAn Algorithm for he evaluation of finite trigonometric seriesî American Math
Month, Vol 65, 1958 pp34-35.
Lunar Cycle Tracker - (Moon + 3 Mercury Retrogrades)This script overlays the lunar and Mercury retrograde cycles directly onto your chart, helping traders visualize natural timing intervals that may influence market behavior.
Key Features:
🌑 New Moon & Full Moon Markers:
Vertical lines and labels indicate new and full moon events each month. You can fully customize their colors.
🌗 Last Quarter Moon Fill:
A soft pink background highlights the last quarter moon phase (from 7.4 days after the full moon to the next new moon).
🪐 Three Mercury Retrograde Zones:
Highlight up to three retrograde periods per year with customizable date inputs and background color. Great for spotting potential reversal or volatility windows.
Customization:
Moon event dates and colors
Manual input for Mercury retrograde periods (year, month, day)
Full compatibility with all timeframes (1H, 4H, daily, etc.)
Great for astro-cycle traders, Gann-based analysts, or anyone who respects time symmetry in the markets.
Fully customizable & works across all timeframes.
This tool was created by AngelArt as part of a larger astro-market model using lunar timing and planetary retrogrades for cycle-based market analysis.
Hybrid, Zero lag, Adaptive cycle MACD [Loxx]TASC's March 2008 edition Traders' Tips includes an article by John Ehlers titled "Measuring Cycle Periods," and describes the use of bandpass filters to estimate the length, in bars, of the currently dominant price cycle.
What are Dominant Cycles and Why should we use them?
Even the most casual chart reader will be able to spot times when the market is cycling and other times when longer-term trends are in play. Cycling markets are ideal for swing trading however attempting to “trade the swing” in a trending market can be a recipe for disaster. Similarly, applying trend trading techniques during a cycling market can equally wreak havoc in your account. Cycle or trend modes can readily be identified in hindsight. But it would be useful to have an objective scientific approach to guide you as to the current market mode.
There are a number of tools already available to differentiate between cycle and trend modes. For example, measuring the trend slope over the cycle period to the amplitude of the cyclic swing is one possibility.
We begin by thinking of cycle mode in terms of frequency or its inverse, periodicity. Since the markets are fractal; daily, weekly, and intraday charts are pretty much indistinguishable when time scales are removed. Thus it is useful to think of the cycle period in terms of its bar count. For example, a 20 bar cycle using daily data corresponds to a cycle period of approximately one month.
When viewed as a waveform, slow-varying price trends constitute the waveform's low frequency components and day-to-day fluctuations (noise) constitute the high frequency components. The objective in cycle mode is to filter out the unwanted components--both low frequency trends and the high frequency noise--and retain only the range of frequencies over the desired swing period. A filter for doing this is called a bandpass filter and the range of frequencies passed is the filter's bandwidth .
Indicator Features
-Zero lag or Regular MACD/signal calculation
- Fixed or Band-pass Dominant Cycle for MACD and Signal MA period inputs
-10 different moving average options for both MACD and Signal MA calculations
-Separate Band-pass Dominant Cycle calculations for both MACD and Signal MA calculations
- Slow-to-Fast Band-pass Dominant Cycle input to tweak the ratio of MACD MA input periods as they relate to each other
Hurst Cycle Channel Clone [LazyBear]Cycle Channel is loosely based on Hurst's nested channels. Basic idea is to identify and highlight the shorter cycles, in the context of higher degree cycles.
This indicator plots the shorter term (red) & medium term (green) cycles as channels. Some things to note:
As you can see the red channel keeps moving with in the bounds of green channel. When green breaches red channel, it usually signifies extreme market condition.
Both red & green channels provide support/resistance levels. Also, the green channel provides S/R levels to the inner red channel.
Movement of red channel with reference to green highlights reversal points, reducing momentum et al. For ex., point "(x)" in the chart shows how red channel failed to reach the upper green channel line and highlighted the local top.
Use this just like other bands/channels. I have more indicators derived from this idea, will post them later.
Some more examples:
---------------------------------
MSFT 1M:
DXY 1M:
IWM 1M:
More info:
------------
cyclicwave.blogspot.com
List of my free indicators: bit.ly
List of my app-store indicators: blog.tradingview.com
(Support doc: bit.ly)
Schaff Trend Cycle (STC) - t0rdn3Schaff Trend Cycle (STC)
By t0rdn3 (original STC by , now with more descriptive naming)
Description
The Schaff Trend Cycle (STC) is a momentum-based oscillator that combines the speed of a fast EMA crossover with cyclical normalization. Developed by Doug Schaff, it identifies market turning points more responsively than MACD or RSI.
How It Works
1. EMA Difference : Calculates the difference between two EMAs of the source series (default: close).
2. Cycle Percentage : Normalizes that difference to a 0–100 range over the cycle period.
3. Smoothing : Applies exponential smoothing twice—first to the cycle percentage, then to its normalized cycles—to reduce noise.
4. Final STC Line : Produces a smoothed oscillator oscillating between 0 and 100.
Alerts
- "STC turned down above 75" : Fires once when STC makes a local peak above the upper threshold ( 75 ).
- "STC turned up below 25" : Fires once when STC makes a local trough below the lower threshold ( 25 ).
Inputs
Cycle Period : 12 — Lookback in bars for normalization
Fast EMA Length : 26 — Period of the fast EMA
Slow EMA Length : 50 — Period of the slow EMA
Smoothing Factor : 0.5 — Exponential smoothing coefficient (0–1)
Usage
Readings above 75 indicate an overbought cycle; readings below 25 indicate an oversold cycle. Crossings of the 50 midline can confirm trend direction:
- STC rising through 50 → bullish shift
- STC falling through 50 → bearish shift
Combine STC with price action or other trend filters to improve signal quality. You can adjust the cycle period and EMA lengths to match different timeframes or instruments.