ottlibLibrary "ottlib"
█ OVERVIEW
This library contains functions for the calculation of the OTT (Optimized Trend Tracker) and its variants, originally created by Anıl Özekşi (Anil_Ozeksi). Special thanks to him for the concept and to Kıvanç Özbilgiç (KivancOzbilgic) and dg_factor (dg_factor) for adapting them to Pine Script.
█ WHAT IS "OTT"
The OTT (Optimized Trend Tracker) is a highly customizable and very effective trend-following indicator that relies on moving averages and a trailing stop at its core. Moving averages help reduce noise by smoothing out sudden price movements in the markets, while trailing stops assist in detecting trend reversals with precision. Initially developed as a noise-free trailing stop, the current variants of OTT range from rapid trend reversal detection to long-term trend confirmation, thanks to its extensive customizability.
It's well-known variants are:
OTT (Optimized Trend Tracker).
TOTT (Twin OTT).
OTT Channels.
RISOTTO (RSI OTT).
SOTT (Stochastic OTT).
HOTT & LOTT (Highest & Lowest OTT)
ROTT (Relative OTT)
FT (Original name is Fırsatçı Trend in Turkish which translates to Opportunist Trend)
█ LIBRARY FEATURES
This library has been prepared in accordance with the style, coding, and annotation standards of Pine Script version 5. As a result, explanations and examples will appear when users hover over functions or enter function parameters in the editor.
█ USAGE
Usage of this library is very simple. Just import it to your script with the code below and use its functions.
import ismailcarlik/ottlib/1 as ottlib
█ FUNCTIONS
• f_vidya(source, length, cmoLength)
Short Definition: Chande's Variable Index Dynamic Average (VIDYA).
Details: This function computes Chande's Variable Index Dynamic Average (VIDYA), which serves as the original moving average for OTT. The 'length' parameter determines the number of bars used to calculate the average of the given source. Lower values result in less smoothing of prices, while higher values lead to greater smoothing. While primarily used internally in this library, it has been made available for users who wish to utilize it as a moving average or use in custom OTT implementations.
Parameters:
source (float) : (series float) Series of values to process.
length (simple int) : (simple int) Number of bars to lookback.
cmoLength (simple int) : (simple int) Number of bars to lookback for calculating CMO. Default value is `9`.
Returns: (float) Calculated average of `source` for `length` bars back.
Example:
vidyaValue = ottlib.f_vidya(source = close, length = 20)
plot(vidyaValue, color = color.blue)
• f_mostTrail(source, multiplier)
Short Definition: Calculates trailing stop value.
Details: This function calculates the trailing stop value for a given source and the percentage. The 'multiplier' parameter defines the percentage of the trailing stop. Lower values are beneficial for catching short-term reversals, while higher values aid in identifying long-term trends. Although only used once internally in this library, it has been made available for users who wish to utilize it as a traditional trailing stop or use in custom OTT implementations.
Parameters:
source (float) : (series int/float) Series of values to process.
multiplier (simple float) : (simple float) Percent of trailing stop.
Returns: (float) Calculated value of trailing stop.
Example:
emaValue = ta.ema(source = close, length = 14)
mostValue = ottlib.f_mostTrail(source = emaValue, multiplier = 2.0)
plot(mostValue, color = emaValue >= mostValue ? color.green : color.red)
• f_ottTrail(source, multiplier)
Short Definition: Calculates OTT-specific trailing stop value.
Details: This function calculates the trailing stop value for a given source in the manner used in OTT. Unlike a traditional trailing stop, this function modifies the traditional trailing stop value from two bars prior by adjusting it further with half the specified percentage. The 'multiplier' parameter defines the percentage of the trailing stop. Lower values are beneficial for catching short-term reversals, while higher values aid in identifying long-term trends. Although primarily used internally in this library, it has been made available for users who wish to utilize it as a trailing stop or use in custom OTT implementations.
Parameters:
source (float) : (series int/float) Series of values to process.
multiplier (simple float) : (simple float) Percent of trailing stop.
Returns: (float) Calculated value of OTT-specific trailing stop.
Example:
vidyaValue = ottlib.f_vidya(source = close, length = 20)
ottValue = ottlib.f_ottTrail(source = vidyaValue, multiplier = 1.5)
plot(ottValue, color = vidyaValue >= ottValue ? color.green : color.red)
• ott(source, length, multiplier)
Short Definition: Calculates OTT (Optimized Trend Tracker).
Details: The OTT consists of two lines. The first, known as the "Support Line", is the VIDYA of the given source. The second, called the "OTT Line", is the trailing stop based on the Support Line. The market is considered to be in an uptrend when the Support Line is above the OTT Line, and in a downtrend when it is below.
Parameters:
source (float) : (series float) Series of values to process. Default value is `close`.
length (simple int) : (simple int) Number of bars to lookback. Default value is `2`.
multiplier (simple float) : (simple float) Percent of trailing stop. Default value is `1.4`.
Returns: ( [ float, float ]) Tuple of `supportLine` and `ottLine`.
Example:
= ottlib.ott(source = close, length = 2, multiplier = 1.4)
longCondition = ta.crossover(supportLine, ottLine)
shortCondition = ta.crossunder(supportLine, ottLine)
• tott(source, length, multiplier, bandsMultiplier)
Short Definition: Calculates TOTT (Twin OTT).
Details: TOTT consists of three lines: the "Support Line," which is the VIDYA of the given source; the "Upper Line," a trailing stop of the Support Line adjusted with an added multiplier; and the "Lower Line," another trailing stop of the Support Line, adjusted with a reduced multiplier. The market is considered in an uptrend if the Support Line is above the Upper Line and in a downtrend if it is below the Lower Line.
Parameters:
source (float) : (series float) Series of values to process. Default value is `close`.
length (simple int) : (simple int) Number of bars to lookback. Default value is `40`.
multiplier (simple float) : (simple float) Percent of trailing stop. Default value is `0.6`.
bandsMultiplier (simple float) : Multiplier for bands. Default value is `0.0006`.
Returns: ( [ float, float, float ]) Tuple of `supportLine`, `upperLine` and `lowerLine`.
Example:
= ottlib.tott(source = close, length = 40, multiplier = 0.6, bandsMultiplier = 0.0006)
longCondition = ta.crossover(supportLine, upperLine)
shortCondition = ta.crossunder(supportLine, lowerLine)
• ott_channel(source, length, multiplier, ulMultiplier, llMultiplier)
Short Definition: Calculates OTT Channels.
Details: OTT Channels comprise nine lines. The central line, known as the "Mid Line," is the OTT of the given source's VIDYA. The remaining lines are positioned above and below the Mid Line, shifted by specified multipliers.
Parameters:
source (float) : (series float) Series of values to process. Default value is `close`
length (simple int) : (simple int) Number of bars to lookback. Default value is `2`
multiplier (simple float) : (simple float) Percent of trailing stop. Default value is `1.4`
ulMultiplier (simple float) : (simple float) Multiplier for upper line. Default value is `0.01`
llMultiplier (simple float) : (simple float) Multiplier for lower line. Default value is `0.01`
Returns: ( [ float, float, float, float, float, float, float, float, float ]) Tuple of `ul4`, `ul3`, `ul2`, `ul1`, `midLine`, `ll1`, `ll2`, `ll3`, `ll4`.
Example:
= ottlib.ott_channel(source = close, length = 2, multiplier = 1.4, ulMultiplier = 0.01, llMultiplier = 0.01)
• risotto(source, length, rsiLength, multiplier)
Short Definition: Calculates RISOTTO (RSI OTT).
Details: RISOTTO comprised of two lines: the "Support Line," which is the VIDYA of the given source's RSI value, calculated based on the length parameter, and the "RISOTTO Line," a trailing stop of the Support Line. The market is considered in an uptrend when the Support Line is above the RISOTTO Line, and in a downtrend if it is below.
Parameters:
source (float) : (series float) Series of values to process. Default value is `close`.
length (simple int) : (simple int) Number of bars to lookback. Default value is `50`.
rsiLength (simple int) : (simple int) Number of bars used for RSI calculation. Default value is `100`.
multiplier (simple float) : (simple float) Percent of trailing stop. Default value is `0.2`.
Returns: ( [ float, float ]) Tuple of `supportLine` and `risottoLine`.
Example:
= ottlib.risotto(source = close, length = 50, rsiLength = 100, multiplier = 0.2)
longCondition = ta.crossover(supportLine, risottoLine)
shortCondition = ta.crossunder(supportLine, risottoLine)
• sott(source, kLength, dLength, multiplier)
Short Definition: Calculates SOTT (Stochastic OTT).
Details: SOTT is comprised of two lines: the "Support Line," which is the VIDYA of the given source's Stochastic value, based on the %K and %D lengths, and the "SOTT Line," serving as the trailing stop of the Support Line. The market is considered in an uptrend when the Support Line is above the SOTT Line, and in a downtrend when it is below.
Parameters:
source (float) : (series float) Series of values to process. Default value is `close`.
kLength (simple int) : (simple int) Stochastic %K length. Default value is `500`.
dLength (simple int) : (simple int) Stochastic %D length. Default value is `200`.
multiplier (simple float) : (simple float) Percent of trailing stop. Default value is `0.5`.
Returns: ( [ float, float ]) Tuple of `supportLine` and `sottLine`.
Example:
= ottlib.sott(source = close, kLength = 500, dLength = 200, multiplier = 0.5)
longCondition = ta.crossover(supportLine, sottLine)
shortCondition = ta.crossunder(supportLine, sottLine)
• hottlott(length, multiplier)
Short Definition: Calculates HOTT & LOTT (Highest & Lowest OTT).
Details: HOTT & LOTT are composed of two lines: the "HOTT Line", which is the OTT of the highest price's VIDYA, and the "LOTT Line", the OTT of the lowest price's VIDYA. A high price surpassing the HOTT Line can be considered a long signal, while a low price dropping below the LOTT Line may indicate a short signal.
Parameters:
length (simple int) : (simple int) Number of bars to lookback. Default value is `20`.
multiplier (simple float) : (simple float) Percent of trailing stop. Default value is `0.6`.
Returns: ( [ float, float ]) Tuple of `hottLine` and `lottLine`.
Example:
= ottlib.hottlott(length = 20, multiplier = 0.6)
longCondition = ta.crossover(high, hottLine)
shortCondition = ta.crossunder(low, lottLine)
• rott(source, length, multiplier)
Short Definition: Calculates ROTT (Relative OTT).
Details: ROTT comprises two lines: the "Support Line", which is the VIDYA of the given source, and the "ROTT Line", the OTT of the Support Line's VIDYA. The market is considered in an uptrend if the Support Line is above the ROTT Line, and in a downtrend if it is below. ROTT is similar to OTT, but the key difference is that the ROTT Line is derived from the VIDYA of two bars of Support Line, not directly from it.
Parameters:
source (float) : (series float) Series of values to process. Default value is `close`.
length (simple int) : (simple int) Number of bars to lookback. Default value is `200`.
multiplier (simple float) : (simple float) Percent of trailing stop. Default value is `0.1`.
Returns: ( [ float, float ]) Tuple of `supportLine` and `rottLine`.
Example:
= ottlib.rott(source = close, length = 200, multiplier = 0.1)
isUpTrend = supportLine > rottLine
isDownTrend = supportLine < rottLine
• ft(source, length, majorMultiplier, minorMultiplier)
Short Definition: Calculates Fırsatçı Trend (Opportunist Trend).
Details: FT is comprised of two lines: the "Support Line", which is the VIDYA of the given source, and the "FT Line", a trailing stop of the Support Line calculated using both minor and major trend values. The market is considered in an uptrend when the Support Line is above the FT Line, and in a downtrend when it is below.
Parameters:
source (float) : (series float) Series of values to process. Default value is `close`.
length (simple int) : (simple int) Number of bars to lookback. Default value is `30`.
majorMultiplier (simple float) : (simple float) Percent of major trend. Default value is `3.6`.
minorMultiplier (simple float) : (simple float) Percent of minor trend. Default value is `1.8`.
Returns: ( [ float, float ]) Tuple of `supportLine` and `ftLine`.
Example:
= ottlib.ft(source = close, length = 30, majorMultiplier = 3.6, minorMultiplier = 1.8)
longCondition = ta.crossover(supportLine, ftLine)
shortCondition = ta.crossunder(supportLine, ftLine)
█ CUSTOM OTT CREATION
Users can create custom OTT implementations using f_ottTrail function in this library. The example code which uses EMA of 7 period as moving average and calculates OTT based of it is below.
Source Code:
//@version=5
indicator("Custom OTT", shorttitle = "COTT", overlay = true)
import ismailcarlik/ottlib/1 as ottlib
src = input.source(close, title = "Source")
length = input.int(7, title = "Length", minval = 1)
multiplier = input.float(2.0, title = "Multiplier", minval = 0.1)
support = ta.ema(source = src, length = length)
ott = ottlib.f_ottTrail(source = support, multiplier = multiplier)
pSupport = plot(support, title = "Moving Average Line (Support)", color = color.blue)
pOtt = plot(ott, title = "Custom OTT Line", color = color.orange)
fillColor = support >= ott ? color.new(color.green, 60) : color.new(color.red, 60)
fill(pSupport, pOtt, color = fillColor, title = "Direction")
Result:
█ DISCLAIMER
Trading is risky and most of the day traders lose money eventually. This library and its functions are only for educational purposes and should not be construed as financial advice. Past performances does not guarantee future results.
Cari dalam skrip untuk "track"
Chart Time and Price Range It is easy to loose track of time and price volatility when the chart automatically scales to the bars on the chart. This helps you keep track.
This is a very simple indicator that is designed to ensure that you're looking at a segment of the chart that is relevant to the trade you're considering in both price distance and time.
The Problem:
When looking at a chart the lowest price is at the bottom of the screen, the highest price is at the top. The time at the beginning of the chart is based on how many bars and what timeframe you're looking at.
But is the price difference between the two wide or narrow? Are you seeing minutes, hours, or days of price action?
You can get the measure tool out, but you'll change the zoom level and now its different. You change the timeframe and its different.
This Solution:
This indicator puts a table on the screen that will tell you the X/Y distance of everything that is on your chart. If your hold period is 5 minutes, why would you be looking at 3 days of price action to find s/r or make a decision on a trade?
This will show you how much price opportunity was available in the amount of time you are currently viewing. Using the PineCoders VisibleChart library, we're retrieving the time and bar_index of the beginning of the chart so that everything that is currently on the chart is measured and it adapts as that changes.
It will work with light and dark themes (you can change the colors) and can be positioned wherever you prefer to see the information.
Disclaimer: This was a quick release script. I wrote it and published the same day. There could be bugs, so send me a message or add a comment to report anything that isn't behaving correctly.
Live PnL v1.0Live P&L for multiple stocks, currencies, crypto and commodities can now be tracked for your favorite scripts, pair trading etc.
This indicator gives provision to add up to 3 stocks/futures/currency with Buy and Sell, Quantity (can be lot size or any other) and Entry Price and set as default so that every time you put back this indicator you can monitor the live Profit / Loss figure.
This indicator will help trade to evaluate and track tips/trades of experts on social media and Media platforms and check their accuracy themselves in an organized way.
Apart from paper trading a trade or multiple positions ones combined together it also gives a feeler of combined Mark to live Market Drawdowns or Profitability.
The Price of Hard MoneyIf we calculate “the price of hard money” (the market capitalization weighted price of gold plus Bitcoin); we get this chart.
Since 2017, Bitcoin’s share of hard money growth has been increasing, we can see it visibly on the gold chart by a widening delta between the price of hard money and the Gold price. We can also see some interesting technical behaviours.
In 2021, Hard Money broke out and held this breakout above the 2011 Gold high. Only later in 2022 did a correction of 20% occur – typical of Golds historic volatility in periods of inflation and high interest rates.
Hard Money is at major support and we have evidence for a fundamental shift in investor capital flows away from gold and into Bitcoin.
This Indicator is useful:
- To track the market capitalization of Gold (estimated), Bitcoin and combined market capitalization of Hard Money.
- To track the price action and respective change in investor flows from Gold to Bitcoin .
Provided Bitcoin continues to suck more value out of gold with time, this chart will be useful for tracking price action of the combined asset classes into the years to come.
Big Whale Purchases and SalesBig Whale Purchases and Sales - plots big whale transactions on your chart!
People that hold more than 1% of a crypto currencies circulating supply are considered whales and have a huge influence on price, not just because they can move the market with their huge transactions, but also because other traders often track their wallets and follow their example. Taking a look at whale holdings, one can see why whale worship is so common in crypto: While Bitcoin has a relatively low whale concentration, many of the Top 100 Cryptocurrencies have whales control 60% or more of their circulating supply.
Integrating IntoTheBlock data, this script plots the transactions of these whales and, in strategy mode, copy trades them.
Features:
Strategy Mode: Switches the script between an indicator and a strategy.
Standard Deviations: The number of Standard Deviations that a transaction needs to surpass to be considered worth plotting. Setting this to 0 will show all whale transactions, higher settings will only show the biggest transactions.
Blockchain: The Chain on which Whale activity is tracked.
Example - MA-Cross Retracement DetectionThe retracement tracker function(s) in this script outline how to:
Track conditions using "toggle" booleans.
Use multiple coinciding conditions to trigger an event just once.
What is a retracement?
"Retracements are temporary price reversals that take place within a
larger trend. The key here is that these price reversals are temporary
and do not indicate a change in the larger trend."
Quote Source: www.investopedia.com
BEST Engulfing + Breakout StrategyHello traders
This is a simple algorithm for a Tradingview strategy tracking a convergence of 2 unrelated indicators.
Convergence is the solution to my trading problems.
It's a puzzle with infinite possibilities and only a few working combinations.
Here's one that I like
- Engulfing pattern
- Price vs Moving average for detecting a breakout
Definition
Take out the notebooks :) and some coffee (good for focus). I'm bullish in coffee
The engulfing pattern is a two-candle reversal pattern.
The second candle completely ‘engulfs’ the real body of the first one, without regard to the length of the tail shadows.
The bullish Engulfing pattern appears in a downtrend and is a combination of one red candle followed by a larger green candle
The bearish Engulfing pattern appears in a downtrend and is a combination of one green candle followed by a larger red candle
Example: imgur.com
We're bored sir... what's the point of all this?
In summary, an engulfing is a pattern to track reversals. (the whole TradingView audience stands up now giving a standing ovation)
Adding the Price vs Moving average filters allows to track reversals with momentums (half of the audience collapsed because this is too awesome)
Ok sir... you picked up my interest
I included some cool backtest filters:
- date range filtering
- flexible take profit in USD value (plotted in blue)
- flexible stop loss in USD value (plotted in red)
All the best
Dave
Klinger Safety ZonesThis indicator is based on the Klinger Volume Oscillator, or KVO. The KVO is pretty cool since it can track long-term changes in money flow (both into and out of a market), as well as respond and predict short term price fluctuations.
The Klinger Oscillator determines the direction (or trend) of money flow based on the high, low, and closing price of the security. It then compares all three values (HLC/3) to the previous period’s values to determine how volume should be factored into the KVO. If the current period’s price is greater than that of the previous period, then volume is added. It is subtracted, however, if the price is less than the previous period. This utilization of volume is what makes it an accurate tracker of money flow and a valuable confirmation indicator. This value is often called volume force or the “trend” line.
A fast and slow EMA of the volume force are then calculated. The fast EMA has a smaller window length, while the slow EMA has a larger window. Traders can adjust the lengths of each EMA in the input option menu, but we chose the standard 55 and 34 period lengths as the default settings. We are finally left with the actual KVO value after subtracting the slow EMA from the fast EMA.
The Klinger Oscillator uses a signal line similar to the MACD and many other indicators. The default length for it is 13, but that length can also be adjusted in the input menu. A shorter length will result in more responsiveness but possibly more false signals and whipsaws.
The Chart and Interpretation:
The histogram shows the KVO series. Remember, since the Oscillator represents the difference between the fast and slow EMA, the KVO is bullish when it is greater than zero and bearish when it is less than zero.
When the KVO is greater than zero, the background on the chart is green, meaning that the trend is bullish and traders should look to go long. On the flip side, the background is red when the KVO is less than zero meaning traders should look to go short.
The aqua line plotted on top of the histogram is the signal line.
Here is a quick summary of the histogram colors:
(if KVO > 0 and KVO > signal)
then (color = teal)
if (KVO > 0 and KVO < signal)
then (color = lime)
if (KVO < 0 and KVO < signal)
then (color = red)
if (KVO < 0 and KVO > signal)
then (color = pink)
Users can choose to have the candles change color to match the KVO histogram color by adjusting the setting in the input menu.
~Happy (and safe) trading~
ZLMA Keltner ChannelThe ZLMA Keltner Channel uses a Zero-Lag Moving Average (ZLMA) as the centerline with ATR-based bands to track trends and volatility.
The ZLMA’s reduced lag enhances responsiveness for breakouts and reversals, i.e. it's more sensitive to pivots and trend reversals.
Unlike Bollinger Bands, which use standard deviation and are more sensitive to price spikes, this uses ATR for smoother volatility measurement.
Background:
Built on John Ehlers’ lag-reduction techniques, this indicator adapts the classic Keltner Channel for dynamic markets. It excels in trending (low-entropy) markets for breakouts and range-bound (high-entropy) markets for reversals.
How to Read:
ZLMA (Blue): Tracks price trends. Above = bullish, below = bearish.
Upper Band (Green): ZLMA + (Multiplier × ATR). Cross above signals breakout or overbought.
Lower Band (Red): ZLMA - (Multiplier × ATR). Cross below signals breakout or oversold.
Channel Fill (Gray): Shows volatility. Narrow = low volatility, wide = high volatility.
Signals (Optional): Enable to show “Buy” (green) on upper band crossovers, “Sell” (red) on lower band crossunders.
Strategies: Trade breakouts in trending markets, reversals in ranges, or use bands as trailing stops.
Settings:
ZLMA Period (20): Adjusts centerline responsiveness.
ATR Period (20): Sets volatility period.
Multiplier (2.0): Controls band width.
If you are still confused between the ZLMA Keltner Channels and Bollinger Bands:
Keltner Channel (ZLMA): Uses ATR for bands, which smooths volatility and is less reactive to sudden price spikes. The ZLMA centerline reduces lag for faster trend detection.
Bollinger Bands: Uses standard deviation for bands, making them more sensitive to price volatility and prone to wider swings in high-entropy markets. Typically uses an SMA centerline, which lags more than ZLMA.
X ORTX ORT — Opening Range & Time Reference Tool
Overview
The X ORT indicator is a precision tool designed for intraday traders seeking to anchor their trading decisions to high-probability price levels. It captures key market reference points including Opening Ranges, Settlement Prices, and Time-Specific Opens, all based on New York time, to help identify potential pivots and directional bias in the market.
Key Features & Usage
🔹 Opening Range Boxes (ORs)
The indicator defines up to two customizable Opening Ranges (e.g., 9:30–9:59 and 8:20–8:49 ET). Each range dynamically tracks the high, low, and midpoint price as the session unfolds, and continues to extend those levels forward throughout the day.
Use as Pivots: The high and low of the Opening Range often act as intraday support and resistance zones. A breakout above the ORH (Opening Range High) may signal bullish intent, while a drop below the ORL (Opening Range Low) may suggest bearish momentum.
Use for Directional Bias: If price remains above or below the range after completion, it may indicate a continuation in that direction. The midpoint (dashed line) serves as a mean-reversion or fair value pivot.
🔸 Settlement Price Anchors
The indicator optionally plots Daily, Weekly, and Monthly Settlement Prices, which are significant institutional reference points.
Use as Market Anchors: Settlement prices are often used by professionals to gauge positioning. Price acceptance above or below settlement can signal strength or weakness and guide directional trades.
Historical weekly and monthly settlements help define multi-day or swing levels for broader context.
🔹 Time-Based Open Levels
X ORT also draws horizontal lines at the open price of specific time points: Midnight, 8:30 AM, 9:30 AM, and 1:30 PM ET.
Use for Session Anchors: These reference opens are useful for understanding session shifts, aligning with key economic releases (like 8:30 AM), and gauging session-to-session continuity.
Why Use X ORT?
Objective Structure: Provides rule-based levels to avoid emotional trading.
Visual Clarity: Transparent, extendable boxes and labeled lines help traders focus on key decision zones.
Multi-Time Context: Blends intraday and higher timeframe levels to support short-term and swing traders.
Whether you're breakout trading, fading range extremes, or gauging market bias, X ORT offers a reliable structural foundation that aligns with how professionals track price behavior throughout the trading day.
Multi-timeframe Spot ETH ETF flowsDescription of Multi-timeframe Spot ETH ETF Flows Pine Script
This Pine Script™ (version 6) creates a Multi-timeframe Spot ETH ETF Flows indicator to track and visualize net and cumulative capital flows for various Ethereum (ETH) Spot Exchange-Traded Funds (ETFs) listed on AMEX and NASDAQ. The script calculates up and down volume based on price movements in a lower timeframe, multiplies these by the average price (HLC3) for accuracy, and aggregates the data to display net and cumulative flows.
Key Features:
ETF List : Tracks nine ETH Spot ETFs (e.g., AMEX:ETHE, NASDAQ:ETHA, etc.).
Custom Timeframe Input : Allows users to override the default lower timeframe (automatically selected based on the chart’s timeframe) with a custom timeframe (default: 720 minutes). Higher timeframes provide more historical data but less precision.
Volume Analysis : Calculates positive (up) and negative (down) volume based on price movements (close vs. open or close vs. previous close) in the lower timeframe, weighted by the average price.
Net and Cumulative Flows :
Net flow is the sum of up and down volumes across all ETFs, displayed as colored columns (green for positive, red for negative, with transparency based on trend direction).
Cumulative flow is the running total of net flows since the ETFs' launch, plotted as a line. Visualization : Uses dynamic colors for net flow columns to indicate direction and strength, with a black line for cumulative flow.
Technical Details:
Data Retrieval : Uses request.security and request.security_lower_tf to fetch price and volume data from lower timeframes.
Array Processing : Sums up and down volume arrays to compute net flows for each ETF.
Auto Timeframe Switching : Selects an appropriate lower timeframe (e.g., 1-second for seconds-based charts, 5-minute for daily charts) unless a custom timeframe is specified.
Styling : Net flow is plotted as columns, with color intensity reflecting flow direction and trend continuity.
Purpose:
The indicator helps traders and investors monitor capital inflows and outflows for ETH Spot ETFs, providing insights into market sentiment and fund activity across multiple timeframes.
License : Mozilla Public License 2.0.
ETF Leverage VerificationDo leveraged ETFs really return what they promise?
Do they return the exact 2x or 3x? Or a slightly different multiple?
How much do they deviate from the promised leverage multiples?
Do these deviations impact investors in a positive or negative manner?
These are the questions that I want to answer with this indicator.
The ETF Leverage Verification indicator challenges the conventional understanding of leveraged ETFs by measuring how they actually perform versus their theoretical targets.
Instead of assuming leveraged ETFs perfectly track their target multiple, this indicator quantifies the real-world behavior by comparing the expected returns versus the actual results on every trading day.
Key Features
Measures actual versus expected performance of leveraged ETFs
Tracks deviation patterns across thousands of trading days
Identifies asymmetric behavior in up versus down markets
Quantifies beneficial "cushioning effect" during market declines
Provides statistical summary of performance patterns
Works with any leverage factor (2x, 3x, -1x, etc.)
Compatible with all leveraged ETFs (equity, bond, commodity, volatility)
How to Use the Indicator
Enter the Expected Leverage Factor (default: 2.0)
Select the Base Asset (underlying index, e.g., SPX)
Select the Leveraged Asset (leveraged ETF, e.g., SSO)
Understanding the Results
Green markers: Days when the ETF outperformed its expected multiple
Red markers: Days when the ETF underperformed its expected multiple
Data Table:
Positive Deviations: Count of days with better-than-expected performance
Negative Deviations: Count of days with worse-than-expected performance
Avg Deviation: Average magnitude of deviation from expected returns
Frequency Skew: Difference between beneficial deviations in down vs. up markets
Impact: Overall assessment of pattern benefit to investors
Summary Label:
Percentage of positive deviations in up and down markets
Total sample size for statistical significance
Key Patterns to Look For
Positive Deviation in Negative Days:
This occurs when a leveraged ETF falls less than expected during market declines. For example, if SPX falls 1% and a 2x ETF falls only 1.8% (instead of the expected 2%), this creates a +0.2% deviation. This pattern is beneficial as it provides downside protection.
Negative Deviation in Positive Days:
This happens when a leveraged ETF rises less than expected during market advances. For example, if SPX rises 1% and a 2x ETF rises only 1.9% (instead of the expected 2%), this creates a -0.1% deviation. This pattern reduces upside performance.
Frequency Skew:
The most critical metric that measures how much more frequently beneficial deviations occur in down markets compared to up markets. A higher positive skew indicates a stronger asymmetric pattern that helps long-term performance.
Mathematical Background
The indicator computes the deviation between expected and actual performance:
Deviation = Actual Return - Expected Return
Where:
Expected Return = Base Asset Return × Leverage Factor
The deviation is then categorized into four possible outcomes:
Positive deviation on positive market days
Negative deviation on positive market days
Positive deviation on negative market days
Negative deviation on negative market days
In short, more positive deviations are good for investors.
Please feel free to criticize. I'm happy to improve the indicator.
GCM Bull Bear RiderGCM Bull Bear Rider (GCM BBR)
Your Ultimate Trend-Riding Companion
GCM Bull Bear Rider is a comprehensive, all-in-one trend analysis tool designed to eliminate guesswork and provide a crystal-clear view of market direction. By leveraging a highly responsive Jurik Moving Average (JMA), this indicator not only identifies bullish and bearish trends with precision but also tracks their performance in real-time, helping you ride the waves of momentum from start to finish.
Whether you are a scalper, day trader, or swing trader, the GCM BBR adapts to your style, offering a clean, intuitive, and powerful visual guide to the market's pulse.
Key Features
JMA-Powered Trend Lines (UTPL & DTPL): The core of the indicator. A green "Up Trend Period Line" (UTPL) appears when the JMA's slope turns positive (buyers are in control), and a red "Down Trend Period Line" (DTPL) appears when the slope turns negative (sellers are in control). The JMA is used for its low lag and superior smoothing, giving you timely and reliable trend signals.
Live Profit Tracking Labels: This is the standout feature. As soon as a trend period begins, a label appears showing the real-time profit (P:) from the trend's starting price. This label moves with the trend, giving you instant feedback on its performance and helping you make informed trade management decisions.
Historical Performance Analysis: The profit labels remain on the chart for completed trends, allowing you to instantly review past performance. See at a glance which trends were profitable and which were not, aiding in strategy refinement and backtesting.
Automatic Chart Decluttering: To keep your chart clean and focused on significant moves, the indicator automatically removes the historical profit label for any trend that fails to achieve a minimum profit threshold (default is 0.5 points).
Dual-Ribbon Momentum System:
JMA / Short EMA Ribbon: Visualizes short-term momentum. A green fill indicates immediate bullish strength, while a red fill shows bearish pressure.
Short EMA / Long EMA Ribbon: Acts as a long-term trend filter, providing broader market context for your decisions.
"GCM Hunt" Entry Signals: The indicator includes optional pullback entry signals (green and red triangles). These appear when the price pulls back to a key moving average and then recovers in the direction of the primary trend, offering high-probability entry opportunities.
How to Use
Identify the Trend: Look for the appearance of a solid green line (UTPL) for a bullish bias or a solid red line (DTPL) for a bearish bias. Use the wider EMA ribbon for macro trend confirmation.
Time Your Entry: For aggressive entries, you can enter as soon as a new trend line appears. For more conservative entries, wait for a "GCM Hunt" triangle signal, which confirms a successful pullback.
Ride the Trend & Manage Your Trade: The moving profit label (P:) is your guide. As long as the trend line continues and the profit is increasing, you can confidently stay in the trade. A flattening JMA or a decreasing profit value can signal that the trend is losing steam.
Focus Your Strategy: Use the Display Mode setting to switch between "Buyers Only," "Sellers Only," or both. This allows you to completely hide opposing signals and focus solely on long or short opportunities.
Core Settings
Display Mode: The master switch. Choose to see visuals for "Buyers & Sellers," "Buyers Only," or "Sellers Only."
JMA Settings (Length, Phase): Fine-tune the responsiveness of the core JMA engine.
EMA Settings (Long, Short): Adjust the lengths of the moving averages that define the ribbons and "Hunt" signals.
Label Offset (ATR Multiplier): Customize the gap between the trend lines and the profit labels to avoid overlap with candles.
Filters (EMA, RSI, ATR, Strong Candle): Enable or disable various confirmation filters to strengthen the "Hunt" entry signals according to your risk tolerance.
Add the GCM Bull Bear Rider to your chart today and transform the way you see and trade the trend!
ENJOY
Exponential Moving Averages📘 Exponential Moving Averages – Clean & Focused Trend Tool
This script displays five Exponential Moving Averages (EMAs) — 10, 20, 50, 100, and 200 — that are commonly used by professional traders to identify short-, medium-, and long-term trend directions. It offers a simple, no-setup-needed solution for visualizing market momentum and price structure on any timeframe.
🧠 Why This Script Was Created
Previously, many users faced confusion with built-in moving average scripts, where they had to manually change the type to EMA from the default SMA (Simple Moving Average). This extra step was unintuitive for newer users and could lead to misinterpretation of signals.
To solve this, we’ve created a dedicated script that only plots Exponential Moving Averages — no configuration needed. EMAs are more responsive to price changes and widely used in real-world trading setups, especially for intraday and swing strategies.
🔍 How It Works
EMA 10 & 20 – Detect short-term momentum shifts.
EMA 50 & 100 – Help visualize medium-term trend strength.
EMA 200 – Tracks long-term trend direction and institutional positioning.
Each EMA is plotted with distinct colors and line thickness to make trend tracking fast and intuitive.
⚙️ How to Use
Use across any timeframe (5m, 1H, 1D, etc.).
Watch for crossovers between shorter and longer EMAs.
Observe price interaction with EMAs as dynamic support/resistance levels.
Combine with other tools like RSI, volume, or price action patterns for confirmation.
🌟 What Makes It Unique
No settings confusion: Always uses EMA — no manual adjustments needed.
Multiple EMAs in one: Avoid clutter by combining essential levels in a clean overlay.
Practical by design: Built for traders who prefer responsive, real-time trend signals.
Momentum Trail Oscillator [AlgoAlpha]🟠 OVERVIEW
This script builds a Momentum Trail Oscillator designed to measure directional momentum strength and dynamically track shifts in trend bias using a combination of smoothed price change calculations and adaptive trailing bands. The oscillator aims to help traders visualize when momentum is expanding or contracting and to identify transitions between bullish and bearish conditions.
🟠 CONCEPTS
The core idea combines two methods. First, the script calculates a normalized momentum measure by smoothing price changes relative to their absolute values, which creates a bounded oscillator that highlights whether moves are directional or choppy. Second, it uses a trailing band mechanism inspired by volatility stops, where bands adapt to the oscillator’s volatility, adjusting the thresholds that define a shift in directional bias. This dual approach seeks to address both the magnitude and persistence of momentum, reducing false signals in ranging markets.
🟠 FEATURES
The momentum calculation applies Hull Moving Averages and double EMA smoothing to price changes, producing a smooth, responsive oscillator.
The trailing bands are derived by offsetting a weighted moving average of the oscillator by a multiple of recent momentum volatility. A directional state variable tracks whether the oscillator is above or below the bands, updating when the momentum crosses these dynamic thresholds.
Overbought and oversold zones are visually marked between fixed levels (+30/+40 and -30/-40), with color fills to highlight when momentum is in extreme areas. The script plots signals on both the oscillator pane and optionally overlays markers on the main price chart for clarity.
🟠 USAGE
To use the indicator, apply it to any symbol and timeframe. The “Oscillator Length” controls how sensitive the momentum line is to recent price changes—lower values react faster, higher values smooth out noise. The “Trail Multiplier” sets how far the adaptive bands sit from the oscillator mid-line, which affects how often trend state changes occur. When the momentum line rises into the upper filled area and then crosses back below +40, it signals potential overbought exhaustion. The opposite applies for the oversold zone below -40. The plotted trailing bands switch visibility depending on the current directional state: when momentum is trending up, the lower band acts as the active trailing stop, and when trending down, the upper band becomes active. Trend changes are marked with circular symbols when the direction variable flips, and optional overlay arrows appear on the price chart to highlight overbought or oversold reversals. Traders can combine these signals with their own price action or volume analysis to confirm entries or exits.
Open Interest Footprint IQ [TradingIQ]Hello Traders!
Th e Open Interest Footprint IQ indicator is an advanced visualization tool designed for cryptocurrency markets. It provides a granular, real-time breakdown of open interest changes across different price levels, allowing traders to see how aggressive market participation is distributed within each bar.
Unlike standard footprint charts that rely solely on volume, this indicator offers unique insights by focusing on the interaction between price action and changes in open interest (OI) — a leading metric often used to infer trader intent and positioning.
How it works
The Open Interest Footprint IQ processes lower timeframe price and open interest data to build a footprint-style chart that shows how traders are positioning themselves within each candle.
Here’s a breakdown of the process:
1. Granular OI & Price Sampling
The script retrieves lower-timeframe data (1-minute, 1-second, or 1-tick, based on your setting).
For each candle, it captures:
High and low prices
Price change direction
Change in open interest (OI)
2. Classifying Trader Behavior
For each lower-timeframe segment, the indicator determines the type of positioning occurring based on price movement and OI change:
If price is moving up and open interest is increasing, it suggests that long positions are being opened. This is considered a "Longs Opening" event, labeled as UU (Up/Up).
If price is moving up but open interest is decreasing, it indicates that short positions are being closed. This is referred to as UD (Up/Down), or "Shorts Closing."
If price is moving down and open interest is increasing, it signals that short positions are being opened. This is known as DU (Down/Up), or "Shorts Opening."
If price is moving down while open interest is also decreasing, it means that long positions are being closed. This is labeled as DD (Down/Down), or "Longs Closing."
These are stored in separate arrays and displayed at specific price levels.
It is particularly useful for identifying:
Where longs or shorts are opening/closing positions
Stacked imbalances (indicative of potential absorption or exhaustion)
Value area zones and POC (Point of Control) based on OI, not volume
This footprint runs on your choice of sub-bar granularity and is ideal for high-frequency trading, scalping, and entries based on order flow dynamics.
Key Features
Footprint Visualization
At each price level within a candle:
Long/short opening and closing behavior is broken down.
Delta (net open interest change) is displayed both numerically and color-coded.
Optional gradient coloring shows intensity and type of flow (longs/shorts opened/closed).
Cumulative or per-bar reset modes allow you to track OI evolution over time.
The image above explains the information that each Footprint box shows across a candlestick!
Each footprint box shows:
OI Delta
OI Delta %
Longs Opened (LO)
Longs Closed (LC)
Shorts Opened (SO)
Shorts Closed (SC)
The image above explains the color-coding feature of the indicator.
Boxes are color coded to show which position action
dominated at the price area.
For this example:
Green boxes = Long positions being opened dominated
Purple boxes = Long positions being closed dominated
Red boxes = Short positions being opened dominated
Yellow boxes = Short positions being closed dominated
All colors are customizable.
Additionally, for traders who are only interested in whether OI increased/decreased, a "two-color" option is available in the settings.
For the two-color option, footprint boxes can be one of two colors. Showing whether OI increased or decreased at the level.
Cumulative Levels
Open Interest Footprint IQ contains a "Cumulative Levels" feature that tracks/stores open interest change at tick levels over time, rather than resetting per bar.
With the "Cumulative Levels" feature enabled, traders can see open interest changes persist across all candlesticks. This feature is useful for determining whether longs opening, longs closing, shorts opening, or shorts closing are dominating at particular price areas over time rather than on a single bar.
A useful feature to see if shorts/longs are favoring certain price throughout the day, week, month, etc.
Input Settings Explained
Granularity (Dropdown: Granularity)
Options: 1-Minute, 1-Second, 1-Tick
Determines how finely the script samples the lower timeframe data to construct the footprint.
For precision:
1-Tick = Highest accuracy, but more resource-intensive.
1-Second/1-Minute = Suitable for broader or more zoomed-out analysis.
Tick Level Distance (Tick Level Distance (0 = Auto))
Defines the vertical spacing between levels in the footprint chart.
If 0, the script uses an automatic calculation based on ATR to adapt to volatility.
Set a manual value (e.g., 5) to control the height granularity of each level in ticks.
Cumulative Levels (Toggle)
If enabled, the footprint builds cumulatively over time, rather than resetting per candle.
Use case: Visualize ongoing buildup of OI activity across a session or day.
Cumulative Levels Reset TF (Timeframe)
Sets the reset interval for the cumulative view (e.g., reset daily, hourly, etc.)
Works only when Cumulative Levels is enabled.
Delta Box Display Settings
Show Delta Percentage
Toggles the display of the percentage change in OI across the footprint level.
Helpful to gauge how aggressive positioning is relative to total OI at that level.
Show Longs/Shorts (Opened/Closed)
Show Longs Opened: Displays OI increase in up candles (price ↑, OI ↑).
Show Longs Closed: Displays OI decrease in down candles (price ↓, OI ↓).
Show Shorts Opened: OI increase in down candles (price ↓, OI ↑).
Show Shorts Closed: OI decrease in up candles (price ↑, OI ↓).
These behaviors are color-coded to give traders instant context:
Blue-green for longs opening.
Purple for longs closing.
Red for shorts opening.
Yellow for shorts closing.
Value Area & POC
Value Area % (Value Area %)
Controls how much cumulative open interest is used to define the value area.
Example: 70% means the smallest range of prices that contains 70% of total OI in that bar will be marked.
Helps identify zones of interest, support/resistance, and institutional levels.
The image above explains how to identify the VAH/VAL/POC shown by Open Interest Footprint IQ.
VAH = Upper 🞂
POC = ●
VAL = Lower 🞂
Imbalances
Imbalance Percentage
Defines the minimum delta % required at a level to be marked as an imbalance.
If the net open interest change at a level exceeds this threshold, a visual marker appears.
Stacked Imbalance Count
If the number of consecutive imbalance levels meets this count, a “Stacked Imbalance” alert will trigger.
This can signal aggressive buying or selling pressure, potential breakout zones, or institutional absorption.
Color Settings
Longs Opened / Closed, Shorts Opened / Closed
Customize the color palette for each order flow behavior.
These colors appear in the background gradient of the footprint boxes.
Up/Down Only Mode
Toggle to override all behavior-based colors with a single Up Color and Down Color.
Useful if you prefer a simple bull/bear view.
Up Color / Down Color
If "Up/Down Only" is enabled, these two colors are used to represent all net positive or negative deltas.
Special Notes
Crypto only: This script works only with crypto tickers on TradingView.
For other assets (stocks, futures), a warning message will appear instead.
OI data must be available from the exchange (many perpetual pairs support this).
If the footprint is too small or invisible, increase your tick level spacing in the settings.
Alerts
When a stacked imbalance is detected, an alert is fired ("Stacked Imbalance").
This feature is useful for automated systems, bots, or simply staying informed of potential trade setups.
And that's all for now!
If you have any questions or features you'd like to see feel free to share them in the comments below!
Thank you traders!
LabelManagementLabel management with fluent configuration, change tracking, and named registry
LabelManagement is a Pine Script library for creating and managing dynamic chart labels. Built with a fluent-style API , it simplifies label creation, styling, positioning, and content updates through method chaining and centralized control.
Manage 'sticky' labels easily across bars with expressive, readable code that reduces clutter and improves code clarity.
Example usage:
// Close label – to the right of the last bar
labels.get("close")
.style(label.style_label_left)
.bgColor(color.gray)
.xy(bar_index, close)
.textValue("C: " + str.tostring(close, "#.##"))
.textColor(color.white)
.tooltip("This is the close price")
.apply()
Key features:
Fluent API – Build and update labels using a chainable configuration flow
Named label registry – Access and manage labels by name, e.g., "entry", "stop", "target"
Change tracking – Update only when necessary to reduce redraws
Deferred application – Apply all changes in one efficient operation
Centralized control – Works well in modular or multi-label environments
This library is designed for Pine developers who want more control and less boilerplate when managing visual elements on the chart.
method clone(this)
Creates a new LabelConfig by copying all properties from this instance
Namespace types: LabelConfig
Parameters:
this (LabelConfig) : (LabelConfig) The LabelConfig instance
Returns: (LabelConfig) New LabelConfig instance with identical properties
method applyTo(this, target)
Applies configuration to specified label (required parameter)
Namespace types: LabelConfig
Parameters:
this (LabelConfig) : (LabelConfig) The LabelConfig instance
target (label) : (label) Label to apply config to
Returns: (LabelConfig) Self-reference for method chaining
method update(this, updates)
Creates a new LabelUpdater with change tracking for this label
Namespace types: series label
Parameters:
this (label) : (label) The label instance
updates (LabelConfig) : (LabelConfig) Optional existing config to apply and reuse (if provided, applies to label first)
Returns: (LabelUpdater) New LabelUpdater with blank configs for change tracking
method x(this, value)
Sets the X coordinate with change tracking (fluent interface)
Namespace types: LabelUpdater
Parameters:
this (LabelUpdater) : (LabelUpdater) The LabelUpdater instance
value (int) : (int) New X coordinate
Returns: (LabelUpdater) Self-reference for method chaining
method y(this, value)
Sets the Y coordinate with change tracking (fluent interface)
Namespace types: LabelUpdater
Parameters:
this (LabelUpdater) : (LabelUpdater) The LabelUpdater instance
value (float) : (float) New Y coordinate
Returns: (LabelUpdater) Self-reference for method chaining
method xy(this, x, y)
Sets both X and Y coordinates with change tracking (fluent interface)
Namespace types: LabelUpdater
Parameters:
this (LabelUpdater) : (LabelUpdater) The LabelUpdater instance
x (int) : (int) New X coordinate
y (float) : (float) New Y coordinate
Returns: (LabelUpdater) Self-reference for method chaining
method textValue(this, value)
Sets the text content with change tracking (fluent interface)
Namespace types: LabelUpdater
Parameters:
this (LabelUpdater) : (LabelUpdater) The LabelUpdater instance
value (string) : (string) New text content
Returns: (LabelUpdater) Self-reference for method chaining
method textColor(this, value)
Sets the text color with change tracking (fluent interface)
Namespace types: LabelUpdater
Parameters:
this (LabelUpdater) : (LabelUpdater) The LabelUpdater instance
value (color) : (color) New text color
Returns: (LabelUpdater) Self-reference for method chaining
method textSize(this, value)
Sets the text size with change tracking (fluent interface)
Namespace types: LabelUpdater
Parameters:
this (LabelUpdater) : (LabelUpdater) The LabelUpdater instance
value (string) : (string) New text size
Returns: (LabelUpdater) Self-reference for method chaining
method bgColor(this, value)
Sets the background color with change tracking (fluent interface)
Namespace types: LabelUpdater
Parameters:
this (LabelUpdater) : (LabelUpdater) The LabelUpdater instance
value (color) : (color) New background color
Returns: (LabelUpdater) Self-reference for method chaining
method style(this, value)
Sets the label style with change tracking (fluent interface)
Namespace types: LabelUpdater
Parameters:
this (LabelUpdater) : (LabelUpdater) The LabelUpdater instance
value (string) : (string) New style
Returns: (LabelUpdater) Self-reference for method chaining
method yloc(this, value)
Sets the Y location mode with change tracking (fluent interface)
Namespace types: LabelUpdater
Parameters:
this (LabelUpdater) : (LabelUpdater) The LabelUpdater instance
value (string) : (string) New yloc
Returns: (LabelUpdater) Self-reference for method chaining
method xloc(this, value)
Sets the X location mode with change tracking (fluent interface)
Namespace types: LabelUpdater
Parameters:
this (LabelUpdater) : (LabelUpdater) The LabelUpdater instance
value (string) : (string) New xloc
Returns: (LabelUpdater) Self-reference for method chaining
method tooltip(this, value)
Sets the tooltip content with change tracking (fluent interface)
Namespace types: LabelUpdater
Parameters:
this (LabelUpdater) : (LabelUpdater) The LabelUpdater instance
value (string) : (string) New tooltip content
Returns: (LabelUpdater) Self-reference for method chaining
method size(this, value)
Sets the text size with change tracking (fluent interface) - alias for textSize
Namespace types: LabelUpdater
Parameters:
this (LabelUpdater) : (LabelUpdater) The LabelUpdater instance
value (string) : (string) New text size
Returns: (LabelUpdater) Self-reference for method chaining
method size(this)
Gets the count of registered labels
Namespace types: LabelManager
Parameters:
this (LabelManager) : (LabelManager) The LabelManager instance
Returns: (int) Number of labels in the registry
method apply(this)
Applies pending changes to linked label and updates tracking
Namespace types: LabelUpdater
Parameters:
this (LabelUpdater) : (LabelUpdater) The LabelUpdater instance
Returns: (LabelUpdater) Self-reference for method chaining
method get(this, name)
Gets or creates a LabelUpdater for the specified name
Namespace types: LabelManager
Parameters:
this (LabelManager) : (LabelManager) The LabelManager instance
name (string) : (string) Unique identifier for the label
Returns: (LabelUpdater) Existing or newly created LabelUpdater for the name
method has(this, name)
Checks if a label with the specified name exists
Namespace types: LabelManager
Parameters:
this (LabelManager) : (LabelManager) The LabelManager instance
name (string) : (string) Name to check for existence
Returns: (bool) True if label exists, false otherwise
method remove(this, name)
Removes a label from the registry and deletes the underlying Pine Script label
Namespace types: LabelManager
Parameters:
this (LabelManager) : (LabelManager) The LabelManager instance
name (string) : (string) Name of the label to remove
Returns: (LabelManager) Self-reference for method chaining
method clear(this)
Removes all labels from registry and deletes all underlying Pine Script labels
Namespace types: LabelManager
Parameters:
this (LabelManager) : (LabelManager) The LabelManager instance
Returns: (LabelManager) Self-reference for method chaining
newManager()
Creates a new LabelManager with empty registry
Returns: (LabelManager) New LabelManager instance ready for use
LabelConfig
LabelConfig Configuration object for label appearance and positioning
Fields:
x (series int) : (series int) X-coordinate (na = unchanged)
y (series float) : (series float) Y-coordinate (na = unchanged)
style (series string) : (series string) Label style (na = unchanged)
yloc (series string) : (series string) Y-location type (na = unchanged)
xloc (series string) : (series string) X-location type (na = unchanged)
bgColor (series color) : (series color) Background color (na = unchanged)
textValue (series string) : (series string) Label text content (na = unchanged)
textSize (series string) : (series string) Text size (na = unchanged)
textColor (series color) : (series color) Text color (na = unchanged)
tooltip (series string) : (series string) Tooltip text (na = unchanged)
LabelUpdater
LabelUpdater Smart label updater with change tracking and minimal updates
Fields:
label (series label) : (label) Reference to the label being updated
latest (LabelConfig) : (LabelConfig) Current known state of the label
updates (LabelConfig) : (LabelConfig) Pending changes to apply
LabelManager
LabelManager Central registry for managing named labels with automatic creation
Fields:
registry (map) : (map) Internal storage mapping names to LabelUpdater instances
Heatmap Trailing Stop with Breakouts (Zeiierman)█ Overview
Heatmap Trailing Stop with Breakouts (Zeiierman) is a trend and breakout detection tool that combines dynamic trailing stop logic, Fibonacci-based levels, and a real-time market heatmap into a single, intuitive system.
This indicator is designed to help traders visualize pressure zones, manage stop placement, and identify breakout opportunities supported by contextual price–derived heat. Whether you're trailing trends, detecting reversals, or entering on explosive breakouts — this tool keeps you anchored in structure and sentiment.
It projects adaptive trailing stop levels and calculates Fibonacci extensions from swing-based extremes. These levels are then colored by a market heatmap engine that tracks price interaction intensity — showing where the market is "hot" and likely to respond.
On top of that, it includes breakout signals powered by HTF momentum conditions, trend direction, and heatmap validation — giving you signals only when the context is strong.
█ How It Works
⚪ Trailing Stop Engine
At its core, the script uses an ATR-based trailing stop with trend detection:
ATR Length – Defines volatility smoothing using EMA MA of true range.
Multiplier – Expands/retracts the trailing offset depending on market aggression.
Real-Time Extremum Tracking – Uses local highs/lows to define Fibonacci anchors.
⚪ Fibonacci Projection + Heatmap
With each trend shift, Fibonacci levels are projected from the new swing to the current trailing stop. These include:
Fib 61.8, 78.6, 88.6, and 100% (trailing stop) lines
Heatmap Coloring – Each level'slevel's color is determined by how frequently price has interacted with that level in the recent range (defined by ATR).
Strength Score (1–10) – The number of touches per level is normalized and averaged to create a heatmap ""score"" displayed as a colored bar on the chart.
⚪ Breakout Signal System
This engine detects high-confidence breakout signals using a higher timeframe candle structure:
Bullish Breakout – Strong bullish candle + momentum + trend confirmation + heatmap score threshold.
Bearish Breakout – Strong bearish candle + momentum + trend confirmation + heatmap score threshold.
Cooldown Logic – Prevents signals from clustering too frequently during volatile periods.
█ How to Use
⚪ Trend Following & Trail Stops
Use the Trailing Stop line to manage positions or time entries in line with trend direction. Trailing stop flips are highlighted with dot markers.
⚪ Fibonacci Heat Zones
The projected Fibonacci levels serve as price magnets or support/resistance zones. Watch how price reacts at Fib 61.8/78.6/88.6 levels — especially when they're glowing with high heatmap scores (more glow = more historical touches = stronger significance).
⚪ Breakout Signals
Enable breakout signals when you want to trade breakouts only under strong context. Use the "Heatmap Strength Threshold" to require a minimum score (1–10).
█ Settings
Stop Distance ATR Length – ATR period for volatility smoothing
Stop Distance Multiplier – Adjusts the trailing stop'sstop's distance from price
Heatmap Range ATR Length – Defines how far back the heatmap scans for touches
Number of Heat Levels – Total levels used in the heatmap (more = finer resolution)
Minimum Touches per Level – Defines what counts as a ""hot"" level
Heatmap Strength Threshold – Minimum average heat score (1–10) required for breakouts
Timeframe – HTF source used to evaluate breakout momentum structure
-----------------
Disclaimer
The content provided in my scripts, indicators, ideas, algorithms, and systems is for educational and informational purposes only. It does not constitute financial advice, investment recommendations, or a solicitation to buy or sell any financial instruments. I will not accept liability for any loss or damage, including without limitation any loss of profit, which may arise directly or indirectly from the use of or reliance on such information.
All investments involve risk, and the past performance of a security, industry, sector, market, financial product, trading strategy, backtest, or individual's trading does not guarantee future results or returns. Investors are fully responsible for any investment decisions they make. Such decisions should be based solely on an evaluation of their financial circumstances, investment objectives, risk tolerance, and liquidity needs.
Yelober - Sector Rotation Detector# Yelober - Sector Rotation Detector: User Guide
## Overview
The Yelober - Sector Rotation Detector is a TradingView indicator designed to track sector performance and identify market rotations in real-time. It monitors key sector ETFs, calculates performance metrics, and provides actionable stock recommendations based on sector strength and weakness.
## Purpose
This indicator helps traders identify when capital is moving from one sector to another (sector rotation), which can provide valuable trading opportunities. It also detects risk-off conditions in the market and highlights sectors with abnormal trading volume.
## Table Columns Explained
### 1. Sector
Displays the sector name being monitored. The indicator tracks six primary sectors plus the S&P 500:
- Energy (XLE)
- Financial (XLF)
- Technology (XLK)
- Consumer Staples (XLP)
- Utilities (XLU)
- Consumer Discretionary (XLY)
- S&P 500 (SPY)
### 2. Perf %
Shows the daily percentage performance of each sector ETF. Values are color-coded:
- Green: Positive performance
- Red: Negative performance
Positive values display with a "+" sign (e.g., +1.25%)
### 3. RSI
Displays the Relative Strength Index value for each sector, which helps identify overbought or oversold conditions:
- Values above 70 (highlighted in red): Potentially overbought
- Values below 30 (highlighted in green): Potentially oversold
- Values between 30-70 (highlighted in blue): Neutral territory
### 4. Vol Ratio
Shows the volume ratio, which compares today's volume to the average volume over the lookback period:
- Values above 1.5x (highlighted in yellow): Indicates abnormally high trading volume
- Values below 1.5x (highlighted in blue): Normal trading volume
This helps identify sectors with unusual activity that may signal important price movements.
### 5. Trend
Displays the current price trend direction with symbols:
- ▲ (green): Uptrend (today's close > yesterday's close)
- ▼ (red): Downtrend (today's close < yesterday's close)
- ◆ (gray): Neutral (today's close = yesterday's close)
## Summary & Recommendations Section
The summary section provides:
1. **Sector Rotation Detection**: Identifies when there's a significant performance gap (>2%) between the strongest and weakest sectors.
2. **Risk-Off Mode Detection**: Alerts when defensive sectors (Consumer Staples and Utilities) are positive while Technology is negative, which often signals investors are moving to safer assets.
3. **Strong Volume Detection**: Indicates when any sector shows abnormally high trading volume.
4. **Stock Recommendations**: Suggests specific stocks to consider for long positions (from the strongest sectors) and short positions (from the weakest sectors).
## Example Interpretations
### Example 1: Sector Rotation
If you see:
- Technology: -1.85%
- Financial: +2.10%
- Summary shows: "SECTOR ROTATION DETECTED: Rotation from Technology to Financial"
**Interpretation**: Capital is moving out of tech stocks and into financial stocks. This could be due to rising interest rates, which typically benefit banks while pressuring high-growth tech companies. Consider looking at financial stocks like JPM, BAC, and WFC for potential long positions.
### Example 2: Risk-Off Conditions
If you see:
- Consumer Staples: +0.80%
- Utilities: +1.20%
- Technology: -1.50%
- Summary shows: "RISK-OFF MODE DETECTED"
**Interpretation**: Investors are seeking safety in defensive sectors while selling growth-oriented tech stocks. This often occurs during market uncertainty or ahead of economic concerns. Consider reducing exposure to high-beta stocks and possibly adding defensive names like PG, KO, or NEE.
### Example 3: Volume Spike
If you see:
- Energy: +3.20% with Volume Ratio 2.5x (highlighted in yellow)
- Summary shows: "STRONG VOLUME DETECTED"
**Interpretation**: The energy sector is making a strong move with significantly higher-than-average volume, suggesting conviction behind the price movement. This could indicate the beginning of a sustained trend in energy stocks. Consider names like XOM, CVX, and COP.
## How to Use the Indicator
1. Apply the indicator to any chart (works best on daily timeframes).
2. Customize settings if needed:
- Timeframe: Choose between intraday (60 or 240 minutes), daily, or weekly
- Lookback Period: Adjust the historical comparison period (default: 20)
- RSI Period: Modify the RSI calculation period (default: 14)
3. To refresh the data: Click the settings icon, increase the "Click + to refresh data" counter, and click "OK".
4. Identify opportunities based on sector performance, RSI levels, volume ratios, and the summary recommendations.
This indicator helps traders align with market rotation trends and identify which sectors (and specific stocks) may outperform or underperform in the near term.
MTF Pivot Fib Speed Resistance FansOverview
This Pine Script indicator, titled "MTF Pivot Fib Speed Resistance Fans", is a multi-timeframe tool that automatically plots Fib Speed Resistance Fan lines based on pivot structures derived from higher timeframes. It mirrors the functionality of TradingView’s built-in “Fib Speed Resistance Fan” drawing tool, but in a dynamic, programmatic way. It uses pivot highs and lows to anchor fan projections, drawing forward-facing trend lines that align with well-known Fibonacci ratios and their extensions.
Pivot Detection Logic
The script identifies pivots by comparing the current bar’s high and low against the highest and lowest prices over a user-defined pivot period. This pivot detection occurs on a higher timeframe of your choice, giving a broader and more strategic view of price structure. The script tracks direction changes in the pivot trend and stores only the most recent few pivots to maintain clean and meaningful fan drawings.
Fan Direction Control
The user can select whether to draw fans for "Buys", "Sells", or "Both". The script only draws fan lines when a new directional move is detected based on the pivot structure and the selected bias. For example, in “Buys” mode, a rising pivot followed by another higher low will trigger upward fan projections.
Fib Speed Resistance Levels
Once two pivots are identified, the script draws multiple fan lines from the first pivot outward, at angles defined by a preset list of Fibonacci levels. These fan lines help visualize speed and strength of a price move.
The script also draws a horizontal line from the pivot for additional confluence at the base level (1.0).
Price Level Plotting
In addition to drawing fan lines, the indicator also plots their price levels on the right-hand price scale. This makes it easier for users to visually reference the projected support and resistance levels without needing to trace the lines manually across the chart.
Mapping to TradingView’s "Fib Speed Resistance Fan"
The expanded set of values used in this script is not arbitrary—they closely align with the default and extended levels available in TradingView's built-in "Fib Speed Resistance Fan" tool.
TradingView’s Fib Fan tool offers several levels by default, including traditional Fibonacci ratios like 0.382, 0.5, 0.618, and 1. However, if you right-click the tool and open its settings, you’ll find additional toggles for levels like 1.618, 2.000, 2.618, and even 4.000. These deeper levels are used to project stronger trend continuations beyond the standard retracement zones.
The inclusion of levels such as 0.25, 0.75, and 1.34 reflects configurations that are available when you manually add or customize levels in TradingView’s fan tool. While 1.34 is not a canonical Fibonacci ratio, it is often found in hybrid Gann/Fib methods and is included in some preset templates in TradingView’s drawing tool for advanced users.
By incorporating these levels directly into the Pine Script, the indicator faithfully reproduces the fan structure users would manually draw using TradingView’s graphical Fib Fan tool—but does so programmatically, dynamically, and with multi-timeframe control. This eliminates manual errors, allows for responsive updating, and adds custom visual tracking via the price scale.
These values are standardized within the context of TradingView's Fib Fan tool and not made up. This script automates what the manual drawing tool achieves, with added precision and flexibility.
Options Volatility Strategy Analyzer [TradeDots]The Options Volatility Strategy Analyzer is a specialized tool designed to help traders assess market conditions through a detailed examination of historical volatility, market benchmarks, and percentile-based thresholds. By integrating multiple volatility metrics (including VIX and VIX9D) with color-coded regime detection, the script provides users with clear, actionable insights for selecting appropriate options strategies.
📝 HOW IT WORKS
1. Historical Volatility & Percentile Calculations
Annualized Historical Volatility (HV): The script automatically computes the asset’s historical volatility using log returns over a user-defined period. It then annualizes these values based on the chart’s timeframe, helping you understand the asset’s typical volatility profile.
Dynamic Percentile Ranks: To gauge where the current volatility level stands relative to past behavior, historical volatility values are compared against short, medium, and long lookback periods. Tracking these percentile ranks allows you to quickly see if volatility is high or low compared to historical norms.
2. Multi-Market Benchmark Comparison
VIX and VIX9D Integration: The script tracks market volatility through the VIX and VIX9D indices, comparing them to the asset’s historical volatility. This reveals whether the asset’s volatility is outpacing, lagging, or remaining in sync with broader market volatility conditions.
Market Context Analysis: A built-in term-structure check can detect market stress or relative calm by measuring how VIX compares to shorter-dated volatility (VIX9D). This helps you decide if the present environment is risk-prone or relatively stable.
3. Volatility Regime Detection
Color-Coded Background: The analyzer assigns a volatility regime (e.g., “High Asset Vol,” “Low Asset Vol,” “Outpacing Market,” etc.) based on current historical volatility percentile levels and asset vs. market ratios. A color-coded background highlights the regime, enabling traders to quickly interpret the market’s mood.
Alerts on Regime Changes & Spikes: Automated alerts warn you about any significant expansions or contractions in volatility, allowing you to react swiftly in changing conditions.
4. Strategy Forecast Table
Real-Time Strategy Suggestions: At the close of each bar, an on-chart table generates suggested options strategies (e.g., selling premium in high volatility or buying premium in low volatility). These suggestions provide a quick summary of potential tactics suited to the current regime.
Contextual Market Data: The table also displays key statistics, such as VIX levels, asset historical volatility percentile, or ratio comparisons, helping you confirm whether volatility conditions warrant more conservative or more aggressive strategies.
🛠️ HOW TO USE
1. Select Your Timeframe: The script supports multiple timeframes. For short-term trading, intraday charts often reveal faster shifts in volatility. For swing or position trading, daily or weekly charts may be more stable and produce fewer false signals.
2. Check the Volatility Regime: Observe the background color and on-chart labels to identify the current regime (e.g., “HIGH ASSET VOL,” “LOW VOL + LAGGING,” etc.).
3. Review the Forecast Table: The table suggests strategy ideas (e.g., iron condors, long straddles, ratio spreads) depending on whether volatility is elevated, subdued, or spiking. Use these as a starting point for designing trades that match your risk tolerance.
4. Combine with Additional Analysis: For optimal results, confirm signals with your broader trading plan, technical tools (moving averages, price action), and fundamental research. This script is most effective when viewed as one component in a comprehensive decision-making process.
❗️LIMITATIONS
Directional Neutrality: This indicator analyzes volatility environments but does not predict price direction (up/down). Traders must combine with directional analysis for complete strategy selection.
Late or Missed Signals: Since all calculations require a bar to close, sharp intrabar volatility moves may not appear in real-time.
False Positives in Choppy Markets: Rapid changes in percentile ranks or VIX movements can generate conflicting or premature regime shifts.
Data Sensitivity: Accuracy depends on the availability and stability of volatility data. Significant gaps or unusual market conditions may skew results.
Market Correlation Assumptions: The system assumes assets generally correlate with S&P 500 volatility patterns. May be less effective for:
Small-cap stocks with unique volatility drivers
International stocks with different market dynamics
Sector-specific events disconnected from broad market
Cryptocurrency-related assets with independent volatility patterns
RISK DISCLAIMER
Options trading involves substantial risk and is not suitable for all investors. Options strategies can result in significant losses, including the total loss of premium paid. The complexity of options strategies requires thorough understanding of the risks involved.
This indicator provides volatility analysis for educational and informational purposes only and should not be considered as investment advice. Past volatility patterns do not guarantee future performance. Market conditions can change rapidly, and volatility regimes may shift without warning.
No trading system can guarantee profits, and all trading involves the risk of loss. The indicator's regime classifications and strategy suggestions should be used as part of a comprehensive trading plan that includes proper risk management, directional analysis, and consideration of broader market conditions.
PLR-Z For Loop🧠 Overview
PLR-Z For Loop is a trend-following indicator built on the Power Law Residual Z-score model of Bitcoin price behavior. By measuring how far price deviates from a long-term power law regression and applying a custom scoring loop, this tool identifies consistent directional pressure in market structure. Designed for BTC, this indicator helps traders align with macro trends.
🧩 Key Features
Power Law Residual Model: Tracks deviations of BTC price from its long-term logarithmic growth curve.
Z-Score Normalization: Applies long-horizon statistical normalization (400/1460 bars) to smooth residual deviations into a usable trend signal.
Loop-Based Trend Filter: Iteratively scores how often the current Z-score exceeds prior values, emphasizing trend persistence over volatility.
Optional Smoothing: Toggleable exponential smoothing helps filter noise in choppier market conditions.
Directional Regime Coloring: Aqua (bullish) and Red (bearish) visuals reinforce trend alignment across plots and candles.
🔍 How It Works
Power Law Curve: Price is compared against a logarithmic regression model fitted to historical BTC price evolution (starting July 2010), defining structural support, resistance, and centerline levels.
Residual Z-Score: The residual is calculated as the log-difference between price and the power law center.
This residual is then normalized using a rolling mean (400 days) and standard deviation (1460 days) to create a long-term Z-score.
Loop Scoring Logic:
A loop compares the current Z-score to a configurable number of past bars.
Each higher comparison adds +1, and each lower one subtracts -1.
The result is a trend persistence score (z_loop) that grows with consistent directional momentum.
Smoothing Option: A user-defined EMA smooths the score, if enabled, to reduce short-term signal noise.
Signal Logic:
Long signal when trend score exceeds long_threshold.
Short signal when score drops below short_threshold.
Directional State (CD): Internally manages the current market regime (1 = long, -1 = short), controlling all visual output.
🔁 Use Cases & Applications
Macro Trend Alignment: Ideal for traders and analysts tracking Bitcoin’s structural momentum over long timeframes.
Trend Persistence Filter: Helps confirm whether the current move is part of a sustained trend or short-lived volatility.
Best Suited for BTC: Built specifically on the BNC BLX price history and Bitcoin’s power law behavior. Not designed for use with other assets.
✅ Conclusion
PLR-Z For Loop reframes Bitcoin’s long-term power law model into a trend-following tool by scoring the persistence of deviations above or below fair value. It shifts the focus from valuation-based mean reversion to directional momentum, making it a valuable signal for traders seeking high-conviction participation in BTC’s broader market cycles.
⚠️ Disclaimer
The content provided by this indicator is for educational and informational purposes only. Nothing herein constitutes financial or investment advice. Trading and investing involve risk, including the potential loss of capital. Always backtest and apply risk management suited to your strategy.
Uptrick: Z-Trend BandsOverview
Uptrick: Z-Trend Bands is a Pine Script overlay crafted to capture high-probability mean-reversion opportunities. It dynamically plots upper and lower statistical bands around an EMA baseline by converting price deviations into z-scores. Once price moves outside these bands and then reenters, the indicator verifies that momentum is genuinely reversing via an EMA-smoothed RSI slope. Signal memory ensures only one entry per momentum swing, and traders receive clear, real-time feedback through customizable bar-coloring modes, a semi-transparent fill highlighting the statistical zone, concise “Up”/“Down” labels, and a live five-metric scoring table.
Introduction
Markets often oscillate between trending and reverting, and simple thresholds or static envelopes frequently misfire when volatility shifts. Standard deviation quantifies how “wide” recent price moves have been, and a z-score transforms each deviation into a measure of how rare it is relative to its own history. By anchoring these bands to an exponential moving average, the script maintains a fluid statistical envelope that adapts instantly to both calm and turbulent regimes. Meanwhile, the Relative Strength Index (RSI) tracks momentum; smoothing RSI with an EMA and observing its slope filters out erratic spikes, ensuring that only genuine momentum flips—upward for longs and downward for shorts—qualify.
Purpose
This indicator is purpose-built for short-term mean-reversion traders operating on lower–timeframe charts. It reveals when price has strayed into the outer 5 percent of its recent range, signaling an increased likelihood of a bounce back toward fair value. Rather than firing on price alone, it demands that momentum follow suit: the smoothed RSI slope must flip in the opposite direction before any trade marker appears. This dual-filter approach dramatically reduces noise-driven, false setups. Traders then see immediate visual confirmation—bar colors that reflect the latest signal and age over time, clear entry labels, and an always-visible table of metric scores—so they can gauge both the validity and freshness of each signal at a glance.
Originality and Uniqueness
Uptrick: Z-Trend Bands stands apart from typical envelope or oscillator tools in four key ways. First, it employs fully normalized z-score bands, meaning ±2 always captures roughly the top and bottom 5 percent of moves, regardless of volatility regime. Second, it insists on two simultaneous conditions—price reentry into the bands and a confirming RSI slope flip—dramatically reducing whipsaw signals. Third, it uses slope-phase memory to lock out duplicate signals until momentum truly reverses again, enforcing disciplined entries. Finally, it offers four distinct bar-coloring schemes (solid reversal, fading reversal, exceeding bands, and classic heatmap) plus a dynamic scoring table, rather than a single, opaque alert, giving traders deep insight into every layer of analysis.
Why Each Component Was Picked
The EMA baseline was chosen for its blend of responsiveness—weighting recent price heavily—and smoothness, which filters market noise. Z-score deviation bands standardize price extremes relative to their own history, adapting automatically to shifting volatility so that “extreme” always means statistically rare. The RSI, smoothed with an EMA before slope calculation, captures true momentum shifts without the false spikes that raw RSI often produces. Slope-phase memory flags prevent repeated alerts within a single swing, curbing over-trading in choppy conditions. Bar-coloring modes provide flexible visual contexts—whether you prefer to track the latest reversal, see signal age, highlight every breakout, or view a continuous gradient—and the scoring table breaks down all five core checks for complete transparency.
Features
This indicator offers a suite of configurable visual and logical tools designed to make reversal signals both robust and transparent:
Dynamic z-score bands that expand or contract in real time to reflect current volatility regimes, ensuring the outer ±zThreshold levels always represent statistically rare extremes.
A smooth EMA baseline that weights recent price more heavily, serving as a fair-value anchor around which deviations are measured.
EMA-smoothed RSI slope confirmation, which filters out erratic momentum spikes by first smoothing raw RSI and then requiring its bar-to-bar slope to flip before any signal is allowed.
Slope-phase memory logic that locks out duplicate buy or sell markers until the RSI slope crosses back through zero, preventing over-trading during choppy swings.
Four distinct bar-coloring modes—Reversal Solid, Reversal Fade, Exceeding Bands, Classic Heat—plus a “None” option, so traders can choose whether to highlight the latest signal, show signal age, emphasize breakout bars, or view a continuous heat gradient within the bands.
A semi-transparent fill between the EMA and the upper/lower bands that visually frames the statistical zone and makes extremes immediately obvious.
Concise “Up” and “Down” labels that plot exactly when price re-enters a band with confirming momentum, keeping chart clutter to a minimum.
A real-time, five-metric scoring table (z-score, RSI slope, price vs. EMA, trend state, re-entry) that updates every two bars, displaying individual +1/–1/0 scores and an averaged Buy/Sell/Neutral verdict for complete transparency.
Calculations
Compute the fair-value EMA over fairLen bars.
Subtract that EMA from current price each bar to derive the raw deviation.
Over zLen bars, calculate the rolling mean and standard deviation of those deviations.
Convert each deviation into a z-score by subtracting the mean and dividing by the standard deviation.
Plot the upper and lower bands at ±zThreshold × standard deviation around the EMA.
Calculate raw RSI over rsiLen bars, then smooth it with an EMA of length rsiEmaLen.
Derive the RSI slope by taking the difference between the current and previous smoothed RSI.
Detect a potential reentry when price exits one of the bands on the prior bar and re-enters on the current bar.
Require that reentry coincide with an RSI slope flip (positive for a lower-band reentry, negative for an upper-band reentry).
On first valid reentry per momentum swing, fire a buy or sell signal and set a memory flag; reset that flag only when the RSI slope crosses back through zero.
For each bar, assign scores of +1, –1, or 0 for the z-score direction, RSI slope, price vs. EMA, trend-state, and reentry status.
Average those five scores; if the result exceeds +0.1, label “Buy,” if below –0.1, label “Sell,” otherwise “Neutral.”
Update bar colors, the semi-transparent fill, reversal labels, and the scoring table every two bars to reflect the latest calculations.
How It Actually Works
On each new candle, the EMA baseline and band widths update to reflect current volatility. The RSI is smoothed and its slope recalculated. The script then looks back one bar to see if price exited either band and forward to see if it reentered. If that reentry coincides with an appropriate RSI slope flip—and no signal has yet been generated in that swing—a concise label appears. Bar colors refresh according to your selected mode, and the scoring table updates to show which of the five conditions passed or failed, along with the overall verdict. This process repeats seamlessly at each bar, giving traders a continuous feed of disciplined, statistically filtered reversal cues.
Inputs
All parameters are fully user-configurable, allowing you to tailor sensitivity, lookbacks, and visuals to your trading style:
EMA length (fairLen): number of bars for the fair-value EMA; higher values smooth more but lag further behind price.
Z-Score lookback (zLen): window for calculating the mean and standard deviation of price deviations; longer lookbacks reduce noise but respond more slowly to new volatility.
Z-Score threshold (zThreshold): number of standard deviations defining the upper and lower bands; common default is 2.0 for roughly the outer 5 percent of moves.
Source (src): choice of price series (close, hl2, etc.) used for EMA, deviation, and RSI calculations.
RSI length (rsiLen): period for raw RSI calculation; shorter values react faster to momentum changes but can be choppier.
RSI EMA length (rsiEmaLen): period for smoothing raw RSI before taking its slope; higher values filter more noise.
Bar coloring mode (colorMode): select from None, Reversal Solid, Reversal Fade, Exceeding Bands, or Classic Heat to control how bars are shaded in relation to signals and band positions.
Show signals (showSignals): toggle on-chart “Up” and “Down” labels for reversal entries.
Show scoring table (enableTable): toggle the display of the five-metric breakdown table.
Table position (tablePos): choose which corner (Top Left, Top Right, Bottom Left, Bottom Right) hosts the scoring table.
Conclusion
By merging a normalized z-score framework, momentum slope confirmation, disciplined signal memory, flexible visuals, and transparent scoring into one Pine Script overlay, Uptrick: Z-Trend Bands offers a powerful yet intuitive tool for intraday mean-reversion trading. Its adaptability to real-time volatility and multi-layered filter logic deliver clear, high-confidence reversal cues without the clutter or confusion of simpler indicators.
Disclaimer
This indicator is provided solely for educational and informational purposes. It does not constitute financial advice. Trading involves substantial risk and may not be suitable for all investors. Past performance is not indicative of future results. Always conduct your own testing and apply careful risk management before trading live.