Money Flow: In & Out Detector[THANHCONG]Indicator Name:
Money Flow: In & Out Detector
Indicator Description:
The Money Flow: In & Out Detector indicator uses technical indicators such as RSI (Relative Strength Index), MFI (Money Flow Index), and volume analysis to determine money inflow and outflow in the market.
This indicator helps traders identify changes in money flow, allowing them to detect buy and sell signals based on the combination of the following factors:
RSI > 50 and MFI > 50: Money inflow, indicating a buy signal.
RSI < 50 and MFI < 50: Money outflow, indicating a sell signal.
Volume increase/decrease relative to the average: Identifies strong market behavior changes.
Adjustable Parameters:
RSI Length: The number of periods to calculate the RSI (default is 14).
MFI Length: The number of periods to calculate the MFI (default is 14).
Volume MA Length: The number of periods to calculate the moving average of volume (default is 20).
Volume Increase/Decrease (%): The percentage threshold for volume change compared to the moving average (default is 20%).
Look Back Period: The number of periods used to identify peaks and troughs (default is 20).
How to Use the Indicator:
Money Inflow: When both RSI and MFI are above 50, and volume increases significantly relative to the moving average, the indicator shows a Buy signal.
Money Outflow: When both RSI and MFI are below 50, and volume decreases significantly relative to the moving average, the indicator shows a Sell signal.
Identifying Peaks and Troughs: The indicator also helps identify market peaks and troughs based on technical conditions.
Note:
This indicator assists in decision-making, but does not replace comprehensive market analysis.
Use this indicator in conjunction with other technical analysis methods to increase the accuracy of trade signals.
Steps for Publishing the Indicator on TradingView:
Log in to TradingView:
Go to TradingView and log into your account.
Access Pine Script Editor:
Click on Pine Editor from the menu under the chart.
Paste your Pine Script® code into the editor window.
Check the Source Code:
Ensure your code is error-free and running correctly.
Review the entire source code and add the MPL-2.0 license notice if necessary.
Save and Publish:
After testing and confirming the code works correctly, click Add to Chart to try the indicator on your chart.
If satisfied with the result, click Publish Script at the top right of the Pine Editor.
Provide a name for the indicator and then enter the detailed description you’ve prepared.
Ensure you specify the MPL-2.0 license in the description if required.
Choose the Access Type:
You can choose either Public or Private access for your indicator depending on your intention.
Submit for Publication:
Wait for TradingView to review and approve your indicator. Typically, this process takes a few working days for verification and approval.
User Guide:
You can share detailed instructions for users on how to use the indicator on TradingView, including how to adjust the parameters and interpret the signals. For example:
Set RSI Length: Experiment with different RSI Length values to find the sensitivity that suits your strategy.
Interpreting In/Out Signals: When there is strong money inflow (In), consider entering a buy order. When there is strong money outflow (Out), consider selling.
Cerca negli script per "wave"
Solar VPR (No EVMA) + Alpha TrendThis Pine Script v6 indicator combines Solar VPR (without EVMA slow average) and Alpha Trend to identify potential trading opportunities.
Solar VPR calculates a Simple Moving Average (SMA) of the hlc3 price and defines upper/lower bands based on a percentage multiplier. It highlights bullish (green) and bearish (red) zones.
Alpha Trend applies ATR-based smoothing to an SMA, identifying trend direction. Blue indicates an uptrend, while orange signals a downtrend.
Buy/Sell Signals appear when price crosses Alpha Trend and aligns with Solar VPR direction.
Moon Phases by Shailesh DesaiTrading Strategy Based on Lunar Phases
This custom trading indicator leverages the power of lunar cycles to provide unique market insights based on the four primary moon phases: New Moon, First Quarter, Full Moon, and Third Quarter. By aligning your trades with the natural rhythm of the moon, this strategy offers a different perspective to trading and can help enhance decision-making based on the cyclical nature of the market.
Key Features:
1. Moon Phase Identification:
o The indicator automatically identifies the current moon phase based on the user's selected timeframe and marks it on the chart.
o Each phase is visualized with a specific symbol and color to help traders easily recognize the current moon phase:
New Moon/Waxing Moon: Represented by a circle (colored as per user input).
First Quarter: Represented by a cross (colored as per user input).
Full Moon/Waning Moon: Represented by a circle (colored as per user input).
Third Quarter: Represented by a cross (colored as per user input).
2. Automatic Moon Phase Transition Detection:
o The indicator tracks and highlights when a phase change occurs. This feature ensures you are always aware of when the market moves from one phase to another.
o Moon phase changes are only visualized on the first bar of each new phase to avoid cluttering the chart.
3. Background Color Indicators:
o The background color dynamically changes according to the current moon phase, helping to reinforce the phase context for the trader. This feature makes it easy to see at a glance which phase the market is in.
4. Customizable Appearance:
o Customize the color of each moon phase to suit your preferences. Adjust the colors for the New Moon, First Quarter, Full Moon, and Third Quarter to align with your visual strategy.
5. Avoids Unsupported Timeframes:
o This indicator does not support monthly timeframes, ensuring that it operates smoothly only on timeframes that are compatible with the lunar cycle.
How to Use:
• The moon phases are thought to have an influence on human behavior and the market's psychology, making this indicator useful for traders who wish to integrate lunar cycles into their strategy.
• Traders can use the phase changes as an indicator of potential market momentum or reversal points. For example:
o New Moon may indicate the beginning of a new cycle, signaling a potential upward or downward move.
o Full Moon might suggest a peak or significant shift in market direction.
o First Quarter and Third Quarter phases may represent moments of consolidation or decision points.
Ideal for:
• Traders interested in cycle-based strategies or looking to experiment with new approaches.
• Those who believe in the influence of natural forces, including moon phases, on market movements.
• Technical analysts who want to add another layer of insights to their chart analysis.
Important Notes:
• The indicator uses precise astronomical calculations to identify the correct phase, ensuring accuracy.
• It’s important to understand that moon phase-based trading is not a standalone strategy but should ideally be combined with other technical analysis tools for maximum effectiveness.
STRATEGY Fibonacci Levels with High/Low Criteria - AYNET
Here is an explanation of the Fibonacci Levels Strategy with High/Low Criteria script:
Overview
This strategy combines Fibonacci retracement levels with high/low criteria to generate buy and sell signals based on price crossing specific thresholds. It utilizes higher timeframe (HTF) candlesticks and user-defined lookback periods for high/low levels.
Key Features
Higher Timeframe Integration:
The script calculates the open, high, low, and close values of the higher timeframe (HTF) candlestick.
Users can choose to calculate levels based on the current or the last HTF candle.
Fibonacci Levels:
Fibonacci retracement levels are dynamically calculated based on the HTF candlestick's range (high - low).
Users can customize the levels (0.000, 0.236, 0.382, 0.500, 0.618, 0.786, 1.000).
High/Low Lookback Criteria:
The script evaluates the highest high and lowest low over user-defined lookback periods.
These levels are plotted on the chart for visual reference.
Trade Signals:
Long Signal: Triggered when the close price crosses above both:
The lowest price criteria (lookback period).
The Fibonacci level 3 (default: 0.5).
Short Signal: Triggered when the close price crosses below both:
The highest price criteria (lookback period).
The Fibonacci level 3 (default: 0.5).
Visualization:
Plots Fibonacci levels and high/low criteria on the chart for easy interpretation.
Inputs
Higher Timeframe:
Users can select the timeframe (default: Daily) for the HTF candlestick.
Option to calculate based on the current or last HTF candle.
Lookback Periods:
lowestLookback: Number of bars for the lowest low calculation (default: 20).
highestLookback: Number of bars for the highest high calculation (default: 10).
Fibonacci Levels:
Fully customizable Fibonacci levels ranging from 0.000 to 1.000.
Visualization
Fibonacci Levels:
Plots six customizable Fibonacci levels with distinct colors and transparency.
High/Low Criteria:
Plots the highest and lowest levels based on the lookback periods as reference lines.
Trading Logic
Long Condition:
Price must close above:
The lowest price criteria (lowcriteria).
The Fibonacci level 3 (50% retracement).
Short Condition:
Price must close below:
The highest price criteria (highcriteria).
The Fibonacci level 3 (50% retracement).
Use Case
Trend Reversal Strategy:
Combines Fibonacci retracement with recent high/low criteria to identify potential reversal or breakout points.
Custom Timeframe Analysis:
Incorporates higher timeframe data for multi-timeframe trading strategies.
Gradient Filter with Fibonacci-AYNETExplanation of the Combined Features:
Dynamic Gradient Filter:
This section remains as in the previous example, calculating a smoothed filter (filt) with dynamic gradient coloring.
The color of the filter line transitions from red to green based on its RSI value.
Fibonacci Levels:
Calculates key Fibonacci retracement levels (0.0, 0.236, 0.382, 0.5, 0.618, and 1.0) over a user-defined lookback period (fib_length).
Uses the highest high and lowest low in the lookback period to determine the range.
Plotting Fibonacci Levels:
Each Fibonacci level is drawn as a horizontal line.
The lines extend back by the lookback period and are styled with dotted lines for clarity.
Features:
Customizable Inputs:
Users can enable or disable Fibonacci levels (show_fib_levels).
Adjust the color (fib_color) and width (fib_width) of Fibonacci lines.
Integrated Dynamic Filter:
Combines the filtered line with Fibonacci retracement levels to provide multi-dimensional insights.
Use Case:
Dynamic Filter:
Observe how the filtered line behaves near Fibonacci levels for potential trend continuations or reversals.
Fibonacci Levels:
Use retracement levels as key support/resistance zones to make trading decisions.
This combined script is now more functional, blending the dynamic gradient filter with Fibonacci retracement levels. Test this script in different market conditions, and let me know if additional features are required! 😊
ICT Setup 03 [TradingFinder] Judas Swing NY 9:30am + CHoCH/FVG🔵 Introduction
Judas Swing is an advanced trading setup designed to identify false price movements early in the trading day. This advanced trading strategy operates on the principle that major market players, or "smart money," drive price in a certain direction during the early hours to mislead smaller traders.
This deceptive movement attracts liquidity at specific levels, allowing larger players to execute primary trades in the opposite direction, ultimately causing the price to return to its true path.
The Judas Swing setup functions within two primary time frames, tailored separately for Forex and Stock markets. In the Forex market, the setup uses the 8:15 to 8:30 AM window to identify the high and low points, followed by the 8:30 to 8:45 AM frame to execute the Judas move and identify the CISD Level break, where Order Block and Fair Value Gap (FVG) zones are subsequently detected.
In the Stock market, these time frames shift to 9:15 to 9:30 AM for identifying highs and lows and 9:30 to 9:45 AM for executing the Judas move and CISD Level break.
Concepts such as Order Block and Fair Value Gap (FVG) are crucial in this setup. An Order Block represents a chart region with a high volume of buy or sell orders placed by major financial institutions, marking significant levels where price reacts.
Fair Value Gap (FVG) refers to areas where price has moved rapidly without balance between supply and demand, highlighting zones of potential price action and future liquidity.
Bullish Setup :
Bearish Setup :
🔵 How to Use
The Judas Swing setup enables traders to pinpoint entry and exit points by utilizing Order Block and FVG concepts, helping them align with liquidity-driven moves orchestrated by smart money. This setup applies two distinct time frames for Forex and Stocks to capture early deceptive movements, offering traders optimized entry or exit moments.
🟣 Bullish Setup
In the Bullish Judas Swing setup, the first step is to identify High and Low points within the initial time frame. These levels serve as key points where price may react, forming the basis for analyzing the setup and assisting traders in anticipating future market shifts.
In the second time frame, a critical stage of the bullish setup begins. During this phase, the price may create a false break or Fake Break below the low level, a deceptive move by major players to absorb liquidity. This false move often causes smaller traders to enter positions incorrectly. After this fake-out, the price reverses upward, breaking the CISD Level, a critical point in the market structure, signaling a potential bullish trend.
Upon breaking the CISD Level and reversing upward, the indicator identifies both the Order Block and Fair Value Gap (FVG). The Order Block is an area where major players typically place large buy orders, signaling potential price support. Meanwhile, the FVG marks a region of supply-demand imbalance, signaling areas where price might react.
Ultimately, after these key zones are identified, a trader may open a buy position if the price reaches one of these critical areas—Order Block or FVG—and reacts positively. Trading at these levels enhances the chance of success due to liquidity absorption and support from smart money, marking an opportune time for entering a long position.
🟣 Bearish Setup
In the Bearish Judas Swing setup, analysis begins with marking the High and Low levels in the initial time frame. These levels serve as key zones where price could react, helping to signal possible trend reversals. Identifying these levels is essential for locating significant bearish zones and positioning traders to capitalize on downward movements.
In the second time frame, the primary bearish setup unfolds. During this stage, price may exhibit a Fake Break above the high, causing a brief move upward and misleading smaller traders into incorrect positions. After this false move, the price typically returns downward, breaking the CISD Level—a crucial bearish trend indicator.
With the CISD Level broken and a bearish trend confirmed, the indicator identifies the Order Block and Fair Value Gap (FVG). The Bearish Order Block is a region where smart money places significant sell orders, prompting a negative price reaction. The FVG denotes an area of supply-demand imbalance, signifying potential selling pressure.
When the price reaches one of these critical areas—the Bearish Order Block or FVG—and reacts downward, a trader may initiate a sell position. Entering trades at these levels, due to increased selling pressure and liquidity absorption, offers traders an advantage in profiting from price declines.
🔵 Settings
Market : The indicator allows users to choose between Forex and Stocks, automatically adjusting the time frames for the "Opening Range" and "Trading Permit" accordingly: Forex: 8:15–8:30 AM for identifying High and Low points, and 8:30–8:45 AM for capturing the Judas move and CISD Level break. Stocks: 9:15–9:30 AM for identifying High and Low points, and 9:30–9:45 AM for executing the Judas move and CISD Level break.
Refine Order Block : Enables finer adjustments to Order Block levels for more accurate price responses.
Mitigation Level OB : Allows users to set specific reaction points within an Order Block, including: Proximal: Closest level to the current price. 50% OB: Midpoint of the Order Block. Distal: Farthest level from the current price.
FVG Filter : The Judas Swing indicator includes a filter for Fair Value Gap (FVG), allowing different filtering based on FVG width: FVG Filter Type: Can be set to "Very Aggressive," "Aggressive," "Defensive," or "Very Defensive." Higher defensiveness narrows the FVG width, focusing on narrower gaps.
Mitigation Level FVG : Like the Order Block, you can set price reaction levels for FVG with options such as Proximal, 50% OB, and Distal.
CISD : The Bar Back Check option enables traders to specify the number of past candles checked for identifying the CISD Level, enhancing CISD Level accuracy on the chart.
🔵 Conclusion
The Judas Swing indicator helps traders spot reliable trading opportunities by detecting false price movements and key levels such as Order Block and FVG. With a focus on early market movements, this tool allows traders to align with major market participants, selecting entry and exit points with greater precision, thereby reducing trading risks.
Its extensive customization options enable adjustments for various market types and trading conditions, giving traders the flexibility to optimize their strategies. Based on ICT techniques and liquidity analysis, this indicator can be highly effective for those seeking precision in their entry points.
Overall, Judas Swing empowers traders to capitalize on significant market movements by leveraging price volatility. Offering precise and dependable signals, this tool presents an excellent opportunity for enhancing trading accuracy and improving performance
Fair Value Gaps Setup 01 [TradingFinder] FVG Absorption + CHoCH🔵 Introduction
🟣 Market Structures
Market structures exhibit a fractal and nested nature, which leads us to classify them into internal (minor) and external (major) categories. Definitions of market structure vary, with different methodologies such as Smart Money and ICT offering distinct interpretations.
To identify market structure, the initial step involves examining key highs and lows. An uptrend is characterized by successive highs and lows that are higher than their predecessors. Conversely, a downtrend is marked by successive lows and highs that are lower than their previous counterparts.
🟣 Market Trends and Movements
Market trends consist of two primary types of movements :
Impulsive Movements : These movements align with the main trend and are characterized by high strength and momentum.
Corrective Movements : These movements counter the main trend and are marked by lower strength and momentum.
🟣 Break of Structure (BOS)
In a downtrend, a Break of Structure (BOS) occurs when the price falls below the previous low and establishes a new low (LL). In an uptrend, a BOS, also known as a Market Structure Break (MSB), happens when the price rises above the last high.
To confirm a trend, at least one BOS is necessary, which requires the price to close at least one candle beyond the previous high or low.
🟣 Change of Character (CHOCH)
Change of Character (CHOCH) is a crucial concept in market structure analysis, indicating a shift in trend. A trend concludes with a CHOCH, also referred to as a Market Structure Shift (MSS).
For example, in a downtrend, the price continues to drop with BOS, showcasing the trend's strength. However, when the price rises and exceeds the last high, a CHOCH occurs, signaling a potential transition from a downtrend to an uptrend.
It is essential to note that a CHOCH does not immediately indicate a buy trade. Instead, it is prudent to wait for a BOS in the upward direction to confirm the uptrend. Unlike BOS, a CHOCH confirmation does not require a candle to close; merely breaking the previous high or low with the candle's wick is sufficient.
🟣 Spike | Inefficiency | Imbalance
All these terms mean fast price movement in the shortest possible time.
🟣 Fair Value Gap (FVG)
To pinpoint the "Fair Value Gap" (FVG) on a chart, a detailed candle-by-candle analysis is necessary. This process involves focusing on candles with substantial bodies and evaluating them in relation to the candles immediately before and after them.
Here are the steps :
Identify the Central Candle : Look for a candle with a large body.
Examine Adjacent Candles : The candles before and after this central candle should have long shadows, and their bodies must not overlap with the body of the central candle.
Determine the FVG Range : The distance between the shadows of the first and third candles defines the FVG range.
This method helps in accurately identifying the Fair Value Gap, which is crucial for understanding market inefficiencies and potential price movements.
🟣 Setup
This setup is based on Market Structure and FVG. After a change of character and the formation of FVG in the last lag of the price movement, we are looking for trading positions in the price pullback.
Bullish Setup :
Bearish Setup :
🔵 How to Use
After forming the setup, you can enter the trade using a pending order or after receiving confirmation. To increase the probability of success, you can adjust the pivot period market structure settings or modify the market movement coefficient in the formation leg of the FVG.
Bullish Setup :
Bearish Setup :
🔵 Setting
Pivot Period of Market Structure Detector :
This parameter allows you to configure the zigzag period based on pivots. Adjusting this helps in accurately detecting order blocks.
Show major Bullish ChoCh Lines :
You can toggle the visibility of the Demand Main Zone and "ChoCh" Origin, and customize their color as needed.
Show major Bearish ChoCh Lines :
Similar to the Demand Main Zone, you can control the visibility and color of the Supply Main Zone and "ChoCh" Origin.
FVG Detector Multiplier Factor :
This feature lets you adjust the size of the moves forming the Fair Value Gaps (FVGs) using the Average True Range (ATR). The default value is 1, suitable for identifying most setups. Adjust this value based on the specific symbol and market for optimal results.
FVG Validity Period :
This parameter defines the validity period of an FVG in terms of the number of candles. By default, an FVG remains valid for up to 15 candles, but you can adjust this period as needed.
Mitigation Level FVG :
This setting establishes the basic level of an FVG. When the price reaches this level, the FVG is considered mitigated.
Level in Low-Risk Zone :
This feature aims to reduce risk by dividing the FVG into two equal areas: "Premium" (upper area) and "Discount" (lower area). For lower risk, ensure that "Demand FVG" is in the "Discount" area and "Supply FVG" in the "Premium" area. This feature is off by default.
Show or Hide :
Given the potential abundance of setups, displaying all on the chart can be overwhelming. By default, only the last setup is shown, but you can enable the option to view all setups.
Alert Settings :
On / Off : Toggle alerts on or off.
Message Frequency : Determine how often alerts are triggered.
Options include :
"All" (alerts every time the function is called)
"Once Per Bar" (alerts only on the first call within the bar)
"Once Per Bar Close" (alerts only at the last script execution of the real-time bar upon closing)
The default setting is "Once Per Bar".
Show Alert Time by Time Zone : Set the alert time based on your preferred time zone, such as "UTC-4" for New York time. The default is "UTC".
Display More Info : Optionally show additional details like the price range of the order blocks and the date, hour, and minute in the alert message. Set this to "Off" if you prefer not to receive this information.
Market Structures SMC [TradingFinder] BOS/CHoCH Major & Minor🟣Introduction
Understanding market structure involves analyzing market behavior. In other words, market structure encompasses how the market forms and evolves within trends.
Market structures are typically fractal and nested, so we categorize them into internal (minor) and external (major) structures. There are various definitions of market structure, with different approaches such as Smart Money and ICT providing their own interpretations.
🟣How to Use
The first step in identifying market structure is to analyze key highs and lows. An uptrend is formed when highs and lows are successively higher than previous ones. Similarly, in a downtrend, lows and highs are successively lower than previous ones.
Market trends consist of two types of movements :
•Impulsive movements
•Corrective movements
Impulsive movements align with the main trend and possess high strength and momentum. Conversely, corrective movements go against the main trend and have lower strength and momentum. The following example illustrates these concepts.
🔵 Identifying Break of Structure (BOS)
In a specific trend, for example in a downtrend, when the price breaks below the previous low and forms a new low (LL), a Break of Structure occurs. In an uptrend, a BOS (Market Structure Break or MSB) happens when the price rises and surpasses the last high.
We need at least one BOS to confirm a trend. Breaking above or below the previous high or low must be confirmed by closing at least one candle after that level.
🔵 Identifying Change of Character (CHOCH)
Change of Character (CHOCH) is a key concept in market structure analysis. A change in structure signals a trend change. In other words, a trend ends with a CHOCH (Market Structure Shift or MSS). For instance, in a downtrend, the price declines with BOS.
BOS indicates the strength of the trend, but when the price increases and surpasses the last high, a CHOCH occurs, signaling a shift from a downtrend to an uptrend.
This does not mean entering a buy trade; instead, we should wait for a BOS in the upward direction to confirm the uptrend. Unlike BOS, confirming a CHOCH does not require a candle to close; simply breaking above or below the previous high or low with the candle's wick is sufficient. The following examples show bearish and bullish CHOCH.
🔵 Range Market Structure
Besides uptrends and downtrends, a third structure often found in the market is the range or sideways structure. In this state, the power of buyers and sellers is almost equal, and the market lacks a clear trend.
Many traders believe that the Forex market ranges 80% of the time. Therefore, it requires a lot of patience to wait for a new trend to start.
🟣 Settings
Through the settings, you can customize the display, visibility, and color of each line as desired.
Smart Money Setup 06 [TradingFinder] Liquidity Sweeps + OB Swing🔵 Introduction
Smart Money, managed by large investors, injects significant capital into financial markets by entering real capital markets.
Capital entering the market by this group of individuals is called smart money. Traders can profit from financial markets by following such individuals.
Therefore, smart money can be considered one of the effective methods for analyzing financial markets.
Sometimes, before a market movement, fluctuation movements that create price movement cause many traders' "Stop Loss" to be triggered. These movements are created in various patterns.
One of these patterns is similar to an "Expanding Triangle", which touches the stop loss of individuals who have placed their stop loss in the cash area in the form of 5 consecutive openings.
To better understand this setup, pay attention to the images below.
Bullish Setup Details :
Bearish Setup Details :
🔵 How to Use
After adding the indicator to the chart, wait for trading opportunities to appear. By changing the "Time Frame" and "Pivot Period", you can see different trading positions.
In general, the smaller the "Time Frame" and "Pivot Period", the more likely trading opportunities will appear.
Bullish Setup Details on Chart :
Bearish Setup Details on Chart :
🔵 Settings
You have access to "Pivot Period", "Order Block Refine", and "Refine Mode" through settings.
By changing the "Pivot Period", you can change the range of zigzag that identifies the setup.
Through "Order Block Refine", you can specify whether you want to refine the width of the order blocks or not. It is set to "On" by default.
Through "Refine Mode", you can specify how to improve order blocks.
If you are "risk-averse", you should set it to "Defensive" mode because in this mode, the width of the order blocks decreases, the number of your trades decreases, and the "reward-to-risk ratio "increases.
If you are on the opposite side and are "risk-taker", you can set it to "Aggressive" mode. In this mode, the width of the order blocks increases, and the likelihood of losing positions decreases.
Smart Money Setup 03 [TradingFinder] Minor OB & Trend Proof🔵 Introduction
The "Smart Money Concept" transcends mere technical trading strategies; it embodies a comprehensive philosophy elucidating market dynamics. Central to this concept is the acknowledgment that influential market participants manipulate price actions, presenting challenges for retail traders.
As a "retail trader", aligning your strategy with the behavior of "Smart Money," primarily market makers, is paramount. Understanding their trading patterns, which revolve around supply, demand, and market structure, forms the cornerstone of your approach. Consequently, decisions to enter trades should be informed by these considerations.
🟣 Important Note
In this setup, pattern formation revolves around the robustness of the "Stop Hunt" targeting retail traders.
When this stop hunt occurs, if the price tests below the minor pivot or above the minor pivot, a "Minor Order Block" is formed.
Similarly, if the price tests below the major pivot or above the major pivot, a "Major Order Block" is formed.
Since the price hasn't successfully broken the major pivots before breaking the Top or Bottom, it can be inferred that the minor pivots formed within a leg of price movement exhibit a "Range" structure.
For a deeper comprehension of this setup, refer to the accompanying visual aids below.
Bullish Setup Details :
Bearish Setup Details :
🔵 How to Use
Upon integrating the indicator into your chart, exercise patience as you await the evolution of the trading setup.
Experiment with different trading positions by adjusting both the "Time Frame" and "Pivot Period". Typically, setups materializing over longer "Time Frames" and "Pivot Periods" carry heightened validity.
Bullish Setup Details on Chart :
Bearish Setup Details on Chart :
Within the settings, you possess the flexibility to modify the "Pivot Period" input to tailor the indicator to your preferences.
Monday_Weekly_Range/ErkOzi/Deviation Level/V1"Hello, first of all, I believe that the most important levels to look at are the weekly Fibonacci levels. I have planned an indicator that automatically calculates this. It models a range based on the weekly opening, high, and low prices, which is well-detailed and clear in my scans. I hope it will be beneficial for everyone.
***The logic of the Monday_Weekly_Range indicator is to analyze the weekly price movement based on the trading range formed on Mondays. Here are the detailed logic, calculation, strategy, and components of the indicator:
***Calculation of Monday Range:
The indicator calculates the highest (mondayHigh) and lowest (mondayLow) price levels formed on Mondays.
If the current bar corresponds to Monday, the values of the Monday range are updated. Otherwise, the values are assigned as "na" (undefined).
***Calculation of Monday Range Midpoint:
The midpoint of the Monday range (mondayMidRange) is calculated using the highest and lowest price levels of the Monday range.
***Fibonacci Levels:
// Calculate Fibonacci levels
fib272 = nextMondayHigh + 0.272 * (nextMondayHigh - nextMondayLow)
fib414 = nextMondayHigh + 0.414 * (nextMondayHigh - nextMondayLow)
fib500 = nextMondayHigh + 0.5 * (nextMondayHigh - nextMondayLow)
fib618 = nextMondayHigh + 0.618 * (nextMondayHigh - nextMondayLow)
fibNegative272 = nextMondayLow - 0.272 * (nextMondayHigh - nextMondayLow)
fibNegative414 = nextMondayLow - 0.414 * (nextMondayHigh - nextMondayLow)
fibNegative500 = nextMondayLow - 0.5 * (nextMondayHigh - nextMondayLow)
fibNegative618 = nextMondayLow - 0.618 * (nextMondayHigh - nextMondayLow)
fibNegative1 = nextMondayLow - 1 * (nextMondayHigh - nextMondayLow)
fib2 = nextMondayHigh + 1 * (nextMondayHigh - nextMondayLow)
***Fibonacci levels are calculated using the highest and lowest price levels of the Monday range.
Common Fibonacci ratios such as 0.272, 0.414, 0.50, and 0.618 represent deviation levels of the Monday range.
Additionally, the levels are completed with -1 and +1 to determine at which level the price is within the weekly swing.
***Visualization on the Chart:
The Monday range, midpoint, Fibonacci levels, and other components are displayed on the chart using appropriate shapes and colors.
The indicator provides a visual representation of the Monday range and Fibonacci levels using lines, circles, and other graphical elements.
***Strategy and Usage:
The Monday range represents the starting point of the weekly price movement. This range plays an important role in determining weekly support and resistance levels.
Fibonacci levels are used to identify potential reaction zones and trend reversals. These levels indicate where the price may encounter support or resistance.
You can use the indicator in conjunction with other technical analysis tools and indicators to conduct a more comprehensive analysis. For example, combining it with trendlines, moving averages, or oscillators can enhance the accuracy.
When making investment decisions, it is important to combine the information provided by the indicator with other analysis methods and use risk management strategies.
Thank you in advance for your likes, follows, and comments. If you have any questions, feel free to ask."
Dual Dynamic Fibonacci Retracement — Long and Short Duration
Title : "The Dual-Dynamic Fibonacci Retracement Script: An Advanced Tool for Comprehensive Market Analysis"
As the author of the "Dual-Dynamic Fibonacci Retracement Script", I am delighted to introduce you to this cutting-edge tool for technical analysis. Unlike conventional Fibonacci scripts, this advanced model incorporates multiple unique features and adjustments that make it a powerful asset for any market analyst. Whether you're dealing with forex, commodities, equities or any other market, this script is versatile enough to enhance your trading strategy.
Uniqueness & Differentiation:
The "Dual-Dynamic Fibonacci Script" stands out by offering two distinct lookback periods. This feature is what separates it from other scripts available in the market. The first lookback period is longer, focusing on capturing broader market trends. The second lookback period is shorter, allowing for a more granular analysis of near-term market fluctuations. This dual perspective provides a more comprehensive view of the market, allowing you to see both the forest and the trees at the same time.
Fibonacci Levels:
While offering the standard Fibonacci retracement levels (0.236, 0.382, 0.5, 0.618, 0.786, and 1.0), the script also gives you the ability to plot 0.114 and 0.886 levels. These additional levels offer an extra layer of depth to your analysis, and can prove crucial in high-volatility markets where they often serve as significant support and resistance points.
Customizable Line Shifts and Extends:
This script provides options for customization of the shift and extension of the plotted lines. This means you can adjust the start and end points of the Fibonacci lines according to your personal trading style and strategy. This level of personalization is not typically available in other scripts, and it allows for a more tailored visual representation.
Flexible Trading Positioning:
Depending on whether the closing price is above or below the midpoint of the pivot high and pivot low, the Fibonacci retracement levels are adjusted accordingly. This ensures the script remains relevant and useful regardless of market conditions.
Clean Visualization:
To prevent clutter and maintain focus on the most relevant price action, the script removes old Fibonacci lines and plots new ones once a new pivot high or low is identified. This clean visualization helps keep your analysis focused and sharp.
How to Use the Script:
To get started, simply adjust the lookback periods according to your trading strategy. If you're a long-term investor or prefer swing trading, a longer lookback period might be appropriate. Conversely, if you're a day trader, a shorter lookback period might be more beneficial.
The "Shift" and "Extend" inputs allow you to control the positioning of the Fibonacci lines on your chart. Positive values shift the lines to the right, while negative values shift them to the left.
You also have the choice to plot the additional Fibonacci levels (0.114 and 0.886) via the "Plot 0.114 and 0.886 levels?" input. Similarly, the "Plot second set of levels?" input lets you decide whether to display the second set of Fibonacci levels derived from the shorter lookback period.
Like any technical analysis tool, this script is most effective when used in conjunction with other indicators and methods of analysis. It is designed to work well in trending markets, where Fibonacci retracements can often indicate potential reversal levels. However, it's always recommended to use a holistic approach to market analysis to maximize the likelihood of successful trades.
Note: the two lines drawn on the chart are there to help the user identify the levels from which the two respective Fib sequences are calculated.
~~~
Input Explanations:
Long Period Pivot High/Low Lookback and Short Period Pivot High/Low Lookback : These settings determine the length of the lookback periods for the long-term and short-term pivot points, respectively. A pivot point is a technical analysis indicator used to determine the overall trend of the market over different time frames. The pivot points are then used to calculate the Fibonacci levels. A longer lookback period will identify pivot points over a broader time frame, capturing major market trends, while a shorter lookback period will identify pivot points over a narrower time frame, capturing more immediate market movements.
Long Period Fibonacci Level Shift and Short Period Fibonacci Level Shift : These inputs control the shift of the Fibonacci levels based on the long and short lookback periods, respectively. If you want to shift the Fibonacci levels to the right, increase the value. If you want to shift the Fibonacci levels to the left, decrease the value. This allows you to adjust the Fibonacci levels to better align with your analysis.
Long Period Fibonacci Level Extend and Short Period Fibonacci Level Extend : These inputs control the extension of the Fibonacci levels based on the long and short lookback periods, respectively. If you want the Fibonacci levels to extend further to the right, increase the value. If you want the Fibonacci levels to extend less to the right, decrease the value. This feature provides the flexibility to adjust the length of the Fibonacci levels according to your personal trading preferences and strategy.
Plot 0.114 and 0.886 levels? : This setting gives you the ability to plot the additional 0.114 and 0.886 Fibonacci levels. These levels provide extra depth to your analysis, particularly in highly volatile markets where they can act as significant support and resistance levels.
Plot second set of levels? : This input allows you to decide whether to plot the second set of Fibonacci levels based on the short lookback period. Displaying this second set of levels can provide a more granular view of market movements and potential reversal points, enhancing your overall analysis.
CDC Fibonacci Retracement and ExtensionThis indicator is meant to be used as a tool to quickly identify
fibonacci retracements and projections in multiple charts during
the same date range.
Users can set the calculation date range and quickly flip through
different charts for comparisons
Steps for using this indicator is as follows:
1. Specify Start Date and End Date for calculations
2. Choose Open-ended mode for just retracements, this will disregard
end date in calculations.
3. Select price source, if Use Highs/Lows is selected, the indicator will
use high and low prices for calculation, if not, closing price eill
be used instead
4. Select and/or modify retracement / projection lines as you see fit.
5. Enjoy the result!
Neowave chart cash dataScript Cash is a neo-analytic style data. Add to use on the chart and then hide the candlesticks and enjoy the cash data.
The daily data cache is set normally. To change the settings, be sure to change the D indicator to W for weekly and M for monthly.
Also enter the number of minutes to use in the hourly time frame, for example four hours (240)
...
When you change the data cache settings in the settings, you must follow the rule of one fortieth of the Neowave style and move the time frame chart to forty to analyze it, for example, for a daily time frame go to 30 minutes.
I hope it is used.
Goertzel Browser [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 Browser 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.
█ Brief Overview of the Goertzel Browser
The Goertzel Browser 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 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.
3. Project the composite wave into the future, providing a potential roadmap for upcoming price movements.
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 past and dotted lines for the future projections. The color of the lines indicates whether the wave is increasing or decreasing.
5. Displaying cycle information: The indicator provides a table that displays detailed information about the detected cycles, including their rank, period, Bartel's test results, amplitude, and phase.
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 and their potential future trajectory, 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 and WindowSizeFuture: These inputs define the window size for past and future projections of 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.
UseCycleList: This boolean input determines whether a user-defined list of cycles should be used for constructing the composite wave. If set to false, the top N cycles will be used.
Cycle1, Cycle2, Cycle3, Cycle4, and Cycle5: These inputs define the user-defined list of cycles when 'UseCycleList' is set to true. If using a user-defined list, each of these inputs represents the period of a specific cycle to include in the composite wave.
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 Browser Code
The Goertzel Browser 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 Browser 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 and future window sizes (WindowSizePast, WindowSizeFuture), Bartels filter flag (FilterBartels), Bartels-related parameters (BartNoCycles, BartSmoothPer, BartSigLimit), sorting flag (SortBartels), and output buffers (goeWorkPast, goeWorkFuture, 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 Browser 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 Browser 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 Browser code calculates the waveform of the significant cycles for both past and future time windows. The past and future windows are defined by the WindowSizePast and WindowSizeFuture 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 matrices:
The calculated waveforms for each cycle are stored in two matrices - goeWorkPast and goeWorkFuture. These matrices hold the waveforms for the past and future time windows, respectively. Each row in the matrices represents a time window position, and each column corresponds to a cycle.
Returning the number of cycles:
The Goertzel Browser 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 Browser 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 Browser'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 both past and future time windows based on the detected cycles. Here's a detailed explanation of this process:
Updating WindowSizePast and WindowSizeFuture:
The WindowSizePast and WindowSizeFuture are updated to ensure they are at least twice the MaxPer (maximum period).
Initializing matrices and arrays:
Two matrices, goeWorkPast and goeWorkFuture, are initialized to store the Goertzel results for past and future 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 past and future waveforms:
Three arrays, epgoertzel, goertzel, and goertzelFuture, are initialized to store the endpoint Goertzel, non-endpoint Goertzel, and future Goertzel projections, respectively.
Calculating composite waveform for past bars (goertzel array):
The past 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.
Calculating composite waveform for future bars (goertzelFuture array):
The future composite waveform is calculated in a similar way as the past composite waveform.
Drawing past composite waveform (pvlines):
The past 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).
Drawing future composite waveform (fvlines):
The future composite waveform is drawn on the chart using dotted lines. The color of the lines is determined by the direction of the waveform (fuchsia for upward, yellow for downward).
Displaying cycle information in a table (table3):
A table is created to display the cycle information, including the rank, period, Bartel value, amplitude (or cycle strength), and phase of each detected cycle.
Filling the table with cycle information:
The indicator iterates through the detected cycles and retrieves the relevant information (period, amplitude, phase, and Bartel value) from the corresponding arrays. It then fills the table with this information, displaying the values up to six decimal places.
To summarize, this indicator generates a composite waveform based on the detected cycles in the financial data. It calculates the composite waveforms for both past and future time windows and visualizes them on the chart using colored lines. Additionally, it displays detailed cycle information in a table, including the rank, period, Bartel value, amplitude (or cycle strength), and phase of each detected cycle.
█ 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 and potential future impact. 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.
No guarantee of future performance: While the script can provide insights into past cycles and potential future trends, it is important to remember that past performance does not guarantee future results. Market conditions can change, and relying solely on the script's predictions without considering other factors may lead to poor trading decisions.
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 Browser indicator can be interpreted by analyzing the plotted lines and the table presented alongside them. The indicator plots two lines: past and future composite waves. The past composite wave represents the composite wave of the past price data, and the future composite wave represents the projected composite wave for the next period.
The past composite wave line displays a solid line, with green indicating a bullish trend and red indicating a bearish trend. On the other hand, the future composite wave line is a dotted line with fuchsia indicating a bullish trend and yellow indicating a bearish trend.
The table presented alongside the indicator shows the top cycles with their corresponding rank, period, Bartels, amplitude or cycle strength, and phase. The amplitude is a measure of the strength of the cycle, while the phase is the position of the cycle within the data series.
Interpreting the Goertzel Browser indicator involves identifying the trend of the past and future composite wave lines and matching them with the corresponding bullish or bearish color. Additionally, traders can identify the top cycles with the highest amplitude or cycle strength and utilize them in conjunction with other technical indicators and fundamental analysis for trading decisions.
This indicator is considered a repainting indicator because the value of the indicator is calculated based on the past price data. As new price data becomes available, the indicator's value is recalculated, potentially causing the indicator's past values to change. This can create a false impression of the indicator's performance, as it may appear to have provided a profitable trading signal in the past when, in fact, that signal did not exist at the time.
The Goertzel indicator is also non-endpointed, meaning that it is not calculated up to the current bar or candle. Instead, it uses a fixed amount of historical data to calculate its values, which can make it difficult to use for real-time trading decisions. For example, if the indicator uses 100 bars of historical data to make its calculations, it cannot provide a signal until the current bar has closed and become part of the historical data. This can result in missed trading opportunities or delayed signals.
█ Conclusion
The Goertzel Browser 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 Browser 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 Browser 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:
The first term represents the deviation of the data from the trend.
The second term represents the smoothness of the trend.
λ 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.
aproxLibrary "aprox"
It's a library of the aproximations of a price or Series float it uses Fourier transform and
Euler's Theoreum for Homogenus White noice operations. Calling functions without source value it automatically take close as the default source value.
Copy this indicator to see how each approximations interact between each other.
import Celje_2300/aprox/1 as aprox
//@version=5
indicator("Close Price with Aproximations", shorttitle="Close and Aproximations", overlay=false)
// Sample input data (replace this with your own data)
inputData = close
// Plot Close Price
plot(inputData, color=color.blue, title="Close Price")
dtf32_result = aprox.DTF32()
plot(dtf32_result, color=color.green, title="DTF32 Aproximation")
fft_result = aprox.FFT()
plot(fft_result, color=color.red, title="DTF32 Aproximation")
wavelet_result = aprox.Wavelet()
plot(wavelet_result, color=color.orange, title="Wavelet Aproximation")
wavelet_std_result = aprox.Wavelet_std()
plot(wavelet_std_result, color=color.yellow, title="Wavelet_std Aproximation")
DFT3(xval, _dir)
Parameters:
xval (float)
_dir (int)
//@version=5
import Celje_2300/aprox/1 as aprox
indicator("Example - DFT3", shorttitle="DFT3 Example", overlay=true)
// Sample input data (replace this with your own data)
inputData = close
// Apply DFT3
result = aprox.DFT3(inputData, 2)
// Plot the result
plot(result, color=color.blue, title="DFT3 Result")
DFT2(xval, _dir)
Parameters:
xval (float)
_dir (int)
//@version=5
import Celje_2300/aprox/1 as aprox
indicator("Example - DFT2", shorttitle="DFT2 Example", overlay=true)
// Sample input data (replace this with your own data)
inputData = close
// Apply DFT2
result = aprox.DFT2(inputData, inputData, 1)
// Plot the result
plot(result, color=color.green, title="DFT2 Result")
//@version=5
import Celje_2300/aprox/1 as aprox
indicator("Example - DFT2", shorttitle="DFT2 Example", overlay=true)
// Sample input data (replace this with your own data)
inputData = close
// Apply DFT2
result = aprox.DFT2(inputData, 1)
// Plot the result
plot(result, color=color.green, title="DFT2 Result")
FFT(xval)
FFT: Fast Fourier Transform
Parameters:
xval (float)
Returns: Aproxiated source value
//@version=5
import Celje_2300/aprox/1 as aprox
indicator("Example - FFT", shorttitle="FFT Example", overlay=true)
// Sample input data (replace this with your own data)
inputData = close
// Apply FFT
result = aprox.FFT(inputData)
// Plot the result
plot(result, color=color.red, title="FFT Result")
DTF32(xval)
DTF32: Combined Discrete Fourier Transforms
Parameters:
xval (float)
Returns: Aproxiated source value
//@version=5
import Celje_2300/aprox/1 as aprox
indicator("Example - DTF32", shorttitle="DTF32 Example", overlay=true)
// Sample input data (replace this with your own data)
inputData = close
// Apply DTF32
result = aprox.DTF32(inputData)
// Plot the result
plot(result, color=color.purple, title="DTF32 Result")
whitenoise(indic_, _devided, minEmaLength, maxEmaLength, src)
whitenoise: Ehler's Universal Oscillator with White Noise, without extra aproximated src
Parameters:
indic_ (float)
_devided (int)
minEmaLength (int)
maxEmaLength (int)
src (float)
Returns: Smoothed indicator value
//@version=5
import Celje_2300/aprox/1 as aprox
indicator("Example - whitenoise", shorttitle="whitenoise Example", overlay=true)
// Sample input data (replace this with your own data)
inputData = close
// Apply whitenoise
result = aprox.whitenoise(aprox.FFT(inputData))
// Plot the result
plot(result, color=color.orange, title="whitenoise Result")
whitenoise(indic_, dft1, _devided, minEmaLength, maxEmaLength, src)
whitenoise: Ehler's Universal Oscillator with White Noise and DFT1
Parameters:
indic_ (float)
dft1 (float)
_devided (int)
minEmaLength (int)
maxEmaLength (int)
src (float)
Returns: Smoothed indicator value
//@version=5
import Celje_2300/aprox/1 as aprox
indicator("Example - whitenoise with DFT1", shorttitle="whitenoise-DFT1 Example", overlay=true)
// Sample input data (replace this with your own data)
inputData = close
// Apply whitenoise with DFT1
result = aprox.whitenoise(inputData, aprox.DFT1(inputData))
// Plot the result
plot(result, color=color.yellow, title="whitenoise-DFT1 Result")
smooth(dft1, indic__, _devided, minEmaLength, maxEmaLength, src)
smooth: Smoothing source value with help of indicator series and aproximated source value
Parameters:
dft1 (float)
indic__ (float)
_devided (int)
minEmaLength (int)
maxEmaLength (int)
src (float)
Returns: Smoothed source series
//@version=5
import Celje_2300/aprox/1 as aprox
indicator("Example - smooth", shorttitle="smooth Example", overlay=true)
// Sample input data (replace this with your own data)
inputData = close
// Apply smooth
result = aprox.smooth(inputData, aprox.FFT(inputData))
// Plot the result
plot(result, color=color.gray, title="smooth Result")
smooth(indic__, _devided, minEmaLength, maxEmaLength, src)
smooth: Smoothing source value with help of indicator series
Parameters:
indic__ (float)
_devided (int)
minEmaLength (int)
maxEmaLength (int)
src (float)
Returns: Smoothed source series
//@version=5
import Celje_2300/aprox/1 as aprox
indicator("Example - smooth without DFT1", shorttitle="smooth-NoDFT1 Example", overlay=true)
// Sample input data (replace this with your own data)
inputData = close
// Apply smooth without DFT1
result = aprox.smooth(aprox.FFT(inputData))
// Plot the result
plot(result, color=color.teal, title="smooth-NoDFT1 Result")
vzo_ema(src, len)
vzo_ema: Volume Zone Oscillator with EMA smoothing
Parameters:
src (float)
len (simple int)
Returns: VZO value
vzo_sma(src, len)
vzo_sma: Volume Zone Oscillator with SMA smoothing
Parameters:
src (float)
len (int)
Returns: VZO value
vzo_wma(src, len)
vzo_wma: Volume Zone Oscillator with WMA smoothing
Parameters:
src (float)
len (int)
Returns: VZO value
alma2(series, windowsize, offset, sigma)
alma2: Arnaud Legoux Moving Average 2 accepts sigma as series float
Parameters:
series (float)
windowsize (int)
offset (float)
sigma (float)
Returns: ALMA value
Wavelet(src, len, offset, sigma)
Wavelet: Wavelet Transform
Parameters:
src (float)
len (int)
offset (simple float)
sigma (simple float)
Returns: Wavelet-transformed series
//@version=5
import Celje_2300/aprox/1 as aprox
indicator("Example - Wavelet", shorttitle="Wavelet Example", overlay=true)
// Sample input data (replace this with your own data)
inputData = close
// Apply Wavelet
result = aprox.Wavelet(inputData)
// Plot the result
plot(result, color=color.blue, title="Wavelet Result")
Wavelet_std(src, len, offset, mag)
Wavelet_std: Wavelet Transform with Standard Deviation
Parameters:
src (float)
len (int)
offset (float)
mag (int)
Returns: Wavelet-transformed series
//@version=5
import Celje_2300/aprox/1 as aprox
indicator("Example - Wavelet_std", shorttitle="Wavelet_std Example", overlay=true)
// Sample input data (replace this with your own data)
inputData = close
// Apply Wavelet_std
result = aprox.Wavelet_std(inputData)
// Plot the result
plot(result, color=color.green, title="Wavelet_std Result")
Awesome Oscillator (AO) with Signals [AIBitcoinTrend]👽 Multi-Scale Awesome Oscillator (AO) with Signals (AIBitcoinTrend)
The Multi-Scale Awesome Oscillator transforms the traditional Awesome Oscillator (AO) by integrating multi-scale wavelet filtering, enhancing its ability to detect momentum shifts while maintaining responsiveness across different market conditions.
Unlike conventional AO calculations, this advanced version refines trend structures using high-frequency, medium-frequency, and low-frequency wavelet components, providing traders with superior clarity and adaptability.
Additionally, it features real-time divergence detection and an ATR-based dynamic trailing stop, making it a powerful tool for momentum analysis, reversals, and breakout strategies.
👽 What Makes the Multi-Scale AO – Wavelet-Enhanced Momentum Unique?
Unlike traditional AO indicators, this enhanced version leverages wavelet-based decomposition and volatility-adjusted normalization, ensuring improved signal consistency across various timeframes and assets.
✅ Wavelet Smoothing – Multi-Scale Extraction – Captures short-term fluctuations while preserving broader trend structures.
✅ Frequency-Based Detail Weights – Separates high, medium, and low-frequency components to reduce noise and improve trend clarity.
✅ Real-Time Divergence Detection – Identifies bullish and bearish divergences for early trend reversals.
✅ Crossovers & ATR-Based Trailing Stops – Implements intelligent trade management with adaptive stop-loss levels.
👽 The Math Behind the Indicator
👾 Wavelet-Based AO Smoothing
The indicator applies multi-scale wavelet decomposition to extract high-frequency, medium-frequency, and low-frequency trend components, ensuring an optimal balance between reactivity and smoothness.
sma1 = ta.sma(signal, waveletPeriod1)
sma2 = ta.sma(signal, waveletPeriod2)
sma3 = ta.sma(signal, waveletPeriod3)
detail1 = signal - sma1 // High-frequency detail
detail2 = sma1 - sma2 // Intermediate detail
detail3 = sma2 - sma3 // Low-frequency detail
advancedAO = weightDetail1 * detail1 + weightDetail2 * detail2 + weightDetail3 * detail3
Why It Works:
Short-Term Smoothing: Captures rapid fluctuations while minimizing noise.
Medium-Term Smoothing: Balances short-term and long-term trends.
Long-Term Smoothing: Enhances trend stability and reduces false signals.
👾 Z-Score Normalization
To ensure consistency across different markets, the Awesome Oscillator is normalized using a Z-score transformation, making overbought and oversold levels stable across all assets.
normFactor = ta.stdev(advancedAO, normPeriod)
normalizedAO = advancedAO / nz(normFactor, 1)
Why It Works:
Standardizes AO values for comparison across assets.
Enhances signal reliability, preventing misleading spikes.
👽 How Traders Can Use This Indicator
👾 Divergence Trading Strategy
Bullish Divergence
Price makes a lower low, while AO forms a higher low.
A buy signal is confirmed when AO starts rising.
Bearish Divergence
Price makes a higher high, while AO forms a lower high.
A sell signal is confirmed when AO starts declining.
👾 Buy & Sell Signals with Trailing Stop
Bullish Setup:
✅AO crosses above the bullish trigger level → Buy Signal.
✅Trailing stop placed at Low - (ATR × Multiplier).
✅Exit if price crosses below the stop.
Bearish Setup:
✅AO crosses below the bearish trigger level → Sell Signal.
✅Trailing stop placed at High + (ATR × Multiplier).
✅Exit if price crosses above the stop.
👽 Why It’s Useful for Traders
Wavelet-Enhanced Filtering – Retains essential trend details while eliminating excessive noise.
Multi-Scale Momentum Analysis – Separates different trend frequencies for enhanced clarity.
Real-Time Divergence Alerts – Identifies early reversal signals for better entries and exits.
ATR-Based Risk Management – Ensures stops dynamically adapt to market conditions.
Works Across Markets & Timeframes – Suitable for stocks, forex, crypto, and futures trading.
👽 Indicator Settings
AO Short Period – Defines the short-term moving average for AO calculation.
AO Long Period – Defines the long-term moving average for AO smoothing.
Wavelet Smoothing – Adjusts multi-scale decomposition for different market conditions.
Divergence Detection – Enables or disables real-time divergence analysis. Normalization Period – Sets the lookback period for standard deviation-based AO normalization.
Cross Signals Sensitivity – Controls crossover signal strength for buy/sell signals.
ATR Trailing Stop Multiplier – Adjusts the sensitivity of the trailing stop.
Disclaimer: This indicator is designed for educational purposes and does not constitute financial advice. Please consult a qualified financial advisor before making investment decisions.
Solar Movement Gradient-AYNETSummary of the Solar Movement Gradient Indicator
This Pine Script creates a dynamic, colorful indicator inspired by solar movements. It uses a sinusoidal wave to plot oscillations over time with a rainbow-like gradient that changes based on the wave's position.
Key Features
Sinusoidal Wave:
A wave oscillates smoothly based on the bar index (time) or optionally influenced by price movements.
The wave’s amplitude, baseline, and wavelength can be customized.
Dynamic Colors:
A spectrum of seven colors (red, orange, yellow, green, blue, purple, pink) is used.
The color changes smoothly along with the wave, emulating a solar gradient.
Background Gradient:
An optional gradient fills the background with colors matching the wave, adding a visually pleasing effect.
Customizable Inputs
Gradient Speed:
Adjusts how fast the wave and colors change over time.
Amplitude & Wavelength:
Controls the height and smoothness of the wave.
Price Influence:
Allows the wave to react dynamically to price movements.
Background Gradient:
Toggles a colorful gradient in the chart’s background.
Use Case
This indicator is designed for visual appeal rather than trading signals. It enhances the chart with a dynamic and colorful representation, making it perfect for aesthetic customization.
Let me know if you need further refinements! 🌈✨
mathLibrary "math"
It's a library of discrete aproximations of a price or Series float it uses Fourier Discrete transform, Laplace Discrete Original and Modified transform and Euler's Theoreum for Homogenus White noice operations. Calling functions without source value it automatically take close as the default source value.
Here is a picture of Laplace and Fourier approximated close prices from this library:
Copy this indicator and try it yourself:
import AutomatedTradingAlgorithms/math/1 as math
//@version=5
indicator("Close Price with Aproximations", shorttitle="Close and Aproximations", overlay=false)
// Sample input data (replace this with your own data)
inputData = close
// Plot Close Price
plot(inputData, color=color.blue, title="Close Price")
ltf32_result = math.LTF32(a=0.01)
plot(ltf32_result, color=color.green, title="LTF32 Aproximation")
fft_result = math.FFT()
plot(fft_result, color=color.red, title="Fourier Aproximation")
wavelet_result = math.Wavelet()
plot(wavelet_result, color=color.orange, title="Wavelet Aproximation")
wavelet_std_result = math.Wavelet_std()
plot(wavelet_std_result, color=color.yellow, title="Wavelet_std Aproximation")
DFT3(xval, _dir)
Discrete Fourier Transform with last 3 points
Parameters:
xval (float) : Source series
_dir (int) : Direction parameter
Returns: Aproxiated source value
DFT2(xval, _dir)
Discrete Fourier Transform with last 2 points
Parameters:
xval (float) : Source series
_dir (int) : Direction parameter
Returns: Aproxiated source value
FFT(xval)
Fast Fourier Transform once. It aproximates usig last 3 points.
Parameters:
xval (float) : Source series
Returns: Aproxiated source value
DFT32(xval)
Combined Discrete Fourier Transforms of DFT3 and DTF2 it aproximates last point by first
aproximating last 3 ponts and than using last 2 points of the previus.
Parameters:
xval (float) : Source series
Returns: Aproxiated source value
DTF32(xval)
Combined Discrete Fourier Transforms of DFT3 and DTF2 it aproximates last point by first
aproximating last 3 ponts and than using last 2 points of the previus.
Parameters:
xval (float) : Source series
Returns: Aproxiated source value
LFT3(xval, _dir, a)
Discrete Laplace Transform with last 3 points
Parameters:
xval (float) : Source series
_dir (int) : Direction parameter
a (float) : laplace coeficient
Returns: Aproxiated source value
LFT2(xval, _dir, a)
Discrete Laplace Transform with last 2 points
Parameters:
xval (float) : Source series
_dir (int) : Direction parameter
a (float) : laplace coeficient
Returns: Aproxiated source value
LFT(xval, a)
Fast Laplace Transform once. It aproximates usig last 3 points.
Parameters:
xval (float) : Source series
a (float) : laplace coeficient
Returns: Aproxiated source value
LFT32(xval, a)
Combined Discrete Laplace Transforms of LFT3 and LTF2 it aproximates last point by first
aproximating last 3 ponts and than using last 2 points of the previus.
Parameters:
xval (float) : Source series
a (float) : laplace coeficient
Returns: Aproxiated source value
LTF32(xval, a)
Combined Discrete Laplace Transforms of LFT3 and LTF2 it aproximates last point by first
aproximating last 3 ponts and than using last 2 points of the previus.
Parameters:
xval (float) : Source series
a (float) : laplace coeficient
Returns: Aproxiated source value
whitenoise(indic_, _devided, minEmaLength, maxEmaLength, src)
Ehler's Universal Oscillator with White Noise, without extra aproximated src.
It uses dinamic EMA to aproximate indicator and thus reducing noise.
Parameters:
indic_ (float) : Input series for the indicator values to be smoothed
_devided (int) : Divisor for oscillator calculations
minEmaLength (int) : Minimum EMA length
maxEmaLength (int) : Maximum EMA length
src (float) : Source series
Returns: Smoothed indicator value
whitenoise(indic_, dft1, _devided, minEmaLength, maxEmaLength, src)
Ehler's Universal Oscillator with White Noise and DFT1.
It uses src and sproxiated src (dft1) to clearly define white noice.
It uses dinamic EMA to aproximate indicator and thus reducing noise.
Parameters:
indic_ (float) : Input series for the indicator values to be smoothed
dft1 (float) : Aproximated src value for white noice calculation
_devided (int) : Divisor for oscillator calculations
minEmaLength (int) : Minimum EMA length
maxEmaLength (int) : Maximum EMA length
src (float) : Source series
Returns: Smoothed indicator value
smooth(dft1, indic__, _devided, minEmaLength, maxEmaLength, src)
Smoothing source value with help of indicator series and aproximated source value
It uses src and sproxiated src (dft1) to clearly define white noice.
It uses dinamic EMA to aproximate src and thus reducing noise.
Parameters:
dft1 (float) : Value to be smoothed.
indic__ (float) : Optional input for indicator to help smooth dft1 (default is FFT)
_devided (int) : Divisor for smoothing calculations
minEmaLength (int) : Minimum EMA length
maxEmaLength (int) : Maximum EMA length
src (float) : Source series
Returns: Smoothed source (src) series
smooth(indic__, _devided, minEmaLength, maxEmaLength, src)
Smoothing source value with help of indicator series
It uses dinamic EMA to aproximate src and thus reducing noise.
Parameters:
indic__ (float) : Optional input for indicator to help smooth dft1 (default is FFT)
_devided (int) : Divisor for smoothing calculations
minEmaLength (int) : Minimum EMA length
maxEmaLength (int) : Maximum EMA length
src (float) : Source series
Returns: Smoothed src series
vzo_ema(src, len)
Volume Zone Oscillator with EMA smoothing
Parameters:
src (float) : Source series
len (simple int) : Length parameter for EMA
Returns: VZO value
vzo_sma(src, len)
Volume Zone Oscillator with SMA smoothing
Parameters:
src (float) : Source series
len (int) : Length parameter for SMA
Returns: VZO value
vzo_wma(src, len)
Volume Zone Oscillator with WMA smoothing
Parameters:
src (float) : Source series
len (int) : Length parameter for WMA
Returns: VZO value
alma2(series, windowsize, offset, sigma)
Arnaud Legoux Moving Average 2 accepts sigma as series float
Parameters:
series (float) : Input series
windowsize (int) : Size of the moving average window
offset (float) : Offset parameter
sigma (float) : Sigma parameter
Returns: ALMA value
Wavelet(src, len, offset, sigma)
Aproxiates srt using Discrete wavelet transform.
Parameters:
src (float) : Source series
len (int) : Length parameter for ALMA
offset (simple float)
sigma (simple float)
Returns: Wavelet-transformed series
Wavelet_std(src, len, offset, mag)
Aproxiates srt using Discrete wavelet transform with standard deviation as a magnitude.
Parameters:
src (float) : Source series
len (int) : Length parameter for ALMA
offset (float) : Offset parameter for ALMA
mag (int) : Magnitude parameter for standard deviation
Returns: Wavelet-transformed series
LaplaceTransform(xval, N, a)
Original Laplace Transform over N set of close prices
Parameters:
xval (float) : series to aproximate
N (int) : number of close prices in calculations
a (float) : laplace coeficient
Returns: Aproxiated source value
NLaplaceTransform(xval, N, a, repeat)
Y repetirions on Original Laplace Transform over N set of close prices, each time N-k set of close prices
Parameters:
xval (float) : series to aproximate
N (int) : number of close prices in calculations
a (float) : laplace coeficient
repeat (int) : number of repetitions
Returns: Aproxiated source value
LaplaceTransformsum(xval, N, a, b)
Sum of 2 exponent coeficient of Laplace Transform over N set of close prices
Parameters:
xval (float) : series to aproximate
N (int) : number of close prices in calculations
a (float) : laplace coeficient
b (float) : second laplace coeficient
Returns: Aproxiated source value
NLaplaceTransformdiff(xval, N, a, b, repeat)
Difference of 2 exponent coeficient of Laplace Transform over N set of close prices
Parameters:
xval (float) : series to aproximate
N (int) : number of close prices in calculations
a (float) : laplace coeficient
b (float) : second laplace coeficient
repeat (int) : number of repetitions
Returns: Aproxiated source value
N_divLaplaceTransformdiff(xval, N, a, b, repeat)
N repetitions of Difference of 2 exponent coeficient of Laplace Transform over N set of close prices, with dynamic rotation
Parameters:
xval (float) : series to aproximate
N (int) : number of close prices in calculations
a (float) : laplace coeficient
b (float) : second laplace coeficient
repeat (int) : number of repetitions
Returns: Aproxiated source value
LaplaceTransformdiff(xval, N, a, b)
Difference of 2 exponent coeficient of Laplace Transform over N set of close prices
Parameters:
xval (float) : series to aproximate
N (int) : number of close prices in calculations
a (float) : laplace coeficient
b (float) : second laplace coeficient
Returns: Aproxiated source value
NLaplaceTransformdiffFrom2(xval, N, a, b, repeat)
N repetitions of Difference of 2 exponent coeficient of Laplace Transform over N set of close prices, second element has for 1 higher exponent factor
Parameters:
xval (float) : series to aproximate
N (int) : number of close prices in calculations
a (float) : laplace coeficient
b (float) : second laplace coeficient
repeat (int) : number of repetitions
Returns: Aproxiated source value
N_divLaplaceTransformdiffFrom2(xval, N, a, b, repeat)
N repetitions of Difference of 2 exponent coeficient of Laplace Transform over N set of close prices, second element has for 1 higher exponent factor, dynamic rotation
Parameters:
xval (float) : series to aproximate
N (int) : number of close prices in calculations
a (float) : laplace coeficient
b (float) : second laplace coeficient
repeat (int) : number of repetitions
Returns: Aproxiated source value
LaplaceTransformdiffFrom2(xval, N, a, b)
Difference of 2 exponent coeficient of Laplace Transform over N set of close prices, second element has for 1 higher exponent factor
Parameters:
xval (float) : series to aproximate
N (int) : number of close prices in calculations
a (float) : laplace coeficient
b (float) : second laplace coeficient
Returns: Aproxiated source value
Infinity Market Grid -AynetConcept
Imagine viewing the market as a dynamic grid where price, time, and momentum intersect to reveal infinite possibilities. This indicator leverages:
Grid-Based Market Flow: Visualizes price action as a grid with zones for:
Accumulation
Distribution
Breakout Expansion
Volatility Compression
Predictive Dynamic Layers:
Forecasts future price zones using historical volatility and momentum.
Tracks event probabilities like breakout, fakeout, and trend reversals.
Data Science Visuals:
Uses heatmap-style layers, moving waveforms, and price trajectory paths.
Interactive Alerts:
Real-time alerts for high-probability market events.
Marks critical zones for "buy," "sell," or "wait."
Key Features
Market Layers Grid:
Creates dynamic "boxes" around price using fractals and ATR-based volatility.
These boxes show potential future price zones and probabilities.
Volatility and Momentum Waves:
Overlay volatility oscillators and momentum bands for directional context.
Dynamic Heatmap Zones:
Colors the chart dynamically based on breakout probabilities and risk.
Price Path Prediction:
Tracks price trajectory as a moving "wave" across the grid.
How It Works
Grid Box Structure:
Upper and lower price levels are based on ATR (volatility) and plotted dynamically.
Dashed green/red lines show the grid for potential price expansion zones.
Heatmap Zones:
Colors the background based on probabilities:
Green: High breakout probability.
Blue: High consolidation probability.
Price Path Prediction:
Forecasts future price movements using momentum.
Plots these as a dynamic "wave" on the chart.
Momentum and Volatility Waves:
Shows the relationship between momentum and volatility as oscillating waves.
Helps identify when momentum exceeds volatility (potential breakouts).
Buy/Sell Signals:
Triggers when price approaches grid edges with strong momentum.
Provides alerts and visual markers.
Why Is It Revolutionary?
Grid and Wave Synergy:
Combines structural price zones (grid boxes) with real-time momentum and volatility waves.
Predictive Analytics:
Uses momentum-based forecasting to visualize what’s next, not just what’s happening.
Dynamic Heatmap:
Creates a living map of breakout/consolidation zones in real-time.
Scalable for Any Market:
Works seamlessly with forex, crypto, and stocks by adjusting the ATR multiplier and box length.
This indicator is not just a tool but a framework for understanding market dynamics at a deeper level. Let me know if you'd like to take it even further — for example, adding machine learning-inspired probability models or multi-timeframe analysis! 🚀
EWO Breaking Bands & XTLElliott Wave Principle, developed by Ralph Nelson Elliott , proposes that the seemingly chaotic behaviour of the different financial markets isn’t actually chaotic. In fact the markets moves in predictable, repetitive cycles or waves and can be measured and forecast using Fibonacci numbers. These waves are a result of influence on investors from outside sources primarily the current psychology of the masses at that given time. Elliott wave predicts that the prices of the a traded currency pair will evolve in waves: five impulsive waves and three corrective waves. Impulsive waves give the main direction of the market expansion and the corrective waves are in the opposite direction (corrective wave occurrences and combination corrective wave occurrences are much higher comparing to impulsive waves)
The Elliott Wave Oscillator ( EWO ) helps identifying where you are in the 5 / 3 Elliott Waves , mainly the highest/lowest values of the oscillator might indicate a potential bullish / bearish Wave 3. Mathematically expressed, EWO is the difference between a 5 period and 35 period moving average. In this study instead 35-period, Fibonacci number 34 is implemented for the slow moving average and formula becomes ewo = sma (HL2, 5) - sma (HL2, 34)
The Elliott Wave Oscillator enables traders to track Elliott Wave counts and divergences. It allows traders to observe when an existing wave ends and when a new one begins. Included with the EWO are the breakout bands that help identify strong impulses.
The Expert Trend Locator ( XTL ) was developed by Tom Joseph (in his book Applying Technical Analysis) to identify major trends, similar to Elliott Wave 3 type swings.
Blue bars are bullish and indicate a potential upwards impulse.
Red bars are bearish and indicate a potential downwards impulse.
White bars indicate no trend is detected at the moment.
Added "TSI Arrows". The arrows is intended to help the viewer identify potential turning points. The presence of arrows indicates that the TSI indicator is either "curling" up under the signal line, or "curling" down over the signal line. This can help to anticipate reversals, or moves in favor of trend direction.
Ichimoku Kinkō HyōThe Ichimoku Kinko Hyo is an trading system developed by the late Goichi Hosoda (pen name "Ichimokusanjin") when he was the general manager of the business conditions department of Miyako Shinbun, the predecessor of the Tokyo Shimbun. Currently, it is a registered trademark of Economic Fluctuation Research Institute Co., Ltd., which is run by the bereaved family of Hosoda as a private research institute.
The Ichimoku Kinko Hyo is composed of time theory, price range theory (target price theory) and wave movement theory. Ichimoku means "At One Glace". The equilibrium table is famous for its span, but the first in the equilibrium table is the time relationship.
In the theory of time, the change date is the day after the number of periods classified into the basic numerical value such as 9, 17, 26, etc., the equal numerical value that takes the number of periods of the past wave motion, and the habit numerical value that appears for each issue is there. The market is based on the idea that the buying and selling equilibrium will move in the wrong direction. Another feature is that time is emphasized in order to estimate when changes will occur.
In the price range theory, there are E・V・N・NT calculated values and multiple values of 4 to 8E as target values. In addition, in order to determine the momentum and direction of the market, we will consider other price ranges and ying and yang numbers.
If the calculated value is realized on the change date calculated by each numerical value, the market price is likely to reverse.
転換線 (Tenkansen) (Conversion Line) = (highest price in the past 9 periods + lowest price) ÷ 2
基準線 (Kijunsen) (Base Line) = (highest price in the past 26 periods + lowest price) ÷ 2
It represents Support/Resistance for 16 bars. It is a 50% Fibonacci Retracement. The Kijun sen is knows as the "container" of the trend. It is prefect to use as an initial stop and/or trailing stop.
先行スパン1 (Senkou span 1) (Lagging Span 1) = {(conversion value + reference value) ÷ 2} 25 periods ahead (26 periods ahead including the current day, that is)
先行スパン2 (Senkou span 2) (Lagging Span 2) = {(highest price in the past 52 periods + lowest price) ÷ 2} 25 periods ahead (26 periods ahead including the current day, that is)
遅行スパン (Chikou span) (Lagging Span) = (current candle closing price) plotted 26 periods before (that is, including the current day) 25 periods ago
It is the only Ichimoku indicator that uses the closing price. It is used for momentum of the trend.
The area surrounded by the two lagging span lines is called a cloud. This is the foundation of the system. It determines the sentiment (Bull/Bear) for the insrument. If price is above the cloud, the instrument is bullish. If price is below the cloud, the instrument is bearish.
-
The wave theory of the Ichimoku Kinko Hyo has the following waves.
All about the rising market. If it is the falling market, the opposite is true.
I wave rise one market price.
V wave the market price that raises and lowers.
N wave the market price for raising, lowering, and raising.
P wave the high price depreciates and the low price rises with the passage of time. Leave either.
Y wave the high price rises and the low price falls with the passage of time. Leave either.
S wave A market in which the lowered market rebounds and rises at the previous high level.
There are the above 6 types but the basis of the Ichimoku Kinko Hyo is the N wave of 3 waves.
In Elliott wave theory and similar theories, basically there are 5 waves but 5 waves are a series of 2 and 3 waves N, 3 for 7 waves, 4 for 9 waves and so on.
Even if it keep continuing, it will be based on N wave. In addition, since the P wave and the Y wave are separated from each other, they can be seen as N waves from a large perspective.
-
There are basic E・V・N・NT calculated values and several other calculation methods for the Ichimoku Kinko Hyo. It is the only calculated value that gives a concrete value in the Ichimoku Kinko Hyo, which is difficult to understand, but since we focus only on the price difference and do not consider the supply and demand, it is forbidden to stick to the calculated value alone.
(The calculation method of the following five calculated values is based on the rising market price, which is raised from the low price A to the high price B and lowered from the high price B to the low price C. Therefore, the low price C is higher than the low price A)
E calculated value The amount of increase from the low price A to the high price B is added to the high price B. = B + (BA)
V calculated value Adds the amount of decline from the high price B to the low price C to the high price B. = B + (BC)
N calculated value The amount of increase from the low price A to the high price B is added to the low price C. = C + (BA)
NT calculated value Adds the amount of increase from the low price A to the low price C to the low price C. = C + (CA)
4E calculated value (four-layer double / quadruple value) Adds three times the amount of increase from the low price A to the high price B to the high price B. = B + 3 × (BA)
Calculated value of P wave The upper price is devalued and the lower price is rounded up, and the price range of both is the same.
Calculated value of Y wave The upper price is rounded up and the lower price is rounded down, and the price range of both is the same.