TASC 2024.05 Ultimate Channels and Ultimate Bands█ OVERVIEW
This script, inspired by the "Ultimate Channels and Ultimate Bands" article from the May 2024 edition of TASC's Traders' Tips , showcases the application of the UltimateSmoother by John Ehlers as a lag-reduced alternative to moving averages in indicators based on Keltner channels and Bollinger Bands®.
█ CONCEPTS
The UltimateSmoother , developed by John Ehlers, is a digital smoothing filter that provides minimal lag compared to many conventional smoothing filters, e.g., moving averages . Since this filter can provide a viable replacement for moving averages with reduced lag, it can potentially find broader applications in various technical indicators that utilize such averages.
This script explores its use as the smoothing filter in Keltner channels and Bollinger Bands® calculations, which traditionally rely on moving averages. By substituting averages with the UltimateSmoother function, the resulting channels or bands respond more quickly to fluctuations with substantially reduced lag.
Users can customize the script by selecting between the Ultimate channel or Ultimate bands and adjusting their parameters, including lookback lengths and band/channel width multipliers, to fine-tune the results.
█ CALCULATIONS
The calculations the Ultimate channels and Ultimate bands use closely resemble those of their conventional counterparts.
Ultimate channel:
Apply the Ultimate smoother to the `close` time series to establish the basis (center) value.
Calculate the smooth true range (STR) by applying the UltimateSmoother function with a user-specified length instead of a rolling moving average, thus replacing the conventional average true range (ATR). Users can adjust the final STR value using the "Width multiplier" input in the script's settings.
Calculate the upper channel value by adding the multiplied STR to the basis calculated in the first step, and calculate the lower channel value by subtracting the multiplied STR from the basis.
Ultimate bands:
Apply the Ultimate smoother to the `close` time series to establish the basis (center) value.
Calculate the width of the bands by finding the square root of the average of individual squared deviations over the specified length, then multiplying the result by the "Width multiplier" input value.
Calculate the upper band by adding the resulting width to the basis from the first step, and calculate the lower band by subtracting the width from the basis.
Cari dalam skrip untuk "averages"
Market Smith IndicatorsMarket Smith has a collection of tools that are useful for identifying stocks. On their charts they have a 21/50/200 day moving averages, high and low pivot points, a relative strength line, and a relative strength rating. This script contains indicators for the following:
21/50/200 Day Moving Averages
High and Low pivot points
A Relative Strength line
A Relative Strength rating
21/50/200 Day Moving Averages
The 21/50/200 Day moving averages are simple moving averages. They are visible in any chart increment but to use them properly you need to set you charts to be by day. Labels will appear on the right of the lines to show that they are representative of 21/50/200 day moving averages.
High and Low pivot points
The High and Low pivot points are green for high pivot points and red for low points. They are show in the Market Smith style with the numbers simply above the pivot points.
Relative Strength line
The Relative Strength line is a line that shows the strength of the stock compared to the S&P 500. In this case we utilize the SPX ticker to compare the stock to. This line is almost identical to the Market Smith tool and is an excellent tool to determine how a stock is doing compared to the market. When movements in the stock and shown with sideways trending of the RS line that means that the stock is following the market. When a stock is outperforming the market the RS line will follow.
Relative Strength rating
Thank you to ©Fred6724 for the RS Rating inspiration. They wrote excellent open source code for a RS Rating comparable to Market Smith. As the RS Rating in Market Smith is not open source it is difficult to know exactly how it is being calculated. After simplifying Fred's code and building upon a few ideas I had I compared the RS Rating to multiple Market Smith Ratings. The rating is close but often off by multiple points. If there is anyone who has a better idea on how to get this rating or how to improve on the code please send me a PM or fork this project. This rating is a good indicator to see how a certain stock compares to other stocks in the market. In Market Smith they are able to utilize their database to compare it to all other stocks. Since we do not have access to the same tools we are only able to compare it to the percentage of stocks above the 200, 150, 100, 50, and 20 day moving average.
Using these tools together are a small fraction what make people like Bill O'neill and Jim Roppel so successful. I plan on updating the RS Rating as I continue to work on this project so if there is anyone who has ideas then please send me a PM. Ultimately the goal of this project is to have a solution that is identical to Market Smith.
WillyCycle Oscillator&DoubleMa/ErkOzi/"This code creates a technical analysis indicator used to calculate and visualize the WillyCycle oscillator and double moving average indicators on the price of a financial asset. The functionality can be summarized as follows:
*Calculate the WillyCycle oscillator: The WillyCycle is an oscillator calculated based on the highest and lowest values of an asset. This oscillator is used to measure overbought or oversold conditions of the asset.
*Calculate the double moving average: The double moving average helps determine trends by calculating the short-term and long-term moving averages of asset prices.
*Use the WillyCycle oscillator and double moving average indicators together: The WillyCycle oscillator is combined with the double moving averages to provide a clearer indication of overbought and oversold conditions.
*Visualize the indicator with color coding: The indicator is color-coded to show overbought and oversold conditions. Additionally, line and background colors are changed to make the indicator more readable.
Many parameters can be adjusted on the indicator: The indicator can be customized and modified by the user. For example, the period of the WillyCycle oscillator and the lengths of the double moving averages can be adjusted."
The strategy is based on two indicators - the WillyCycle oscillator and the double moving average. The WillyCycle oscillator measures overbought and oversold conditions of the asset based on its highest and lowest values. The double moving average calculates short-term and long-term moving averages of the asset's price, which can help identify trends.
The WillyCycle oscillator and the double moving average are combined in this strategy to provide a clearer indication of overbought and oversold conditions. When the WillyCycle oscillator indicates that the asset is oversold and the short-term moving average crosses above the long-term moving average, it may signal a buy opportunity. Conversely, when the WillyCycle oscillator indicates that the asset is overbought and the short-term moving average crosses below the long-term moving average, it may signal a sell opportunity.
To make it easier for traders to read and interpret the indicator, color-coding is used to indicate overbought and oversold conditions. The user can also customize the indicator by adjusting parameters such as the period of the WillyCycle oscillator and the lengths of the double moving averages.
*ıt provides successful buy and sell signals for price reversals.
*You can open counter trades in overbought and oversold areas by following the averages.
Doji Hunter█ OVERVIEW
This script is built to search for 8 different Doji candlestick patterns in markets and makes them appear on screen with bar coloring and creating color-coded labels/shapes. It will identify the following variants based upon user input for various rules to abide by:
Gapping Up
Gapping Down
Gravestone
Dragonfly
Long-Legged
Rickshaw Man
Northern (Doji in uptrend)
Southern (Doji in downtrend)
Note: for the remainder of this description, the types for inputs will be marked by italic text.
█ OPTIONS
This script features a wide range of options available to the user to modify how it functions. The first set of inputs dictate how the trend analysis is done with moving averages. The second and third sets of inputs dictate specific rules for how Doji candles are analyzed and the colors used for when they appear.
█ INPUTS (short)
1 — Moving Average Rules:
The Northern and Southern Doji variants require some trend analysis which will be done by Moving Averages. The inputs in this section change various things about the moving average(s) to be used. In the second section of inputs, there is one boolean option that will nullify the need for trend detection and consolidates the Northern and Southern Doji variants into one.
2/3 — Doji Rules and Colors:
The next two sections of inputs correspond to the various rules that dictate how various doji variants will be analyzed, as well as the colors that correspond to each variant. The colors will also apply to each of the labels/shapes used.
4 — Diagnostics:
The last boolean will allow the user to see extra detail with regards to how and when dojis are detected. Note: This is not a part of any prior section and is simply included as a last functional item to the list of all inputs.
An example of multiple labels being shown on screen for various types of Dojis (DJI 1D chart):
█ INPUTS (extended)
1 — Moving Average Rules:
This section consists of 10 different inputs specific to the rules on how the moving average functions for trend analysis.
"Trend Rule" ( string list) determines which Moving Average will be used for trend detection. It has 3 options: "MA 1", "MA 2", or "BOTH". The second input "Trend Source" determines which OHLC (or combination) value to use in comparison to either MA 1 or MA 2 (EX: Trend Rule -> "MA 1" and Trend Source -> "close": if close > MA 1 -> uptrend, downtrend otherwise). If "BOTH" is selected then "Trend Source" is ignored and added nuance in the script ensures that the shorter MA being above the longer MA yields an uptrend (downtrend otherwise).
The next 8 inputs focus on 4 different parts of both MA 1 and 2.
Length ( integer(s) )
Color
Switch between SMA/EMA ( boolean(s) )
Source for MA
Note: Additional attention to detail has been made here as trend direction is ignored if "BOTH" is selected for the MA Rules and the lengths of both Moving Averages are set to be the same.
2/3 — Doji Rules and Colors:
The next two sections include 19 inputs that are related to how this script will analyze and identify the different variants of Doji candles.
"Identify Pattern On Close" ( boolean ) modifies which candles are to be used for determining when Doji candles are recognized. This changes an offset used for historical reference on some global variables which will force the script to only identify patterns after the current candle has closed.
"Doji Body Tolerance" ( float ) tells the script the maximum % the candle body may be of the high-low range to be considered a Doji candle.
"Doji Wick Sample" ( integer ) defines how many prior candles to sample from in calculating the current average upper and lower wick sizes.
"Simplify Northern/Southern Dojis" ( boolean ) makes this script ignore trend direction for Doji detection and consolidates Northern and Southern Dojis into being recognized as the same. This has an added effect of removing the plotted moving averages from the screen.
"Northern/Southern Display" ( string list ) that has multiple options for how Northern and Southern Dojis will be displayed on screen. Because of how labels may be extremely taxing on TradingView's servers to display, the default setting is "shapes" where Northern and Southern (N/S) Dojis will be marked with a colored triangle at the top of the candle. If "Simplify Northern/Southern Dojis" is true, all N/S Dojis will be marked with an x-cross instead. Other options include "labels" which enables the use of labels accompanied by their respective tooltip and color, or "none" where N/S Dojis will be only noticeable by their changed barcolor.
"Allow Gravestone/Dragonfly Shadows" ( boolean ) allows a bit of additional nuance to the definition of Gravestone or Dragonfly Dojis with small shadows.
"Gravestone/Dragonfly Shadow Tolerance" ( float ) defines the maximum % that the lower wick/upper wick (respectively) may be relative to the high-low range for Gravestone or Dragonfly Dojis to still be considered valid.
"Doji Long Wick Setting" ( string list) is a list of settings for three different ways of confirming if a Doji is Long-Legged. The settings are "one", "two", and "average". These define how many wick lengths of a candle need to exceed the calculated average wick lengths (EX: "both" -> upper wick length > upper wick average and lower wick length > lower wick average). The "average" setting will combine the lengths of both wicks and both prior wick averages, divide both of these sums by 2 and compare them instead.
"Doji Long Wick Tolerance" ( float ) defines how large compared to the averages that wick lengths need to be in order for them to be considered "Long-Legged" (EX: 1.50 -> upper/lower wick needs to exceed 150% the average of previous upper/lower wicks).
"Rickshaw Man Body Placement Tolerance" ( float ) defines how close to the high-low range's midpoint the candle body's midpoint needs to be in order for it to be considered a Rickshaw Man Doji candle instead.
The remaining 9 inputs define the colors to use for differentiating between all Doji variants this script will recognize.
█ USAGE
My hope for this script is that users find this easy to use/understand and will tinker with the input values to better identify Doji candlesticks across a wide range of markets.
Suggestions for changes in the future are welcome.
Pi Cycle Top & Bottom Indicator [InvestorUnknown]The Pi Cycle Top & Bottom Indicator is designed for long-term cycle analysis, particularly useful for detecting significant market tops and bottoms in assets like Bitcoin. By comparing the behavior of two moving averages, one with a shorter period (default 111) and the other with a longer period (default 350), the indicator helps investors identify potential turning points in the market.
Key Features:
Dual Moving Average System:
The indicator uses two moving averages (MA) to create a cyclic oscillator. The shorter moving average (Short Length MA) is more reactive to recent price changes, while the longer moving average (Long Length MA) smooths out long-term trends. Users can select between:
Simple Moving Average (SMA): A straightforward average of closing prices.
Exponential Moving Average (EMA): Places more weight on recent prices, making it more responsive to market changes.
Oscillator Mode Options:
The Pi Cycle Indicator offers two modes of oscillation to better suit different analysis styles:
RAW Mode: This mode calculates the raw ratio of the Short MA to the Long MA, offering a simple comparison of the two averages.
LOG(X) Mode: In this mode, the oscillator takes the natural logarithm of the Short MA to Long MA ratio. This transformation compresses extreme values and highlights relative changes more effectively, making it particularly useful for spotting shifts in long-term trends.
Cyclical Analysis:
The core of the Pi Cycle Indicator is its ability to visualize the relationship between the two moving averages. The ratio of the Short MA to the Long MA is plotted as an oscillator. When the oscillator crosses above or below a baseline (which is 1 for RAW mode and 0 for LOG(X) mode), it signals potential market turning points.
Visual Representation:
The indicator provides a clear visual display of market conditions:
Orange Line: Represents the Pi Cycle Oscillator, which shows the relationship between the short and long moving averages.
Gray Baseline: A reference line that dynamically adjusts based on the oscillator mode. Crosses above or below this line help indicate possible trend reversals.
Shaded Areas: Color-filled areas between the oscillator and the baseline, which are shaded green when the market is bullish (oscillator above baseline) and red when bearish (oscillator below baseline). This provides a visual cue to assist in identifying potential market tops and bottoms.
Use Cases:
The Pi Cycle Top & Bottom Indicator is primarily used in long-term market analysis, such as Bitcoin cycles, to identify significant tops and bottoms. These moments often coincide with large cyclical shifts, making it valuable for those aiming to enter or exit positions at key moments in the market cycle.
By analyzing the interaction between short-term and long-term trends, investors can gain insight into broader market dynamics and make more informed decisions regarding entry and exit points. The ability to switch between moving average types (SMA/EMA) and oscillator modes (RAW/LOG) adds flexibility for adapting to different market environments.
TrendFriendOverview
TrendFriend (TF) combines various technical analysis components, including trend calculations, moving averages, RSI signals, and Fair Value Gaps (FVG) detection to determine trend reversal and continuation points. The FVG feature identifies potential consolidation periods and displays mitigation levels.
Features
Trend Analysis: Utilizes short and long-term Running Moving Averages (RMA) to identify trends.
Average True Range (ATR): Plots ATR to depict market volatility.
RSI Signals: Calculates RSI and provides buy/sell signals based on RSI conditions.
Fair Value Gaps (FVG): Detects FVG patterns and offers options for customization, including dynamic FVG, mitigation levels, and auto threshold.
Usage
Buy Signals: Generated based on pullback conditions, contra-buy signals, and crossovers of specified moving averages.
Sell Signals: Generated based on pullback conditions, contra-sell signals, and crossunders of specified moving averages.
Visualization: FVG areas are visually represented on the chart, and unmitigated levels can be displayed.
Configuration
Adjustable parameters for trend periods, ATR length, RSI settings, FVG threshold, and display preferences.
Dynamic FVG detection and mitigation level visualization can be enabled/disabled.
Usage Example
Trend Analysis: Identify trends with short and long-term moving averages.
RSI Signals: Interpret RSI signals for potential reversals.
FVG Detection: Visualize Fair Value Gaps and mitigation levels on the chart.
Buy/Sell Signals: Receive alerts for buy/sell signals based on specified conditions.
Disclaimer
This Pine Script code is subject to the terms of the Mozilla Public License 2.0. Use this code at your own risk, and always conduct additional analysis before making trading decisions.
Author
Author: devoperator84
License: Mozilla Public License 2.0
[KVA] Extremes ProfilerExtremes Profiler is a specialized indicator crafted for traders focusing on the relationship between price extremes and moving averages. This tool offers a comprehensive perspective on price dynamics by quantifying and visualizing significant distances of current prices from various moving averages. It effectively highlights the top extremes in market movements, providing key insights into price extremities relative to these averages. The indicator's ability to analyze and display these distances makes it a valuable tool for understanding market trends and potential turning points. Traders can leverage the Extremes Profiler to gain a deeper understanding of how prices behave in relation to commonly watched moving averages, thus aiding in making informed trading decisions
Key Features :
Extensive MA Analysis : Tracks the price distance from multiple moving averages including EMA, SMA, WMA, RMA, and HMA.
Top 50 (100) Distance Metrics : Highlights the 50 (100)greatest (highest or lowest) distances from each selected MA, pinpointing significant market deviations.
Customizable Periods : Offers flexibility with adjustable periods to align with diverse trading strategies.
Comprehensive View : Switch between timeframes for a well-rounded understanding of short-term fluctuations and long-term market trends.
Cross-Asset Comparison : Utilize the indicator to compare different assets, gaining insights into the relative dynamics and volatility of various markets. By analyzing multiple assets, traders can discern broader market trends and better understand asset-specific behaviors.
Customizable Display : Users can adjust the periods and number of results to suit their analytical needs.
Gate Signal by Market yogiThis indicator is made by Nischay Rana (Market Yogi)
How to use this Indicator
This is simple group of 8 moving averages, which can be configured in various ways according to your trading requirement.
1. moving average ribbon
2.moving average channel
3.moving average gate signal
4.This indicator has bonus indicator of bollinger bands inbuilt.
Logic:
As price has tendency to get closer to their moving averages. The logic behind this indicator is to use the contraction and expansion concepts of moving averages to find best entry exit points.
This nature of Price action is use to capture the big move after the convergence of all moving averages.
CAUTION : Do not blindly trade the gates as gate has tendency to break out on either side. So use this indicator in confluence with price action and other technical analysis to capture bigger moves.
Higher the gate width more gates are found. Similarly lesser the gate width less gate are found. i.e. Tight squeeze of all the moving averages.
"ENJOY HAPPY TRADING.."
Truly Yours Market Yogi
Momentum Explosion 2CCI RSI"Momentum Explosion Template for Mobile Metatrader", that is a trading system trend momentum based on two Commodity Channel Index (CCI) , RSI and two Moving Averages.The trading signals are generated by the crossing of the moving averages confirmed by the agreement of the two CCIs and the RSI.
Two Moving averages Filtered by double CCI and RSI
Credit is to Dimitri Author Beejay (Forex Factory)
Trading Rules Momentum Explosion
Buy
EMA 8 crosses upward SMA 26.
CCI 34 periods > 0
CCI 55 periods > 0
RSI 26 > 48.
Sell
EMA 8 crosses downward SMA 26.
CCI 34 periods < 0
CCI 55 periods < 0
RSI 26 < 48.
Triangular Moving Average (TRIMA)The Triangular Moving Average (TRIMA) is a technical indicator that applies a triangular weighting scheme to price data, providing enhanced smoothing compared to simpler moving averages. Originating in the early 1970s as technical analysts sought more effective noise filtering methods, the TRIMA was first popularized through the work of market technician Arthur Merrill. Its formal mathematical properties were established in the 1980s, and the indicator gained widespread adoption in the 1990s as computerized charting became standard. TRIMA effectively filters out market noise while maintaining important trends through its unique center-weighted calculation method.
## Core Concepts
* **Double-smoothing process:** TRIMA can be viewed as applying a simple moving average twice, creating more effective noise filtering
* **Triangular weighting:** Uses a symmetrical weight distribution that emphasizes central data points and reduces emphasis toward both ends
* **Constant-time implementation:** Two $O(1)$ SMA passes with circular buffers preserve exact triangular weights while keeping update cost constant per bar
* **Market application:** Particularly effective for identifying the underlying trend in noisy market conditions where standard moving averages generate too many false signals
* **Timeframe flexibility:** Works across multiple timeframes, with longer periods providing cleaner trend signals in higher timeframes
The core innovation of TRIMA is its unique triangular weighting scheme, which can be viewed either as a specialized weight distribution or as a twice-applied simple moving average with adjusted period. This creates more effective noise filtering without the excessive lag penalty typically associated with longer-period averages. The symmetrical nature of the weight distribution ensures zero phase distortion, preserving the timing of important market turning points.
## Common Settings and Parameters
| Parameter | Default | Function | When to Adjust |
|-----------|---------|----------|---------------|
| Length | 14 | Controls the lookback period | Increase for smoother signals in volatile markets, decrease for responsiveness |
| Source | close | Price data used for calculation | Consider using hlc3 for a more balanced price representation |
**Pro Tip:** For a good balance between smoothing and responsiveness, try using a TRIMA with period N instead of an SMA with period 2N - you'll get similar smoothing characteristics but with less lag.
## Calculation and Mathematical Foundation
**Simplified explanation:**
TRIMA calculates a weighted average of prices where the weights form a triangle shape. The middle prices get the most weight, and weights gradually decrease toward both the recent and older ends. This creates a smooth filter that effectively removes random price fluctuations while preserving the underlying trend.
**Technical formula:**
TRIMA = Σ(Price × Weight ) / Σ(Weight )
Where the triangular weights form a symmetric pattern:
- Weight = min(i, n-1-i) + 1
- Example for n=5: weights =
- Example for n=4: weights =
Alternatively, TRIMA can be calculated as:
TRIMA(source, p) = SMA(SMA(source, (p+1)/2), (p+1)/2)
> 🔍 **Technical Note:** The double application of SMA explains why TRIMA provides better smoothing than a single SMA or WMA. This approach effectively applies smoothing twice with optimal period adjustment, creating a -18dB/octave roll-off in the frequency domain compared to -6dB/octave for a simple moving average, and the current implementation achieves $O(1)$ complexity through circular buffers and NA-safe warmup compensation.
## Interpretation Details
TRIMA can be used in various trading strategies:
* **Trend identification:** The direction of TRIMA indicates the prevailing trend
* **Signal generation:** Crossovers between price and TRIMA generate trade signals with fewer false alarms than SMA
* **Support/resistance levels:** TRIMA can act as dynamic support during uptrends and resistance during downtrends
* **Trend strength assessment:** Distance between price and TRIMA can indicate trend strength
* **Multiple timeframe analysis:** Using TRIMAs with different periods can confirm trends across different timeframes
## Limitations and Considerations
* **Market conditions:** Like all moving averages, less effective in choppy, sideways markets
* **Lag factor:** More lag than WMA or EMA due to center-weighted emphasis
* **Limited adaptability:** Fixed weighting scheme cannot adapt to changing market volatility
* **Response time:** Takes longer to reflect sudden price changes than directionally-weighted averages
* **Complementary tools:** Best used with momentum oscillators or volume indicators for confirmation
## References
* Ehlers, John F. "Cycle Analytics for Traders." Wiley, 2013
* Kaufman, Perry J. "Trading Systems and Methods." Wiley, 2013
* Colby, Robert W. "The Encyclopedia of Technical Market Indicators." McGraw-Hill, 2002
Heikin-Ashi Mean Reversion Oscillator [Alpha Extract]The Heikin-Ashi Mean Reversion Oscillator combines the smoothing characteristics of Heikin-Ashi candlesticks with mean reversion analysis to create a powerful momentum oscillator. This indicator applies Heikin-Ashi transformation twice - first to price data and then to the oscillator itself - resulting in smoother signals while maintaining sensitivity to trend changes and potential reversal points.
🔶 CALCULATION
Heikin-Ashi Transformation: Converts regular OHLC data to smoothed Heikin-Ashi values
Component Analysis: Calculates trend strength, body deviation, and price deviation from mean
Oscillator Construction: Combines components with weighted formula (40% trend strength, 30% body deviation, 30% price deviation)
Double Smoothing: Applies EMA smoothing and second Heikin-Ashi transformation to oscillator values
Signal Generation: Identifies trend changes and crossover points with overbought/oversold levels
Formula:
HA Close = (Open + High + Low + Close) / 4
HA Open = (Previous HA Open + Previous HA Close) / 2
Trend Strength = Normalized consecutive HA candle direction
Body Deviation = (HA Body - Mean Body) / Mean Body * 100
Price Deviation = ((HA Close - Price Mean) / Price Mean * 100) / Standard Deviation * 25
Raw Oscillator = (Trend Strength * 0.4) + (Body Deviation * 0.3) + (Price Deviation * 0.3)
Final Oscillator = 50 + (EMA(Raw Oscillator) / 2)
🔶 DETAILS Visual Features:
Heikin-Ashi Candlesticks: Smoothed oscillator representation using HA transformation with vibrant teal/red coloring
Overbought/Oversold Zones: Horizontal lines at customizable levels (default 70/30) with background highlighting in extreme zones
Moving Averages: Optional fast and slow EMA overlays for additional trend confirmation
Signal Dashboard: Real-time table showing current oscillator status (Overbought/Oversold/Bullish/Bearish) and buy/sell signals
Reference Lines: Middle line at 50 (neutral), with 0 and 100 boundaries for range visualization
Interpretation:
Above 70: Overbought conditions, potential selling opportunity
Below 30: Oversold conditions, potential buying opportunity
Bullish HA Candles: Green/teal candles indicate upward momentum
Bearish HA Candles: Red candles indicate downward momentum
MA Crossovers: Fast EMA above slow EMA suggests bullish momentum, below suggests bearish momentum
Zone Exits: Price moving out of extreme zones (above 70 or below 30) often signals trend continuation
🔶 EXAMPLES
Mean Reversion Signals: When the oscillator reaches extreme levels (above 70 or below 30), it identifies potential reversal points where price may revert to the mean.
Example: Oscillator reaching 80+ levels during strong uptrends often precedes short-term pullbacks, providing profit-taking opportunities.
Trend Change Detection: The double Heikin-Ashi smoothing helps identify genuine trend changes while filtering out market noise.
Example: When oscillator HA candles change from red to teal after oversold readings, this confirms potential trend reversal from bearish to bullish.
Moving Average Confirmation: Fast and slow EMA crossovers on the oscillator provide additional confirmation of momentum shifts.
Example: Fast EMA crossing above slow EMA while oscillator is rising from oversold levels provides strong bullish confirmation signal.
Dashboard Signal Integration: The real-time dashboard combines oscillator status with directional signals for quick decision-making.
Example: Dashboard showing "Oversold" status with "BUY" signal when HA candles turn bullish provides clear entry timing.
🔶 SETTINGS
Customization Options:
Calculation: Oscillator period (default 14), smoothing factor (1-50, default 2)
Levels: Overbought threshold (50-100, default 70), oversold threshold (0-50, default 30)
Moving Averages: Toggle display, fast EMA length (default 9), slow EMA length (default 21)
Visual Enhancements: Show/hide signal dashboard, customizable table position
Alert Conditions: Oversold bounce, overbought reversal, bullish/bearish MA crossovers
The Heikin-Ashi Mean Reversion Oscillator provides traders with a sophisticated momentum tool that combines the smoothing benefits of Heikin-Ashi analysis with mean reversion principles. The double transformation process creates cleaner signals while the integrated dashboard and multiple confirmation methods help traders identify high-probability entry and exit points during both trending and ranging market conditions.
Triple Exponential Moving Average (TEMA)The Triple Exponential Moving Average (TEMA) is an advanced technical indicator designed to significantly reduce the lag inherent in traditional moving averages while maintaining signal quality. Developed by Patrick Mulloy in 1994 as an extension of his DEMA concept, TEMA employs a sophisticated triple-stage calculation process to provide exceptionally responsive market signals.
TEMA's mathematical approach goes beyond standard smoothing techniques by using a triple-cascade architecture with optimized coefficients. This makes it particularly valuable for traders who need earlier identification of trend changes without sacrificing reliability. Since its introduction, TEMA has become a key component in many algorithmic trading systems and professional trading platforms.
▶️ **Core Concepts**
Triple-stage lag reduction: TEMA uses a three-level EMA calculation with optimized coefficients (3, -3, 1) to dramatically minimize the delay in signal generation
Enhanced responsiveness: Provides significantly faster reaction to price changes than standard EMA or even DEMA, while maintaining reasonable smoothness
Strategic signal processing: Employs mathematical techniques to extract the underlying trend while filtering random price fluctuations
Timeframe effectiveness: Performs well across multiple timeframes, though particularly valued in short to medium-term trading
TEMA achieves its enhanced responsiveness through an innovative triple-cascade architecture that strategically combines three levels of exponential moving averages. This approach effectively removes the lag component inherent in EMA calculations while preserving the essential smoothing benefits.
▶️ **Common Settings and Parameters**
Length: Default: 12 | Controls sensitivity/smoothness | When to Adjust: Increase in choppy markets, decrease in strongly trending markets
Source: Default: Close | Data point used for calculation | When to Adjust: Change to HL2/HLC3 for more balanced price representation
Corrected: Default: false | Adjusts internal EMA smoothing factors for potentially faster response | When to Adjust: Set to true for a modified TEMA that may react quicker to price changes. false uses standard TEMA calculation
Visualization: Default: Line | Display format on charts | When to Adjust: Use filled cloud to see divergence from price more clearly
Pro Tip: For optimal trade signals, many professional traders use two TEMAs (e.g., 8 and 21 periods) and look for crossovers, which often provide earlier signals than traditional moving average pairs.
▶️ **Calculation and Mathematical Foundation**
Simplified explanation:
TEMA calculates three levels of EMAs, then combines them using a special formula that amplifies recent price action while reducing lag. This triple-processing approach effectively eliminates much of the delay found in traditional moving averages.
Technical formula:
TEMA = 3 × EMA₁ - 3 × EMA₂ + EMA₃
Where:
EMA₁ = EMA(source, α₁)
EMA₂ = EMA(EMA₁, α₂)
EMA₃ = EMA(EMA₂, α₃)
The smoothing factors (α₁, α₂, α₃) are determined as follows:
Let α_base = 2/(length + 1)
α₁ = α_base
If corrected is false:
α₂ = α_base
α₃ = α_base
If corrected is true:
Let r = (1/α_base)^(1/3)
α₂ = α_base * r
α₃ = α_base * r * r = α_base * r²
The corrected = true option implements a variation that uses progressively smaller alpha values for the subsequent EMA calculations. This approach aims to optimize the filter's frequency response and phase lag.
Alpha Calculation for corrected = true:
α₁ (alpha_base) = 2/(length + 1)
r = (1/α₁)^(1/3) (cube root relationship)
α₂ = α₁ * r = α₁^(2/3)
α₃ = α₂ * r = α₁^(1/3)
Mathematical Rationale for Corrected Alphas:
1. Frequency Response Balance:
The standard TEMA (where α₁ = α₂ = α₃) can lead to an uneven frequency response, potentially over-smoothing high frequencies or creating resonance artifacts. The geometric progression of alphas (α₁ > α₁^(2/3) > α₁^(1/3)) in the corrected version aims to create a more balanced filter cascade. Each stage contributes more proportionally to the overall frequency response.
2. Phase Lag Optimization:
The cube root relationship between the alphas is designed to minimize cumulative phase lag while maintaining smoothing effectiveness. Each subsequent EMA stage has a progressively smaller impact on phase distortion.
3. Mathematical Stability:
The geometric progression (α₁, α₁^(2/3), α₁^(1/3)) can enhance numerical stability due to constant ratios between consecutive alphas. This helps prevent the accumulation of rounding errors and maintains consistent convergence properties.
Practical Impact of corrected = true:
This modification aims to achieve:
Potentially better lag reduction for a similar level of smoothing
A more uniform frequency response across different market cycles
Reduced overshoot or undershoot in trending conditions
Improved signal-to-noise ratio preservation
Essentially, the cube root relationship in the corrected TEMA attempts to optimize the trade-off between responsiveness and smoothness that can be a challenge with uniform alpha values.
🔍 Technical Note: Advanced implementations apply compensation techniques to all three EMA stages, ensuring TEMA values are valid from the first bar without requiring a warm-up period. This compensation corrects initialization bias and prevents calculation errors from compounding through the cascade.
▶️ **Interpretation Details**
TEMA excels at identifying trend changes significantly earlier than traditional moving averages, making it valuable for both entry and exit signals:
When price crosses above TEMA, it often signals the beginning of an uptrend
When price crosses below TEMA, it often signals the beginning of a downtrend
The slope of TEMA provides insight into trend strength and momentum
TEMA crossovers with price tend to occur earlier than with standard EMAs
When multiple-period TEMAs cross each other, they confirm significant trend shifts
TEMA works exceptionally well as a dynamic support/resistance level in trending markets
For optimal results, traders often use TEMA in combination with momentum indicators or volume analysis to confirm signals and reduce false positives.
▶️ **Limitations and Considerations**
Market conditions: The high responsiveness can generate false signals during highly choppy, sideways markets
Overshooting: More aggressive lag reduction leads to more pronounced overshooting during sharp reversals
Parameter sensitivity: Changes in length have more dramatic effects than in simpler moving averages
Calculation complexity: Triple cascaded EMAs make behavior less predictable and more resource-intensive
Complementary tools: Should be used with confirmation tools like RSI, MACD or volume indicators
▶️ **References**
Mulloy, P. (1994). "Smoothing Data with Less Lag," Technical Analysis of Stocks & Commodities .
Mulloy, P. (1995). "Comparing Digital Filters," Technical Analysis of Stocks & Commodities .
[blackcat] L1 Abnormal Volume Monitor█ OVERVIEW
The script is an indicator designed to monitor abnormal volume patterns in the market. It calculates and plots moving average volumes, identifies triple volume bars, and detects potential large order entries based on specific conditions.
█ FEATURES
• Input Parameters: The script defines parameters M1, M2, and lbk which control the calculation of moving averages and the lookback period for detecting abnormal volume.
• Calculations: The script calculates two moving averages of volume (MAVOL1 and MAVOL2), a smoothed price level (mm), and identifies conditions for triple volume bars and large order entries.
• Plotting: The script plots volume histograms for up and down bars, moving average volumes, and highlights triple volume bars with and without large order entries.
• Conditional Statements: The script uses conditional statements to determine when to plot certain data points and labels based on the calculated conditions.
█ LOGICAL FRAMEWORK
• xfl(cond, lbk): This function checks if a condition (cond) has been true within a specified lookback period (lbk). It returns true if the condition has been met and false otherwise.
• Parameters: cond (condition to check), lbk (lookback period).
• Return Value: outb (boolean indicating if the condition was met within the lookback period).
• abnormal_vol_monitor(close, open, high, low, volume, M1, M2, lbk): This function calculates moving average volumes, identifies triple volume bars, and detects large order entries.
• Parameters: close, open, high, low, volume (price and volume data), M1, M2 (periods for moving averages), lbk (lookback period).
• Return Value: A tuple containing MAVOL1, MAVOL2, xa (large order entry condition), and tripleVolume (triple volume condition).
█ KEY POINTS AND TECHNIQUES
• Moving Averages: The script uses simple moving averages (sma) and exponential moving averages (ema) to smooth volume data.
• Volume Analysis: The script identifies triple volume bars and large order entries based on specific conditions, such as volume doubling and price increases.
• Lookback Period: The xfl function uses a lookback period to ensure the accuracy of the detected conditions.
• Plotting Techniques: The script uses different plot styles and colors to distinguish between up bars, down bars, moving averages, and abnormal volume patterns.
█ EXTENDED KNOWLEDGE AND APPLICATIONS
• Modifications: The script could be modified to include additional conditions for detecting other types of abnormal volume patterns or to adjust the sensitivity of the detection.
• Extensions: Similar techniques could be applied to other financial instruments or timeframes to identify unusual trading activity.
• Related Concepts: The script utilizes concepts such as moving averages, exponential moving averages, and conditional plotting, which are fundamental in Pine Script and technical analysis.
Multiple SMA, EMA, and VWAP CrossoversMultiple SMA, EMA, and VWAP Crossovers with Alerts
Overview : The "Multiple SMA, EMA, and VWAP Crossovers" script is designed for traders who want to monitor various simple moving averages (SMAs), exponential moving averages (EMAs), and the volume-weighted average price (VWAP) to identify potential buy and sell opportunities. This script allows you to visualize key moving averages on your chart and create custom alerts for specific crossover events.
Detail s: This script plots the following moving averages:
Simple Moving Averages (SMA): 5, 10, 20, 50, 100, 200, and 325 periods
Exponential Moving Average (EMA): 9 periods
Volume-Weighted Average Price (VWAP)
It includes options to display these moving averages and set alerts for their crossovers.
Available Crossovers:
20/50 SMA, 20/100 SMA, 20/200 SMA, 20/325 SMA
50/100 SMA, 50/200 SMA, 50/325 SMA
100/200 SMA, 100/325 SMA
200/325 SMA
VWAP/20 SMA, VWAP/50 SMA, VWAP/100 SMA, VWAP/200 SMA, VWAP/325 SMA
Optional Lines to Add to the Chart:
9 EMA, 5 SMA, 10 SMA, 20 SMA, 50 SMA, 100 SMA, 200 SMA, 325 SMA, VWAP
How to Use:
Enable Indicators: Use the input options to select which SMAs, EMA, and VWAP you want to display on your chart.
Set Alerts: Choose the specific crossover events you want to monitor. For example, you can set an alert for the 20/50 SMA crossover or the VWAP/100 SMA crossover.
Monitor the Chart: The script will plot the selected moving averages on your chart. When a selected crossover event occurs, an alert will be triggered, notifying you of the potential trade opportunity.
Usage Tips:
Trending Market: Use the buy and sell alerts in trending markets where the moving averages can help confirm the direction of the trend.
Key Support and Resistance Levels: Combine crossover alerts with key support and resistance levels for more reliable trading signals.
Volume Confirmation: Ensure there is sufficient volume to support the crossover signals, indicating stronger momentum behind the move.
When NOT to Use Buy and Sell Alerts:
Low Volume: Avoid using buy and sell alerts during periods of low trading volume, as the signals may be less reliable.
Market Noise: Be cautious in highly volatile markets where frequent crossovers might generate false signals.
Sideways Market: In a sideways or range-bound market, crossover signals can result in multiple whipsaws, leading to potential losses.
Why Use This Script? This script provides a comprehensive tool for traders to monitor multiple moving averages and VWAP crossovers efficiently. It allows you to customize alerts based on your trading strategy and helps you make informed decisions by visualizing key technical indicators on your chart.
Legal Disclaimer: The information provided by this script is for educational and informational purposes only and should not be considered financial advice. The developer of this script is not responsible for any financial losses incurred from using this script.
Ichimoku Wave Oscillator with Custom MAIchimoku Wave Oscillator with Custom MA - Pine Script Description
This script uses various types of moving averages (MA) to implement the concept of Ichimoku wave theory for wave analysis. The user can select from SMA, EMA, WMA, TEMA, SMMA to visualize the difference between short-term, medium-term, and long-term waves, while identifying potential buy and sell signals at crossover points.
Key Features:
MA Type Selection:
The user can select from SMA (Simple Moving Average), EMA (Exponential Moving Average), WMA (Weighted Moving Average), TEMA (Triple Exponential Moving Average), and SMMA (Smoothed Moving Average) to calculate the waves. This script is unique in that it combines TEMA and SMMA, distinguishing it from other simple moving average-based indicators.
TEMA (Triple Exponential Moving Average): Best suited for capturing short-term trends with quick responsiveness.
SMMA (Smoothed Moving Average): Useful for identifying long-term trends with minimal noise, providing more stable signals.
Wave Calculations:
The script calculates three waves: Wave 9-17, Wave 17-26, and Wave 9-26, each of which analyzes different time horizons.
Wave 9-17 (blue): Primarily used for analyzing short-term trends, ideal for detecting quick changes.
Wave 17-26 (red): Used to analyze medium-term trends, providing a more stable market direction.
Wave 9-26 (green): Represents long-term trends, suitable for understanding broader trend shifts.
Baseline (0 Line):
Each wave is visualized around the 0 line, where waves above the line indicate an uptrend and waves below the line indicate a downtrend. This allows for easy identification of trend reversals.
Crossover Signals:
CrossUp: When Wave 9-17 (short-term wave) crosses Wave 17-26 (medium-term wave) upward, it is considered a buy signal, indicating a potential upward trend shift.
CrossDown: When Wave 9-17 (short-term wave) crosses Wave 17-26 downward, it is considered a sell signal, indicating a potential downward trend shift.
Background Color for Signal:
The script visually highlights the signals with background colors. When a buy signal occurs, the background turns green, and when a sell signal occurs, the background turns red. This makes it easier to spot reversal points.
Calculation Method:
The script calculates the difference between moving averages to display the wave oscillation. Wave 9-17, Wave 17-26, and Wave 9-26 represent the difference between the moving averages for different time periods, allowing for analysis of short-term, medium-term, and long-term trends.
Wave 9-17 = MA(9) - MA(17): Represents the difference between the short-term moving averages.
Wave 17-26 = MA(17) - MA(26): Represents the difference between medium-term moving averages.
Wave 9-26 = MA(9) - MA(26): Provides insight into the long-term trend.
This calculation method effectively visualizes the oscillation of waves and helps identify trend reversals at crossover points.
Uniqueness of the Script:
Unlike other moving average-based indicators, this script combines TEMA (Triple Exponential Moving Average) and SMMA (Smoothed Moving Average) to capture both short-term sensitivity and long-term stability in trends. This duality makes the script more versatile for different market conditions.
TEMA is ideal for short-term traders who need quick signals, while SMMA is useful for long-term investors seeking stability and noise reduction. By combining these two, this script provides a more refined analysis of trend changes across various timeframes.
How to Use:
This script is effective for trend analysis and reversal detection. By visualizing the crossover points between the waves, users can spot potential buy and sell signals to make more informed trading decisions.
Scalping strategies can rely on Wave 9-17 to detect quick trend changes, while those looking for medium-term trends can analyze signals from Wave 17-26.
For a broader market overview, Wave 9-26 helps users understand the long-term market trend.
This script is built on the concept of wave theory to anticipate trend changes, making it suitable for various timeframes and strategies. The user can tailor the characteristics of the waves by selecting different MA types, allowing for flexible application across different trading strategies.
Ichimoku Wave Oscillator with Custom MA - Pine Script 설명
이 스크립트는 다양한 이동 평균(MA) 유형을 활용하여 일목 파동론의 개념을 기반으로 파동 분석을 시도하는 지표입니다. 사용자는 SMA, EMA, WMA, TEMA, SMMA 중 원하는 이동 평균을 선택할 수 있으며, 이를 통해 단기, 중기, 장기 파동 간의 차이를 시각화하고, 교차점에서 상승 및 하락 신호를 포착할 수 있습니다.
주요 기능:
이동 평균(MA) 유형 선택:
사용자는 SMA(단순 이동 평균), EMA(지수 이동 평균), WMA(가중 이동 평균), TEMA(삼중 지수 이동 평균), SMMA(평활 이동 평균) 중 하나를 선택하여 파동을 계산할 수 있습니다. 이 스크립트는 TEMA와 SMMA의 독창적인 조합을 통해 기존의 단순한 이동 평균 지표와 차별화됩니다.
TEMA(삼중 지수 이동 평균): 빠른 반응으로 단기 트렌드를 포착하는 데 적합합니다.
SMMA(평활 이동 평균): 장기적인 추세를 파악하는 데 유용하며, 노이즈를 최소화하여 안정적인 신호를 제공합니다.
파동(Wave) 계산:
이 스크립트는 Wave 9-17, Wave 17-26, Wave 9-26의 세 가지 파동을 계산하여 각각 단기, 중기, 장기 추세를 분석합니다.
Wave 9-17 (파란색): 주로 단기 추세를 분석하는 데 사용되며, 빠른 추세 변화를 포착하는 데 유용합니다.
Wave 17-26 (빨간색): 중기 추세를 분석하는 데 사용되며, 좀 더 안정적인 시장 흐름을 보여줍니다.
Wave 9-26 (녹색): 장기 추세를 나타내며, 큰 흐름의 방향성을 파악하는 데 적합합니다.
기준선(0 라인):
각 파동은 0 라인을 기준으로 변동성을 시각화합니다. 0 위에 있는 파동은 상승세, 0 아래에 있는 파동은 하락세를 나타내며, 이를 통해 추세의 전환을 쉽게 확인할 수 있습니다.
파동 교차 신호:
CrossUp: Wave 9-17(단기 파동)이 Wave 17-26(중기 파동)을 상향 교차할 때, 상승 신호로 간주됩니다. 이는 단기적인 추세 변화가 발생할 수 있음을 의미합니다.
CrossDown: Wave 9-17(단기 파동)이 Wave 17-26(중기 파동)을 하향 교차할 때, 하락 신호로 해석됩니다. 이는 시장이 약세로 돌아설 가능성을 나타냅니다.
배경 색상 표시:
교차 신호가 발생할 때, 상승 신호는 녹색 배경, 하락 신호는 빨간색 배경으로 시각적으로 강조되어 사용자가 신호를 쉽게 인식할 수 있습니다.
계산 방식:
이 스크립트는 이동 평균 간의 차이를 계산하여 각 파동의 변동성을 나타냅니다. Wave 9-17, Wave 17-26, Wave 9-26은 각각 설정된 주기의 이동 평균(MA)의 차이를 통해, 시장의 단기, 중기, 장기 추세 변화를 시각적으로 표현합니다.
Wave 9-17 = MA(9) - MA(17): 단기 추세의 차이를 나타냅니다.
Wave 17-26 = MA(17) - MA(26): 중기 추세의 차이를 나타냅니다.
Wave 9-26 = MA(9) - MA(26): 장기적인 추세 방향을 파악할 수 있습니다.
이러한 계산 방식은 파동의 변동성을 파악하는 데 유용하며, 추세의 교차점을 통해 상승/하락 신호를 잡아냅니다.
스크립트의 독창성:
이 스크립트는 기존의 이동 평균 기반 지표들과 달리, TEMA(삼중 지수 이동 평균)와 SMMA(평활 이동 평균)을 함께 사용하여 짧은 주기와 긴 주기의 트렌드를 동시에 파악할 수 있도록 설계되었습니다. 이를 통해 단기 트렌드의 민감한 변화와 장기 트렌드의 안정성을 모두 반영합니다.
TEMA는 단기 트레이더에게 빠르고 민첩한 신호를 제공하며, SMMA는 장기 투자자에게 보다 안정적이고 긴 호흡의 트렌드를 파악하는 데 유리합니다. 두 지표의 결합으로, 다양한 시장 환경에서 추세의 변화를 더 정교하게 분석할 수 있습니다.
사용 방법:
이 스크립트는 추세 분석과 변곡점 포착에 효과적입니다. 각 파동 간의 교차점을 시각적으로 확인하고, 상승 또는 하락 신호를 포착하여 매매 시점 결정을 도울 수 있습니다.
스캘핑 전략에서는 Wave 9-17을 주로 참고하여 빠르게 추세 변화를 잡아내고, 중기 추세를 참고하고 싶은 경우 Wave 17-26을 사용해 신호를 분석할 수 있습니다.
장기적인 시장 흐름을 파악하고자 할 때는 Wave 9-26을 통해 큰 트렌드를 확인할 수 있습니다.
이 스크립트는 파동 이론의 개념을 기반으로 시장의 추세 변화를 예측하는 데 유용하며, 다양한 시간대와 전략에 맞추어 사용할 수 있습니다. 특히, 사용자가 선택한 MA 유형에 따라 파동의 특성을 변화시킬 수 있어, 여러 매매 전략에 유연하게 대응할 수 있습니다.
Combined IndicatorSummary
This custom Pine Script combines three main indicators into one, each with its own functionalities and visual cues. It provides a comprehensive approach to trend analysis by integrating short-term, medium-term, and long-term indicators. Each part of the indicator can be toggled on or off independently to suit the trader’s needs.
Part 1: EMA 14 and EMA 200
Purpose: This part of the indicator is designed to identify short-term and long-term trends using Exponential Moving Averages (EMA). It helps traders spot potential entry and exit points based on the relationship between short-term and long-term moving averages.
Visuals:
• EMA 14: Plotted in blue (#2962ff)
• EMA 200: Plotted in red (#f23645)
Signals:
• Long Signal: Generated when EMA 14 crosses above EMA 200, indicating a potential upward trend.
• Short Signal: Generated when EMA 14 crosses below EMA 200, indicating a potential downward trend.
Usage: Toggle this part on or off using the checkbox input to focus on short-term vs. long-term trends.
Part 2: EMA 9 and SMA 20
Purpose: This part combines Exponential and Simple Moving Averages to provide a medium-term trend analysis. It helps smooth out price data and identify potential trend reversals and continuation patterns.
Visuals:
• EMA 9: Plotted in green
• SMA 20: Plotted in dark red
Usage: Toggle this part on or off using the checkbox input to focus on medium-term trends and price smoothing.
Part 3: Golden Cross and Death Cross
Purpose: This part identifies long-term bullish and bearish market conditions using the 50-day and 200-day Simple Moving Averages (SMA). It highlights major trend changes that can inform long-term investment decisions.
Visuals:
• 50-day SMA: Plotted in gold (#ffe600)
• 200-day SMA: Plotted in black
Signals:
• Golden Cross: Generated when the 50-day SMA crosses above the 200-day SMA, indicating a potential long-term upward trend.
• Death Cross: Generated when the 50-day SMA crosses below the 200-day SMA, indicating a potential long-term downward trend.
Usage: Toggle this part on or off using the checkbox input to focus on long-term trend changes.
How to Use
1. Enable/Disable Indicators: Use the checkboxes provided in the input settings to enable or disable each part of the indicator according to your analysis needs.
2. Interpret Signals: Look for crossover events to determine potential entry and exit points based on the relationship between the moving averages.
3. Visual Confirmation: Use the color-coded lines and shape markers on the chart to visually confirm signals and trends.
4. Customize Settings: Adjust the lengths of the EMAs and SMAs in the input settings to suit your trading strategy and the specific asset you are analyzing.
Practical Application
• Short-Term Trading: Use the EMA 14 and EMA 200 signals to identify quick trend changes.
• Medium-Term Trading: Use the EMA 9 and SMA 20 to capture medium-term trends and reversals.
• Long-Term Investing: Monitor the Golden Cross and Death Cross signals to make decisions based on long-term trend changes.
Example of Unique Features
• Integrated Toggle System: Allows users to enable or disable specific parts of the indicator to customize their analysis.
• Multi-Tier Trend Analysis: Combines short-term, medium-term, and long-term indicators to provide a comprehensive view of the market.
Multi-Timeframe MA Levels█ OVERVIEW
This Pine Script is an indicator for displaying multiple moving average (MA) levels from several timeframes on your TradingView charts. At the Realtime Bar (the right-most bar on your chart), it draws a line where the various moving averages currently are.
For example, it will show you where the 8 EMA on the 5 minute timeframe is on your 1-minute timeframe chart.
It derives its look and function from "Lepelle's Key Levels" and focuses on visualizing various moving averages to complement this indicator.
█ FEATURES
1 — Multi-Timeframe Analysis:
• The script allows traders to view moving averages from different timeframes on a single chart.
This multi-timeframe approach helps identify significant levels and trends that might not be apparent when looking at a single timeframe.
2 — Customization and Flexibility:
• Extensive input options for customizing the appearance of the lines (width, style, color) and labels (size, position, distance from price).
This ensures that the indicator can be tailored to individual preferences and charting styles.
3 — Multiple Moving Averages:
• Support for various types of moving averages (8 EMA, 21 EMA, 50 SMA, 100 SMA, 200 SMA).
Each moving average can be individually enabled or disabled for specific timeframes,
providing a flexible tool for technical analysis.
█ SETTINGS
Inputs for Styling:
• Controls the appearance of the lines and labels.
• Includes options for line width, line style, text size, distance from the candlesticks, label position,
and whether to hide prices or use shorthand notation.
Moving Averages Settings:
• Inputs to select different moving averages (8 EMA, 21 EMA, 50 SMA, 100 SMA, 200 SMA) and their corresponding colors.
• Boolean inputs to enable or disable these moving averages on various timeframes (2 min, 5 min, hourly, daily).
█ SUMMARY
In essence, this script provides a comprehensive tool for technical analysis by combining multi-timeframe moving averages into a single, customizable, and user-friendly indicator. It enhances traders' ability to make informed decisions by providing clear visual representations of key moving average levels across different timeframes.
═════════════════════════════════════════════════════════════
█ LIMITATIONS
This script is best used with a short timeframe such as 1-minute or lower because of the limitations of Multi-Timeframe scripts. Basically, the alternate timeframes in use should always be higher than the chart timeframe.
═════════════════════════════════════════════════════════════
█ NOTES
This indicator is intended to complement and be used with "Lepelle's Key Levels" indicator.
In that indictor settings, I recommend turning off the 5 Daily timeframe moving average levels in that script, if using this one.
═════════════════════════════════════════════════════════════
Goertzel Adaptive JMA T3Hello Fellas,
The Goertzel Adaptive JMA T3 is a powerful indicator that combines my own created Goertzel adaptive length with Jurik and T3 Moving Averages. The primary intention of the indicator is to demonstrate the new adaptive length algorithm by applying it on bleeding-edge MAs.
It is useable like any moving average, and the new Goertzel adaptive length algorithm can be used to make own indicators Goertzel adaptive.
Used Adaptive Length Algorithms
Normalized Goertzel Power: This uses the normalized power of the Goertzel algorithm to compute an adaptive length without the special operations, like detrending, Ehlers uses for his DFT adaptive length.
Ehlers Mod: This uses the Goertzel algorithm instead of the DFT, originally used by Ehlers, to compute a modified version of his original approach, which sticks as close as possible to the original approach.
Scoring System
The scoring system determines if bars are red or green and collects them.
Then, it goes through all collected red and green bars and checks how big they are and if they are above or below the selected MA. It is positive when green bars are under MA or when red bars are above MA.
Then, it accumulates the size for all positive green bars and for all positive red bars. The same happens for negative green and red bars.
Finally, it calculates the score by ((positiveGreenBars + positiveRedBars) / (negativeGreenBars + negativeRedBars)) * 100 with the scale 0–100.
Signals
Is the price above MA? -> bullish market
Is the price below MA? -> bearish market
Usage
Adjust the settings to reach the highest score, and enjoy an outstanding adaptive MA.
It should be useable on all timeframes. It is recommended to use the indicator on the timeframe where you can get the highest score.
Now, follows a bunch of knowledge for people who don't know about the concepts used here.
T3
The T3 moving average, short for "Tim Tillson's Triple Exponential Moving Average," is a technical indicator used in financial markets and technical analysis to smooth out price data over a specific period. It was developed by Tim Tillson, a software project manager at Hewlett-Packard, with expertise in Mathematics and Computer Science.
The T3 moving average is an enhancement of the traditional Exponential Moving Average (EMA) and aims to overcome some of its limitations. The primary goal of the T3 moving average is to provide a smoother representation of price trends while minimizing lag compared to other moving averages like Simple Moving Average (SMA), Weighted Moving Average (WMA), or EMA.
To compute the T3 moving average, it involves a triple smoothing process using exponential moving averages. Here's how it works:
Calculate the first exponential moving average (EMA1) of the price data over a specific period 'n.'
Calculate the second exponential moving average (EMA2) of EMA1 using the same period 'n.'
Calculate the third exponential moving average (EMA3) of EMA2 using the same period 'n.'
The formula for the T3 moving average is as follows:
T3 = 3 * (EMA1) - 3 * (EMA2) + (EMA3)
By applying this triple smoothing process, the T3 moving average is intended to offer reduced noise and improved responsiveness to price trends. It achieves this by incorporating multiple time frames of the exponential moving averages, resulting in a more accurate representation of the underlying price action.
JMA
The Jurik Moving Average (JMA) is a technical indicator used in trading to predict price direction. Developed by Mark Jurik, it’s a type of weighted moving average that gives more weight to recent market data rather than past historical data.
JMA is known for its superior noise elimination. It’s a causal, nonlinear, and adaptive filter, meaning it responds to changes in price action without introducing unnecessary lag. This makes JMA a world-class moving average that tracks and smooths price charts or any market-related time series with surprising agility.
In comparison to other moving averages, such as the Exponential Moving Average (EMA), JMA is known to track fast price movement more accurately. This allows traders to apply their strategies to a more accurate picture of price action.
Goertzel Algorithm
The Goertzel algorithm is a technique in digital signal processing (DSP) for efficient evaluation of individual terms of the Discrete Fourier Transform (DFT). It's particularly useful when you need to compute a small number of selected frequency components. Unlike direct DFT calculations, the Goertzel algorithm applies a single real-valued coefficient at each iteration, using real-valued arithmetic for real-valued input sequences. This makes it more numerically efficient when computing a small number of selected frequency components¹.
Discrete Fourier Transform
The Discrete Fourier Transform (DFT) is a mathematical technique used in signal processing to convert a finite sequence of equally-spaced samples of a function into a same-length sequence of equally-spaced samples of the discrete-time Fourier transform (DTFT), which is a complex-valued function of frequency . The DFT provides a frequency domain representation of the original input sequence .
Usage of DFT/Goertzel In Adaptive Length Algorithms
Adaptive length algorithms are automated trading systems that can dynamically adjust their parameters in response to real-time market data. This adaptability enables them to optimize their trading strategies as market conditions fluctuate. Both the Goertzel algorithm and DFT can be used in these algorithms to analyze market data and detect cycles or patterns, which can then be used to adjust the parameters of the trading strategy.
The Goertzel algorithm is more efficient than the DFT when you need to compute a small number of selected frequency components. However, for covering a full spectrum, the Goertzel algorithm has a higher order of complexity than fast Fourier transform (FFT) algorithms.
I hope this can help you somehow.
Thanks for reading, and keep it up.
Best regards,
simwai
---
Credits to:
@ClassicScott
@yatrader2
@cheatcountry
@loxx
High/Low of week: Stats & Day of Week tendencies// Purpose:
-To show High of Week (HoW) day and Low of week (LoW) day frequencies/percentages for an asset.
-To further analyze Day of Week (DoW) tendencies based on averaged data from all various custom weeks. Giving a more reliable measure of DoW tendencies ('Meta Averages').
-To backtest day-of-week tendencies: across all asset history or across custom user input periods (i.e. consolidation vs trending periods).
-Education: to see how how data from a 'hard-defined-week' may be misleading when seeking statistical evidence of DoW tendencies.
// Notes & Tips:
-Only designed for use on DAILY timeframe.
-Verification table is to make sure HoW / LoW DAY (referencing previous finished week) is printing correctly and therefore the stats table is populating correctly.
-Generally, leaving Timezone input set to "America/New_York" is best, regardless of your asset or your chart timezone. But if misaligned by 1 day =>> tweak this timezone input to correct
-If you want to use manual backtesting period (e.g. for testing consolidation periods vs trending periods): toggle these settings on, then click the indicator display line three dots >> 'Reset Points' to quickly set start & end dates.
// On custom week start days:
-For assets like BTC which trade 7 days a week, this is quite simple. Pick custom start day, use verification table to check all is well. See the start week day & time in said verification table.
-For traditional assets like S&P which trade only 5 days a week and suffer from occasional Holidays, this is a bit more complicated. If the custom start day input is a bank holiday, its custom 'week' will be discounted from the data set. E.g.1: if you choose 'use custom start day' and set it to Monday, then bank holiday Monday weeks will be discounted from the data set. E.g.2: If you choose 'use custom start day' and set it to Thursday, then the Holiday Thursday custom week (e.g Thanksgiving Thursday >> following Weds) would be discounted from the data set.
// On 'Meta Averages':
-The idea is to try and mitigate out the 'continuation bias' that comes from having a fixed week start/end time: i.e. sometimes a market is trending through the week start/end time, so the start/end day stats are over-weighted if one is trying to tease out typical weekly profile tendencies or typical DoW tendencies. You'll notice this if you compare the stats with various custom start days ('bookend' start/end days are always more heavily weighted). I wanted to try to mitigate out this 'bias' by cycling through all the possible new week start/end days and taking an average of the results. i.e. on BTC/USD the 'meta average' for Tuesday would be the average of the Tuesday HoW frequencies from the set of all 7 possible custom weeks(Mon-Sun, Tues-Mon, Weds-Tues, etc etc).
// User Inputs:
~Week Start:
-use custom week start day (default toggled OFF); Choose custom week start day
-show Meta Averages (default toggled ON)
~Verification Table:
-show table, show new week lines, number of new week lines to show
-table formatting options (position, color, size)
-timezone (only for tweaking if printed DoW is misaligned by 1 day)
~Statistics Table:
-show table, table formatting options (position, color, size)
~Manual Backtesting:
-Use start date (default toggled OFF), choose start date, choose vline color
-Use end date (defautl toggled OFF), choose end date, choose vline color
// Demo charts:
NQ1! (Nasdaq), Full History, Traditional week (Mon>>Friday) stats. And Meta Averages. Annotations in purple:
NQ1! (Nasdaq), Full History, Custom week (custom start day = Wednesday). And Meta Averages. Annotations in purple:
Machine Learning : Cosine Similarity & Euclidean DistanceIntroduction:
This script implements a comprehensive trading strategy that adheres to the established rules and guidelines of housing trading. It leverages advanced machine learning techniques and incorporates customised moving averages, including the Conceptive Price Moving Average (CPMA), to provide accurate signals for informed trading decisions in the housing market. Additionally, signal processing techniques such as Lorentzian, Euclidean distance, Cosine similarity, Know sure thing, Rational Quadratic, and sigmoid transformation are utilised to enhance the signal quality and improve trading accuracy.
Features:
Market Analysis: The script utilizes advanced machine learning methods such as Lorentzian, Euclidean distance, and Cosine similarity to analyse market conditions. These techniques measure the similarity and distance between data points, enabling more precise signal identification and enhancing trading decisions.
Cosine similarity:
Cosine similarity is a measure used to determine the similarity between two vectors, typically in a high-dimensional space. It calculates the cosine of the angle between the vectors, indicating the degree of similarity or dissimilarity.
In the context of trading or signal processing, cosine similarity can be employed to compare the similarity between different data points or signals. The vectors in this case represent the numerical representations of the data points or signals.
Cosine similarity ranges from -1 to 1, with 1 indicating perfect similarity, 0 indicating no similarity, and -1 indicating perfect dissimilarity. A higher cosine similarity value suggests a closer match between the vectors, implying that the signals or data points share similar characteristics.
Lorentzian Classification:
Lorentzian classification is a machine learning algorithm used for classification tasks. It is based on the Lorentzian distance metric, which measures the similarity or dissimilarity between two data points. The Lorentzian distance takes into account the shape of the data distribution and can handle outliers better than other distance metrics.
Euclidean Distance:
Euclidean distance is a distance metric widely used in mathematics and machine learning. It calculates the straight-line distance between two points in Euclidean space. In two-dimensional space, the Euclidean distance between two points (x1, y1) and (x2, y2) is calculated using the formula sqrt((x2 - x1)^2 + (y2 - y1)^2).
Dynamic Time Windows: The script incorporates a dynamic time window function that allows users to define specific time ranges for trading. It checks if the current time falls within the specified window to execute the relevant trading signals.
Custom Moving Averages: The script includes the CPMA, a powerful moving average calculation. Unlike traditional moving averages, the CPMA provides improved support and resistance levels by considering multiple price types and employing a combination of Exponential Moving Averages (EMAs) and Simple Moving Averages (SMAs). Its adaptive nature ensures responsiveness to changes in price trends.
Signal Processing Techniques: The script applies signal processing techniques such as Know sure thing, Rational Quadratic, and sigmoid transformation to enhance the quality of the generated signals. These techniques improve the accuracy and reliability of the trading signals, aiding in making well-informed trading decisions.
Trade Statistics and Metrics: The script provides comprehensive trade statistics and metrics, including total wins, losses, win rate, win-loss ratio, and early signal flips. These metrics offer valuable insights into the performance and effectiveness of the trading strategy.
Usage:
Configuring Time Windows: Users can customize the time windows by specifying the start and finish time ranges according to their trading preferences and local market conditions.
Signal Interpretation: The script generates long and short signals based on the analysis, custom moving averages, and signal processing techniques. Users should pay attention to these signals and take appropriate action, such as entering or exiting trades, depending on their trading strategies.
Trade Statistics: The script continuously tracks and updates trade statistics, providing users with a clear overview of their trading performance. These statistics help users assess the effectiveness of the strategy and make informed decisions.
Conclusion:
With its adherence to housing trading rules, advanced machine learning methods, customized moving averages like the CPMA, and signal processing techniques such as Lorentzian, Euclidean distance, Cosine similarity, Know sure thing, Rational Quadratic, and sigmoid transformation, this script offers users a powerful tool for housing market analysis and trading. By leveraging the provided signals, time windows, and trade statistics, users can enhance their trading strategies and improve their overall trading performance.
Disclaimer:
Please note that while this script incorporates established tradingview housing rules, advanced machine learning techniques, customized moving averages, and signal processing techniques, it should be used for informational purposes only. Users are advised to conduct their own analysis and exercise caution when making trading decisions. The script's performance may vary based on market conditions, user settings, and the accuracy of the machine learning methods and signal processing techniques. The trading platform and developers are not responsible for any financial losses incurred while using this script.
By publishing this script on the platform, traders can benefit from its professional presentation, clear instructions, and the utilisation of advanced machine learning techniques, customised moving averages, and signal processing techniques for enhanced trading signals and accuracy.
I extend my gratitude to TradingView, LUX ALGO, and JDEHORTY for their invaluable contributions to the trading community. Their innovative scripts, meticulous coding patterns, and insightful ideas have profoundly enriched traders' strategies, including my own.
Adaptive Candlestick Pattern Recognition System█ INTRODUCTION
Nearly three years in the making, intermittently worked on in the few spare hours of weekends and time off, this is a passion project I undertook to flesh out my skills as a computer programmer. This script currently recognizes 85 different candlestick patterns ranging from one to five candles in length. It also performs statistical analysis on those patterns to determine prior performance and changes the coloration of those patterns based on that performance. In searching TradingView's script library for scripts similar to this one, I had found a handful. However, when I reviewed the ones which were open source, I did not see many that truly captured the power of PineScrypt or leveraged the way it works to create efficient and reliable code; one of the main driving factors for releasing this 5,000+ line behemoth open sourced.
Please take the time to review this description and source code to utilize this script to its fullest potential.
█ CONCEPTS
This script covers the following topics: Candlestick Theory, Trend Direction, Higher Timeframes, Price Analysis, Statistic Analysis, and Code Design.
Candlestick Theory - This script focuses solely on the concept of Candlestick Theory: arrangements of candlesticks may form certain patterns that can potentially influence the future price action of assets which experience those patterns. A full list of patterns (grouped by pattern length) will be in its own section of this description. This script contains two modes of operation for identifying candlestick patterns, 'CLASSIC' and 'BREAKOUT'.
CLASSIC: In this mode, candlestick patterns will be identified whenever they appear. The user has a wide variety of inputs to manipulate that can change how certain patterns are identified and even enable alerts to notify themselves when these patterns appear. Each pattern selected to appear will have their Profit or Loss (P/L) calculated starting from the first candle open succeeding the pattern to a candle close specified some number of candles ahead. These P/L calculations are then collected for each pattern, and split among partitions of prior price action of the asset the script is currently applied to (more on that in Higher Timeframes ).
BREAKOUT: In this mode, P/L calculations are held off until a breakout direction has been confirmed. The user may specify the number of candles ahead of a pattern's appearance (from one to five) that a pattern has to confirm a breakout in either an upward or downward direction. A breakout is constituted when there is a candle following the appearance of the pattern that closes above/at the highest high of the pattern, or below/at its lowest low. Only then will percent return calculations be performed for the pattern that's been identified, and these percent returns are broken up not only by the partition they had appeared in but also by the breakout direction itself. Patterns which do not breakout in either direction will be ignored, along with having their labels deleted.
In both of these modes, patterns may be overridden. Overrides occur when a smaller pattern has been detected and ends up becoming one (or more) of the candles of a larger pattern. A key example of this would be the Bearish Engulfing and the Three Outside Down patterns. A Three Outside Down necessitates a Bearish Engulfing as the first two candles in it, while the third candle closes lower. When a pattern is overridden, the return for that pattern will no longer be tracked. Overrides will not occur if the tail end of a larger pattern occurs at the beginning of a smaller pattern (Ex: a Bullish Engulfing occurs on the third candle of a Three Outside Down and the candle immediately following that pattern, the Three Outside Down pattern will not be overridden).
Important Functionality Note: These patterns are only searched for at the most recently closed candle, not on the currently closing candle, which creates an offset of one for this script's execution. (SEE LIMITATIONS)
Trend Direction - Many of the patterns require a trend direction prior to their appearance. Noting TradingView's own publication of candlestick patterns, I utilize a similar method for determining trend direction. Moving Averages are used to determine which trend is currently taking place for candlestick patterns to be sought out. The user has access to two Moving Averages which they may individually modify the following for each: Moving Average type (list of 9), their length, width, source values, and all variables associated with two special Moving Averages (Least Squares and Arnaud Legoux).
There are 3 settings for these Moving Averages, the first two switch between the two Moving Averages, and the third uses both. When using individual Moving Averages, the user may select a 'price point' to compare against the Moving Average (default is close). This price point is compared to the Moving Average at the candles prior to the appearance of candle patterns. Meaning: The close compared to the Moving Average two candles behind determines the trend direction used for Candlestick Analysis of one candle patterns; three candles behind for two candle patterns and so on. If the selected price point is above the Moving Average, then the current trend is an 'uptrend', 'downtrend' otherwise.
The third setting using both Moving Averages will compare the lengths of each, and trend direction is determined by the shorter Moving Average compared to the longer one. If the shorter Moving Average is above the longer, then the current trend is an 'uptrend', 'downtrend' otherwise. If the lengths of the Moving Averages are the same, or both Moving Averages are Symmetrical, then MA1 will be used by default. (SEE LIMITATIONS)
Higher Timeframes - This script employs the use of Higher Timeframes with a few request.security calls. The purpose of these calls is strictly for the partitioning of an asset's chart, splitting the returns of patterns into three separate groups. The four inputs in control of this partitioning split the chart based on: A given resolution to grab values from, the length of time in that resolution, and 'Upper' and 'Lower Limits' which split the trading range provided by that length of time in that resolution that forms three separate groups. The default values for these four inputs will partition the current chart by the yearly high-low range where: the 'Upper' partition is the top 20% of that trading range, the 'Middle' partition is 80% to 33% of the trading range, and the 'Lower' partition covers the trading range within 33% of the yearly low.
Patterns which are identified by this script will have their returns grouped together based on which partition they had appeared in. For example, a Bullish Engulfing which occurs within a third of the yearly low will have its return placed separately from a Bullish Engulfing that occurred within 20% of the yearly high. The idea is that certain patterns may perform better or worse depending on when they had occurred during an asset's trading range.
Price Analysis - Price Analysis is a major part of this script's functionality as it can fundamentally change how patterns are shown to the user. The settings related to Price Analysis include setting the number of candles ahead of a pattern's appearance to determine the return of that pattern. In 'BREAKOUT' mode, an additional setting allows the user to specify where the P/L calculation will begin for a pattern that had appeared and confirmed. (SEE LIMITATIONS)
The calculation for percent returns of patterns is illustrated with the following pseudo-code (CLASSIC mode, this is a simplified version of the actual code):
type patternObj
int ID
int partition
type returnsArray
float returns
// No pattern found = na returned
patternObj TEST_VAL = f_FindPattern()
priorTestVal = TEST_VAL
if not na( priorTestVal )
pnlMatrixRow = priorTestVal.ID
pnlMatrixCol = priorTestVal.partition
matrixReturn = matrix.get(PERCENT_RETURNS, pnlMatrixRow, pnlMatrixCol)
percentReturn = ( (close - open ) / open ) * 100%
array.push(matrixReturn.returns, percentReturn)
Statistic Analysis - This script uses Pine's built-in array functions to conduct the Statistic Analysis for patterns. When a pattern is found and its P/L calculation is complete, its return is added to a 'Return Array' User-Defined-Type that contains numerous fields which retain information on a pattern's prior performance. The actual UDT is as follows:
type returnArray
float returns = na
int size = 0
float avg = 0
float median = 0
float stdDev = 0
int polarities = na
All values within this UDT will be updated when a return is added to it (some based on user input). The array.avg , array.median and array.stdev will be ran and saved into their respective fields after a return is placed in the 'returns' array. The 'polarities' integer array is what will be changed based on user input. The user specifies two different percentages that declare 'Positive' and 'Negative' returns for patterns. When a pattern returns above, below, or in between these two values, different indices of this array will be incremented to reflect the kind of return that pattern had just experienced.
These values (plus the full name, partition the pattern occurred in, and a 95% confidence interval of expected returns) will be displayed to the user on the tooltip of the labels that identify patterns. Simply scroll over the pattern label to view each of these values.
Code Design - Overall this script is as much of an art piece as it is functional. Its design features numerous depictions of ASCII Art that illustrate what is being attempted by the functions that identify patterns, and an incalculable amount of time was spent rewriting portions of code to improve its efficiency. Admittedly, this final version is nearly 1,000 lines shorter than a previous version (one which took nearly 30 seconds after compilation to run, and didn't do nearly half of what this version does). The use of UDTs, especially the 'patternObj' one crafted and redesigned from the Hikkake Hunter 2.0 I published last month, played a significant role in making this script run efficiently. There is a slight rigidity in some of this code mainly around pattern IDs which are responsible for displaying the abbreviation for patterns (as well as the full names under the tooltips, and the matrix row position for holding returns), as each is hard-coded to correspond to that pattern.
However, one thing I would like to mention is the extensive use of global variables for pattern detection. Many scripts I had looked over for ideas on how to identify candlestick patterns had the same idea; break the pattern into a set of logical 'true/false' statements derived from historically referencing candle OHLC values. Some scripts which identified upwards of 20 to 30 patterns would reference Pine's built-in OHLC values for each pattern individually, potentially requesting information from TradingView's servers numerous times that could easily be saved into a variable for re-use and only requested once per candle (what this script does).
█ FEATURES
This script features a massive amount of switches, options, floating point values, detection settings, and methods for identifying/tailoring pattern appearances. All modifiable inputs for patterns are grouped together based on the number of candles they contain. Other inputs (like those for statistics settings and coloration) are grouped separately and presented in a way I believe makes the most sense.
Not mentioned above is the coloration settings. One of the aims of this script was to make patterns visually signify their behavior to the user when they are identified. Each pattern has its own collection of returns which are analyzed and compared to the inputs of the user. The user may choose the colors for bullish, neutral, and bearish patterns. They may also choose the minimum number of patterns needed to occur before assigning a color to that pattern based on its behavior; a color for patterns that have not met this minimum number of occurrences yet, and a color for patterns that are still processing in BREAKOUT mode.
There are also an additional three settings which alter the color scheme for patterns: Statistic Point-of-Reference, Adaptive coloring, and Hard Limiting. The Statistic Point-of-Reference decides which value (average or median) will be compared against the 'Negative' and 'Positive Return Tolerance'(s) to guide the coloration of the patterns (or for Adaptive Coloring, the generation of a color gradient).
Adaptive Coloring will have this script produce a gradient that patterns will be colored along. The more bullish or bearish a pattern is, the further along the gradient those patterns will be colored starting from the 'Neutral' color (hard lined at the value of 0%: values above this will be colored bullish, bearish otherwise). When Adaptive Coloring is enabled, this script will request the highest and lowest values (these being the Statistic Point-of-Reference) from the matrix containing all returns and rewrite global variables tied to the negative and positive return tolerances. This means that all patterns identified will be compared with each other to determine bullish/bearishness in Adaptive Coloring.
Hard Limiting will prevent these global variables from being rewritten, so patterns whose Statistic Point-of-Reference exceed the return tolerances will be fully colored the bullish or bearish colors instead of a generated gradient color. (SEE LIMITATIONS)
Apart from the Candle Detection Modes (CLASSIC and BREAKOUT), there's an additional two inputs which modify how this script behaves grouped under a "MASTER DETECTION SETTINGS" tab. These two "Pattern Detection Settings" are 'SWITCHBOARD' and 'TARGET MODE'.
SWITCHBOARD: Every single pattern has a switch that is associated with its detection. When a switch is enabled, the code which searches for that pattern will be run. With the Pattern Detection Setting set to this, all patterns that have their switches enabled will be sought out and shown.
TARGET MODE: There is an additional setting which operates on top of 'SWITCHBOARD' that singles out an individual pattern the user specifies through a drop down list. The names of every pattern recognized by this script will be present along with an identifier that shows the number of candles in that pattern (Ex: " (# candles)"). All patterns enabled in the switchboard will still have their returns measured, but only the pattern selected from the "Target Pattern" list will be shown. (SEE LIMITATIONS)
The vast majority of other features are held in the one, two, and three candle pattern sections.
For one-candle patterns, there are:
3 — Settings related to defining 'Tall' candles:
The number of candles to sample for previous candle-size averages.
The type of comparison done for 'Tall' Candles: Settings are 'RANGE' and 'BODY'.
The 'Tolerance' for tall candles, specifying what percent of the 'average' size candles must exceed to be considered 'Tall'.
When 'Tall Candle Setting' is set to RANGE, the high-low ranges are what the current candle range will be compared against to determine if a candle is 'Tall'. Otherwise the candle bodies (absolute value of the close - open) will be compared instead. (SEE LIMITATIONS)
Hammer Tolerance - How large a 'discarded wick' may be before it disqualifies a candle from being a 'Hammer'.
Discarded wicks are compared to the size of the Hammer's candle body and are dependent upon the body's center position. Hammer bodies closer to the high of the candle will have the upper wick used as its 'discarded wick', otherwise the lower wick is used.
9 — Doji Settings, some pulled from an old Doji Hunter I made a while back:
Doji Tolerance - How large the body of a candle may be compared to the range to be considered a 'Doji'.
Ignore N/S Dojis - Turns off Trend Direction for non-special Dojis.
GS/DF Doji Settings - 2 Inputs that enable and specify how large wicks that typically disqualify Dojis from being 'Gravestone' or 'Dragonfly' Dojis may be.
4 Settings related to 'Long Wick Doji' candles detailed below.
A Tolerance for 'Rickshaw Man' Dojis specifying how close the center of the body must be to the range to be valid.
The 4 settings the user may modify for 'Long Legged' Dojis are: A Sample Base for determining the previous average of wicks, a Sample Length specifying how far back to look for these averages, a Behavior Setting to define how 'Long Legged' Dojis are recognized, and a tolerance to specify how large in comparison to the prior wicks a Doji's wicks must be to be considered 'Long Legged'.
The 'Sample Base' list has two settings:
RANGE: The wicks of prior candles are compared to their candle ranges and the 'wick averages' will be what the average percent of ranges were in the sample.
WICKS: The size of the wicks themselves are averaged and returned for comparing against the current wicks of a Doji.
The 'Behavior' list has three settings:
ONE: Only one wick length needs to exceed the average by the tolerance for a Doji to be considered 'Long Legged'.
BOTH: Both wick lengths need to exceed the average of the tolerance of their respective wicks (upper wicks are compared to upper wicks, lower wicks compared to lower) to be considered 'Long Legged'.
AVG: Both wicks and the averages of the previous wicks are added together, divided by two, and compared. If the 'average' of the current wicks exceeds this combined average of prior wicks by the tolerance, then this would constitute a valid 'Long Legged' Doji. (For Dojis in general - SEE LIMITATIONS)
The final input is one related to candle patterns which require a Marubozu candle in them. The two settings for this input are 'INCLUSIVE' and 'EXCLUSIVE'. If INCLUSIVE is selected, any opening/closing variant of Marubozu candles will be allowed in the patterns that require them.
For two-candle patterns, there are:
2 — Settings which define 'Engulfing' parameters:
Engulfing Setting - Two options, RANGE or BODY which sets up how one candle may 'engulf' the previous.
Inclusive Engulfing - Boolean which enables if 'engulfing' candles can be equal to the values needed to 'engulf' the prior candle.
For the 'Engulfing Setting':
RANGE: If the second candle's high-low range completely covers the high-low range of the prior candle, this is recognized as 'engulfing'.
BODY: If the second candle's open-close completely covers the open-close of the previous candle, this is recognized as 'engulfing'. (SEE LIMITATIONS)
4 — Booleans specifying different settings for a few patterns:
One which allows for 'opens within body' patterns to let the second candle's open/close values match the prior candles' open/close.
One which forces 'Kicking' patterns to have a gap if the Marubozu setting is set to 'INCLUSIVE'.
And Two which dictate if the individual candles in 'Stomach' patterns need to be 'Tall'.
8 — Floating point values which affect 11 different patterns:
One which determines the distance the close of the first candle in a 'Hammer Inverted' pattern must be to the low to be considered valid.
One which affects how close the opens/closes need to be for all 'Lines' patterns (Bull/Bear Meeting/Separating Lines).
One that allows some leeway with the 'Matching Low' pattern (gives a small range the second candle close may be within instead of needing to match the previous close).
Three tolerances for On Neck/In Neck patterns (2 and 1 respectively).
A tolerance for the Thrusting pattern which give a range the close the second candle may be between the midpoint and close of the first to be considered 'valid'.
A tolerance for the two Tweezers patterns that specifies how close the highs and lows of the patterns need to be to each other to be 'valid'.
The first On Neck tolerance specifies how large the lower wick of the first candle may be (as a % of that candle's range) before the pattern is invalidated. The second tolerance specifies how far up the lower wick to the close the second candle's close may be for this pattern. The third tolerance for the In Neck pattern determines how far into the body of the first candle the second may close to be 'valid'.
For the remaining patterns (3, 4, and 5 candles), there are:
3 — Settings for the Deliberation pattern:
A boolean which forces the open of the third candle to gap above the close of the second.
A tolerance which changes the proximity of the third candle's open to the second candle's close in this pattern.
A tolerance that sets the maximum size the third candle may be compared to the average of the first two candles.
One boolean value for the Two Crows patterns (standard and Upside Gapping) that forces the first two candles in the patterns to completely gap if disabled (candle 1's close < candle 2's low).
10 — Floating point values for the remaining patterns:
One tolerance for defining how much the size of each candle in the Identical Black Crows pattern may deviate from the average of themselves to be considered valid.
One tolerance for setting how close the opens/closes of certain three candle patterns may be to each other's opens/closes.*
Three floating point values that affect the Three Stars in the South pattern.
One tolerance for the Side-by-Side patterns - looks at the second and third candle closes.
One tolerance for the Stick Sandwich pattern - looks at the first and third candle closes.
A floating value that sizes the Concealing Baby Swallow pattern's 3rd candle wick.
Two values for the Ladder Bottom pattern which define a range that the third candle's wick size may be.
* This affects the Three Black Crows (non-identical) and Three White Soldiers patterns, each require the opens and closes of every candle to be near each other.
The first tolerance of the Three Stars in the South pattern affects the first candle body's center position, and defines where it must be above to be considered valid. The second tolerance specifies how close the second candle must be to this same position, as well as the deviation the ratio the candle body to its range may be in comparison to the first candle. The third restricts how large the second candle range may be in comparison to the first (prevents this pattern from being recognized if the second candle is similar to the first but larger).
The last two floating point values define upper and lower limits to the wick size of a Ladder Bottom's fourth candle to be considered valid.
█ HOW TO USE
While there are many moving parts to this script, I attempted to set the default values with what I believed may help identify the most patterns within reasonable definitions. When this script is applied to a chart, the Candle Detection Mode (along with the BREAKOUT settings) and all candle switches must be confirmed before patterns are displayed. All switches are on by default, so this gives the user an opportunity to pick which patterns to identify first before playing around in the settings.
All of the settings/inputs described above are meant for experimentation. I encourage the user to tweak these values at will to find which set ups work best for whichever charts they decide to apply these patterns to.
Refer to the patterns themselves during experimentation. The statistic information provided on the tooltips of the patterns are meant to help guide input decisions. The breadth of candlestick theory is deep, and this was an attempt at capturing what I could in its sea of information.
█ LIMITATIONS
DISCLAIMER: While it may seem a bit paradoxical that this script aims to use past performance to potentially measure future results, past performance is not indicative of future results . Markets are highly adaptive and often unpredictable. This script is meant as an informational tool to show how patterns may behave. There is no guarantee that confidence intervals (or any other metric measured with this script) are accurate to the performance of patterns; caution must be exercised with all patterns identified regardless of how much information regarding prior performance is available.
Candlestick Theory - In the name, Candlestick Theory is a theory , and all theories come with their own limits. Some patterns identified by this script may be completely useless/unprofitable/unpredictable regardless of whatever combination of settings are used to identify them. However, if I truly believed this theory had no merit, this script would not exist. It is important to understand that this is a tool meant to be utilized with an array of others to procure positive (or negative, looking at you, short sellers ) results when navigating the complex world of finance.
To address the functionality note however, this script has an offset of 1 by default. Patterns will not be identified on the currently closing candle, only on the candle which has most recently closed. Attempting to have this script do both (offset by one or identify on close) lead to more trouble than it was worth. I personally just want users to be aware that patterns will not be identified immediately when they appear.
Trend Direction - Moving Averages - There is a small quirk with how MA settings will be adjusted if the user inputs two moving averages of the same length when the "MA Setting" is set to 'BOTH'. If Moving Averages have the same length, this script will default to only using MA 1 regardless of if the types of Moving Averages are different . I will experiment in the future to alleviate/reduce this restriction.
Price Analysis - BREAKOUT mode - With how identifying patterns with a look-ahead confirmation works, the percent returns for patterns that break out in either direction will be calculated on the same candle regardless of if P/L Offset is set to 'FROM CONFIRMATION' or 'FROM APPEARANCE'. This same issue is present in the Hikkake Hunter script mentioned earlier. This does not mean the P/L calculations are incorrect , the offset for the calculation is set by the number of candles required to confirm the pattern if 'FROM APPEARANCE' is selected. It just means that these two different P/L calculations will complete at the same time independent of the setting that's been selected.
Adaptive Coloring/Hard Limiting - Hard Limiting is only used with Adaptive Coloring and has no effect outside of it. If Hard Limiting is used, it is recommended to increase the 'Positive' and 'Negative' return tolerance values as a pattern's bullish/bearishness may be disproportionately represented with the gradient generated under a hard limit.
TARGET MODE - This mode will break rules regarding patterns that are overridden on purpose. If a pattern selected in TARGET mode would have otherwise been absorbed by a larger pattern, it will have that pattern's percent return calculated; potentially leading to duplicate returns being included in the matrix of all returns recognized by this script.
'Tall' Candle Setting - This is a wide-reaching setting, as approximately 30 different patterns or so rely on defining 'Tall' candles. Changing how 'Tall' candles are defined whether by the tolerance value those candles need to exceed or by the values of the candle used for the baseline comparison (RANGE/BODY) can wildly affect how this script functions under certain conditions. Refer to the tooltip of these settings for more information on which specific patterns are affected by this.
Doji Settings - There are roughly 10 or so two to three candle patterns which have Dojis as a part of them. If all Dojis are disabled, it will prevent some of these larger patterns from being recognized. This is a dependency issue that I may address in the future.
'Engulfing' Setting - Functionally, the two 'Engulfing' settings are quite different. Because of this, the 'RANGE' setting may cause certain patterns that would otherwise be valid under textbook and online references/definitions to not be recognized as such (like the Upside Gap Two Crows or Three Outside down).
█ PATTERN LIST
This script recognizes 85 patterns upon initial release. I am open to adding additional patterns to it in the future and any comments/suggestions are appreciated. It recognizes:
15 — 1 Candle Patterns
4 Hammer type patterns: Regular Hammer, Takuri Line, Shooting Star, and Hanging Man
9 Doji Candles: Regular Dojis, Northern/Southern Dojis, Gravestone/Dragonfly Dojis, Gapping Up/Down Dojis, and Long-Legged/Rickshaw Man Dojis
White/Black Long Days
32 — 2 Candle Patterns
4 Engulfing type patterns: Bullish/Bearish Engulfing and Last Engulfing Top/Bottom
Dark Cloud Cover
Bullish/Bearish Doji Star patterns
Hammer Inverted
Bullish/Bearish Haramis + Cross variants
Homing Pigeon
Bullish/Bearish Kicking
4 Lines type patterns: Bullish/Bearish Meeting/Separating Lines
Matching Low
On/In Neck patterns
Piercing pattern
Shooting Star (2 Lines)
Above/Below Stomach patterns
Thrusting
Tweezers Top/Bottom patterns
Two Black Gapping
Rising/Falling Window patterns
29 — 3 Candle Patterns
Bullish/Bearish Abandoned Baby patterns
Advance Block
Collapsing Doji Star
Deliberation
Upside/Downside Gap Three Methods patterns
Three Inside/Outside Up/Down patterns (4 total)
Bullish/Bearish Side-by-Side patterns
Morning/Evening Star patterns + Doji variants
Stick Sandwich
Downside/Upside Tasuki Gap patterns
Three Black Crows + Identical variation
Three White Soldiers
Three Stars in the South
Bullish/Bearish Tri-Star patterns
Two Crows + Upside Gap variant
Unique Three River Bottom
3 — 4 Candle Patterns
Concealing Baby Swallow
Bullish/Bearish Three Line Strike patterns
6 — 5 Candle Patterns
Bullish/Bearish Breakaway patterns
Ladder Bottom
Mat Hold
Rising/Falling Three Methods patterns
█ WORKS CITED
Because of the amount of time needed to complete this script, I am unable to provide exact dates for when some of these references were used. I will also not provide every single reference, as citing a reference for each individual pattern and the place it was reviewed would lead to a bibliography larger than this script and its description combined. There were five major resources I used when building this script, one book, two websites (for various different reasons including patterns, moving averages, and various other articles of information), various scripts from TradingView's public library (including TradingView's own source code for *all* candle patterns ), and PineScrypt's reference manual.
Bulkowski, Thomas N. Encyclopedia of Candlestick Patterns . Hoboken, New Jersey: John Wiley & Sons Inc., 2008. E-book (google books).
Various. Numerous webpages. CandleScanner . 2023. online. Accessed 2020 - 2023.
Various. Numerous webpages. Investopedia . 2023. online. Accessed 2020 - 2023.
█ AKNOWLEDGEMENTS
I want to take the time here to thank all of my friends and family, both online and in real life, for the support they've given me over the last few years in this endeavor. My pets who tried their hardest to keep me from completing it. And work for the grit to continue pushing through until this script's completion.
This belongs to me just as much as it does anyone else. Whether you are an institutional trader, gold bug hedging against the dollar, retail ape who got in on a squeeze, or just parents trying to grow their retirement/save for the kids. This belongs to everyone.
Private Beta for new features to be tested can be found here .
Vires In Numeris
Quad MAFor a dive into the fine details, see the source code/documentation.
Quad MA is a program designed to allow a wide range of flexibility in overlaying multiple moving averages onto a chart.
This program handles the ability to:
- Overlay Up to 4 moving averages on the chart.
- Change the length of each moving average.
- Adjust optional values for special moving averages
(least squares and Arnaud Legoux)
- Change the color for each moving average.
- Change the type of each moving average individually.
- Change the visibility of each moving average.
- Change the source of the moving averages.
- Set alerts for a cross between any two moving averages.
Candle Information Panel//This indicator shows Day's candle measurements with past averages. First column shows the candle details for the present day.
//"Open - Low", "High - Open", "Range(=High-low)", "Body(open-close)"
//Averages are calculated for occurences of Green and Red days. Up Averages are for Green days and Down Averages are for Red days.
//Average are not perfect calculations since occurences(of Red or Green) will vary within the timespan used for averages.
//This can used to guage general sense of probability of the price movement.
//e.g. if the Open to Low for a day exceeds UpAv value, then there is higher likelihood of day being Red.
//similarly, trade can be held in expectation of price reaching the DnAv and stop loss can be trailed accordingly.
//Not a perfect system. But something to work on further to increase price action understanding.
//Be careful on days where consecutive 3rd Highest High or Lowest Low day is made and also on the next day after such day. Prices may turn direction at least for a short while.
Complete Credit goes to @pinecoders who gave me the main script on tradingview chat room.






















