Uptrick: Z-Score FlowOverview
Uptrick: Z-Score Flow is a technical indicator that integrates trend-sensitive momentum analysi s with mean-reversion logic derived from Z-Score calculations. Its primary objective is to identify market conditions where price has either stretched too far from its mean (overbought or oversold) or sits at a statistically “normal” range, and then cross-reference this observation with trend direction and RSI-based momentum signals. The result is a more contextual approach to trade entry and exit, emphasizing precision, clarity, and adaptability across varying market regimes.
Introduction
Financial instruments frequently transition between trending modes, where price extends strongly in one direction, and ranging modes, where price oscillates around a central value. A simple statistical measure like Z-Score can highlight price extremes by comparing the current price against its historical mean and standard deviation. However, such extremes alone can be misleading if the broader market structure is trending forcefully. Uptrick: Z-Score Flow aims to solve this gap by combining Z-Score with an exponential moving average (EMA) trend filter and a smoothed RSI momentum check, thus filtering out signals that contradict the prevailing market environment.
Purpose
The purpose of this script is to help traders pinpoint both mean-reversion opportunities and trend-based pullbacks in a way that is statistically grounded yet still mindful of overarching price action. By pairing Z-Score thresholds with supportive conditions, the script reduces the likelihood of acting on random price spikes or dips and instead focuses on movements that are significant within both historical and current contextual frameworks.
Originality and Uniquness
Layered Signal Verification: Signals require the fulfillment of multiple layers (Z-Score extreme, EMA trend bias, and RSI momentum posture) rather than merely breaching a statistical threshold.
RSI Zone Lockout: Once RSI enters an overbought/oversold zone and triggers a signal, the script locks out subsequent signals until RSI recovers above or below those zones, limiting back-to-back triggers.
Controlled Cooldown: A dedicated cooldown mechanic ensures that the script waits a specified number of bars before issuing a new signal in the opposite direction.
Gradient-Based Visualization: Distinct gradient fills between price and the Z-Mean line enhance readability, showing at a glance whether price is trading above or below its statistical average.
Comprehensive Metrics Panel: An optional on-chart table summarizes the Z-Score’s key metrics, streamlining the process of verifying current statistical extremes, mean levels, and momentum directions.
Why these indicators were merged
Z-Score measurements excel at identifying when price deviates from its mean, but they do not intrinsically reveal whether the market’s trajectory supports a reversion or if price might continue along its trend. The EMA, commonly used for spotting trend directions, offers valuable insight into whether price is predominantly ascending or descending. However, relying solely on a trend filter overlooks the intensity of price moves. RSI then adds a dedicated measure of momentum, helping confirm if the market’s energy aligns with a potential reversal (for example, price is statistically low but RSI suggests looming upward momentum). By uniting these three lenses—Z-Score for statistical context, EMA for trend direction, and RSI for momentum force—the script offers a more comprehensive and adaptable system, aiming to avoid false positives caused by focusing on just one aspect of price behavior.
Calculations
The core calculation begins with a simple moving average (SMA) of price over zLen bars, referred to as the basis. Next, the script computes the standard deviation of price over the same window. Dividing the difference between the current price and the basis by this standard deviation produces the Z-Score, indicating how many standard deviations the price is from its mean. A positive Z-Score reveals price is above its average; a negative reading indicates the opposite.
To detect overall market direction, the script calculates an exponential moving average (emaTrend) over emaTrendLen bars. If price is above this EMA, the script deems the market bullish; if below, it’s considered bearish. For momentum confirmation, the script computes a standard RSI over rsiLen bars, then applies a smoothing EMA over rsiEmaLen bars. This smoothed RSI (rsiEma) is monitored for both its absolute level (oversold or overbought) and its slope (the difference between the current and previous value). Finally, slopeIndex determines how many bars back the script compares the basis to check whether the Z-Mean line is generally rising, falling, or flat, which then informs the coloring scheme on the chart.
Calculations and Rational
Simple Moving Average for Baseline: An SMA is used for the core mean because it places equal weight on each bar in the lookback period. This helps maintain a straightforward interpretation of overbought or oversold conditions in the context of a uniform historical average.
Standard Deviation for Volatility: Standard deviation measures the variability of the data around the mean. By dividing price’s difference from the mean by this value, the Z-Score can highlight whether price is unusually stretched given typical volatility.
Exponential Moving Average for Trend: Unlike an SMA, an EMA places more emphasis on recent data, reacting quicker to new price developments. This quicker response helps the script promptly identify trend shifts, which can be crucial for filtering out signals that go against a strong directional move.
RSI for Momentum Confirmation: RSI is an oscillator that gauges price movement strength by comparing average gains to average losses over a set period. By further smoothing this RSI with another EMA, short-lived oscillations become less influential, making signals more robust.
SlopeIndex for Slope-Based Coloring: To clarify whether the market’s central tendency is rising or falling, the script compares the basis now to its level slopeIndex bars ago. A higher current reading indicates an upward slope; a lower reading, a downward slope; and similar readings, a flat slope. This is visually represented on the chart, providing an immediate sense of the directionality.
Inputs
zLen (Z-Score Period)
Specifies how many bars to include for computing the SMA and standard deviation that form the basis of the Z-Score calculation. Larger values produce smoother but slower signals; smaller values catch quick changes but may generate noise.
emaTrendLen (EMA Trend Filter)
Sets the length of the EMA used to detect the market’s primary direction. This is pivotal for distinguishing whether signals should be considered (price aligning with an uptrend or downtrend) or filtered out.
rsiLen (RSI Length)
Defines the window for the initial RSI calculation. This RSI, when combined with the subsequent smoothing EMA, forms the foundation for momentum-based signal confirmations.
rsiEmaLen (EMA of RSI Period)
Applies an exponential moving average over the RSI readings for additional smoothing. This step helps mitigate rapid RSI fluctuations that might otherwise produce whipsaw signals.
zBuyLevel (Z-Score Buy Threshold)
Determines how negative the Z-Score must be for the script to consider a potential oversold signal. If the Z-Score dives below this threshold (and other criteria are met), a buy signal is generated.
zSellLevel (Z-Score Sell Threshold)
Determines how positive the Z-Score must be for a potential overbought signal. If the Z-Score surpasses this threshold (and other checks are satisfied), a sell signal is generated.
cooldownBars (Cooldown (Bars))
Enforces a bar-based delay between opposite signals. Once a buy signal has fired, the script must wait the specified number of bars before registering a new sell signal, and vice versa.
slopeIndex (Slope Sensitivity (Bars))
Specifies how many bars back the script compares the current basis for slope coloration. A bigger slopeIndex highlights larger directional trends, while a smaller number emphasizes shorter-term shifts.
showMeanLine (Show Z-Score Mean Line)
Enables or disables the plotting of the Z-Mean and its slope-based coloring. Traders who prefer minimal chart clutter may turn this off while still retaining signals.
Features
Statistical Core (Z-Score Detection):
This feature computes the Z-Score by taking the difference between the current price and the basis (SMA) and dividing by the standard deviation. In effect, it translates price fluctuations into a standardized measure that reveals how significant a move is relative to the typical variation seen over the lookback. When the Z-Score crosses predefined thresholds (zBuyLevel for oversold and zSellLevel for overbought), it signals that price could be at an extreme.
How It Works: On each bar, the script updates the SMA and standard deviation. The Z-Score is then refreshed accordingly. Traders can interpret particularly large negative or positive Z-Score values as scenarios where price is abnormally low or high.
EMA Trend Filter:
An EMA over emaTrendLen bars is used to classify the market as bullish if the price is above it and bearish if the price is below it. This classification is applied to the Z-Score signals, accepting them only when they align with the broader price direction.
How It Works: If the script detects a Z-Score below zBuyLevel, it further checks if price is actually in a downtrend (below EMA) before issuing a buy signal. This might seem counterintuitive, but a “downtrend” environment plus an oversold reading often signals a potential bounce or a mean-reversion play. Conversely, for sell signals, the script checks if the market is in an uptrend first. If it is, an overbought reading aligns with potential profit-taking.
RSI Momentum Confirmation with Oversold/Overbought Lockout:
RSI is calculated over rsiLen, then smoothed by an EMA over rsiEmaLen. If this smoothed RSI dips below a certain threshold (for example, 30) and then begins to slope upward, the indicator treats it as a potential sign of recovering momentum. Similarly, if RSI climbs above a certain threshold (for instance, 70) and starts to slope downward, that suggests dwindling momentum. Additionally, once RSI is in these zones, the indicator locks out repetitive signals until RSI fully exits and re-enters those extreme territories.
How It Works: Each bar, the script measures whether RSI has dropped below the oversold threshold (like 30) and has a positive slope. If it does, the buy side is considered “unlocked.” For sell signals, RSI must exceed an overbought threshold (70) and slope downward. The combination of threshold and slope helps confirm that a reversal is genuinely in progress instead of issuing signals while momentum remains weak or stuck in extremes.
Cooldown Mechanism:
The script features a custom bar-based cooldown that prevents issuing new signals in the opposite direction immediately after one is triggered. This helps avoid whipsaw situations where the market quickly flips from oversold to overbought or vice versa.
How It Works: When a buy signal fires, the indicator notes the bar index. If the Z-Score and RSI conditions later suggest a sell, the script compares the current bar index to the last buy signal’s bar index. If the difference is within cooldownBars, the signal is disallowed. This ensures a predefined “quiet period” before switching signals.
Slope-Based Coloring (Z-Mean Line and Shadow):
The script compares the current basis value to its value slopeIndex bars ago. A higher reading now indicates a generally upward slope, while a lower reading indicates a downward slope. The script then shades the Z-Mean line in a corresponding bullish or bearish color, or remains neutral if little change is detected.
How It Works: This slope calculation is refreshingly straightforward: basis – basis . If the result is positive, the line is colored bullish; if negative, it is colored bearish; if approximately zero, it remains neutral. This provides a quick visual cue of the medium-term directional bias.
Gradient Overlays:
With gradient fills, the script highlights where price stands in relation to the Z-Mean. When price is above the basis, a purple-shaded region is painted, visually indicating a “bearish zone” for potential overbought conditions. When price is below, a teal-like overlay is used, suggesting a “bullish zone” for potential oversold conditions.
How It Works: Each bar, the script checks if price is above or below the basis. It then applies a fill between close and basis, using distinct colors to show whether the market is trading above or below its mean. This creates an immediate sense of how extended the market might be.
Buy and Sell Labels (with Alerts):
When a legitimate buy or sell condition passes every check (Z-Score threshold, EMA trend alignment, RSI gating, and cooldown clearance), the script plots a corresponding label directly on the chart. It also fires an alert (if alerts are set up), making it convenient for traders who want timely notifications.
How It Works: If rawBuy or rawSell conditions are met (refined by RSI, EMA trend, and cooldown constraints), the script calls the respective plot function to paint an arrow label on the chart. Alerts are triggered simultaneously, carrying easily recognizable messages.
Metrics Table:
The optional on-chart table (activated by showMetrics) presents real-time Z-Score data, including the current Z-Score, its rolling mean, the maximum and minimum Z-Score values observed over the last zLen bars, a percentile position, and a short-term directional note (rising, falling, or flat).
Current – The present Z-Score reading
Mean – Average Z-Score over the zLen period
Min/Max – Lowest and highest Z-Score values within zLen
Position – Where the current Z-Score sits between the min and max (as a percentile)
Trend – Whether the Z-Score is increasing, decreasing, or flat
Conclusion
Uptrick: Z-Score Flow offers a versatile solution for traders who need a statistically informed perspective on price extremes combined with practical checks for overall trend and momentum. By leveraging a well-defined combination of Z-Score, EMA trend classification, RSI-based momentum gating, slope-based visualization, and a cooldown mechanic, the script reduces the occurrence of false or premature signals. Its gradient fills and optional metrics table contribute further clarity, ensuring that users can quickly assess market posture and make more confident trading decisions in real time.
Disclaimer
This script is intended solely for informational and educational purposes. Trading in any financial market comes with substantial risk, and there is no guarantee of success or the avoidance of loss. Historical performance does not ensure future results. Always conduct thorough research and consider professional guidance prior to making any investment or trading decisions.
In den Scripts nach "ha溢价率" suchen
Bitcoin Polynomial Regression ModelThis is the main version of the script. Click here for the Oscillator part of the script.
💡Why this model was created:
One of the key issues with most existing models, including our own Bitcoin Log Growth Curve Model , is that they often fail to realistically account for diminishing returns. As a result, they may present overly optimistic bull cycle targets (hence, we introduced alternative settings in our previous Bitcoin Log Growth Curve Model).
This new model however, has been built from the ground up with a primary focus on incorporating the principle of diminishing returns. It directly responds to this concept, which has been briefly explored here .
📉The theory of diminishing returns:
This theory suggests that as each four-year market cycle unfolds, volatility gradually decreases, leading to more tempered price movements. It also implies that the price increase from one cycle peak to the next will decrease over time as the asset matures. The same pattern applies to cycle lows and the relationship between tops and bottoms. In essence, these price movements are interconnected and should generally follow a consistent pattern. We believe this model provides a more realistic outlook on bull and bear market cycles.
To better understand this theory, the relationships between cycle tops and bottoms are outlined below:https://www.tradingview.com/x/7Hldzsf2/
🔧Creation of the model:
For those interested in how this model was created, the process is explained here. Otherwise, feel free to skip this section.
This model is based on two separate cubic polynomial regression lines. One for the top price trend and another for the bottom. Both follow the general cubic polynomial function:
ax^3 +bx^2 + cx + d.
In this equation, x represents the weekly bar index minus an offset, while a, b, c, and d are determined through polynomial regression analysis. The input (x, y) values used for the polynomial regression analysis are as follows:
Top regression line (x, y) values:
113, 18.6
240, 1004
451, 19128
655, 65502
Bottom regression line (x, y) values:
103, 2.5
267, 211
471, 3193
676, 16255
The values above correspond to historical Bitcoin cycle tops and bottoms, where x is the weekly bar index and y is the weekly closing price of Bitcoin. The best fit is determined using metrics such as R-squared values, residual error analysis, and visual inspection. While the exact details of this evaluation are beyond the scope of this post, the following optimal parameters were found:
Top regression line parameter values:
a: 0.000202798
b: 0.0872922
c: -30.88805
d: 1827.14113
Bottom regression line parameter values:
a: 0.000138314
b: -0.0768236
c: 13.90555
d: -765.8892
📊Polynomial Regression Oscillator:
This publication also includes the oscillator version of the this model which is displayed at the bottom of the screen. The oscillator applies a logarithmic transformation to the price and the regression lines using the formula log10(x) .
The log-transformed price is then normalized using min-max normalization relative to the log-transformed top and bottom regression line with the formula:
normalized price = log(close) - log(bottom regression line) / log(top regression line) - log(bottom regression line)
This transformation results in a price value between 0 and 1 between both the regression lines. The Oscillator version can be found here.
🔍Interpretation of the Model:
In general, the red area represents a caution zone, as historically, the price has often been near its cycle market top within this range. On the other hand, the green area is considered an area of opportunity, as historically, it has corresponded to the market bottom.
The top regression line serves as a signal for the absolute market cycle peak, while the bottom regression line indicates the absolute market cycle bottom.
Additionally, this model provides a predicted range for Bitcoin's future price movements, which can be used to make extrapolated predictions. We will explore this further below.
🔮Future Predictions:
Finally, let's discuss what this model actually predicts for the potential upcoming market cycle top and the corresponding market cycle bottom. In our previous post here , a cycle interval analysis was performed to predict a likely time window for the next cycle top and bottom:
In the image, it is predicted that the next top-to-top cycle interval will be 208 weeks, which translates to November 3rd, 2025. It is also predicted that the bottom-to-top cycle interval will be 152 weeks, which corresponds to October 13th, 2025. On the macro level, these two dates align quite well. For our prediction, we take the average of these two dates: October 24th 2025. This will be our target date for the bull cycle top.
Now, let's do the same for the upcoming cycle bottom. The bottom-to-bottom cycle interval is predicted to be 205 weeks, which translates to October 19th, 2026, and the top-to-bottom cycle interval is predicted to be 259 weeks, which corresponds to October 26th, 2026. We then take the average of these two dates, predicting a bear cycle bottom date target of October 19th, 2026.
Now that we have our predicted top and bottom cycle date targets, we can simply reference these two dates to our model, giving us the Bitcoin top price prediction in the range of 152,000 in Q4 2025 and a subsequent bottom price prediction in the range of 46,500 in Q4 2026.
For those interested in understanding what this specifically means for the predicted diminishing return top and bottom cycle values, the image below displays these predicted values. The new values are highlighted in yellow:
And of course, keep in mind that these targets are just rough estimates. While we've done our best to estimate these targets through a data-driven approach, markets will always remain unpredictable in nature. What are your targets? Feel free to share them in the comment section below.
Bitcoin Polynomial Regression OscillatorThis is the oscillator version of the script. Click here for the other part of the script.
💡Why this model was created:
One of the key issues with most existing models, including our own Bitcoin Log Growth Curve Model , is that they often fail to realistically account for diminishing returns. As a result, they may present overly optimistic bull cycle targets (hence, we introduced alternative settings in our previous Bitcoin Log Growth Curve Model).
This new model however, has been built from the ground up with a primary focus on incorporating the principle of diminishing returns. It directly responds to this concept, which has been briefly explored here .
📉The theory of diminishing returns:
This theory suggests that as each four-year market cycle unfolds, volatility gradually decreases, leading to more tempered price movements. It also implies that the price increase from one cycle peak to the next will decrease over time as the asset matures. The same pattern applies to cycle lows and the relationship between tops and bottoms. In essence, these price movements are interconnected and should generally follow a consistent pattern. We believe this model provides a more realistic outlook on bull and bear market cycles.
To better understand this theory, the relationships between cycle tops and bottoms are outlined below:https://www.tradingview.com/x/7Hldzsf2/
🔧Creation of the model:
For those interested in how this model was created, the process is explained here. Otherwise, feel free to skip this section.
This model is based on two separate cubic polynomial regression lines. One for the top price trend and another for the bottom. Both follow the general cubic polynomial function:
ax^3 +bx^2 + cx + d.
In this equation, x represents the weekly bar index minus an offset, while a, b, c, and d are determined through polynomial regression analysis. The input (x, y) values used for the polynomial regression analysis are as follows:
Top regression line (x, y) values:
113, 18.6
240, 1004
451, 19128
655, 65502
Bottom regression line (x, y) values:
103, 2.5
267, 211
471, 3193
676, 16255
The values above correspond to historical Bitcoin cycle tops and bottoms, where x is the weekly bar index and y is the weekly closing price of Bitcoin. The best fit is determined using metrics such as R-squared values, residual error analysis, and visual inspection. While the exact details of this evaluation are beyond the scope of this post, the following optimal parameters were found:
Top regression line parameter values:
a: 0.000202798
b: 0.0872922
c: -30.88805
d: 1827.14113
Bottom regression line parameter values:
a: 0.000138314
b: -0.0768236
c: 13.90555
d: -765.8892
📊Polynomial Regression Oscillator:
This publication also includes the oscillator version of the this model which is displayed at the bottom of the screen. The oscillator applies a logarithmic transformation to the price and the regression lines using the formula log10(x) .
The log-transformed price is then normalized using min-max normalization relative to the log-transformed top and bottom regression line with the formula:
normalized price = log(close) - log(bottom regression line) / log(top regression line) - log(bottom regression line)
This transformation results in a price value between 0 and 1 between both the regression lines.
🔍Interpretation of the Model:
In general, the red area represents a caution zone, as historically, the price has often been near its cycle market top within this range. On the other hand, the green area is considered an area of opportunity, as historically, it has corresponded to the market bottom.
The top regression line serves as a signal for the absolute market cycle peak, while the bottom regression line indicates the absolute market cycle bottom.
Additionally, this model provides a predicted range for Bitcoin's future price movements, which can be used to make extrapolated predictions. We will explore this further below.
🔮Future Predictions:
Finally, let's discuss what this model actually predicts for the potential upcoming market cycle top and the corresponding market cycle bottom. In our previous post here , a cycle interval analysis was performed to predict a likely time window for the next cycle top and bottom:
In the image, it is predicted that the next top-to-top cycle interval will be 208 weeks, which translates to November 3rd, 2025. It is also predicted that the bottom-to-top cycle interval will be 152 weeks, which corresponds to October 13th, 2025. On the macro level, these two dates align quite well. For our prediction, we take the average of these two dates: October 24th 2025. This will be our target date for the bull cycle top.
Now, let's do the same for the upcoming cycle bottom. The bottom-to-bottom cycle interval is predicted to be 205 weeks, which translates to October 19th, 2026, and the top-to-bottom cycle interval is predicted to be 259 weeks, which corresponds to October 26th, 2026. We then take the average of these two dates, predicting a bear cycle bottom date target of October 19th, 2026.
Now that we have our predicted top and bottom cycle date targets, we can simply reference these two dates to our model, giving us the Bitcoin top price prediction in the range of 152,000 in Q4 2025 and a subsequent bottom price prediction in the range of 46,500 in Q4 2026.
For those interested in understanding what this specifically means for the predicted diminishing return top and bottom cycle values, the image below displays these predicted values. The new values are highlighted in yellow:
And of course, keep in mind that these targets are just rough estimates. While we've done our best to estimate these targets through a data-driven approach, markets will always remain unpredictable in nature. What are your targets? Feel free to share them in the comment section below.
Dynamic Trend Indicator (DTI) - VWAP FilterThe Dynamic Trend Indicator (DTI) with VWAP Filter is a trend-following indicator.
It aims to identify and follow market trends while minimizing false signals in choppy or ranging markets.
The DTI combines a dynamically adjusted Exponential Moving Average (EMA) with a daily Volume Weighted Average Price (VWAP) confirmation filter and a cooldown mechanism to enhance signal reliability. This indicator is particularly useful for traders on intraday timeframes (e.g., 4-hour charts) who want to align their trades with the broader daily trend while avoiding whipsaws.
Key Features:
Dynamic Trend Line:
The core of the DTI is a trend line calculated using a custom EMA that adjusts its period dynamically based on market conditions.
The period of the EMA is determined by a combination of volatility (measured via ATR) and trend strength (measured via price momentum). In strong trends, the period shortens for faster responsiveness; in weak or ranging markets, it lengthens to reduce noise.
An optional smoothing EMA can be applied to the dynamic trend line to further reduce noise, with a user-defined smoothing length.
Daily VWAP Confirmation Filter:
A daily VWAP is calculated to provide a higher-timeframe trend bias. VWAP represents the average price paid for an asset during the day, weighted by volume, and is often used as a benchmark by institutional traders.
Buy signals are only generated when the price is above the daily VWAP (indicating a bullish daily bias), and sell signals are only generated when the price is below the VWAP (indicating a bearish daily bias).
The VWAP resets at the start of each day, ensuring it reflects the current day’s trading activity.
Cooldown Mechanism:
To prevent rapid signal reversals (whipsaws), the indicator includes a cooldown period between signals. After a buy or sell signal is generated, no new signals can be generated for a user-defined number of bars (default: 5 bars).
This helps filter out noise in choppy markets, ensuring signals are spaced out and more likely to align with significant trend changes.
Visual Elements:
Trend Line: Plotted on the chart, colored green when the price is above (uptrend) and red when below (downtrend). A gray color indicates a neutral trend.
Buy/Sell Signals: Displayed as green triangles below the bar for buy signals and red triangles above the bar for sell signals.
Background Coloring: The chart background is shaded green during uptrends and red during downtrends, providing a quick visual cue of the trend direction.
Daily VWAP Line: Optionally plotted as a purple step line, allowing traders to see the VWAP level and its relationship to the price.
Alerts:
The indicator includes built-in alerts for buy and sell signals, triggered when the price crosses the trend line and satisfies the VWAP filter and cooldown conditions.
Alert messages specify whether the signal is a buy or sell and confirm that the VWAP condition was met (e.g., "DTI Buy Signal: Price crossed above trend line and VWAP").
Input Parameters
Base Length (default: 14): The base period for calculating volatility and trend strength, used to adjust the dynamic EMA period.
Volatility Multiplier (default: 1.5): Adjusts the sensitivity of the dynamic period to market volatility (via ATR).
Trend Threshold (default: 0.5): Controls the sensitivity of the dynamic period to trend strength (via price momentum).
Use Smoothing (default: true): Enables/disables smoothing of the trend line with an additional EMA.
Smoothing Length (default: 3): The period for the smoothing EMA, if enabled.
Cooldown Bars (default: 5): The minimum number of bars between consecutive signals, reducing signal frequency in choppy markets.
Show Daily VWAP (default: true): Toggles the display of the daily VWAP line on the chart.
How It Works
Dynamic Trend Line Calculation:
Volatility is measured using the Average True Range (ATR) over the base length, scaled by the volatility multiplier.
Trend strength is calculated as the absolute price momentum (change in price over the base length) divided by the volatility factor.
The dynamic EMA period is adjusted based on the trend strength: stronger trends result in a shorter period (faster response), while weaker trends result in a longer period (more stability). The period is constrained between 5 and 50 to avoid extreme values.
A custom EMA function is used to handle the dynamic period, as Pine Script’s built-in ta.ema() requires a fixed length. The trend line is optionally smoothed with a secondary EMA.
Signal Generation:
A buy signal is generated when the price crosses above the trend line, the price is above the daily VWAP, and the cooldown period has elapsed.
A sell signal is generated when the price crosses below the trend line, the price is below the daily VWAP, and the cooldown period has elapsed.
The cooldown mechanism ensures that signals are not generated too frequently, reducing false signals in ranging markets.
Daily VWAP Calculation:
The VWAP is calculated by accumulating the price-volume product (close * volume) and total volume for the day, resetting at the start of each new day.
The VWAP is then computed as the cumulative price-volume divided by the cumulative volume, providing a volume-weighted average price for the day.
Usage
Timeframe: Best suited for intraday timeframes (e.g., 1-hour, 4-hour) where the daily VWAP provides a higher-timeframe trend bias. It can also be used on daily charts with adjustments to the cooldown period.
Markets: Works well in trending markets (e.g., forex, crypto, stocks) where the dynamic trend line can capture sustained price movements. The VWAP filter helps align signals with the daily trend, making it effective for assets with clear daily biases.
Trading Strategy:
Buy: Enter a long position when a green triangle (buy signal) appears, indicating the price has crossed above the trend line and is above the daily VWAP.
Sell: Enter a short position (or exit a long) when a red triangle (sell signal) appears, indicating the price has crossed below the trend line and is below the daily VWAP.
Use the trend line and VWAP as dynamic support/resistance levels to set stop-losses or take-profit targets.
Backtesting: Use TradingView’s strategy tester to evaluate the indicator’s performance on your chosen market and timeframe, adjusting parameters like cooldown_bars and volatility_mult to optimize for profitability.
Example
On a 4-hour SOLUSDT chart, the DTI with VWAP Filter might show:
An uptrend with the price above the green trend line and above the daily VWAP, generating buy signals as the price continues to rise.
A downtrend where the price falls below the red trend line and the daily VWAP, generating sell signals that align with the bearish daily bias.
During choppy periods, the cooldown mechanism and VWAP filter reduce false signals, ensuring trades are taken only when the price aligns with the daily trend.
Limitations
Lagging Nature: Like all trend-following indicators, the DTI may lag during sharp price reversals, as the dynamic EMA needs time to adjust.
Ranging Markets: While the VWAP filter and cooldown mechanism reduce whipsaws, the indicator may still generate some false signals in strongly ranging markets. Combining it with a trend strength filter (e.g., ADX) can help.
VWAP Dependency: The effectiveness of the VWAP filter depends on the market’s respect for the daily VWAP as a support/resistance level. In markets with low volume or erratic price action, the VWAP may be less reliable.
Potential Improvements
VWAP Buffer: Add a percentage buffer around the VWAP (e.g., require the price to be 1% above/below) to further reduce noise.
Multi-Timeframe VWAP: Incorporate a weekly VWAP for additional trend confirmation on longer timeframes.
Trend Strength Filter: Add an ADX filter to ensure signals are generated only during strong trends (e.g., ADX > 25).
Forex Fire EMA/MA/RSI StrategyEURUSD
The entry method in the Forex Fire EMA/MA/RSI Strategy combines several conditions across two timeframes. Here's a breakdown of how entries are determined:
Long Entry Conditions:
15-Minute Timeframe Conditions:
EMA 13 > EMA 62 (short-term momentum is bullish)
Price > MA 200 (trading above the major trend indicator)
Fast RSI (7) > Slow RSI (28) (momentum is increasing)
Fast RSI > 50 (showing bullish momentum)
Volume is increasing compared to 20-period average
4-Hour Timeframe Confluence:
EMA 13 > EMA 62 (larger timeframe confirms bullish trend)
Price > MA 200 (confirming overall uptrend)
Slow RSI (28) > 40 (showing bullish bias)
Fast RSI > Slow RSI (momentum is supporting the move)
Additional Precision Requirement:
Either EMA 13 has just crossed above EMA 62 (crossover)
OR price has just crossed above MA 200
Short Entry Conditions:
15-Minute Timeframe Conditions:
EMA 13 < EMA 62 (short-term momentum is bearish)
Price < MA 200 (trading below the major trend indicator)
Fast RSI (7) < Slow RSI (28) (momentum is decreasing)
Fast RSI < 50 (showing bearish momentum)
Volume is increasing compared to 20-period average
4-Hour Timeframe Confluence:
EMA 13 < EMA 62 (larger timeframe confirms bearish trend)
Price < MA 200 (confirming overall downtrend)
Slow RSI (28) < 60 (showing bearish bias)
Fast RSI < Slow RSI (momentum is supporting the move)
Additional Precision Requirement:
Either EMA 13 has just crossed under EMA 62 (crossunder)
OR price has just crossed under MA 200
The key aspect of this strategy is that it requires alignment between the shorter timeframe (15m) and the larger timeframe (4h), which helps filter out false signals and focuses on trades that have strong multi-timeframe support. The crossover/crossunder requirement further refines entries by looking for actual changes in direction rather than just conditions that might have been in place for a long time.
Volume Block Order AnalyzerCore Concept
The Volume Block Order Analyzer is a sophisticated Pine Script strategy designed to detect and analyze institutional money flow through large block trades. It identifies unusually high volume candles and evaluates their directional bias to provide clear visual signals of potential market movements.
How It Works: The Mathematical Model
1. Volume Anomaly Detection
The strategy first identifies "block trades" using a statistical approach:
```
avgVolume = ta.sma(volume, lookbackPeriod)
isHighVolume = volume > avgVolume * volumeThreshold
```
This means a candle must have volume exceeding the recent average by a user-defined multiplier (default 2.0x) to be considered a significant block trade.
2. Directional Impact Calculation
For each block trade identified, its price action determines direction:
- Bullish candle (close > open): Positive impact
- Bearish candle (close < open): Negative impact
The magnitude of impact is proportional to the volume size:
```
volumeWeight = volume / avgVolume // How many times larger than average
blockImpact = (isBullish ? 1.0 : -1.0) * (volumeWeight / 10)
```
This creates a normalized impact score typically ranging from -1.0 to 1.0, scaled by dividing by 10 to prevent excessive values.
3. Cumulative Impact with Time Decay
The key innovation is the cumulative impact calculation with decay:
```
cumulativeImpact := cumulativeImpact * impactDecay + blockImpact
```
This mathematical model has important properties:
- Recent block trades have stronger influence than older ones
- Impact gradually "fades" at rate determined by decay factor (default 0.95)
- Sustained directional pressure accumulates over time
- Opposing pressure gradually counteracts previous momentum
Trading Logic
Signal Generation
The strategy generates trading signals based on momentum shifts in institutional order flow:
1. Long Entry Signal: When cumulative impact crosses from negative to positive
```
if ta.crossover(cumulativeImpact, 0)
strategy.entry("Long", strategy.long)
```
*Logic: Institutional buying pressure has overcome selling pressure, indicating potential upward movement*
2. Short Entry Signal: When cumulative impact crosses from positive to negative
```
if ta.crossunder(cumulativeImpact, 0)
strategy.entry("Short", strategy.short)
```
*Logic: Institutional selling pressure has overcome buying pressure, indicating potential downward movement*
3. Exit Logic: Positions are closed when the cumulative impact moves against the position
```
if cumulativeImpact < 0
strategy.close("Long")
```
*Logic: The original signal is no longer valid as institutional flow has reversed*
Visual Interpretation System
The strategy employs multiple visualization techniques:
1. Color Gradient Bar System:
- Deep green: Strong buying pressure (impact > 0.5)
- Light green: Moderate buying pressure (0.1 < impact ≤ 0.5)
- Yellow-green: Mild buying pressure (0 < impact ≤ 0.1)
- Yellow: Neutral (impact = 0)
- Yellow-orange: Mild selling pressure (-0.1 < impact ≤ 0)
- Orange: Moderate selling pressure (-0.5 < impact ≤ -0.1)
- Red: Strong selling pressure (impact ≤ -0.5)
2. Dynamic Impact Line:
- Plots the cumulative impact as a line
- Line color shifts with impact value
- Line movement shows momentum and trend strength
3. Block Trade Labels:
- Marks significant block trades directly on the chart
- Shows direction and volume amount
- Helps identify key moments of institutional activity
4. Information Dashboard:
- Current impact value and signal direction
- Average volume benchmark
- Count of significant block trades
- Min/Max impact range
Benefits and Use Cases
This strategy provides several advantages:
1. Institutional Flow Detection: Identifies where large players are positioning themselves
2. Early Trend Identification: Often detects institutional accumulation/distribution before major price movements
3. Market Context Enhancement: Provides deeper insight than simple price action alone
4. Objective Decision Framework: Quantifies what might otherwise be subjective observations
5. Adaptive to Market Conditions: Works across different timeframes and instruments by using relative volume rather than absolute thresholds
Customization Options
The strategy allows users to fine-tune its behavior:
- Volume Threshold: How unusual a volume spike must be to qualify
- Lookback Period: How far back to measure average volume
- Impact Decay Factor: How quickly older trades lose influence
- Visual Settings: Labels and line width customization
This sophisticated yet intuitive strategy provides traders with a window into institutional activity, helping identify potential trend changes before they become obvious in price action alone.
ZenAlgo - LevelsThis script combines multiple anchored Volume-Weighted Average Price (VWAP) calculations into a single tool, providing a continuous record of past VWAP levels and highlighting when price has tested them. Typically, VWAP indicators show only the current VWAP for a single anchor period, requiring you to either keep re-anchoring manually or juggle multiple instances of different VWAP tools for each timeframe. By contrast, this script automatically tracks both the ongoing VWAP and previously completed VWAP values, along with real-time detection of “tests” (when price crosses a particular VWAP level). It’s especially valuable for traders who want to see how price has interacted with VWAP over several sessions, weeks, or months—without switching between separate indicators or manually setting anchors.
Below is a comprehensive explanation of each component, why multiple VWAP lines working together can be more informative than a single line, and how to adjust the script for various markets and trading styles:
Primary VWAP vs. Historical VWAP Lines - Standard VWAP indicators typically focus on the current line only. This script also calculates a primary VWAP, but it “locks in” each completed VWAP value when a new time anchor is detected (e.g., new weekly bar, new monthly bar, new session). As a result, you retain an ongoing history of VWAP lines for every completed anchored period. This is more powerful than manually setting up multiple VWAP tools—one for each desired timeframe—because everything is handled in a single script. You avoid chart clutter and the risk of forgetting to reset your manual VWAP at the correct bar.
Why Combine Multiple Anchored VWAP Lines in One Script? - Viewing several anchored VWAP lines together offers synergy . You see not only the current VWAP but also previous ones from different sessions or months, all within the same chart pane. This synergy becomes apparent if multiple historical VWAP lines cluster near the same price level, indicating a potentially significant zone of volume-based support or resistance. Handling this manually would involve repeatedly setting separate VWAP indicators, each reset at specific points, which is time-consuming and prone to error. In this script, the process is automated: as soon as the anchor changes, a completed VWAP line is stored so you can observe how price eventually reacts to it, repeatedly or not at all.
Automated “Test” Detection - Once a historical VWAP line is set, the script tracks when price crosses it in subsequent bars. If the high and low of a bar span that line, the script marks it in red (both the line and its label). It also keeps a counter of how many times each line has been tested. This method goes beyond a simple visual approach by quantifying the retests. Because all these lines are created and managed in one place, you don’t have to manually label the lines or check them one by one.
Advantages Over Manually Setting Multiple VWAPs
You save screen space: Instead of layering several VWAP indicators, each with unique settings, this single script plots them all on one overlay.
Automation: When a new anchor period begins, the script “closes out” the old VWAP and starts a new one. You never need to remember to reset it manually.
Retest Visualization: The script not only draws each line but also changes color and updates the label automatically if a line gets tested. Doing this by hand would be labor-intensive.
Unified Parameters: All settings (e.g., array size, max distance, test count limit) apply uniformly. You can manage them from one place, instead of configuring multiple separate tools.
Extended Insight with Multiple VWAP Lines
Since VWAP reflects the volume-weighted average price for each chosen period, historical lines can show zones where the market had a fair-value consensus in previous intervals. When the script preserves these lines, you see potential support/resistance areas more distinctly. If, for instance, price continually pivots around an old VWAP line, that may reveal a strong volume-based level. With several older VWAP lines on the chart, you gain an immediate sense of where these volume-derived averages have appeared and how price reacted over time. This wider perspective often proves more revealing than a single “current” VWAP line that does not reflect previous anchor sessions.
Handling of Illiquid Markets and Volume Limitations
VWAP is inherently tied to volume data, so its reliability decreases if volume reporting is missing or if the asset trades with very low liquidity. In such cases, a single large trade might momentarily skew the VWAP, resulting in “false” test signals when the high/low range intersects an abnormal price swing. If you suspect the data is incomplete or the market is unusually thin, it’s wise to confirm the validity of these VWAP lines before using them for any decision-making. Additionally, unusual market conditions—like after-hours trading or sudden high-volatility events—may cause VWAP to shift quickly, setting up multiple lines in a short time.
Key User-Configurable Settings
Hide VWAP on Day timeframe and above : Lets you disable the primary VWAP plot on daily or higher timeframes for a cleaner view.
Anchor Period : Select from Session, Week, Month, Quarter, Year, Decade or Century. Controls how frequently the script resets and preserves the VWAP line.
Offset : Moves the current VWAP line by a specified number of bars if you need a shifted perspective.
Max Array Size : Caps how many past VWAP lines the script will remember. Prevents clutter if you’re charting very long histories.
Max Distance : Defines how far back (in bar index units) a line is kept. If a line’s start bar is older than this threshold, it’s removed, keeping the chart uncluttered.
Max Red Labels : Limits the number of tested (red) VWAP lines that appear. If price tests a large number of old lines, only the newest red labels remain once you hit the set limit.
Workflow Overview
As soon as a new anchor period begins (e.g., a new weekly candle if “Week” is chosen), the script ends the current VWAP and stores that final value in its internal arrays.
It creates a dotted line and label representing the completed VWAP, and keeps track of whether it has been tested or not.
Subsequent bars may then cross that line. If a bar’s high/low includes the line’s value, it’s flagged as tested, labeled red, and a test counter increases.
As new anchored periods come, old lines remain visible—unless they fall outside your maxDistance or you exceed the maximum stored line count.
Real-World Benefits
Combining multiple VWAP lines—ranging, for example, from session-based lines for intraday perspectives to monthly or quarterly lines for broader context—provides a layered view of the volume-based fair price. This can help you quickly spot zones where price repeatedly intersects old VWAPs, potentially highlighting where bulls or bears took action historically. Because this script automates the management of all these lines and flags their retests, it removes a great deal of repetitive manual work that would typically accompany multiple, separate VWAP indicators set to different anchors.
Limitations & Practical Use
As with any volume-related tool, the script depends on reliable volume data. Assets trading on smaller venues or during illiquid periods may produce spurious signals. The script does not signal buy or sell decisions; rather, it helps visually map out where volume-weighted averages from previous periods might still be relevant to market behavior. Always combine the insight from these historical VWAP lines with your existing analytical approach or other technical and fundamental tools you use.
Conclusion
This script unifies past and present VWAP lines into one overlay, automatically detecting new anchor resets, storing the final VWAP values, and indicating whenever old lines are retested by price. It offers synergy through the simultaneous display of multiple historical VWAP lines, making it quicker and easier to detect potential support/resistance zones and better reflect changing market volumes over time. You no longer need to manually create, configure, or reset multiple VWAP indicators. Instead, the script handles all aspects of line creation, retest detection, and clutter management, giving you a robust framework to observe how historical VWAP data aligns with current price action.
By understanding the significance of multiple anchored VWAP lines, you can assess market structure from multiple angles in a single view. As always, ensure you confirm the reliability of the volume data for your particular asset and use these lines in conjunction with other analyses to form a well-rounded perspective on current market behavior.
[TehThomas] - ICT Liquidity sweepsThe ICT Liquidity Sweeps Indicator is designed to track liquidity zones in the market areas where stop-losses and pending orders are typically clustered. This indicator marks buyside liquidity (resistance) and sellside liquidity (support), helping traders identify areas where price is likely to manipulate liquidity before making a significant move.
This tool is based on Inner Circle Trader (ICT) Smart Money Concepts, which emphasize how institutional traders, or “Smart Money,” manipulate liquidity to fuel price movements. By identifying these zones, traders can anticipate liquidity sweeps and position themselves accordingly.
⚙️ How It Works
1️⃣ Detects Key Liquidity Zones
The script automatically identifies significant swing highs and swing lows in price action using a pivot-based method.
A swing high (buyside liquidity) is a peak where price struggles to break higher, forming a resistance level.
A swing low (sellside liquidity) is a valley where price struggles to go lower, creating a support level.
These liquidity points are prime targets for liquidity sweeps before a true trend direction is confirmed.
2️⃣ Draws Liquidity Lines
Once a swing high or low is identified, a horizontal line is drawn at that level.
The lines extend to the right, serving as future liquidity targets until they are broken.
The indicator allows customization in terms of color, line width, and maximum number of liquidity lines displayed at once.
3️⃣ Handles Liquidity Sweeps
When price breaks a liquidity level, the indicator reacts based on the chosen action setting:
Dotted/Dashed: The line remains visible but changes style to indicate a sweep.
Delete: The line is completely removed once price has interacted with it.
This feature ensures that traders can easily spot where liquidity has been taken and determine whether a reversal or continuation is likely.
4️⃣ Prevents Chart Clutter
To maintain a clean chart, the script limits the number of liquidity lines displayed at any given time.
When new liquidity zones are formed, the oldest lines are automatically removed, keeping the focus on the most relevant liquidity zones.
🎯 How to Use the ICT Liquidity Sweeps Indicator
🔍 Identifying Liquidity Grabs
This indicator helps you identify areas where Smart Money is targeting liquidity before making a move.
Buyside Liquidity (BSL) Sweeps:
Occur when price spikes above a resistance level before reversing downward.
Indicate that Smart Money has hunted stop-losses and buy stops before driving price lower.
Sellside Liquidity (SSL) Sweeps:
Occur when price drops below a support level before reversing upward.
Indicate that Smart Money has collected liquidity from stop-losses and sell stops before pushing price higher.
📈 Combining with Market Structure Shifts (MSS)
One of the best ways to use this indicator is in conjunction with our Market Structure Shifts Indicator.
Liquidity sweeps + MSS Confirmation give strong high-probability trade setups:
Wait for a liquidity sweep (price takes out a liquidity level).
Look for an MSS in the opposite direction (e.g., price sweeps a high, then breaks a recent low).
Enter the trade in the new direction with stop-loss above/below the liquidity sweep.
📊 Entry & Exit Strategies
Long Trade Example:
Price sweeps a key sellside liquidity level (SSL) → creates a false breakdown.
MSS confirms a reversal (price breaks structure upwards).
Enter long position after confirmation.
Stop-loss below the liquidity grab to minimize risk.
Short Trade Example:
Price sweeps a key buyside liquidity level (BSL) → takes liquidity above resistance.
MSS confirms a bearish move (price breaks a key support level).
Enter short position after confirmation.
Stop-loss above the liquidity grab.
🚀 Why This Indicator is a Game-Changer
✅ Helps Identify Smart Money Manipulation – Understand where institutions are likely to grab liquidity before the real move happens.
✅ Enhances Market Structure Analysis – When paired with MSS, liquidity sweeps become powerful signals for trend reversals.
✅ Filters Out False Breakouts – Many traders get caught in liquidity grabs. This indicator helps avoid bad entries.
✅ Keeps Your Chart Clean – The auto-limiting feature ensures that only the most relevant liquidity levels remain visible.
✅ Works on Any Timeframe – Whether you’re a scalper, day trader, or swing trader, liquidity concepts apply universally.
📌 Final Thoughts
The ICT Liquidity Sweeps Indicator is a must-have tool for traders who follow Smart Money Concepts. By tracking liquidity levels and highlighting sweeps, it allows traders to enter trades with precision while avoiding false breakouts.
When combined with Market Structure Shifts (MSS), this strategy becomes even more powerful, offering traders an edge in spotting reversals and timing entries effectively.
__________________________________________
Thanks for your support!
If you found this idea helpful or learned something new, drop a like 👍 and leave a comment—I’d love to hear your thoughts! 🚀
Make sure to follow me for more price action insights, free indicators, and trading strategies. Let’s grow and trade smarter together! 📈✨
Boilerplate Configurable Strategy [Yosiet]This is a Boilerplate Code!
Hello! First of all, let me introduce myself a little bit. I don't come from the world of finance, but from the world of information and communication technologies (ICT) where we specialize in data processing with the aim of automating it and eliminating all human factors and actors in the processes. You could say that I am an algotrader.
That said, in my journey through trading in recent years I have understood that this world is often shown to be incomplete. All those who want to learn about trading only end up learning a small part of what it really entails, they only seek to learn how to read candlesticks. Therefore, I want to share with the entire community a fraction of what I have really understood it to be.
As a computer scientist, the most important thing is the data, it is the raw material of our work and without data you simply cannot do anything. Entropy is simple: Data in -> Data is transformed -> Data out.
The quality of the outgoing data will directly depend on the incoming data, there is no greater mystery or magic in the process. In trading it is no different, because at the end of the day it is nothing more than data. As we often say, if garbage comes in, garbage comes out.
Most people focus on the results only, on the outgoing data, because in the end we all want the same thing, to make easy money. Very few pay attention to the input data, much less to the process.
Now, I am not here to delude you, because there is no bigger lie than easy money, but I am here to give you a boilerplate code that will help you create strategies where you only have to concentrate on the quality of the incoming data.
To the Point
The code is a strategy boilerplate that applies the technique that you decide to customize for the criteria for opening a position. It already has the other factors involved in trading programmed and automated.
1. The Entry
This section of the boilerplate is the one that each individual must customize according to their needs and knowledge. The code is offered with two simple, well-known strategies to exemplify how the code can be reused for your own benefits.
For the purposes of this post on tradingview, I am going to use the simplest of the known strategies in trading for entries: SMA Crossing
// SMA Cross Settings
maFast = ta.sma(close, length)
maSlow = ta.sma(open, length)
The Strategy Properties for all cases published here:
For Stock TSLA H1 From 01/01/2025 To 02/15/2025
For Crypto XMR-USDT 30m From 01/01/2025 To 02/15/2025
For Forex EUR-USD 5m From 01/01/2025 To 02/15/2025
But the goal of this post is not to sell you a dream, else to show you that the same Entry decision works very well for some and does not for others and with this boilerplate code you only have to think of entries, not exits.
2. Schedules, Days, Sessions
As you know, there are an infinite number of markets that are susceptible to the sessions of each country and the news that they announce during those sessions, so the code already offers parameters so that you can condition the days and hours of operation, filter the best time parameters for a specific market and time frame.
3. Data Filtering
The data offered in trading are numerical series presented in vectors on a time axis where an endless number of mathematical equations can be applied to process them, with matrix calculation and non-linear regressions being the best, in my humble opinion.
4. Read Fundamental Macroeconomic Events, News
The boilerplate has integration with the tradingview SDK to detect when news will occur and offers parameters so that you can enable an exclusion time margin to not operate anything during that time window.
5. Direction and Sense
In my experience I have found the peculiarity that the same algorithm works very well for a market in a time frame, but for the same market in another time frame it is only a waste of time and money. So now you can easily decide if you only want to open LONG, SHORT or both side positions and know how effective your strategy really is.
6. Reading the money, THE PURPOSE OF EVERYTHING
The most important section in trading and the reason why many clients usually hire me as a financial programmer, is reading and controlling the money, because in the end everyone wants to win and no one wants to lose. Now they can easily parameterize how the money should flow and this is the genius of this boilerplate, because it is what will really decide if an algorithm (Indicator: A bunch of math equations) for entries will really leave you good money over time.
7. Managing the Risk, The Ego Destroyer
Many trades, little money. Most traders focus on making money and none of them know about statistics and the few who do know something about it, only focus on the winrate. Well, with this code you can unlock what really matters, the true success criteria to be able to live off of trading: Profit Factor, Sortino Ratio, Sharpe Ratio and most importantly, will you really make money?
8. Managing Emotions
Finally, the main reason why many lose money is because they are very bad at managing their emotions, because with this they will no longer need to do so because the boilerplate has already programmed criteria to chase the price in a position, cut losses and maximize profits.
In short, this is a boilerplate code that already has the data processing and data output ready, you only have to worry about the data input.
“And so the trader learned: the greatest edge was not in predicting the storm, but in building a boat that could not sink.”
DISCLAIMER
This post is intended for programmers and quantitative traders who already have a certain level of knowledge and experience. It is not intended to be financial advice or to sell you any money-making script, if you use it, you do so at your own risk.
IU Trailing Stop Loss MethodsThe 'IU Trailing Stop Loss Methods' it's a risk management tool which allows users to apply 12 trailing stop-loss (SL) methods for risk management of their trades and gives live alerts when the trailing Stop loss has hit. Below is a detailed explanation of each input and the working of the Script.
Main Inputs:
- bar_time: Specifies the date from which the trade begins and entry price will be the open of the first candle.
- entry_type: Choose between 'Long' or 'Short' positions.
- trailing_method: Select the trailing stop-loss method. Options include ATR, Parabolic SAR, Supertrend, Point/Pip based, Percentage, EMA, Highest/Lowest, Standard Deviation, and multiple target-based methods.
- exit_after_close: If checked, exits the trade only after the candle closes.
Optional Inputs:
ATR Settings:
- atr_Length: Length for the ATR calculation.
- atr_factor: ATR multiplier for SL calculation.
Parabolic SAR Settings:
- start, increment, maximum: Parameters for the Parabolic SAR indicator.
Supertrend Settings:
- supertrend_Length, supertrend_factor: Length and factor for the Supertrend indicator.
Point/Pip Based:
- point_base: Set trailing SL in points/pips.
Percentage Based:
- percentage_base: Set SL as a percentage of entry price.
EMA Settings:
- ema_Length: Length for EMA calculation.
Standard Deviation Settings:
- std_Length, std_factor: Length and factor for standard deviation calculation.
Highest/Lowest Settings:
- highest_lowest_Length: Length for the highest/lowest SL calculation.
Target-Based Inputs:
- ATR, Point, Percentage, and Standard Deviation based target SL settings with customizable lengths and multipliers.
Entry Logic:
- Trades initiate based on the entry_type selected and the specified bar_time.
- If Long is selected, a long trade is initiated when the conditions match, and vice versa for Short.
Trailing Stop-Loss (SL) Methods Explained:
The strategy dynamically adjusts stop-loss based on the chosen method. Each method has its calculation logic:
- ATR: Stop-loss calculated using ATR multiplied by a user-defined factor.
- Parabolic SAR: Uses the Parabolic SAR indicator for trailing stop-loss.
- Supertrend: Utilizes the Supertrend indicator as the stop-loss line.
- Point/Pip Based: Fixed point-based stop-loss.
- Percentage Based: SL set as a percentage of entry price.
- EMA: SL based on the Exponential Moving Average.
- Highest/Lowest: Uses the highest high or lowest low over a specified period.
- Standard Deviation: SL calculated using standard deviation.
Exit Conditions:
- If exit_after_close is enabled, the position will only close after the candle confirms the stop-loss hit.
- If exit_after_close is disabled, the strategy will close the trade immediately when the SL is breached.
Visualization:
The script plots the chosen trailing stop-loss method on the chart for easy visualization.
Target-Based Trailing SL Logic:
- When a position is opened, the strategy calculates the initial stop-loss and progressively adjusts it as the price moves favorably.
- Each SL adjustment is stored in an array for accurate tracking and visualization.
Alerts and Labels:
- When the Entry or trailing stop loss is hit this scripts draws a label and give alert to the user that trailing stop has been hit for the trade.
Note - on the historical data The Script will show nothing if the entry and the exit has happened on the same candle, because we don't know what was hit first SL or TP (basically how the candle was formed on the lower timeframe).
Summary:
This script offers flexible trailing stop-loss options for traders who want dynamic risk management in their strategies. By offering multiple methods like ATR, SAR, Supertrend, and EMA, it caters to various trading styles and risk preferences.
Bullish Reversal Bar Strategy [Skyrexio]Overview
Bullish Reversal Bar Strategy leverages the combination of candlestick pattern Bullish Reversal Bar (description in Methodology and Justification of Methodology), Williams Alligator indicator and Williams Fractals to create the high probability setups. Candlestick pattern is used for the entering into trade, while the combination of Williams Alligator and Fractals is used for the trend approximation as close condition. Strategy uses only long trades.
Unique Features
No fixed stop-loss and take profit: Instead of fixed stop-loss level strategy utilizes technical condition obtained by Fractals and Alligator or the candlestick pattern invalidation to identify when current uptrend is likely to be over (more information in "Methodology" and "Justification of Methodology" paragraphs)
Configurable Trading Periods: Users can tailor the strategy to specific market windows, adapting to different market conditions.
Trend Trade Filter: strategy uses Alligator and Fractal combination as high probability trend filter.
Methodology
The strategy opens long trade when the following price met the conditions:
1.Current candle's high shall be below the Williams Alligator's lines (Jaw, Lips, Teeth)(all details in "Justification of Methodology" paragraph)
2.Price shall create the candlestick pattern "Bullish Reversal Bar". Optionally if MFI and AO filters are enabled current candle shall have the decreasing AO and at least one of three recent bars shall have the squat state on the MFI (all details in "Justification of Methodology" paragraph)
3.If price breaks through the high of the candle marked as the "Bullish Reversal Bar" the long trade is open at the price one tick above the candle's high
4.Initial stop loss is placed at the Bullish Reversal Bar's candle's low
5.If price hit the Bullish Reversal Bar's low before hitting the entry price potential trade is cancelled
6.If trade is active and initial stop loss has not been hit, trade is closed when the combination of Alligator and Williams Fractals shall consider current trend change from upward to downward.
Strategy settings
In the inputs window user can setup strategy setting:
Enable MFI (if true trades are filtered using Market Facilitation Index (MFI) condition all details in "Justification of Methodology" paragraph), by default = false)
Enable AO (if true trades are filtered using Awesome Oscillator (AO) condition all details in "Justification of Methodology" paragraph), by default = false)
Justification of Methodology
Let's explore the key concepts of this strategy and understand how they work together. The first and key concept is the Bullish Reversal Bar candlestick pattern. This is just the single bar pattern. The rules are simple:
Candle shall be closed in it's upper half
High of this candle shall be below all three Alligator's lines (Jaw, Lips, Teeth)
Next, let’s discuss the short-term trend filter, which combines the Williams Alligator and Williams Fractals. Williams Alligator
Developed by Bill Williams, the Alligator is a technical indicator that identifies trends and potential market reversals. It consists of three smoothed moving averages:
Jaw (Blue Line): The slowest of the three, based on a 13-period smoothed moving average shifted 8 bars ahead.
Teeth (Red Line): The medium-speed line, derived from an 8-period smoothed moving average shifted 5 bars forward.
Lips (Green Line): The fastest line, calculated using a 5-period smoothed moving average shifted 3 bars forward.
When the lines diverge and align in order, the "Alligator" is "awake," signaling a strong trend. When the lines overlap or intertwine, the "Alligator" is "asleep," indicating a range-bound or sideways market. This indicator helps traders determine when to enter or avoid trades.
Fractals, another tool by Bill Williams, help identify potential reversal points on a price chart. A fractal forms over at least five consecutive bars, with the middle bar showing either:
Up Fractal: Occurs when the middle bar has a higher high than the two preceding and two following bars, suggesting a potential downward reversal.
Down Fractal: Happens when the middle bar shows a lower low than the surrounding two bars, hinting at a possible upward reversal.
Traders often use fractals alongside other indicators to confirm trends or reversals, enhancing decision-making accuracy.
How do these tools work together in this strategy? Let’s consider an example of an uptrend.
When the price breaks above an up fractal, it signals a potential bullish trend. This occurs because the up fractal represents a shift in market behavior, where a temporary high was formed due to selling pressure. If the price revisits this level and breaks through, it suggests the market sentiment has turned bullish.
The breakout must occur above the Alligator’s teeth line to confirm the trend. A breakout below the teeth is considered invalid, and the downtrend might still persist. Conversely, in a downtrend, the same logic applies with down fractals.
How we can use all these indicators in this strategy? This strategy is a counter trend one. Candle's high shall be below all Alligator's lines. During this market stage the bullish reversal bar candlestick pattern shall be printed. This bar during the downtrend is a high probability setup for the potential reversal to the upside: bulls were able to close the price in the upper half of a candle. The breaking of its high is a high probability signal that trend change is confirmed and script opens long trade. If market continues going down and break down the bullish reversal bar's low potential trend change has been invalidated and strategy close long trade.
If market really reversed and started moving to the upside strategy waits for the trend change form the downtrend to the uptrend according to approximation of Alligator and Fractals combination. If this change happens strategy close the trade. This approach helps to stay in the long trade while the uptrend continuation is likely and close it if there is a high probability of the uptrend finish.
Optionally users can enable MFI and AO filters. First of all, let's briefly explain what are these two indicators. The Awesome Oscillator (AO), created by Bill Williams, is a momentum-based indicator that evaluates market momentum by comparing recent price activity to a broader historical context. It assists traders in identifying potential trend reversals and gauging trend strength.
AO = SMA5(Median Price) − SMA34(Median Price)
where:
Median Price = (High + Low) / 2
SMA5 = 5-period Simple Moving Average of the Median Price
SMA 34 = 34-period Simple Moving Average of the Median Price
This indicator is filtering signals in the following way: if current AO bar is decreasing this candle can be interpreted as a bullish reversal bar. This logic is applicable because initially this strategy is a trend reversal, it is searching for the high probability setup against the current trend. Decreasing AO is the additional high probability filter of a downtrend.
Let's briefly look what is MFI. The Market Facilitation Index (MFI) is a technical indicator that measures the price movement per unit of volume, helping traders gauge the efficiency of price movement in relation to trading volume. Here's how you can calculate it:
MFI = (High−Low)/Volume
MFI can be used in combination with volume, so we can divide 4 states. Bill Williams introduced these to help traders interpret the interaction between volume and price movement. Here’s a quick summary:
Green Window (Increased MFI & Increased Volume): Indicates strong momentum with both price and volume increasing. Often a sign of trend continuation, as both buying and selling interest are rising.
Fake Window (Increased MFI & Decreased Volume): Shows that price is moving but with lower volume, suggesting weak support for the trend. This can signal a potential end of the current trend.
Squat Window (Decreased MFI & Increased Volume): Shows high volume but little price movement, indicating a tug-of-war between buyers and sellers. This often precedes a breakout as the pressure builds.
Fade Window (Decreased MFI & Decreased Volume): Indicates a lack of interest from both buyers and sellers, leading to lower momentum. This typically happens in range-bound markets and may signal consolidation before a new move.
For our purposes we are interested in squat bars. This is the sign that volume cannot move the price easily. This type of bar increases the probability of trend reversal. In this indicator we added to enable the MFI filter of reversal bars. If potential reversal bar or two preceding bars have squat state this bar can be interpret as a reversal one.
Backtest Results
Operating window: Date range of backtests is 2023.01.01 - 2024.12.31. It is chosen to let the strategy to close all opened positions.
Commission and Slippage: Includes a standard Binance commission of 0.1% and accounts for possible slippage over 5 ticks.
Initial capital: 10000 USDT
Percent of capital used in every trade: 50%
Maximum Single Position Loss: -5.29%
Maximum Single Profit: +29.99%
Net Profit: +5472.66 USDT (+54.73%)
Total Trades: 103 (33.98% win rate)
Profit Factor: 1.634
Maximum Accumulated Loss: 1231.15 USDT (-8.32%)
Average Profit per Trade: 53.13 USDT (+0.94%)
Average Trade Duration: 76 hours
How to Use
Add the script to favorites for easy access.
Apply to the desired timeframe and chart (optimal performance observed on 4h ETH/USDT).
Configure settings using the dropdown choice list in the built-in menu.
Set up alerts to automate strategy positions through web hook with the text: {{strategy.order.alert_message}}
Disclaimer:
Educational and informational tool reflecting Skyrex commitment to informed trading. Past performance does not guarantee future results. Test strategies in a simulated environment before live implementation
These results are obtained with realistic parameters representing trading conditions observed at major exchanges such as Binance and with realistic trading portfolio usage parameters.
Dynamic Support and Resistance Pivot Strategy The Dynamic Support and Resistance Pivot Strategy is a flexible and adaptive tool designed to identify short-term support and resistance levels using the concept of price pivots.
### Key Elements of the Strategy
1. Pivot points as support and resistance levels
Pivots are significant turning points on the price chart, often marking local highs and lows where the price has reversed direction. A pivot high occurs when the price forms a local peak, while a pivot low occurs when the price forms a local trough. When a new pivot high is formed, it creates a resistance level. Conversely, when a new pivot low is formed, it creates a support level.
The strategy continuously updates these levels as new pivots are detected, ensuring they remain relevant to the current market conditions. By identifying these price levels, the strategy dynamically adjusts to market conditions, allowing it to adapt to both trending and ranging markets, since it has a long target and can perform reversal operations.
2. Entry Criteria
- Buy (Long): A long position is triggered when the price is near the support level and then crosses it from below to above. This suggests that the price has found support and may start moving upwards.
- Sell (Short): A short position is triggered when the price is near the resistance level and then crosses it from above to below. This indicates that the price may be reversing and moving downward.
3. Support/Resistance distance (%)
- This parameter establishes a percentage range around the identified support and resistance level. For example, if the Support Resistance Distance is 0.4% (default), the closing price must be within a range of 0.4% above support or below the resistance to be considered "close" and trigger a trade.
4. Exit criteria
- Take profit = 27 %
- Stop loss = 10 %
- Reversal if a new entry point is identified in the opposite direction
5. No Repainting
- The Dynamic Support and Resistance Pivot Strategy is not subject to repainting.
6. Position Sizing by Equity and risk management
- This strategy has a default configuration to operate with 35% of the equity. The stop loss is set to 10% from the entry price. This way, the strategy is putting at risk about 10% of 35% of equity, that is, around 3.5% of equity for each trade. The percentage of equity and stop loss can be adjusted by the user according to their risk management.
7. Backtest results
- This strategy was subjected to backtest and operations in replay mode on **1000000MOGUSDT.P**, with the inclusion of transaction fees at 0.12% and slipagge of 5 ticks, and the past results have shown consistent profitability. Past results are no guarantee of future results. The strategy's backtest results may even be due to overfitting with past data.
8. Chart Visualization
- Support and resistance levels are displayed as green (support) and red (resistance) lines.
- Pivot prices are displayed as green (pivot low) and red (pivot high) labels.
In this image above, the Support/Resistance distance (%) parameter was set to 0.8.
9. Default Configuration
Chart Timeframe: 1h
Pivot Lengh: 2
Support/Resistance distance (%): 0.4*
Stop Loss: 10 %
Take Profit: 27 %
* This parameter can alternatively be set to 0.8.
10. Alternative Configuration
Chart Timeframe: 20 min
Pivot Lengh: 4
Support/Resistance distance (%): 0.1
Stop Loss: 10 %
Take Profit: 25 %
BYBIT:1000000MOGUSDT.P
Trident FinderIntroduction to the Trident Finder
The Trident Finder is a Pine Script indicator that identifies unique bullish and bearish patterns called Tridents. These patterns are based on specific relationships between consecutive candles, combined with a simple moving average (SMA) filter for added precision. By spotting these patterns, traders can potentially identify high-probability reversal points or trend continuations.
Core Logic
The indicator identifies two patterns:
Bullish Trident
A bullish Trident forms when:
Candle (two candles back) has its High-Low range entirely above Candle (the preceding candle).
Candle (the current candle) has its Open-High-Low-Close (OHLC) above the Low of Candle .
Candle closes higher than it opens and higher than Candle ’s close.
Candle closes below the SMA, indicating a potential upward breakout against the trend.
Bearish Trident
A bearish Trident forms when:
Candle has its High-Low range entirely below Candle .
Candle has its OHLC below the High of Candle .
Candle closes lower than it opens and lower than Candle ’s close.
Candle closes above the SMA, indicating a potential downward breakout against the trend.
Visual Representation
Bullish Tridents are marked with green "Up" labels below the candle.
Bearish Tridents are marked with red "Down" labels above the candle.
The SMA is plotted as a maroon line to serve as a filter for the Trident patterns.
Enigma Unlocked 2.0Description for "Enigma Unlocked 2.0" Pine Script Indicator
Overview
Enigma Unlocked 2.0 is an advanced and highly customizable indicator designed to deliver actionable buy and sell signals by leveraging precise candlestick logic during specific market transitions. This indicator is built for flexibility, helping traders identify high-probability trade setups during key trading periods, specifically the transitions between the Asian Kill Zone and London Kill Zone as well as the London Kill Zone and New York Kill Zone on the 30-minute timeframe.
By combining Enigma Unlocked 2.0 with the ICT Killzones & Pivots indicator, traders can gain a deeper understanding of the timing and location of these transitions. Waiting for signals during these defined kill zones increases the likelihood of finding high-probability trade setups.
How to Use
Follow the Kill Zone Transitions:
Use the ICT Killzones & Pivots indicator to clearly visualize the boundaries of the Asian, London, and New York kill zones.
Focus on the signals generated by Enigma Unlocked 2.0 that align with these kill zone transitions.
Plotting Entries and Targets with Gann Box:
For Buy Signals:
Use the Gann Box tool to mark the high and low of the signal candle.
Ensure your Gann Box settings include only the 50%, 0%, and 100% levels.
Your entry zone lies between the 50% and 100% levels (discount zone). This is where buy trades are expected to offer an optimal risk-reward ratio.
For Sell Signals:
Similarly, plot the Gann Box on the high and low of the signal candle.
The 50% to 100% zone acts as the premium area for sell trades.
Setting Stop Loss and Targets:
To identify a safe stop loss, split the 50% zone of the Gann Box using another Gann Box.
Draw the secondary Gann Box from 50% to 100% of the initial box, then extend it to double the height.
For sell trades, place the stop loss above the extended 100% level.
For buy trades, place the stop loss below the extended 100% level.
Aim for a minimum of 1:1 risk-to-reward to ensure optimal trade management.
How It Works
Buy Logic:
Buy Logic 1: Detects a bullish candle (close > open) that:
Closes above its midpoint (50% of the candle body).
Has a low lower than the previous candle's low.
Buy Logic 2: Identifies a bearish candle (close < open) that:
Closes above its midpoint (50% of the candle body).
Has a low lower than the previous candle's low.
Sell Logic:
Sell Logic 1: Detects a bearish candle (close < open) that:
Closes below its midpoint (50% of the candle body).
Has a high higher than the previous candle's high.
Sell Logic 2: Identifies a bullish candle (close > open) that:
Closes below its midpoint (50% of the candle body).
Has a high higher than the previous candle's high.
Real-Time Alerts and Visual Cues:
Green triangles below candles indicate buy opportunities.
Red triangles above candles indicate sell opportunities.
Built-in alert conditions notify you of signals in real-time, so you never miss a trading opportunity.
Why Use Enigma Unlocked 2.0?
Precision: Advanced candlestick logic ensures that signals are generated only under optimal conditions.
Session-Based Filtering: Signals occur exclusively during the most active market sessions (kill zones), improving trade quality.
Visualization: Simple yet effective tools like Gann Box integration and clear visual signals make this indicator easy to use and highly effective.
Real-Time Alerts: Stay informed of potential trades even when you're away from your screen.
Enigma Unlocked 2.0 empowers traders to harness the power of candlestick analysis and session-based strategies for disciplined and effective trading. Pair this with a solid understanding of risk management and kill zones to achieve consistent results in your trading journey.
DCA Strategy with Mean Reversion and Bollinger BandDCA Strategy with Mean Reversion and Bollinger Band
The Dollar-Cost Averaging (DCA) Strategy with Mean Reversion and Bollinger Bands is a sophisticated trading strategy that combines the principles of DCA, mean reversion, and technical analysis using Bollinger Bands. This strategy aims to capitalize on market corrections by systematically entering positions during periods of price pullbacks and reversion to the mean.
Key Concepts and Principles
1. Dollar-Cost Averaging (DCA)
DCA is an investment strategy that involves regularly purchasing a fixed dollar amount of an asset, regardless of its price. The idea behind DCA is that by spreading out investments over time, the impact of market volatility is reduced, and investors can avoid making large investments at inopportune times. The strategy reduces the risk of buying all at once during a market high and can smooth out the cost of purchasing assets over time.
In the context of this strategy, the Investment Amount (USD) is set by the user and represents the amount of capital to be invested in each buy order. The strategy executes buy orders whenever the price crosses below the lower Bollinger Band, which suggests a potential market correction or pullback. This is an effective way to average the entry price and avoid the emotional pitfalls of trying to time the market perfectly.
2. Mean Reversion
Mean reversion is a concept that suggests prices will tend to return to their historical average or mean over time. In this strategy, mean reversion is implemented using the Bollinger Bands, which are based on a moving average and standard deviation. The lower band is considered a potential buy signal when the price crosses below it, indicating that the asset has become oversold or underpriced relative to its historical average. This triggers the DCA buy order.
Mean reversion strategies are popular because they exploit the natural tendency of prices to revert to their mean after experiencing extreme deviations, such as during market corrections or panic selling.
3. Bollinger Bands
Bollinger Bands are a technical analysis tool that consists of three lines:
Middle Band: The moving average, usually a 200-period Exponential Moving Average (EMA) in this strategy. This serves as the "mean" or baseline.
Upper Band: The middle band plus a certain number of standard deviations (multiplier). The upper band is used to identify overbought conditions.
Lower Band: The middle band minus a certain number of standard deviations (multiplier). The lower band is used to identify oversold conditions.
In this strategy, the Bollinger Bands are used to identify potential entry points for DCA trades. When the price crosses below the lower band, this is seen as a potential opportunity for mean reversion, suggesting that the asset may be oversold and could reverse back toward the middle band (the EMA). Conversely, when the price crosses above the upper band, it indicates overbought conditions and signals potential market exhaustion.
4. Time-Based Entry and Exit
The strategy has specific entry and exit points defined by time parameters:
Open Date: The date when the strategy begins opening positions.
Close Date: The date when all positions are closed.
This time-bound approach ensures that the strategy is active only during a specified window, which can be useful for testing specific market conditions or focusing on a particular time frame.
5. Position Sizing
Position sizing is determined by the Investment Amount (USD), which is the fixed amount to be invested in each buy order. The quantity of the asset to be purchased is calculated by dividing the investment amount by the current price of the asset (investment_amount / close). This ensures that the amount invested remains constant despite fluctuations in the asset's price.
6. Closing All Positions
The strategy includes an exit rule that closes all positions once the specified close date is reached. This allows for controlled exits and limits the exposure to market fluctuations beyond the strategy's timeframe.
7. Background Color Based on Price Relative to Bollinger Bands
The script uses the background color of the chart to provide visual feedback about the price's relationship with the Bollinger Bands:
Red background indicates the price is above the upper band, signaling overbought conditions.
Green background indicates the price is below the lower band, signaling oversold conditions.
This provides an easy-to-interpret visual cue for traders to assess the current market environment.
Postscript: Configuring Initial Capital for Backtesting
To ensure the backtest results align with the actual investment scenario, users must adjust the Initial Capital in the TradingView strategy properties. This is done by calculating the Initial Capital as the product of the Total Closed Trades and the Investment Amount (USD). For instance:
If the user is investing 100 USD per trade and has 10 closed trades, the Initial Capital should be set to 1,000 USD.
Similarly, if the user is investing 200 USD per trade and has 24 closed trades, the Initial Capital should be set to 4,800 USD.
This adjustment ensures that the backtesting results reflect the actual capital deployed in the strategy and provides an accurate representation of potential gains and losses.
Conclusion
The DCA strategy with Mean Reversion and Bollinger Bands is a systematic approach to investing that leverages the power of regular investments and technical analysis to reduce market timing risks. By combining DCA with the insights offered by Bollinger Bands and mean reversion, this strategy offers a structured way to navigate volatile markets while targeting favorable entry points. The clear entry and exit rules, coupled with time-based constraints, make it a robust and disciplined approach to long-term investing.
Moment-Based Adaptive DetectionMBAD (Moment-Based Adaptive Detection) : a method applicable to a wide range of purposes, like outlier or novelty detection, that requires building a sensible interval/set of thresholds. Unlike other methods that are static and rely on optimizations that inevitably lead to underfitting/overfitting, it dynamically adapts to your data distribution without any optimizations, MLE, or stuff, and provides a set of data-driven adaptive thresholds, based on closed-form solution with O(n) algo complexity.
1.5 years ago, when I was still living in Versailles at my friend's house not knowing what was gonna happen in my life tomorrow, I made a damn right decision not to give up on one idea and to actually R&D it and see what’s up. It allowed me to create this one.
The Method Explained
I’ve been wandering about z-values, why exactly 6 sigmas, why 95%? Who decided that? Why would you supersede your opinion on data? Based on what? Your ego?
Then I consciously noticed a couple of things:
1) In control theory & anomaly detection, the popular threshold is 3 sigmas (yet nobody can firmly say why xD). If your data is Laplace, 3 sigmas is not enough; you’re gonna catch too many values, so it needs a higher sigma.
2) Yet strangely, the normal distribution has kurtosis of 3, and 6 for Laplace.
3) Kurtosis is a standardized moment, a moment scaled by stdev, so it means "X amount of something measured in stdevs."
4) You generate synthetic data, you check on real data (market data in my case, I am a quant after all), and you see on both that:
lower extension = mean - standard deviation * kurtosis ≈ data minimum
upper extension = mean + standard deviation * kurtosis ≈ data maximum
Why not simply use max/min?
- Lower info gain: We're not using all info available in all data points to estimate max/min; we just pick the current higher and lower values. Lol, it’s the same as dropping exponential smoothing with alpha = 0 on stationary data & calling it a day.
You can’t update the estimates of min and max when new data arrives containing info about the matter. All you can do is just extend min and max horizontally, so you're not using new info arriving inside new data.
- Mixing order and non-order statistics is a bad idea; we're losing integrity and coherence. That's why I don't like the Hurst exponent btw (and yes, I came up with better metrics of my own).
- Max & min are not even true order statistics, unlike a percentile (finding which requires sorting, which requires multiple passes over your data). To find min or max, you just need to do one traversal over your data. Then with or without any weighting, 100th percentile will equal max. So unlike a weighted percentile, you can’t do weighted max. Then while you can always check max and min of a geometric shape, now try to calculate the 56th percentile of a pentagram hehe.
TL;DR max & min are rather topological characteristics of data, just as the difference between starting and ending points. Not much to do with statistics.
Now the second part of the ballet is to work with data asymmetry:
1) Skewness is also scaled by stdev -> so it must represent a shift from the data midrange measured in stdevs -> given asymmetric data, we can include this info in our models. Unlike kurtosis, skewness has a sign, so we add it to both thresholds:
lower extension = mean - standard deviation * kurtosis + standard deviation * skewness
upper extension = mean + standard deviation * kurtosis + standard deviation * skewness
2) Now our method will work with skewed data as well, omg, ain’t it cool?
3) Hold up, but what about 5th and 6th moments (hyperskewness & hyperkurtosis)? They should represent something meaningful as well.
4) Perhaps if extensions represent current estimated extremums, what goes beyond? Limits, beyond which we expect data not to be able to pass given the current underlying process generating the data?
When you extend this logic to higher-order moments, i.e., hyperskewness & hyperkurtosis (5th and 6th moments), they measure asymmetry and shape of distribution tails, not its core as previous moments -> makes no sense to mix 4th and 3rd moments (skewness and kurtosis) with 5th & 6th, so we get:
lower limit = mean - standard deviation * hyperkurtosis + standard deviation * hyperskewness
upper limit = mean + standard deviation * hyperkurtosis + standard deviation * hyperskewness
While extensions model your data’s natural extremums based on current info residing in the data without relying on order statistics, limits model your data's maximum possible and minimum possible values based on current info residing in your data. If a new data point trespasses limits, it means that a significant change in the data-generating process has happened, for sure, not probably—a confirmed structural break.
And finally we use time and volume weighting to include order & process intensity information in our model.
I can't stress it enough: despite the popularity of these non-weighted methods applied in mainstream open-access time series modeling, it doesn’t make ANY sense to use non-weighted calculations on time series data . Time = sequence, it matters. If you reverse your time series horizontally, your means, percentiles, whatever, will stay the same. Basically, your calculations will give the same results on different data. When you do it, you disregard the order of data that does have order naturally. Does it make any sense to you? It also concerns regressions applied on time series as well, because even despite the slope being opposite on your reversed data, the centroid (through which your regression line always comes through) will be the same. It also might concern Fourier (yes, you can do weighted Fourier) and even MA and AR models—might, because I ain’t researched it extensively yet.
I still can’t believe it’s nowhere online in open access. No chance I’m the first one who got it. It’s literally in front of everyone’s eyes for centuries—why no one tells about it?
How to use
That’s easy: can be applied to any, even non-stationary and/or heteroscedastic time series to automatically detect novelties, outliers, anomalies, structural breaks, etc. In terms of quant trading, you can try using extensions for mean reversion trades and limits for emergency exits, for example. The market-making application is kinda obvious as well.
The only parameter the model has is length, and it should NOT be optimized but picked consciously based on the process/system you’re applying it to and based on the task. However, this part is not about sharing info & an open-access instrument with the world. This is about using dem instruments to do actual business, and we can’t talk about it.
∞
Mean Price
^^ Plotting switched to Line.
This method of financial time series (aka bars) downsampling is literally, naturally, and thankfully the best you can do in terms of maximizing info gain. You can finally chill and feed it to your studies & eyes, and probably use nothing else anymore.
(HL2 and occ3 also have use cases, but other aggregation methods? Not really, even if they do, the use cases are ‘very’ specific). Tho in order to understand why, you gotta read the following wall, or just believe me telling you, ‘I put it on my momma’.
The true story about trading volumes and why this is all a big misdirection
Actually, you don’t need to be a quant to get there. All you gotta do is stop blindly following other people’s contextual (at best) solutions, eg OC2 aggregation xD, and start using your own brain to figure things out.
Every individual trade (basically an imprint on 1D price space that emerges when market orders hit the order book) has several features like: price, time, volume, AND direction (Up if a market buy order hits the asks, Down if a market sell order hits the bids). Now, the last two features—volume and direction—can be effectively combined into one (by multiplying volume by 1 or -1), and this is probably how every order matching engine should output data. If we’re not considering size/direction, we’re leaving data behind. Moreover, trades aren’t just one-price dots all the time. One trade can consume liquidity on several levels of the order book, so a single trade can be several ticks big on the price axis.
You may think now that there are no zero-volume ticks. Well, yes and no. It depends on how you design an exchange and whether you allow intra-spread trades/mid-spread trades (now try to Google it). Intra-spread trades could happen if implemented when a matching engine receives both buy and sell orders at the same microsecond period. This way, you can match the orders with each other at a better price for both parties without even hitting the book and consuming liquidity. Also, if orders have different sizes, the remaining part of the bigger order can be sent to the order book. Basically, this type of trade can be treated as an OTC trade, having zero volume because we never actually hit the book—there’s no imprint. Another reason why it makes sense is when we think about volume as an impact or imbalance act, and how the medium (order book in our case) responds to it, providing information. OTC and mid-spread trades are not aggressive sells or buys; they’re neutral ticks, so to say. However huge they are, sometimes many blocks on NYSE, they don’t move the price because there’s no impact on the medium (again, which is the order book)—they’re not providing information.
... Now, we need to aggregate these trades into, let’s say, 1-hour bars (remember that a trade can have either positive or negative volume). We either don’t want to do it, or we don’t have this kind of information. What we can do is take already aggregated OHLC bars and extract all the info from them. Given the market is fractal, bars & trades gotta have the same set of features:
- Highest & lowest ticks (high & low) <- by price;
- First & last ticks (open & close) <- by time;
- Biggest and smallest ticks <- by volume.*
*e.g., in the array ,
2323: biggest trade,
-1212: smallest trade.
Now, in our world, somehow nobody started to care about the biggest and smallest trades and their inclusion in OHLC data, while this is actually natural. It’s the same way as it’s done with high & low and open & close: we choose the minimum and maximum value of a given feature/axis within the aggregation period.
So, we don’t have these 2 values: biggest and smallest ticks. The best we can do is infer them, and given the fact the biggest and smallest ticks can be located with the same probability everywhere, all we can do is predict them in the middle of the bar, both in time and price axes. That’s why you can see two HL2’s in each of the 3 formulas in the code.
So, summed up absolute volumes that you see in almost every trading platform are actually just a derivative metric, something that I call Type 2 time series in my own (proprietary ‘for now’) methods. It doesn’t have much to do with market orders hitting the non-uniform medium (aka order book); it’s more like a statistic. Still wanna use VWAP? Ok, but you gotta understand you’re weighting Type 1 (natural) time series by Type 2 (synthetic) ones.
How to combine all the data in the right way (khmm khhm ‘order’)
Now, since we have 6 values for each bar, let’s see what information we have about them, what we don’t have, and what we can do about it:
- Open and close: we got both when and where (time (order) and price);
- High and low: we got where, but we don’t know when;
- Biggest & smallest trades: we know shit, we infer it the way it was described before.'
By using the location of the close & open prices relative to the high & low prices, we can make educated guesses about whether high or low was made first in a given bar. It’s not perfect, but it’s ultimately all we can do—this is the very last bit of info we can extract from the data we have.
There are 2 methods for inferring volume delta (which I call simply volume) that are presented everywhere, even here on TradingView. Funny thing is, this is actually 2 parts of the 1 method. I wonder how many folks see through it xD. The same method can be used for both inferring volume delta AND making educated guesses whether high or low was made first.
Imagine and/or find the cases on your charts to understand faster:
* Close > open means we have an up bar and probably the volume is positive, and probably high was made later than low.
* Close < open means we have a down bar and probably the volume is negative, and probably low was made later than high.
Now that’s the point when you see that these 2 mentioned methods are actually parts of the 1 method:
If close = open, we still have another clue: distance from open/close pair to high (HC), and distance from open/close pair to low (LC):
* HC < LC, probably high was made later.
* HC > LC, probably low was made later.
And only if close = open and HC = LC, only in this case we have no clue whether high or low was made earlier within a bar. We simply don’t have any more information to even guess. This bar is called a neutral bar.
At this point, we have both time (order) and price info for each of our 6 values. Now, we have to solve another weighted average problem, and that’s it. We’ll weight prices according to the order we’ve guessed. In the neutral bar case, open has a weight of 1, close has a weight of 3, and both high and low have weights of 2 since we can’t infer which one was made first. In all cases, biggest and smallest ticks are modeled with HL2 and weighted like they’re located in the middle of the bar in a time sense.
P.S.: I’ve also included a "robust" method where all the bars are treated like neutral ones. I’ve used it before; obviously, it has lesser info gain -> works a bit worse.
Honest Volatility Grid [Honestcowboy]The Honest Volatility Grid is an attempt at creating a robust grid trading strategy but without standard levels.
Normal grid systems use price levels like 1.01;1.02;1.03;1.04... and place an order at each of these levels. In this program instead we create a grid using keltner channels using a long term moving average.
🟦 IS THIS EVEN USEFUL?
The idea is to have a more fluid style of trading where levels expand and follow price and do not stick to precreated levels. This however also makes each closed trade different instead of using fixed take profit levels. In this strategy a take profit level can even be a loss. It is useful as a strategy because it works in a different way than most strategies, making it a good tool to diversify a portfolio of trading strategies.
🟦 STRATEGY
There are 10 levels below the moving average and 10 above the moving average. For each side of the moving average the strategy uses 1 to 3 orders maximum (3 shorts at top, 3 longs at bottom). For instance you buy at level 2 below moving average and you increase position size when level 6 is reached (a cheaper price) in order to spread risks.
By default the strategy exits all trades when the moving average is reached, this makes it a mean reversion strategy. It is specifically designed for the forex market as these in my experience exhibit a lot of ranging behaviour on all the timeframes below daily.
There is also a stop loss at the outer band by default, in case price moves too far from the mean.
What are the risks?
In case price decides to stay below the moving average and never reaches the outer band one trade can create a very substantial loss, as the bands will keep following price and are not at a fixed level.
Explanation of default parameters
By default the strategy uses a starting capital of 25000$, this is realistic for retail traders.
Lot sizes at each level are set to minimum lot size 0.01, there is no reason for the default to be risky, if you want to risk more or increase equity curve increase the number at your own risk.
Slippage set to 20 points: that's a normal 2 pip slippage you will find on brokers.
Fill limit assumtion 20 points: so it takes 2 pips to confirm a fill, normal forex spread.
Commission is set to 0.00005 per contract: this means that for each contract traded there is a 5$ or whatever base currency pair has as commission. The number is set to 0.00005 because pinescript does not know that 1 contract is 100000 units. So we divide the number by 100000 to get a realistic commission.
The script will also multiply lot size by 100000 because pinescript does not know that lots are 100000 units in forex.
Extra safety limit
Normally the script uses strategy.exit() to exit trades at TP or SL. But because these are created 1 bar after a limit or stop order is filled in pinescript. There are strategy.orders set at the outer boundaries of the script to hedge against that risk. These get deleted bar after the first order is filled. Purely to counteract news bars or huge spikes in price messing up backtest.
🟦 VISUAL GOODIES
I've added a market profile feature to the edge of the grid. This so you can see in which grid zone market has been the most over X bars in the past. Some traders may wish to only turn on the strategy whenever the market profile displays specific characteristics (ranging market for instance).
These simply count how many times a high, low, or close price has been in each zone for X bars in the past. it's these purple boxes at the right side of the chart.
🟦 Script can be fully automated to MT5
There are risk settings in lot sizes or % for alerts and symbol settings provided at the bottom of the indicator. The script will send alert to MT5 broker trying to mimic the execution that happens on tradingview. There are always delays when using a bridge to MT5 broker and there could be errors so be mindful of that. This script sends alerts in format so they can be read by tradingview.to which is a bridge between the platforms.
Use the all alert function calls feature when setting up alerts and make sure you provide the right webhook if you want to use this approach.
Almost every setting in this indicator has a tooltip added to it. So if any setting is not clear hover over the (?) icon on the right of the setting.
Previous Day High and Low Count with Probabilities
Indicator Explanation
This indicator displays the number of days on which the previous day's high or low prices were not reached and calculates probabilities for future price movements based on this information. It stores the high and low values of the last 45 days and checks daily whether these levels were touched. Based on the number of days without touching either the high or the low, the indicator calculates the probability of future price movements in either direction (Up or Down).
The indicator offers customization options for label placement and color on the chart. The counts for the high and low touches, along with the calculated probabilities (in percentages), are displayed as labels on the chart. These labels can be shifted along the X-axis by up to 50 bars and can be customized in color and size. Additionally, the text for the labels can be freely chosen, giving the user improved flexibility and overview.
In summary, this indicator helps to:
- Track how often previous day's high and low levels were not reached.
- Estimate probabilities for future price movements based on this information.
- Customize the chart display for easier interpretation.
Strategy Concept
Probability and Touch Conditions:
A long position is entered only if:
The probability of reaching the high is at least 60%.
The price has not touched the previous day’s high in the last three days.
Similarly, for short positions:
The probability of reaching the low is at least 60%.
The price has not touched the previous day’s low in the last three days.
Incremental Position Size Increase:
On the 3rd consecutive day without a high/low touch and with the probability condition met, an initial position of 0.01 lots is opened.
On the 4th day, an additional position of 0.01 lots is added.
On the 5th day, an extra position of 0.02 lots is opened.
After a two-day pause, the situation is re-evaluated, and if conditions are still met, a 0.04-lot position is considered.
Trend Reversal Detection:
The strategy also includes a simple trend reversal check. If the market shows clear reversal signals, no new positions will be opened.
Adjustments and Risk Management
This strategy can be adjusted by modifying the probability values, the number of days without a high/low touch, and the lot sizes. Additionally, stop-loss and take-profit levels can be added to further control the risk and secure profits.
Strategy Concept
Probability and Touch Conditions:
A long position is entered only if:
The probability of reaching the high is at least 60%.
The price has not touched the previous day’s high in the last three days.
Similarly, for short positions:
The probability of reaching the low is at least 60%.
The price has not touched the previous day’s low in the last three days.
Incremental Position Size Increase:
On the 3rd consecutive day without a high/low touch and with the probability condition met, an initial position of 0.01 lots is opened.
On the 4th day, an additional position of 0.01 lots is added.
On the 5th day, an extra position of 0.02 lots is opened.
After a two-day pause, the situation is re-evaluated, and if conditions are still met, a 0.04-lot position is considered.
Trend Reversal Detection:
The strategy also includes a simple trend reversal check. If the market shows clear reversal signals, no new positions will be opened.
Risk Disclaimer
The author of this strategy does not assume any liability for potential losses or gains that may arise from the use of this strategy. Trading involves significant risk, and it is important to only trade with capital that you can afford to lose. The strategy presented is for educational purposes only and should not be considered as financial advice. Always conduct your own research and consider seeking advice from a professional financial advisor before making any trading decisions.
Market structureHi all!
This script shows you the market structure. You can choose to show internal market structure (with pivots of a default length of 5) and swing market structure (with pivots of a default length of 50). For these two trends it will show you:
• Break of structure (BOS)
• Change of character (CHoCH) (mandatory)
• Equal high/low (EQH/EQL)
It's inspired by "Smart Money Concepts (SMC) " by LuxAlgo that will also show you the market structure.
It will create the two market structures depending on the pivots found. Both of these market structures can be enabled/disabled. The pivots length can be configured separately. The pivots found will be the 'base' of this indicator and will show you when price breaks it. When that happens a break of structure or a change of character will be created. The latest 5 pivots found within the current trends will be kept to take action on. The internal market structure is shown with dashed lines and swing market structure is shown with solid lines.
A break of structure is removed if an earlier pivots within the same trend is broken. Like in the images below, the first pivot (in the first image) is removed when an earlier pivot's higher price within the same trend is broken (the second image):
Equal high/lows have a pink zone (by default but can be changed by the user). These zones can be configured to be extended to the right (off by default). Equal high/lows are only possible if it's not been broken by price and if a later bar has a high/low within the limit it's added to the zone (without it being more 'extreme' (high or low) then the previous price). A factor (percentage of width) of the Average True Length (of length 14) that the pivot must be within to to be considered an Equal high/low. This is configurable and sets this 'limit' and is 10 by default.
You are able to show the pivots that are used. "HH" (higher high), "HL" (higher low), "LH" (lower high), "LL" (lower low) and "H"/"L" (for pivots (high/low) when the trend has changed) are the labels used.
This script has proven itself useful for me to quickly see how the current market is. You can see the pivots (price and bar) where break of structure or change of character happens to see the current trends. I hope that you will find this useful for you.
When programming I focused on simplicity and ease of read. I did not focus on performance, I will do so if it's a problem (haven't noticed it is one yet).
You can set alerts for when a change of character happens. You can configure it to fire on when it happens (all or once per bar) but it defaults to 'once_per_bar_close' to avoid repainting. This has the drawback to alert you when the bar closes.
TLDR: this is an indicator showing you the market structure (break of structures and change of characters) using swing points/pivots. Two trends can be shown, internal (with pivots of length of 5) and swing (with pivots of the length of 50).
Best of trading luck!
Pulse DPO: Major Cycle Tops and Bottoms█ OVERVIEW
Pulse DPO is an oscillator designed to highlight Major Cycle Tops and Bottoms .
It works on any market driven by cycles. It operates by removing the short-term noise from the price action and focuses on the market's cyclical nature.
This indicator uses a Normalized version of the Detrended Price Oscillator (DPO) on a 0-100 scale, making it easier to identify major tops and bottoms.
Credit: The DPO was first developed by William Blau in 1991.
█ HOW TO READ IT
Pulse DPO oscillates in the range between 0 and 100. A value in the upper section signals an OverBought (OB) condition, while a value in the lower section signals an OverSold (OS) condition.
Generally, the triggering of OB and OS conditions don't necessarily translate into swing tops and bottoms, but rather suggest caution on approaching a market that might be overextended.
Nevertheless, this indicator has been customized to trigger the signal only during remarkable top and bottom events.
I suggest using it on the Daily Time Frame , but you're free to experiment with this indicator on other time frames.
The indicator has Built-in Alerts to signal the crossing of the Thresholds. Please don't act on an isolated signal, but rather integrate it to work in conjunction with the indicators present in your Trading Plan.
█ OB SIGNAL ON: ENTERING OVERBOUGHT CONDITION
When Pulse DPO crosses Above the Top Threshold it Triggers ON the OB signal. At this point the oscillator line shifts to OB color.
When Pulse DPO enters the OB Zone, please beware! In this Area the Major Players usually become Active Sellers to the Public. While the OB signal is On, it might be wise to Consider Selling a portion or the whole Long Position.
Please note that even though this indicator aims to focus on major tops and bottoms, a strong trending market might trigger the OB signal and stay with it for a long time. That's especially true on young markets and on bubble-mode markets.
█ OB SIGNAL OFF: EXITING OVERBOUGHT CONDITION
When Pulse DPO crosses Below the Top Threshold it Triggers OFF the OB signal. At this point the oscillator line shifts to its normal color.
When Pulse DPO exits the OB Zone, please beware because a Major Top might just have occurred. In this Area the Major Players usually become Aggressive Sellers. They might wind up any remaining Long Positions and Open new Short Positions.
This might be a good area to Open Shorts or to Close/Reverse any remaining Long Position. Whatever you choose to do, it's usually best to act quickly because the market is prone to enter into panic mode.
█ OS SIGNAL ON: ENTERING OVERSOLD CONDITION
When Pulse DPO crosses Below the Bottom Threshold it Triggers ON the OS signal. At this point the oscillator line shifts to OS color.
When Pulse DPO enters the OS Zone, please beware because in this Area the Major Players usually become Active Buyers accumulating Long Positions from the desperate Public.
While the OS signal is On, it might be wise to Consider becoming a Buyer or to implement a Dollar-Cost Averaging (DCA) Strategy to build a Long Position towards the next Cycle. In contrast to the tops, the OS state usually takes longer to resolve a major bottom.
█ OS SIGNAL OFF: EXITING OVERSOLD CONDITION
When Pulse DPO crosses Above the Bottom Threshold it Triggers OFF the OS signal. At this point the oscillator line shifts to its normal color.
When Pulse DPO exits the OS Zone, please beware because a Major Bottom might already be in place. In this Area the Major Players become Aggresive Buyers. They might wind up any remaining Short Positions and Open new Long Positions.
This might be a good area to Open Longs or to Close/Reverse any remaining Short Positions.
█ WHY WOULD YOU BE INTERESTED IN THIS INDICATOR?
This indicator is built over a solid foundation capable of signaling Major Cycle Tops and Bottoms across many markets. Let's see some examples:
Early Bitcoin Years: From 0 to 1242
This chart is in logarithmic mode in order to properly display various exponential cycles. Pulse DPO is properly signaling the major early highs from 9-Jun-2011 at 31.50, to the next one on 9-Apr-2013 at 240 and the epic top from 29-Nov-2013 at 1242.
Due to the massive price movements, the OB condition stays pinned during most of the exponential price action. But as you can see, the OB condition quickly vanishes once the Cycle Top has been reached. As the market matures, the OB condition becomes more exceptional and triggers much closer from the Cycle Top.
With regards to Cycle Bottoms, the early bottom of 2 after having peaked at 31.50 doesn’t get captured by the indicator. That is the only cycle bottom that escapes the Pulse DPO when the bottom threshold is set at a value of 5. In that event, the oscillator low reached 6.95.
Bitcoin Adoption Spreading: From 257 to 73k
This chart is in logarithmic mode in order to properly display various exponential cycles. Pulse DPO is properly signaling all the major highs from 17-Dec-2017 at 19k, to the next one on 14-Apr-2021 at 64k and the most recent top from 9-Nov-2021 at 68k.
During the massive run of 2017, the OB condition still stayed triggered for a few weeks on each swing top. But on the next cycles it started to signal only for a few days before each swing top actually happened. The OB condition during the last cycle top triggered only for 3 days. Therefore the signal grows in focus as the market matures.
At the time of publishing this indicator, Bitcoin printed a new All Time High (ATH) on 13-Mar-2024 at 73k. That run didn’t trigger the OB condition. Therefore, if the indicator is correct the Bitcoin market still has some way to grow during the next months.
With regards to Cycle Bottoms, the bottom of 3k after having peaked at19k got captured within the wide OS zone. The bottom of 15k after having peaked at 68k got captured too within the OS accumulation area.
Gold
Pulse DPO behaves surprisingly well on a long standing market such as Gold. Moving back to the 197x years it’s been signaling most Cycle Tops and Bottoms with precision. During the last cycle, it shows topping at 2k and bottoming at 1.6k.
The current price action is signaling OB condition in the range of 2.5k to 2.7k. Looking at past cycles, it tends to trigger on and off at multiple swing tops until reaching the final cycle top. Therefore this might indicate the first wave within a potential gold run.
Oil
On the Oil market, we can see that most of the cycle tops and bottoms since the 80s got signaled. The only exception being the low from 2020 which didn’t trigger.
EURUSD
On Forex markets the Pulse DPO also behaves as expected. Looking back at EURUSD we can see the marketing triggering OB and OS conditions during major cycle tops and bottoms from recent times until the 80s.
S&P 500
On the S&P 500 the Pulse DPO catched the lows from 2016 and 2020. Looking at present price action, the recent ATH didn’t trigger the OB condition. Therefore, the indicator is allowing room for another leg up during the next months.
Amazon
On the Amazon chart the Pulse DPO is mirroring pretty accurately the major swings. Scrolling back to the early 2000s, this chart resembles early exponential swings in the crypto space.
Tesla
Moving onto a younger tech stock, Pulse DPO captures pretty accurately the major tops and bottoms. The chart is shown in logarithmic scale to better display the magnitude of the moves.
█ SETTINGS
This indicator is ideal for identifying major market turning points while filtering out short-term noise. You are free to adjust the parameters to align with your preferred trading style.
Parameters : This section allows you to customize any of the Parameters that shape the Oscillator.
Oscillator Length: Defines the period for calculating the Oscillator.
Offset: Shifts the oscillator calculation by a certain number of periods, which is typically half the Oscillator Length.
Lookback Period: Specifies how many bars to look back to find tops and bottoms for normalization.
Smoothing Length: Determines the length of the moving average used to smooth the oscillator.
Thresholds : This section allows you to customize the Thresholds that trigger the OB and OS conditions.
Top: Defines the value of the Top Threshold.
Bottom: Defines the value of the Bottom Threshold.
Bullish/Bearish Reversal Bars Indicator [Skyrexio]Introduction
Bullish/Bearish Reversal Bars Indicator leverages the combination of candlestick reversal bar pattern and the Williams Alligator indicator to help traders in understanding where there is a high probability of market reversal or correction. Indicator works for both bearish and bullish cases. It visualizes the bearish and bullish reversal bars with red and green dots and also plots the Alligator's lips to make it more convenient for traders to understand if price is above or below lips line (more information in "Methodology and it's justification" paragraph).
Features
Market Facilitation Index(MFI) filter: with the specified parameter in settings user can choose to filter bullish and bearish reversal bars which passed the MFI condition.
Awesome Oscillator(AO) filter: with the specified parameter in settings user can choose to filter bullish and bearish reversal bars which passed the AO condition.
Alerts: user can set up the alert and have notifications when bullish/bearish reversal bar has been printed.
Methodology and it's justification
In the script’s methodology, we apply the concepts of bullish and bearish reversal bars introduced by Bill Williams in his book Trading Chaos. So, what exactly is a bullish or bearish reversal bar? At its core, it’s a candlestick pattern. A bullish reversal bar is a bar that closes in its upper half, while a bearish reversal bar closes in its lower half.
Why is this type of bar significant? Let’s look at the bullish reversal bar as an example. When the price is trending upward, forming higher highs with each candle, and we suddenly see a bullish bar that makes a new high but ultimately closes in its lower half, it signals a shift in control. Bears have taken control toward the end of that candle's period, pushing the price back down. This can be interpreted as a sign of trend weakness and a potential reversal (or at least a correction).
An additional key point is that a reversal bar often indicates a possible end to the trend. Therefore, for a reversal bar to be valid, several preceding candles should show lower highs (for bullish bars) or higher lows (for bearish bars), reinforcing the likelihood of a trend change.
The second step on methodology is the location of the bar related to Williams Alligator. The Williams Alligator Indicator, developed by Bill Williams, is a technical analysis tool that helps traders identify trends and potential turning points in the market. It consists of three lines, often called the jaw, teeth, and lips of the alligator, each representing different moving averages:
Jaw (Blue Line): A slower moving average, typically a 13-period smoothed moving average shifted 8 bars into the future.
Teeth (Red Line): A medium moving average, typically an 8-period smoothed moving average shifted 5 bars into the future.
Lips (Green Line): A faster moving average, usually a 5-period smoothed moving average shifted 3 bars into the future.
When the three lines are spread out and moving in the same direction, it suggests a strong trend (the "alligator" is "awake and feeding"). When they intertwine, the indicator suggests that the market is moving sideways, or in a range, signaling a lack of clear trend (the "alligator" is "sleeping"). Traders use the Alligator Indicator to enter trades in trending markets and avoid trades in choppy, non-trending markets.
If bullish reversal bar's high is not below and bearish reversal bar's low is not above all three Alligator's lines (jaw, lips, teeth) they cannot be interpreted as these types of bars. It can be explained as following: if we are waiting for the bullish reversal bar it shall be reversal from downtrend. If price is not below all three lines it can't be interpret as the downtrend according to this method. The opposite is true for the bearish reversal bar.
All described above are obligatory conditions for reversal bar, now let's discuss two not obligatory conditions. The first one is Market Facilitation Index (MFI) restriction. Let's briefly look what is MFI. The Market Facilitation Index (MFI) is a technical indicator that measures the price movement per unit of volume, helping traders gauge the efficiency of price movement in relation to trading volume. Here's how you can calculate it:
MFI = (High−Low)/Volume
MFI can be used in combination with volume, so we can divide 4 states. Bill Williams introduced these to help traders interpret the interaction between volume and price movement. Here’s a quick summary:
Green Window (Increased MFI & Increased Volume): Indicates strong momentum with both price and volume increasing. Often a sign of trend continuation, as both buying and selling interest are rising.
Fake Window (Increased MFI & Decreased Volume): Shows that price is moving but with lower volume, suggesting weak support for the trend. This can signal a potential end of the current trend.
Squat Window (Decreased MFI & Increased Volume): Shows high volume but little price movement, indicating a tug-of-war between buyers and sellers. This often precedes a breakout as the pressure builds.
Fade Window (Decreased MFI & Decreased Volume): Indicates a lack of interest from both buyers and sellers, leading to lower momentum. This typically happens in range-bound markets and may signal consolidation before a new move.
For our purposes we are interested in squat bars. This is the sign that volume cannot move the price easily. This type of bar increases the probability of trend reversal. In this indicator we added to enable the MFI filter of reversal bars. If potential reversal bar or two preceding bars have squat state this bar can be interpret as a reversal one.
The second additional filter is Awesome Oscillator. The Awesome Oscillator (AO), developed by Bill Williams, is a momentum indicator that measures market momentum by comparing recent price action to a longer historical context. It helps traders identify potential trend reversals and the strength of trends. Formula:
AO = SMA5(Median Price) − SMA34(Median Price)
where:
Median Price = (High + Low) / 2
SMA5 = 5-period Simple Moving Average of the Median Price
SMA 34 = 34-period Simple Moving Average of the Median Price
If AO is decreasing momentum is bearish, if increasing - bullish. According to Bill Williams approach reversal bars are the potential trades against the trend. As a result we added second filter for bullish reversal bars AO shall be decreasing, for bearish increasing.
How to use indicator
Apply it to desired chart and time frame. It works on every time frame.
Setup the filters with the "Enable MFI" and "Enable AO" checkboxes in the settings. By default they are turned on.
Analyze the price action. Indicator plotted the white line, this is the lips of an Alligator. It will help you to understand how price is moving in comparison to lips line. Indicator will print the green dot and text "BULL" below it current bar is bullish reversal. It will print the red dot and text "BEAR" above it if current bar is interpreted by algorithm as a bearish reversal.
Set up the alerts if it's needed. Indicator has two custom alerts called "Bullish reversal bar has been printed" and "Bearish reversal bar has been printed"
Disclaimer:
Educational and informational tool reflecting Skyrex commitment to informed trading. Past performance does not guarantee future results. Test indicators before live implementation.
Dual Momentum StrategyThis Pine Script™ strategy implements the "Dual Momentum" approach developed by Gary Antonacci, as presented in his book Dual Momentum Investing: An Innovative Strategy for Higher Returns with Lower Risk (McGraw Hill Professional, 2014). Dual momentum investing combines relative momentum and absolute momentum to maximize returns while minimizing risk. Relative momentum involves selecting the asset with the highest recent performance between two options (a risky asset and a safe asset), while absolute momentum considers whether the chosen asset has a positive return over a specified lookback period.
In this strategy:
Risky Asset (SPY): Represents a stock index fund, typically more volatile but with higher potential returns.
Safe Asset (TLT): Represents a bond index fund, which generally has lower volatility and acts as a hedge during market downturns.
Monthly Momentum Calculation: The momentum for each asset is calculated based on its price change over the last 12 months. Only assets with a positive momentum (absolute momentum) are considered for investment.
Decision Rules:
Invest in the risky asset if its momentum is positive and greater than that of the safe asset.
If the risky asset’s momentum is negative or lower than the safe asset's, the strategy shifts the allocation to the safe asset.
Scientific Reference
Antonacci's work on dual momentum investing has shown the strategy's ability to outperform traditional buy-and-hold methods while reducing downside risk. This approach has been reviewed and discussed in both academic and investment publications, highlighting its strong risk-adjusted returns (Antonacci, 2014).
Reference: Antonacci, G. (2014). Dual Momentum Investing: An Innovative Strategy for Higher Returns with Lower Risk. McGraw Hill Professional.