Celestial Cycles [Orderflowing]Astronomical Calculations | Moon Phases | Lunar Cycles & Rare Events | Solar Eclipses & Seasonal Markers | Mercury Retrograde Analysis | Momentum-Based Trend Coloration | Moon Information Table | Customizable Alerts
Built using Pine Script V6
Introduction
The Celestial Cycles indicator is a simple yet complex script that merges the timeless influence of astronomical events with modern technical analysis. By plotting key celestial phenomena, such as moon phases, seasonal markers, and Mercury retrograde periods onto your price chart, this indicator offers traders a fresh perspective on market cycles.
If you like financial astrology or seeking a creative edge, it provides a visually intuitive way to explore potential correlations between celestial events and market behavior.
This indicator is ideal for traders of all experience levels looking to integrate the celestial cycle into their strategies, complementing traditional technical tools with a unique layer of analysis.
Innovation and Inspiration
Inspired by financial astrology. The notion that celestial events, like moon phases or planetary retrogrades, might influence human psychology and market dynamics has intrigued traders for a long time. "Millionaires don’t use astrology, billionaires do." (allegedly): ~J.P. Morgan
This indicator modernizes that concept with astronomical calculations, plotting these events on your chart.
Core Features
Moon Phases: Displays new moons, full moons, and quarter moons, with optional micro phases (1/8, 3/8, 5/8, 7/8) for detailed analysis.
Special Moons: Highlights rare events like blood moons (lunar eclipses) and blue moons with distinct markers.
Solar Eclipses: Marks solar eclipses during new moon phases when enabled.
Seasonal Events: Plots "Spring | Equinox," "Summer | Solstice," "Autumn | Equinox," and "Winter | Solstice" for cyclical context.
Mercury Retrograde: Visualizes current and future Mercury retrograde periods with background highlights and labels.
Trend Coloration: Colors price bars based on momentum to aid trend visualization (optional).
Information Table: Shows real-time moon age and phase details in a table.
Customizable Alerts: Set up alerts for moon phases, special moon events, seasonal events, and Mercury retrograde transitions to stay informed about key celestial occurrences.
Customization and User Inputs
Celestial Cycles is customizable, allowing you to adjust it to your liking:
Event Toggles: Show or hide specific events (e.g., moon phases, special moons, eclipses, seasonal events, Mercury retrograde).
Visual Adjustments: Set colors and positions (above or below bars) for each event type.
Phase Timing: Fine-tune moon phase detection with hour-based adjustments for precision.
Trend Settings: Enable/disable trend coloration and adjust the momentum calculation period.
Mercury Retrograde Options: Display current retrogrades and up to 10 future periods, with customizable visibility.
Alert Settings: Enable or disable alerts for specific celestial events, including moon phases, special moons, seasonal events, and Mercury retrograde starts and ends.
These options ensure a clean, focused chart highlighting only the elements most relevant to your analysis.
How It Works
The indicator leverages code to show celestial events:
Moon Phases: Calculated using Julian dates and ecliptic coordinates to determine moon age and phase transitions.
Special Events: Detects eclipses and rare moons by analyzing lunar and solar positions relative to the ecliptic plane.
Seasonal Markers: Identifies "Spring | Equinox," "Summer | Solstice," "Autumn | Equinox," and "Winter | Solstice".
Mercury Retrograde: Approximates retrograde cycles and projects future periods based on a simplified orbital model.
Trend Coloration: Applies a momentum oscillator to color bars, reflecting potential bullish or bearish trend.
Analysis and Interpretation
Traders can use Celestial Cycles to explore intriguing market hypotheses:
Moon Phases: New and full moons may align with volatility spikes or trend reversals.
Eclipses: Eclipses might signal significant market shifts.
Seasonal Events: Equinoxes and solstices could highlight cyclical turning points.
Mercury Retrograde: Periods of potential disruption or reversal, often linked to communication and technology challenges.
Trend Coloration: Visual cues to confirm potential momentum alongside celestial events.
Usage and Applications
Long-Term Trends: High Timeframe (HTF) charts to study celestial impacts on major cycles.
Short-Term Trends: Apply to intraday timeframes (LTF) for event correlations.
Confluence: Pair with technical indicators for stronger signals.
Research: Backtest historical data to uncover patterns specific to your chosen market. Use the adjustment periods to fine-tune.
Why Use This Indicator?
Unique Perspective: Combines celestial and technical analysis.
Free Access: Enjoy a premium script with lots of features at no cost.
Customization: Personalize every aspect to suit your preferences.
Educational: Learn about astronomical cycles.
Stay Informed: Set up customizable alerts to receive event notifications.
Conclusion
Celestial Cycles is an exploration of how the cosmos might intersect with the markets. By overlaying key astronomical events on your chart and offering alerts, it invites you to see trading through a new lens. While not a crystal ball, it’s a compelling addition to a trader’s toolkit.
Disclaimer: This indicator is for informational, educational and analytical purposes only. Celestial correlations are speculative and should not be the sole basis for trading decisions. Always combine with other analysis methods and manage risk appropriately.
Cerca negli script per "Cycle"
Adaptive Momentum Cycle Oscillator (AMCO)1. Concept and Foundation
The Adaptive Momentum Cycle Oscillator (AMCO) is an advanced indicator designed to dynamically adjust to varying market conditions while identifying price cycles and trends. It combines momentum and volatility into a single, oscillating signal that helps traders detect turning points in price movements. By incorporating adaptive periods and trend filtering, AMCO ensures relevance across different asset classes and timeframes. This innovation bridges the gap between traditional oscillators and trending indicators, providing a comprehensive tool for both cycle identification and trend confirmation.
2. Dynamic Adaptation to Market Conditions
A standout feature of AMCO is its ability to adapt its sensitivity based on market volatility. Using the ATR (Average True Range) as a measure of current volatility, AMCO adjusts its calculation periods dynamically. During periods of high volatility, it extends its lookback periods to smooth out noise and avoid false signals. Conversely, in low-volatility environments, it shortens its periods to remain responsive to smaller price fluctuations. This adaptability ensures that AMCO remains effective and reliable in both trending and ranging markets.
3. Trend Awareness and Directional Weighting
AMCO integrates a trend filter based on a long-term moving average, such as SMA(200), to align its signals with the broader market direction. This filter ensures that buy signals are prioritized during uptrends and sell signals during downtrends, reducing counter-trend trades. Additionally, a directional weighting mechanism amplifies momentum signals that align with the prevailing trend. This dual-layer approach significantly enhances the accuracy of signals, making AMCO especially useful in markets with clear directional bias.
4. Normalized Visualization for Clarity
The AMCO includes a normalized histogram that provides a clear visual representation of momentum strength relative to recent volatility. By dividing the raw AMCO value by the ATR, the histogram ensures consistency across assets with varying price ranges and volatility levels. Positive bars indicate bullish momentum, while negative bars signify bearish momentum. This intuitive visualization makes it easier for traders to interpret market dynamics and act on actionable signals, regardless of asset type or timeframe.
5. Practical and Actionable Signals
AMCO generates practical signals based on zero-line crossovers, allowing traders to easily identify shifts between bullish and bearish cycles. Positive values above the zero line suggest upward momentum, signaling potential buying opportunities, while negative values below the zero line indicate downward momentum, signaling potential sell opportunities. By combining adaptive behavior, trend filtering, and momentum-strength normalization, AMCO offers traders a robust framework for navigating complex markets with confidence. Its versatility makes it suitable for scalping, swing trading, and even longer-term investing.
Solar Cycle (SOLAR)SOLAR: SOLAR CYCLE
🔍 OVERVIEW AND PURPOSE
The Solar Cycle indicator is an astronomical calculator that provides precise values representing the seasonal position of the Sun throughout the year. This indicator maps the Sun's position in the ecliptic to a normalized value ranging from -1.0 (winter solstice) through 0.0 (equinoxes) to +1.0 (summer solstice), creating a continuous cycle that represents the seasonal progression throughout the year.
The implementation uses high-precision astronomical formulas that include orbital elements and perturbation terms to accurately calculate the Sun's position. By converting chart timestamps to Julian dates and applying standard astronomical algorithms, this indicator achieves significantly greater accuracy than simplified seasonal approximations. This makes it valuable for traders exploring seasonal patterns, agricultural commodities trading, and natural cycle-based trading strategies.
🧩 CORE CONCEPTS
Seasonal cycle integration: Maps the annual solar cycle (365.242 days) to a continuous wave
Continuous phase representation: Provides a normalized -1.0 to +1.0 value
Astronomical precision: Uses perturbation terms and high-precision constants for accurate solar position
Key points detection: Identifies solstices (±1.0) and equinoxes (0.0) automatically
The Solar Cycle indicator differs from traditional seasonal analysis tools by incorporating precise astronomical calculations rather than using simple calendar-based approximations. This approach allows traders to identify exact seasonal turning points and transitions with high accuracy.
⚙️ COMMON SETTINGS AND PARAMETERS
Pro Tip: While the indicator itself doesn't have adjustable parameters, it's most effective when used on higher timeframes (daily or weekly charts) to visualize seasonal patterns. Consider combining it with commodity price data to analyze seasonal correlations.
🧮 CALCULATION AND MATHEMATICAL FOUNDATION
Simplified explanation:
The Solar Cycle indicator calculates the Sun's ecliptic longitude and transforms it into a sine wave that peaks at the summer solstice and troughs at the winter solstice, with equinoxes at the zero crossings.
Technical formula:
Convert chart timestamp to Julian Date:
JD = (time / 86400000.0) + 2440587.5
Calculate Time T in Julian centuries since J2000.0:
T = (JD - 2451545.0) / 36525.0
Calculate the Sun's mean longitude (L0) and mean anomaly (M), including perturbation terms:
L0 = (280.46646 + 36000.76983T + 0.0003032T²) % 360
M = (357.52911 + 35999.05029T - 0.0001537T² - 0.00000025T³) % 360
Calculate the equation of center (C):
C = (1.914602 - 0.004817T - 0.000014*T²)sin(M) +
(0.019993 - 0.000101T)sin(2M) +
0.000289sin(3M)
Calculate the Sun's true longitude and convert to seasonal value:
λ = L0 + C
seasonal = sin(λ)
🔍 Technical Note: The implementation includes terms for the equation of center to account for the Earth's elliptical orbit. This provides more accurate timing of solstices and equinoxes compared to simple harmonic approximations.
📈 INTERPRETATION DETAILS
The Solar Cycle indicator provides several analytical perspectives:
Summer Solstice (+1.0): Maximum solar elevation, longest day
Winter Solstice (-1.0): Minimum solar elevation, shortest day
Vernal Equinox (0.0 crossing up): Day and night equal length, spring begins
Autumnal Equinox (0.0 crossing down): Day and night equal length, autumn begins
Transition rates: Steepest near equinoxes, flattest near solstices
Cycle alignment: Market cycles that align with seasonal patterns may show stronger trends
Confirmation points: Solstices and equinoxes often mark important seasonal turning points
⚠️ LIMITATIONS AND CONSIDERATIONS
Geographic relevance: Solar cycle timing is most relevant for temperate latitudes
Market specificity: Seasonal effects vary significantly across different markets
Timeframe compatibility: Most effective for longer-term analysis (weekly/monthly)
Complementary tool: Should be used alongside price action and other indicators
Lead/lag effects: Market reactions to seasonal changes may precede or follow astronomical events
Statistical significance: Seasonal patterns should be verified across multiple years
Global markets: Consider opposite seasonality in Southern Hemisphere markets
📚 REFERENCES
Meeus, J. (1998). Astronomical Algorithms (2nd ed.). Willmann-Bell.
Hirshleifer, D., & Shumway, T. (2003). Good day sunshine: Stock returns and the weather. Journal of Finance, 58(3), 1009-1032.
Hong, H., & Yu, J. (2009). Gone fishin': Seasonality in trading activity and asset prices. Journal of Financial Markets, 12(4), 672-702.
Bouman, S., & Jacobsen, B. (2002). The Halloween indicator, 'Sell in May and go away': Another puzzle. American Economic Review, 92(5), 1618-1635.
Time CyclesUses Zeussy's time and price cycles. This shows the Asia and London sessions, and has the PM session broken into 90 minute cycles with the option of toggling 30m cycles within them.
USA President Elections Year Highlighted CycleUSA President year highlighted , years separated by white vertical lines, horizontal white line is yearly open. Can be used to analyze yearly performance related to 4 year cycle.
Time Cycles_FAHelps identify cycles for all types of scripts. Use it cautiously to identify next trends.
(VIX Spread-BTC Cycle Timing Strategy)A multi-asset cycle timing strategy that constructs a 0-100 oscillator using the absolute 10Y-2Y U.S. Treasury yield spread multiplied by the inverse of VIX squared. It integrates BTC’s deviation from its 100-day MA and 10Y Treasury’s MA position as dual filters, with clear entry rules: enter bond markets when the oscillator exceeds 80 (hiking cycles) and enter BTC when it drops below 20 (easing cycles).
Z-Scored Pi Cycle Top & BottomThis indicator calculates the Z-score of the Pi Cycle Top & Bottom indicator to identify potential market cycle tops and bottoms. It uses the relationship between two EMAs (111 and 350) to assess the price action and applies a Z-score to determine how far the current value deviates from the mean, providing a normalized measure of overbought and oversold conditions.
Summary:
The Z-Scored Pi Cycle Top & Bottom indicator is designed to help traders identify significant market cycle extremes by applying a Z-score to the Pi Cycle Top & Bottom ratio (EMA 111/EMA 350). This normalized score ranges between -2.99 and 2.99, with values near the extremes suggesting potential market tops or bottoms. Green shading indicates a positive Z-score (potential top), while red shading indicates a negative Z-score (potential bottom).
Use this indicator to gauge where the market stands relative to historical tops and bottoms, allowing for more informed decision-making in both bull and bear markets. The indicator also displays the absolute value of the Z-score in the label, helping traders easily visualize how far the current market is from historical extremes.
**I did not come up with or create this indicator I have just z scored it and made it easier for myself to use.***
Bitcoin Halving Cycle ProfitThe Bitcoin Halving Cycle Profit indicator, developed by Kevin Svenson , unveils a consistent and predetermined profit-taking cycle triggered by each Bitcoin halving event. This indicator streamlines the analysis of halving occurrences, providing explicit signals for both profit-taking and Dollar-Cost Averaging strategies.
Following each Bitcoin halving event, a fixed number of weeks consistently mark the period of maximum profitability for profit-taking:
🔄 Halving Cycle Profit Timeline Explained:
• 40 Weeks (Post-Halving) = Start of the optimal profit-taking zone.
• 80 Weeks (Post-Halving) = "Last Call" for profit-taking before the onset of a bear market.
• 125 Weeks (Post-Halving) = The optimal timeframe to begin Dollar-Cost Averaging.
(Bitcoin Weekly Chart using Halving Cycle Profit)
One standout feature of this indicator is its inherent clarity and comprehensive labeling. This quality makes it exceptionally easy to discern the locations of key factors and turning points, enhancing your understanding of the market dynamics it highlights.
(Bitcoin Daily Chart using Halving Cycle Profit)
🚀 This indicator doesn't limit its effectiveness to just Bitcoin; it seamlessly integrates with top blue-chip altcoins like Ethereum and most household names in the crypto industry.
( Ethereum Weekly Chart using Halving Cycle Profit)
🛠️ Customizable display options are availible. Users have the flexibility to toggle/adjust labels, lines, and color fills according to their preferences.
📑 In summary, the Bitcoin Halving Cycle Profit indicator is a versatile and user-friendly tool, offering clarity and customization for traders navigating both Bitcoin and top altcoins.
⚠️ It's important to note that while the Bitcoin Halving Cycle Profit indicator provides historical insights, past performance does not guarantee future results. Timing profitability in the cryptocurrency market involves inherent risks, and this indicator should not be construed as financial advice. Users are encouraged to exercise caution, conduct thorough research, and make informed decisions based on their individual risk tolerance and financial goals.
PROWIN STUDY BITCOIN DOMINANCE CYCLE**Title: PROWIN STUDY BITCOIN DOMINANCE CYCLE**
**Overview:**
This TradingView script analyzes the relationship between Bitcoin dominance and Bitcoin price movements, as well as the performance of altcoins. It categorizes market conditions into different scenarios based on the movements of Bitcoin dominance and Bitcoin price, and plots the Exponential Moving Average (EMA) of the altcoins index.
**Key Components:**
1. **Bitcoin Dominance:**
- `dominanceBTC`: Fetches the Bitcoin dominance from the "CRYPTOCAP:BTC.D" symbol for the current timeframe.
2. **Bitcoin Price:**
- `priceBTC`: Uses the closing price of Bitcoin from the current chart (assumed to be BTC/USD).
3. **Altcoins Index:**
- `altcoinsIndex`: Fetches the total market cap of altcoins (excluding Bitcoin) from the "CRYPTOCAP:TOTAL2" symbol.
4. **EMA of Altcoins:**
- `emaAltcoins`: Calculates the 20-period Exponential Moving Average (EMA) of the altcoins index.
**Conditions:**
1. **Bitcoin Dominance and Price Up:**
- `dominanceBTC_up`: Bitcoin dominance crosses above its 20-period Simple Moving Average (SMA).
- `priceBTC_up`: Bitcoin price crosses above its 20-period SMA.
2. **Bitcoin Dominance Up and Price Down:**
- `priceBTC_down`: Bitcoin price crosses below its 20-period SMA.
3. **Bitcoin Dominance Up and Price Sideways:**
- `priceBTC_lateral`: Bitcoin price change is less than 5% of its 10-period average change.
4. **Altseason:**
- `altseason_condition`: Bitcoin dominance crosses below its 20-period SMA while Bitcoin price crosses above its 20-period SMA.
5. **Dump:**
- `dump_altcoins_condition`: Bitcoin dominance crosses below its 20-period SMA while Bitcoin price crosses below its 20-period SMA.
6. **Altcoins Up:**
- `altcoins_up_condition`: Bitcoin dominance crosses below its 20-period SMA while Bitcoin price moves sideways.
**Current Condition:**
- Determines the current market condition based on the above scenarios and stores it in the `currentCondition` variable.
**Plotting:**
- Plots the EMA of the altcoins index on the chart in green with a linewidth of 2.
- Displays the current market condition in a table at the top-right of the chart, with appropriate background and text colors.
**Background Color:**
- Sets a semi-transparent blue background color for the chart.
This script helps traders visualize and understand the market dynamics between Bitcoin dominance, Bitcoin price, and altcoin performance, providing insights into different market cycles and potential trading opportunities.
SATAN Cycle BitcoinWith this indicator I want to dismantle the Pi Cycle Bitcoin indicator since the community thinks that it has a mathematical basis based on the Pi number, nothing is further from reality, the indicator uses averages which, divided, result in the Pi number but in the code uses some multipliers to adjust the crossing of averages and I demonstrate it with this indicator in which if you add the averages you get the number 666, is the demon behind the Bitcoin cycles? NO, it is only an adjustment of averages and multipliers. With this I only intend to alert the community that the indicator is 0% reliable.
Cosmic Pi Troll CycleBased on the Cosmic Pi cycle for BTC, but this indicator also includes the cycles for ETH and LINK.
All credits to cosmic_indicators for the initial idea.
CyclesThis is a modified Stochastic indicator. Modifications include:
1. The output is now centered on "0" and the scale is from -50 to +50, so that histograms and columns can be used to plot the output.
2. Added visual trade setup triggers. A trigger to the up side is a cycle high and indicates a "sell signal". A trigger to the down side is a cycle low and indicates a "buy" signal.
3. Added an alert trigger to be used to setup alerts. Selecting "Alert" to be Greater Than (>) Value = 0.00 will trigger an alert if either the buy or sell triggers occur.
4. Added a force indicator output. This indicates the rate of change in "D", or mathematically "dD/dt", as was done in the Power Analyzer indicator. When Force and D are in-phase, the maximum power is achieved.
5. Added "Slow Average Momentum" and "Slow Average Force" as was done in the Power Analyzer indicator.
6. Added an internal MACD and EMA as part of the trade setup trigger equation. There is a new input variable for the EMA length.
7. Added an input variable for the "Trigger Threshold", which ranges from -50 to 50, to be used as a screening filter.
Time Cycle linesTime cycles are recurring patterns or intervals in which market movements tend to repeat. Traders use them to identify potential turning points in price action. By analyzing historical highs, lows, and key time intervals, time cycles help forecast future market behavior and improve timing for entries and exits.
Periodic CycleAllows visualizing a periodic cycle based on startdate, cycle period and part of cycle to be highlighed.
Economic Cycle ScoreCalculation
-Combine Business Cycle with Liquidity Cycle by applying Z-Score
-Rescale Z-Score to 0-100
-Smooth it with ema
-0-15 is oversold
-85-100 is overbought
Use Case
-Identify when risk asset (Bitcoin) is overbought/oversold
-Use this indicator together with other confluences
***USE ON MONTHLY CHART ONLY (due to the economic date release frequency)
Pi Cycle PersonalizadoYou can adjust it for any crypto asset to help identify each cycle’s peaks.
Example:
Cardano → Fast SMA: 150 Slow SMA: 350
Ethereum → Fast SMA: 250 Slow SMA: 625
Gronk-Style Lunar Cycle Projection (fixed 30m base)Based on the lunar cycle timing provided by Gronko Polo - A Bromance in Finance
Quarterly Theory - 90m Cycles This Indicator Give you the Exact 90 mins cycles for the market and add background colors to each session over it.
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!
Wosabi Time Cycle Gann v1 This indicator is an auxiliary tool for drawing the five-year and ten-year cycle, as it draws vertical lines every 12 candles and for 12 minor cycles, so that a major cycle consists of 144 candles, which is the ten-year cycle. It helps to know whether the current trend will continue for the five-year cycle and whether it will complete the ten-year cycle or not The standard cycle assumes that the trend is from a bottom or a top, if it continues for more than 24 candles to 36 candles, then corrects and does not break the bottom or top, then the trend will continue at least to complete the five-year cycle, i.e. 72 candles, and if the trend continues and the seven-year cycle closes at the 82 candle above The price of the candle of the strategic line No. 42, there is a possibility to complete the ten-year cycle (you must have experience in the standard patterns of time cycles as explained by gan).
The indicator also draws the digital gates in horizontal lines, and you have to select them manually and adjust the price difference from one currency to another from the settings.
When adding the indicator for the first time, you must specify the candle of the beginning of the trend, whether at a bottom or a top, as well as specifying the highest or lowest price that is expected to reach five digital gates, and you can modify the gates later in the settings.
You can show a horizontal line at the close of each minor cycle of 24 candles, and you can adjust the line length from the settings.
You can also show lines on the vibration plugs.
When the trend is up, the end price must be higher than the starting price, in order to draw the direction for the gates correctly, and when the trend is down, the end price must be lower than the starting price.
Important note: This indicator depends on your experience in time cycles and will not give you any buy or sell signals. It is an indicator that saves you drawing for cycles and gates and depends on your personal experience in time cycles.
هذا المؤشر اداة مساعدة لرسم دورة الخمس سنوات والعشر سنوات، فهو يرسم خطوط اعمده راسية كل 12 شمعة ولعدد 12 دورة صغرى لتتكون دورة كبرى من 144 شمعة وهي دورة العشر سنوات وهي تساعد لمعرفة هل الاتجاه الحالي سيستمر لدورة الخمس سنوات وهل سيكمل دورة العشر سنوات ام لا ، فالدورة القياسية تفترض ان الاتجاه من قاع او قمة اذا استمر لاكثر من 24 شمعة الى 36 شمعة ثم صحح ولم يكسر القاع او القمة فإن الاتجاه سيستمر على الاقل لاكمال دورة الخمس سنوات اي 72 شمعة ، واذا استمر الاتجاه واغلق دورة السبع سنوات عند الشمعة 82 فوق سعر شمعة خط الاستراتيجي رقم 42 فهنالك احتمالية لاكمال دورة العشر سنوات (يجب ان يكون ليك خبرة في الانماط القياسية للدورات الزمنية كما شرحها gan).
كذلك يقوم المؤشر برسم البوابات الرقمية في خطوط افقية وعليك تحديدها بشكل يدوي وتعديل فارق السعر من عملة لاخرى من الاعدادات .
عند اضافة المؤشر لاول مرة يجب تحديد شمعة بداية الاتجاه سواء عند قاع او قمة وكذلك تحديد السعر الاعلى او الادنى المتوقع ان تصل له خمس بوابات رقمية ويمكنك تعديل البوابات لاحقا من الاعدادات .
يمكنك اظهار خط افقي عند اغلاق كل دورة صغرى لعدد 24 شمعة ويمكنك تعديل طول الخط من الاعدادات .
يمكنك كذلك اظهار خطوط على شمعات الاهتزاز .
عندما يكون الاتجاه صاعد يجب ان يكون سعر النهاية اعلى من سعر البداية ليتم رسم الاتتجاه للبوابات بشكل صحيح وعندما يكون الاتجاه هابط يجب ان يكون سعر النهاية ادنى من سعر البداية .
ملاحظة هامة : هذا المؤشر يعتمد على خبرتك في الدورات الزمنية ولن يعطيك اي اشارات شراء او بيع فهو مؤشر يوفر عليك الرسم للدورات والبوابات ويعتمد على خبرتك الشخصية في الدورات الزمنية .
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.