Long Short Momentum with Signals
Long and Short momentum
WHEN SHORT MOMENTUM CHANGES 2.0 POINTS and long term changes 5 points on day basis write A for Bullish and B for Bearish on Main Price chart
WHEN SHORT MOMENTUM CHANGES .30 per hour POINTS and long term changes 1 points on 1 hour basis. Put a green dot for Bull and red for bear in short term and for long termRespectively on price chart
Breadth Indicators
PMO + Daily SMA(55)PMO + Daily SMA(55)
This script plots the Price Momentum Oscillator (PMO) using the classic DecisionPoint methodology, along with its signal line and the 55-period Simple Moving Average (SMA) of the daily PMO.
PMO is a smoothed momentum indicator that measures the rate of change and helps identify trend direction and strength. The signal line is an EMA of the PMO, commonly used for crossover signals.
The 55-period SMA of the daily PMO is added as a longer-term trend filter. It remains based on daily data, even when applied to intraday charts, making it useful for aligning lower timeframe trades with higher timeframe momentum.
Ideal for swing and position traders looking to combine short-term momentum with broader trend context.
Nifty Advance/Decline Ratio - First 20 StocksNifty 20 Advance/Decline Ratio Indicator
This Pine Script tracks the Advance/Decline Ratio of the top 20 Nifty stocks (by weightage as of March 31, 2025). It helps gauge the market's strength by comparing the number of advancing vs. declining stocks among major Nifty heavyweights. The script calculates and plots the ratio, with a reference line at 1 (neutral point). This indicator resets daily and provides insights into overall market trends based on the performance of the top Nifty stocks.
Key Features:
Tracks advance/decline movements of top 20 Nifty stocks.
Plots the Advance/Decline Ratio on the chart.
Resets daily for fresh analysis.
Stochastic Order Flow Momentum [ScorsoneEnterprises]This indicator implements a stochastic model of order flow using the Ornstein-Uhlenbeck (OU) process, combined with a Kalman filter to smooth momentum signals. It is designed to capture the dynamic momentum of volume delta, representing the net buying or selling pressure per bar, and highlight potential shifts in market direction. The volume delta data is sourced from TradingView’s built-in functionality:
www.tradingview.com
For a deeper dive into stochastic processes like the Ornstein-Uhlenbeck model in financial contexts, see these research articles: arxiv.org and arxiv.org
The SOFM tool aims to reveal the momentum and acceleration of order flow, modeled as a mean-reverting stochastic process. In markets, order flow often oscillates around a baseline, with bursts of buying or selling pressure that eventually fade—similar to how physical systems return to equilibrium. The OU process captures this behavior, while the Kalman filter refines the signal by filtering noise. Parameters theta (mean reversion rate), mu (mean level), and sigma (volatility) are estimated by minimizing a squared-error objective function using gradient descent, ensuring adaptability to real-time market conditions.
How It Works
The script combines a stochastic model with signal processing. Here’s a breakdown of the key components, including the OU equation and supporting functions.
// Ornstein-Uhlenbeck model for volume delta
ou_model(params, v_t, lkb) =>
theta = clamp(array.get(params, 0), 0.01, 1.0)
mu = clamp(array.get(params, 1), -100.0, 100.0)
sigma = clamp(array.get(params, 2), 0.01, 100.0)
error = 0.0
v_pred = array.new(lkb, 0.0)
array.set(v_pred, 0, array.get(v_t, 0))
for i = 1 to lkb - 1
v_prev = array.get(v_pred, i - 1)
v_curr = array.get(v_t, i)
// Discretized OU: v_t = v_{t-1} + theta * (mu - v_{t-1}) + sigma * noise
v_next = v_prev + theta * (mu - v_prev)
array.set(v_pred, i, v_next)
v_curr_clean = na(v_curr) ? 0 : v_curr
v_pred_clean = na(v_next) ? 0 : v_next
error := error + math.pow(v_curr_clean - v_pred_clean, 2)
error
The ou_model function implements a discretized Ornstein-Uhlenbeck process:
v_t = v_{t-1} + theta (mu - v_{t-1})
The model predicts volume delta (v_t) based on its previous value, adjusted by the mean-reverting term theta (mu - v_{t-1}), with sigma representing the volatility of random shocks (approximated in the Kalman filter).
Parameters Explained
The parameters theta, mu, and sigma represent distinct aspects of order flow dynamics:
Theta:
Definition: The mean reversion rate, controlling how quickly volume delta returns to its mean (mu). Constrained between 0.01 and 1.0 (e.g., clamp(array.get(params, 0), 0.01, 1.0)).
Interpretation: A higher theta indicates faster reversion (short-lived momentum), while a lower theta suggests persistent trends. Initial value is 0.1 in init_params.
In the Code: In ou_model, theta scales the pull toward \mu, influencing the predicted v_t.
Mu:
Definition: The long-term mean of volume delta, representing the equilibrium level of net buying/selling pressure. Constrained between -100.0 and 100.0 (e.g., clamp(array.get(params, 1), -100.0, 100.0)).
Interpretation: A positive mu suggests a bullish bias, while a negative mu indicates bearish pressure. Initial value is 0.0 in init_params.
In the Code: In ou_model, mu is the target level that v_t reverts to over time.
Sigma:
Definition: The volatility of volume delta, capturing the magnitude of random fluctuations. Constrained between 0.01 and 100.0 (e.g., clamp(array.get(params, 2), 0.01, 100.0)).
Interpretation: A higher sigma reflects choppier, noisier order flow, while a lower sigma indicates smoother behavior. Initial value is 0.1 in init_params.
In the Code: In the Kalman filter, sigma contributes to the error term, adjusting the smoothing process.
Summary:
theta: Speed of mean reversion (how fast momentum fades).
mu: Baseline order flow level (bullish or bearish bias).
sigma: Noise level (variability in order flow).
Other Parts of the Script
Clamp
A utility function to constrain parameters, preventing extreme values that could destabilize the model.
ObjectiveFunc
Defines the objective function (sum of squared errors) to minimize during parameter optimization. It compares the OU model’s predicted volume delta to observed data, returning a float to be minimized.
How It Works: Calls ou_model to generate predictions, computes the squared error for each timestep, and sums it. Used in optimization to assess parameter fit.
FiniteDifferenceGradient
Calculates the gradient of the objective function using finite differences. Think of it as finding the "slope" of the error surface for each parameter. It nudges each parameter (theta, mu, sigma) by a small amount (epsilon) and measures the change in error, returning an array of gradients.
Minimize
Performs gradient descent to optimize parameters. It iteratively adjusts theta, mu, and sigma by stepping down the "hill" of the error surface, using the gradients from FiniteDifferenceGradient. Stops when the gradient norm falls below a tolerance (0.001) or after 20 iterations.
Kalman Filter
Smooths the OU-modeled volume delta to extract momentum. It uses the optimized theta, mu, and sigma to predict the next state, then corrects it with observed data via the Kalman gain. The result is a cleaner momentum signal.
Applied
After initializing parameters (theta = 0.1, mu = 0.0, sigma = 0.1), the script optimizes them using volume delta data over the lookback period. The optimized parameters feed into the Kalman filter, producing a smoothed momentum array. The average momentum and its rate of change (acceleration) are calculated, though only momentum is plotted by default.
A rising momentum suggests increasing buying or selling pressure, while a flattening or reversing momentum indicates fading activity. Acceleration (not plotted here) could highlight rapid shifts.
Tool Examples
The SOFM indicator provides a dynamic view of order flow momentum, useful for spotting directional shifts or consolidation.
Low Time Frame Example: On a 5-minute chart of SEED_ALEXDRAYM_SHORTINTEREST2:NQ , a rising momentum above zero with a lookback of 5 might signal building buying pressure, while a drop below zero suggests selling dominance. Crossings of the zero line can mark transitions, though the focus is on trend strength rather than frequent crossovers.
High Time Frame Example: On a daily chart of NYSE:VST , a sustained positive momentum could confirm a bullish trend, while a sharp decline might warn of exhaustion. The mean-reverting nature of the OU process helps filter out noise on longer scales. It doesn’t make the most sense to use this on a high timeframe with what our data is.
Choppy Markets: When momentum oscillates near zero, it signals indecision or low conviction, helping traders avoid whipsaws. Larger deviations from zero suggest stronger directional moves to act on, this is on $STT.
Inputs
Lookback: Users can set the lookback period (default 5) to adjust the sensitivity of the OU model and Kalman filter. Shorter lookbacks react faster but may be noisier; longer lookbacks smooth more but lag slightly.
The user can also specify the timeframe they want the volume delta from. There is a default way to lower and expand the time frame based on the one we are looking at, but users have the flexibility.
No indicator is 100% accurate, and SOFM is no exception. It’s an estimation tool, blending stochastic modeling with signal processing to provide a leading view of order flow momentum. Use it alongside price action, support/resistance, and your own discretion for best results. I encourage comments and constructive criticism.
Trend Confirmation StrategyComprehensive Trend Confirmation System
Indicator Features (Professional Description):
Comprehensive Trend Confirmation System is a versatile indicator meticulously designed to identify and confirm trend-based trading opportunities with exceptional efficiency. By seamlessly integrating analysis from a suite of leading technical tools, it aims to provide superior accuracy and reliability for informed trading decisions.
Key Features:
Intelligent Trend Identification: A robust trend analysis system that considers:
Adjustable Moving Averages: Utilizes three customizable moving average periods (fast, medium, slow) with user-selectable lengths and types (SMA, EMA, WMA, VWMA) to accurately determine the prevailing trend across different timeframes.
In-depth Price Action Analysis: Examines the formation of Higher Highs/Higher Lows (uptrend) and Lower Highs/Lower Lows (downtrend) to validate price direction.
Average Directional Index (ADX) with Adjustable Threshold: Measures the strength of a trend and employs the comparison between +DI and -DI to pinpoint the dominant momentum, featuring a customizable threshold to filter out weak signals.
Multi-Factor Signal Confirmation System: Enhances the reliability of trading signals through verification from four distinct confirmation tools:
Volume Analysis with Average Reference: Assesses whether trading volume supports price movements by comparing it to historical averages.
Relative Strength Index (RSI) with Reference Levels: Measures price momentum and identifies overbought/oversold conditions to confirm trend strength.
Moving Average Convergence Divergence (MACD) Divergence and Crossovers: Detects shifts in momentum and potential trend changes through the relationship between the MACD line and the Signal line.
Stochastic Oscillator with Reference Levels: Measures the current price's position relative to its historical range to evaluate overbought/oversold conditions and potential reversal opportunities.
Intelligent Signal Generation Logic:
Buy Signal: Triggered when a strong uptrend is identified (meeting defined criteria) and confirmed by at least three out of the four confirmation tools.
Sell Signal: Triggered when a strong downtrend is identified (meeting defined criteria) and confirmed by at least three out of the four confirmation tools.
User-Friendly Visualizations:
Moving Averages (MA): Displays three MA lines on the chart with user-configurable colors (default: fast-blue, medium-orange, slow-red) for easy visual trend analysis.
Clear Buy and Sell Signal Symbols: Presents distinct green upward-pointing triangles for buy signals and red downward-pointing triangles for sell signals at the corresponding candlestick.
Dynamic Candlestick Color Coding: Candlesticks are dynamically colored green upon a buy signal and red upon a sell signal for quick identification of trading opportunities.
Highly Customizable Parameters: Users have extensive control over the indicator's parameters, including:
Lengths and types of Moving Averages.
Length and Threshold of the ADX.
Length of the RSI.
Parameters for the MACD (Fast Length, Slow Length, Signal Length).
Parameters for the Stochastic Oscillator (%K Length, %D Length, Smoothing).
Ideal For:
Traders seeking a robust tool to accurately identify and confirm market trends.
Individuals aiming to reduce false signals and enhance the precision of their trading decisions.
Traders employing trend-following strategies in markets with clear directional movement.
Important Note:
While Comprehensive Trend Confirmation System is engineered to improve trading accuracy, no indicator can guarantee 100% profitable trades. Users are advised to utilize this indicator in conjunction with relevant fundamental analysis and sound risk management practices for optimal trading outcomes.
Order Flow Hawkes Process [ScorsoneEnterprises]This indicator is an implementation of the Hawkes Process. This tool is designed to show the excitability of the different sides of volume, it is an estimation of bid and ask size per bar. The code for the volume delta is from www.tradingview.com
Here’s a link to a more sophisticated research article about Hawkes Process than this post arxiv.org
This tool is designed to show how excitable the different sides are. Excitability refers to how likely that side is to get more activity. Alan Hawkes made Hawkes Process for seismology. A big earthquake happens, lots of little ones follow until it returns to normal. Same for financial markets, big orders come in, causing a lot of little orders to come. Alpha, Beta, and Lambda parameters are estimated by minimizing a negative log likelihood function.
How it works
There are a few components to this script, so we’ll go into the equation and then the other functions used in this script.
hawkes_process(params, events, lkb) =>
alpha = clamp(array.get(params, 0), 0.01, 1.0)
beta = clamp(array.get(params, 1), 0.1, 10.0)
lambda_0 = clamp(array.get(params, 2), 0.01, 0.3)
intensity = array.new_float(lkb, 0.0)
events_array = array.new_float(lkb, 0.0)
for i = 0 to lkb - 1
array.set(events_array, i, array.get(events, i))
for i = 0 to lkb - 1
sum_decay = 0.0
current_event = array.get(events_array, i)
for j = 0 to i - 1
time_diff = i - j
past_event = array.get(events_array, j)
decay = math.exp(-beta * time_diff)
past_event_val = na(past_event) ? 0 : past_event
sum_decay := sum_decay + (past_event_val * decay)
array.set(intensity, i, lambda_0 + alpha * sum_decay)
intensity
The parameters alpha, beta, and lambda all represent a different real thing.
Alpha (α):
Definition: Alpha represents the excitation factor or the magnitude of the influence that past events have on the future intensity of the process. In simpler terms, it measures how much each event "excites" or triggers additional events. It is constrained between 0.01 and 1.0 (e.g., clamp(array.get(params, 0), 0.01, 1.0)). A higher alpha means past events have a stronger influence on increasing the intensity (likelihood) of future events. Initial value is set to 0.1 in init_params. In the hawkes_process function, alpha scales the contribution of past events to the current intensity via the term alpha * sum_decay.
Beta (β):
Definition: Beta controls the rate of exponential decay of the influence of past events over time. It determines how quickly the effect of a past event fades away. It is constrained between 0.1 and 10.0 (e.g., clamp(array.get(params, 1), 0.1, 10.0)). A higher beta means the influence of past events decays faster, while a lower beta means the influence lingers longer. Initial value is set to 0.1 in init_params. In the hawkes_process function, beta appears in the decay term math.exp(-beta * time_diff), which reduces the impact of past events as the time difference (time_diff) increases.
Lambda_0 (λ₀):
Definition: Lambda_0 is the baseline intensity of the process, representing the rate at which events occur in the absence of any excitation from past events. It’s the "background" rate of the process. It is constrained between 0.01 and 0.3 .A higher lambda_0 means a higher natural frequency of events, even without the influence of past events. Initial value is set to 0.1 in init_params. In the hawkes_process function, lambda_0 sets the minimum intensity level, to which the excitation term (alpha * sum_decay) is added: lambda_0 + alpha * sum_decay
Alpha (α): Strength of event excitation (how much past events boost future events).
Beta (β): Rate of decay of past event influence (how fast the effect fades).
Lambda_0 (λ₀): Baseline event rate (background intensity without excitation).
Other parts of the script.
Clamp
The clamping function is a simple way to make sure parameters don’t grow or shrink too much.
ObjectiveFunction
This function defines the objective function (negative log-likelihood) to minimize during parameter optimization.It returns a float representing the negative log-likelihood (to be minimized).
How It Works:
Calls hawkes_process to compute the intensity array based on current parameters.Iterates over the lookback period:lambda_t: Intensity at time i.event: Event magnitude at time i.Handles na values by replacing them with 0.Computes log-likelihood: event_clean * math.log(math.max(lambda_t_clean, 0.001)) - lambda_t_clean.Ensures lambda_t_clean is at least 0.001 to avoid log(0).Accumulates into log_likelihood.Returns -log_likelihood (negative because the goal is to minimize, not maximize).
It is used in the optimization process to evaluate how well the parameters fit the observed event data.
Finite Difference Gradient:
This function calculates the gradient of the objective function we spoke about. The gradient is like a directional derivative. Which is like the direction of the rate of change. Which is like the direction of the slope of a hill, we can go up or down a hill. It nudges around the parameter, and calculates the derivative of the parameter. The array of these nudged around parameters is what is returned after they are optimized.
Minimize:
This is the function that actually has the loop and calls the Finite Difference Gradient each time. Here is where the minimizing happens, how we go down the hill. If we are below a tolerance, we are at the bottom of the hill.
Applied
After an initial guess the parameters are optimized with a mix of bid and ask levels to prevent some over-fitting for each side while keeping some efficiency. We initialize two different arrays to store the bid and ask sizes. After we optimize the parameters we clamp them for the calculations. We then get the array of intensities from the Hawkes Process of bid and ask and plot them both. When the bids are greater than the ask it represents a bullish scenario where there are likely to be more buy than sell orders, pushing up price.
Tool examples:
The idea is that when the bid side is more excitable it is more likely to see a bullish reaction, when the ask is we see a bearish reaction.
We see that there are a lot of crossovers, and I picked two specific spots. The idea of this isn’t to spot crossovers but avoid chop. The values are either close together or far apart. When they are far, it is a classification for us to look for our own opportunities in, when they are close, it signals the market can’t pick a direction just yet.
The value works just as well on a higher timeframe as on a lower one. Hawkes Process is an estimate, so there is a leading value aspect of it.
The value works on equities as well, here is NASDAQ:TSLA on a lower time frame with a lookback of 5.
Inputs
Users can enter the lookback value and timeframe.
No tool is perfect, the Hawkes Process value is also not perfect and should not be followed blindly. It is good to use any tool along with discretion and price action.
Multi Oscillator OB/OS Signals v3 - Scope TestIndicator Description: Multi Oscillator OB/OS Signals
Purpose:
The "Multi Oscillator OB/OS Signals" indicator is a TradingView tool designed to help traders identify potential market extremes and momentum shifts by monitoring four popular oscillators simultaneously: RSI, Stochastic RSI, CCI, and MACD. Instead of displaying these oscillators in separate panes, this indicator plots distinct visual symbols directly onto the main price chart whenever specific predefined conditions (typically related to overbought/oversold levels or line crossovers) are met for each oscillator. This provides a consolidated view of potential signals from these different technical tools.
How It Works:
The indicator calculates the values for each of the four oscillators based on user-defined settings (like length periods and price sources) and then checks for specific signal conditions on every bar:
Relative Strength Index (RSI):
It monitors the standard RSI value.
When the RSI crosses above the user-defined Overbought (OB) level (e.g., 70), it plots an "Overbought" symbol (like a downward triangle) above that price bar.
When the RSI crosses below the user-defined Oversold (OS) level (e.g., 30), it plots an "Oversold" symbol (like an upward triangle) below that price bar.
Stochastic RSI:
This works similarly to RSI but is based on the Stochastic calculation applied to the RSI value itself (specifically, the %K line of the Stoch RSI).
When the Stoch RSI's %K line crosses above its Overbought level (e.g., 80), it plots its designated OB symbol (like a downward arrow) above the bar.
When the %K line crosses below its Oversold level (e.g., 20), it plots its OS symbol (like an upward arrow) below the bar.
Commodity Channel Index (CCI):
It tracks the CCI value.
When the CCI crosses above its Overbought level (e.g., +100), it plots its OB symbol (like a square) above the bar.
When the CCI crosses below its Oversold level (e.g., -100), it plots its OS symbol (like a square) below the bar.
Moving Average Convergence Divergence (MACD):
Unlike the others, MACD signals here are not based on fixed OB/OS levels.
It identifies when the main MACD line crosses above its Signal line. This is considered a bullish crossover and is indicated by a specific symbol (like an upward label) plotted below the price bar.
It also identifies when the MACD line crosses below its Signal line. This is a bearish crossover, indicated by a different symbol (like a downward label) plotted above the price bar.
Visualization:
All these signals appear as small, distinct shapes directly on the price chart at the bar where the condition occurred. The shapes, their colors, and their position (above or below the bar) are predefined for each signal type to allow for quick visual identification. Note: In the current version of the underlying code, the size of these shapes is fixed (e.g., tiny) and not user-adjustable via the settings.
Configuration:
Users can access the indicator's settings to customize:
The calculation parameters (Length periods, smoothing, price source) for each individual oscillator (RSI, Stoch RSI, CCI, MACD).
The specific Overbought and Oversold threshold levels for RSI, Stoch RSI, and CCI.
The colors associated with each type of signal (OB, OS, Bullish Cross, Bearish Cross).
(Limitation Note: While settings exist to toggle the visibility of signals for each oscillator individually, due to a technical workaround in the current code, these toggles may not actively prevent the shapes from plotting if the underlying condition is met.)
Alerts:
The indicator itself does not automatically generate pop-up alerts. However, it creates the necessary "Alert Conditions" within TradingView's alert system. This means users can manually set up alerts for any of the specific signals generated by the indicator (e.g., "RSI Overbought Enter," "MACD Bullish Crossover"). When creating an alert, the user selects this indicator, chooses the desired condition from the list provided by the script, and configures the alert actions.
Intended Use:
This indicator aims to provide traders with convenient visual cues for potential over-extension in price (via OB/OS signals) or shifts in momentum (via MACD crossovers) based on multiple standard oscillators. These signals are often used as potential indicators for:
Identifying areas where a trend might be exhausted and prone to a pullback or reversal.
Confirming signals generated by other analysis methods or trading strategies.
Noting shifts in short-term momentum.
Disclaimer: As with any technical indicator, the signals generated should not be taken as direct buy or sell recommendations. They are best used in conjunction with other forms of analysis (price action, trend analysis, volume, fundamental analysis, etc.) and within the framework of a well-defined trading plan that includes risk management. Market conditions can change, and indicator signals can sometimes be false or misleading.
Transient Impact Model [ScorsoneEnterprises]This indicator is an implementation of the Transient Impact Model. This tool is designed to show the strength the current trades have on where price goes before they decay.
Here are links to more sophisticated research articles about Transient Impact Models than this post arxiv.org and arxiv.org
The way this tool is supposed to work in a simple way, is when impact is high price is sensitive to past volume, past trades being placed. When impact is low, it moves in a way that is more independent from past volume. In a more sophisticated system, perhaps transient impact should be calculated for each trade that is placed, not just the total volume of a past bar. I didn't do it to ensure parameters exist and aren’t na, as well as to have more iterations for optimization. Note that the value will change as volume does, as soon as a new candle occurs with no volume, the values could be dramatically different.
How it works
There are a few components to this script, so we’ll go into the equation and then the other functions used in this script.
// Transient Impact Model
transient_impact(params, price_change, lkb) =>
alpha = array.get(params, 0)
beta = array.get(params, 1)
lambda_ = array.get(params, 2)
instantaneous = alpha * volume
transient = 0.0
for t = 1 to lkb - 1
if na(volume )
break
transient := transient + beta * volume * math.exp(-lambda_ * t)
predicted_change = instantaneous + transient
math.pow(price_change - predicted_change, 2)
The parameters alpha, beta, and lambda all represent a different real thing.
Alpha (α):
Represents the instantaneous impact coefficient. It quantifies the immediate effect of the current volume on the price change. In the equation, instantaneous = alpha * volume , alpha scales the current bar's volume (volume ) to determine how much of the price change is due to immediate market impact. A larger alpha suggests that current volume has a stronger instantaneous influence on price.
Beta (β):
Represents the transient impact coefficient.It measures the lingering effect of past volumes on the current price change. In the loop calculating transient, beta * volume * math.exp(-lambda_ * t) shows that beta scales the volume from previous bars (volume ), contributing to a decaying effect over time. A higher beta indicates a stronger influence from past volumes, though this effect diminishes with time due to the exponential decay factor.
Lambda (λ):
Represents the decay rate of the transient impact.It controls how quickly the influence of past volumes fades over time in the transient component. In the term math.exp(-lambda_ * t), lambda determines the rate of exponential decay, where t is the time lag (in bars). A larger lambda means the impact of past volumes decays faster, while a smaller lambda implies a longer-lasting effect.
So in full.
The instantaneous term, alpha * volume , captures the immediate price impact from the current volume.
The transient term, sum of beta * volume * math.exp(-lambda_ * t) over the lookback period, models the cumulative, decaying effect of past volumes.
The total predicted_change combines these two components and is compared to the actual price change to compute an error term, math.pow(price_change - predicted_change, 2), which the script minimizes to optimize alpha, beta, and lambda.
Other parts of the script.
Objective function:
This is a wrapper function with a function to minimize so we get the best alpha, beta, and lambda values. In this case it is the Transient Impact Function, not something like a log-likelihood function, helps with efficiency for a high iteration count.
Finite Difference Gradient:
This function calculates the gradient of the objective function we spoke about. The gradient is like a directional derivative. Which is like the direction of the rate of change. Which is like the direction of the slope of a hill, we can go up or down a hill. It nudges around the parameter, and calculates the derivative of the parameter. The array of these nudged around parameters is what is returned after they are optimized.
Minimize:
This is the function that actually has the loop and calls the Finite Difference Gradient each time. Here is where the minimizing happens, how we go down the hill. If we are below a tolerance, we are at the bottom of the hill.
Applied
After an initial guess, we optimize the parameters and get the transient impact value. This number is huge, so we apply a log to it to make it more readable. From here we need some way to tell if the value is low or high. We shouldn’t use standard deviation because returns are not normally distributed, an IQR is similar and better for non normal data. We store past transient impact values in an array, so that way we can see the 25th and 90th percentiles of the data as a rolling value. If the current transient impact is above the 90th percentile, it is notably high. If below the 25th percentile, notably low. All of these values are plotted so we can use it as a tool.
Tool examples:
The idea around it is that when impact is low, there is room for big money to get size quickly and move prices around.
Here we see the price reacting in the IQR Bands. We see multiple examples where the value above the 90th percentile, the red line, corresponds to continuations in the trend, and below the 25th percentile, the purple line, corresponds to reversals. There is no guarantee these tools will be perfect, that is outlined in these situations, however there is clearly a correlation in this tool and trend.
This tool works on any timeframe, daily as we saw before, or lower like a two minute. The bands don’t represent a direction, like bullish or bearish, we need to determine that by interpreting price action. We see at open and at close there are the highest values for the transient impact. This is to be expected as these are the times with the highest volume of the trading day.
This works on futures as well as equities with the same context. Volume can be attributed to volatility as well. In volatile situations, more volatility comes in, and we can perceive it through the transient impact value.
Inputs
Users can enter the lookback value.
No tool is perfect, the transient impact value is also not perfect and should not be followed blindly. It is good to use any tool along with discretion and price action.
ICT & SMC Multi-Timeframe by [KhedrFX]Transform your trading experience with the ICT & SMC Multi-Timeframe by indicator. This innovative tool is designed for traders who want to harness the power of multi-timeframe analysis, enabling them to make informed trading decisions based on key market insights. By integrating concepts from the Inner Circle Trader (ICT) and Smart Money Concepts (SMC), this indicator provides a comprehensive view of market dynamics, helping you identify potential trading opportunities with precision.
Key Features
- Multi-Timeframe Analysis: Effortlessly switch between various timeframes (5 minutes, 15 minutes, 30 minutes, 1 hour, 4 hours, daily, and weekly) to capture the full spectrum of market movements.
- High and Low Levels: Automatically calculates and displays the highest and lowest price levels over the last 20 bars, highlighting critical support and resistance zones.
- Market Structure Visualization: Identifies the last swing high and swing low, allowing you to recognize current market trends and potential reversal points.
- Order Block Detection: Detects significant order blocks, pinpointing areas of strong buying or selling pressure that can indicate potential market reversals.
- Custom Alerts: Set alerts for when the price crosses above or below identified order block levels, enabling you to act swiftly on trading opportunities.
How to Use the Indicator
1. Add the Indicator to Your Chart
- Open TradingView.
- Click on the "Indicators" button at the top of the screen.
- Search for "ICT & SMC Multi-Timeframe by " in the search bar.
- Click on the indicator to add it to your chart.
2. Select Your Timeframe
- Use the dropdown menu to choose your preferred timeframe (5, 15, 30, 60, 240, D, W) for analysis.
3. Interpret the Signals
- High Level (Green Line): Represents the highest price level over the last 20 bars, acting as a potential resistance level.
- Low Level (Red Line): Represents the lowest price level over the last 20 bars, acting as a potential support level.
- Last Swing High (Blue Cross): Indicates the most recent significant high, useful for identifying potential reversal points.
- Last Swing Low (Orange Cross): Indicates the most recent significant low, providing insight into market structure.
- Order Block High (Purple Line): Marks the upper boundary of a detected order block, suggesting potential selling pressure.
- Order Block Low (Yellow Line): Marks the lower boundary of a detected order block, indicating potential buying pressure.
4. Set Alerts
- Utilize the alert conditions to receive notifications when the price crosses above or below the order block levels, allowing you to stay informed about potential trading opportunities.
5. Implement Risk Management
- Always use proper risk management techniques. Consider setting stop-loss orders based on the identified swing highs and lows or the order block levels to protect your capital.
Conclusion
The ICT & SMC Multi-Timeframe by indicator is an essential tool for traders looking to enhance their market analysis and decision-making process. By leveraging multi-timeframe insights, market structure visualization, and order block detection, you can navigate the complexities of the market with confidence. Start using this powerful indicator today and take your trading to the next level.
⚠️ Trade Responsibly
This tool helps you analyze the market, but it’s not a guarantee of profits. Always do your own research, manage risk, and trade with caution.
Sahid Strategy v2This script identifies potential buy/sell signals using:
Pivot Points - Detects swing highs/lows (price reversals)
Confirmation Filters - Reduces false signals using:
RSI (momentum)
Moving Average (trend direction)
Optional MACD (trend confirmation)
Key Features
Signal Type Trigger Conditions
BUY - Price makes a swing low (pivot)
Copy
- RSI ≤ 30 (oversold)
- Price above trend MA
- MACD bullish (optional) |
| SELL | - Price makes a swing high (pivot)
- RSI ≥ 70 (overbought)
- Price below trend MA
- MACD bearish (optional) |
Visual Signals
Green "BUY" labels below price bars
Red "SELL" labels above price bars
Purple trend line (20-period EMA/SMA)
Orange/blue circles showing raw pivot points
Optional Tools
Debug Table (top-right): Shows real-time:
RSI value
Price vs MA position
MACD status
Alerts - Triggers audible/visual notifications
Customization
Adjust in settings:
Pivot sensitivity (left/right bars)
RSI levels (30/70 by default)
MA type/length (20-period EMA/SMA)
Toggle MACD filter on/off
Best For: Swing trading in trending markets (1H-4H timeframes). Signals appear faster than classic pivot strategies but still require confirmation from other analysis tools.
BTC Trading RobotOverview
This Pine Script strategy is designed for trading Bitcoin (BTC) by placing pending orders (BuyStop and SellStop) based on local price extremes. The script also implements a trailing stop mechanism to protect profits once a position becomes sufficiently profitable.
________________________________________
Inputs and Parameter Setup
1. Trading Profile:
o The strategy is set up specifically for BTC trading.
o The systemType input is set to 1, which means the strategy will calculate trade parameters using the BTC-specific inputs.
2. Common Trading Inputs:
o Risk Parameters: Although RiskPercent is defined, its actual use (e.g., for position sizing) isn’t implemented in this version.
o Trading Hours Filter:
SHInput and EHInput let you restrict trading to a specific hour range. If these are set (non-zero), orders will only be placed during the allowed hours.
3. BTC-Specific Inputs:
o Take Profit (TP) and Stop Loss (SL) Percentages:
TPasPctBTC and SLasPctBTC are used to determine the TP and SL levels as a percentage of the current price.
o Trailing Stop Parameters:
TSLasPctofTPBTC and TSLTgrasPctofTPBTC determine when and by how much a trailing stop is applied, again as percentages of the TP.
4. Other Parameters:
o BarsN is used to define the window (number of bars) over which the local high and low are calculated.
o OrderDistPoints acts as a buffer to prevent the entry orders from being triggered too early.
________________________________________
Trade Parameter Calculation
• Price Reference:
o The strategy uses the current closing price as the reference for calculations.
• Calculation of TP and SL Levels:
o If the systemType is set to BTC (value 1), then:
Take Profit Points (Tppoints) are calculated by multiplying the current price by TPasPctBTC.
Stop Loss Points (Slpoints) are calculated similarly using SLasPctBTC.
A buffer (OrderDistPoints) is set to half of the take profit points.
Trailing Stop Levels:
TslPoints is calculated as a fraction of the TP (using TSLTgrasPctofTPBTC).
TslTriggerPoints is similarly determined, which sets the profit level at which the trailing stop will start to activate.
________________________________________
Time Filtering
• Session Control:
o The current hour is compared against SHInput (start hour) and EHInput (end hour).
o If the current time falls outside the allowed window, the script will not place any new orders.
________________________________________
Entry Orders
• Local Price Extremes:
o The strategy calculates a local high and local low using a window of BarsN * 2 + 1 bars.
• Placing Stop Orders:
o BuyStop Order:
A long entry is triggered if the current price is less than the local high minus the order distance buffer.
The BuyStop order is set to trigger at the level of the local high.
o SellStop Order:
A short entry is triggered if the current price is greater than the local low plus the order distance buffer.
The SellStop order is set to trigger at the level of the local low.
Note: Orders are only placed if there is no current open position and if the session conditions are met.
________________________________________
Trailing Stop Logic
Once a position is open, the strategy monitors profit levels to protect gains:
• For Long Positions:
o The script calculates the profit as the difference between the current price and the average entry price.
o If this profit exceeds the TslTriggerPoints threshold, a trailing stop is applied by placing an exit order.
o The stop price is set at a distance below the current price, while a limit (profit target) is also defined.
• For Short Positions:
o The profit is calculated as the difference between the average entry price and the current price.
o A similar trailing stop exit is applied if the profit exceeds the trigger threshold.
________________________________________
Summary
In essence, this strategy works by:
• Defining entry levels based on recent local highs and lows.
• Placing pending stop orders to enter the market when those levels are breached.
• Filtering orders by time, ensuring trades are only taken during specified hours.
• Implementing a trailing stop mechanism to secure profits once the trade moves favorably.
This approach is designed to automate BTC trading based on price action and dynamic risk management, although further enhancements (like dynamic position sizing based on RiskPercent) could be added for a more complete risk management system.
H1 Candle Reference + n Pips TargetThis indicator uses the H1 candle at a specified time (default 8:00) to set daily reference levels. It captures the high and low of the 8:00 H1 candle and displays them as blue horizontal lines across all timeframes for the rest of the day. Additionally, it plots two red target lines, set a fixed number of ticks above and below these reference levels.
Range Filter Buy and Sell 5min## **Enhanced Range Filter Strategy: A Comprehensive Overview**
### **1. Introduction**
The **Enhanced Range Filter Strategy** is a powerful technical trading system designed to identify high-probability trading opportunities while filtering out market noise. It utilizes **range-based trend filtering**, **momentum confirmation**, and **volatility-based risk management** to generate precise entry and exit signals. This strategy is particularly useful for traders who aim to capitalize on trend-following setups while avoiding choppy, ranging market conditions.
---
### **2. Key Components of the Strategy**
#### **A. Range Filter (Trend Determination)**
- The **Range Filter** smooths price fluctuations and helps identify clear trends.
- It calculates an **adjusted price range** based on a **sampling period** and a **multiplier**, ensuring a dynamic trend-following approach.
- **Uptrends:** When the current price is above the range filter and the trend is strengthening.
- **Downtrends:** When the price falls below the range filter and momentum confirms the move.
#### **B. RSI (Relative Strength Index) as Momentum Confirmation**
- RSI is used to **filter out weak trades** and prevent entries during overbought/oversold conditions.
- **Buy Signals:** RSI is above a certain threshold (e.g., 50) in an uptrend.
- **Sell Signals:** RSI is below a certain threshold (e.g., 50) in a downtrend.
#### **C. ADX (Average Directional Index) for Trend Strength Confirmation**
- ADX ensures that trades are only taken when the trend has **sufficient strength**.
- Avoids trading in low-volatility, ranging markets.
- **Threshold (e.g., 25):** Only trade when ADX is above this value, indicating a strong trend.
#### **D. ATR (Average True Range) for Risk Management**
- **Stop Loss (SL):** Placed **one ATR below** (for long trades) or **one ATR above** (for short trades).
- **Take Profit (TP):** Set at a **3:1 reward-to-risk ratio**, using ATR to determine realistic price targets.
- Ensures volatility-adjusted risk management.
---
### **3. Entry and Exit Conditions**
#### **📈 Buy (Long) Entry Conditions:**
1. **Price is above the Range Filter** → Indicates an uptrend.
2. **Upward trend strength is positive** (confirmed via trend counter).
3. **RSI is above the buy threshold** (e.g., 50, to confirm momentum).
4. **ADX confirms trend strength** (e.g., above 25).
5. **Volatility is supportive** (using ATR analysis).
#### **📉 Sell (Short) Entry Conditions:**
1. **Price is below the Range Filter** → Indicates a downtrend.
2. **Downward trend strength is positive** (confirmed via trend counter).
3. **RSI is below the sell threshold** (e.g., 50, to confirm momentum).
4. **ADX confirms trend strength** (e.g., above 25).
5. **Volatility is supportive** (using ATR analysis).
#### **🚪 Exit Conditions:**
- **Stop Loss (SL):**
- **Long Trades:** 1 ATR below entry price.
- **Short Trades:** 1 ATR above entry price.
- **Take Profit (TP):**
- Set at **3x the risk distance** to achieve a favorable risk-reward ratio.
- **Ranging Market Exit:**
- If ADX falls below the threshold, indicating a weakening trend.
---
### **4. Visualization & Alerts**
- **Colored range filter line** changes based on trend direction.
- **Buy and Sell signals** appear as labels on the chart.
- **Stop Loss and Take Profit levels** are plotted as dashed lines.
- **Gray background highlights ranging markets** where trading is avoided.
- **Alerts trigger on Buy, Sell, and Ranging Market conditions** for automation.
---
### **5. Advantages of the Enhanced Range Filter Strategy**
✅ **Trend-Following with Noise Reduction** → Helps avoid false signals by filtering out weak trends.
✅ **Momentum Confirmation with RSI & ADX** → Ensures that only strong, valid trades are executed.
✅ **Volatility-Based Risk Management** → ATR ensures adaptive stop loss and take profit placements.
✅ **Works on Multiple Timeframes** → Effective for day trading, swing trading, and scalping.
✅ **Visually Intuitive** → Clearly displays trade signals, SL/TP levels, and trend conditions.
---
### **6. Who Should Use This Strategy?**
✔ **Trend Traders** who want to enter trades with momentum confirmation.
✔ **Swing Traders** looking for medium-term opportunities with a solid risk-reward ratio.
✔ **Scalpers** who need precise entries and exits to minimize false signals.
✔ **Algorithmic Traders** using alerts for automated execution.
---
### **7. Conclusion**
The **Enhanced Range Filter Strategy** is a powerful trading tool that combines **trend-following techniques, momentum indicators, and risk management** into a structured, rule-based system. By leveraging **Range Filters, RSI, ADX, and ATR**, traders can improve trade accuracy, manage risk effectively, and filter out unfavorable market conditions.
This strategy is **ideal for traders looking for a systematic, disciplined approach** to capturing trends while **avoiding market noise and false breakouts**. 🚀
Pearson Correlation [Mr_Rakun] Pearson Correlation
This script calculates the Pearson correlation coefficient (r) between the closing price of the current asset and another selected asset.
🔍 How It Works:
• The user selects a correlation period (default: 20) and a symbol (default: ETH/USDT).
• The script retrieves the closing prices of both assets.
• The Pearson correlation formula is applied:
r = \frac{n(\sum xy) - (\sum x)(\sum y)}{\sqrt{ }}
• The correlation is plotted as a histogram:
• +1 (green line) → Perfect positive correlation
• -1 (red line) → Perfect negative correlation
• 0 (gray line) → No correlation
📊 Why Use This?
This indicator helps traders identify relationships between assets, such as whether two markets move together or inversely. It is useful for hedging strategies, portfolio diversification, and market comparisons.
Multi-TF Volume & Price Analysis[BullByte]This indicator offers a comprehensive view of market dynamics by combining volume and price analysis across multiple timeframes. It calculates key metrics—such as bullish/bearish volume percentages, relative volume (RVol), cumulative volume delta (CVD), and price change percentages—for each timeframe that you choose (for example, 1, 3, 5, and 15 minutes). Here are the main features in simple terms:
- Multi-Timeframe Analysis:
The tool analyzes volume and price action from four different timeframes simultaneously. This means you get insights from short-term and slightly longer-term trends in one view.
- Volume Breakdown:
It splits the volume into bullish and bearish parts by comparing closing and opening prices. This helps you see how much of the trading volume is driving the market upward versus downward.
- Relative Volume & Spike Detection:
It calculates relative volume (current volume compared to a moving average) and flags any significant volume spikes based on a customizable multiplier. This feature helps identify unusual trading activity.
- Volume Smoothing Option:
For a cleaner signal, you can enable a smoothing option (using an exponential moving average) to reduce noise in the volume data.
- Advanced Summary:
The indicator combines volume data, price changes, and volume spikes to produce an overall market summary for each timeframe—labeling conditions as “Bullish Strong,” “Bullish Moderate,” “Bearish Strong,” “Bearish Moderate,” or “Neutral.”
- Cumulative Overview:
In addition to individual timeframe analysis, it aggregates the data to offer a cumulative view. This includes a collective bullish/bearish percentage, overall CVD, and even a simplified volume level (Low, Normal, or High).
- Customizable Dashboard:
All these metrics are neatly displayed in a dashboard on the chart. You can customize its position and text size. The dashboard uses dynamic, color-coded cells to instantly convey the market sentiment—making it easy to spot trends at a glance.
- VWAP Integration:
Finally, the dashboard includes VWAP information, providing an additional layer of context to the price action.
Overall, this indicator is designed to provide a quick yet thorough snapshot of market conditions, enabling traders to make more informed decisions with a clear visual representation of volume and price activity across different timeframes.
2:45 AM Candle High/Low Crossing Bars2:45 AM Candle High/Low Crossing Bars is an indicator that focuses on the trading view 2:45am NY TIME high and low indicating green for buy and red bars for sell, with the 2:45am new york time highlight/ If the next candle sweeps the low we buy while if it sweeps the high we sell, all time zoon must be the new York UTC time.
Kase Permission StochasticOverview
The Kase Permission Stochastic indicator is an advanced momentum oscillator developed from Kase's trading methodology. It offers enhanced signal smoothing and filtering compared to traditional stochastic oscillators, providing clearer entry and exit signals with fewer false triggers.
How It Works
This indicator calculates a specialized stochastic using a multi-stage smoothing process:
Initial stochastic calculation based on high, low, and close prices
Application of weighted moving averages (WMA) for short-term smoothing
Progressive smoothing through differential factors
Final smoothing to reduce noise and highlight significant trend changes
The indicator oscillates between 0 and 100, with two main components:
Main Line (Green): The smoothed stochastic value
Signal Line (Yellow): A further smoothed version of the main line
Signal Generation
Trading signals are generated when the main line crosses the signal line:
Buy Signal (Green Triangle): When the main line crosses above the signal line
Sell Signal (Red Triangle): When the main line crosses below the signal line
Key Features
Multiple Smoothing Algorithms: Uses a combination of weighted and exponential moving averages for superior noise reduction
Clear Visualization: Color-coded lines and background filling
Reference Levels: Horizontal lines at 25, 50, and 75 for context
Customizable Colors: All visual elements can be color-customized
Customization Options
PST Length: Base period for the stochastic calculation (default: 9)
PST X: Multiplier for the lookback period (default: 5)
PST Smooth: Smoothing factor for progressive calculations (default: 3)
Smooth Period: Final smoothing period (default: 10)
Trading Applications
Trend Confirmation: Use crossovers to confirm entries in the direction of the prevailing trend
Reversal Detection: Identify potential market reversals when crossovers occur at extreme levels
Range-Bound Markets: Look for oscillations between overbought and oversold levels
Filter for Other Indicators: Use as a confirmation tool alongside other technical indicators
Best Practices
Most effective in trending markets or during well-defined ranges
Combine with price action analysis for better context
Consider the overall market environment before taking signals
Use longer settings for fewer but higher-quality signals
The Kase Permission Stochastic delivers a sophisticated approach to momentum analysis, offering a refined perspective on market conditions while filtering out much of the noise that affects standard oscillators.
Larry Williams POIV A/D [tradeviZion]Larry Williams' POIV A/D - Release Notes v1.0
=================================================
Release Date: 01 April 2025
OVERVIEW
--------
The Larry Williams POIV A/D (Price, Open Interest, Volume Accumulation/Distribution) indicator implements Williams' original formula while adding advanced divergence detection capabilities. This powerful tool combines price movement, open interest, and volume data to identify potential trend reversals and continuations.
FEATURES
--------
- Implements Larry Williams' original POIV A/D formula
- Divergence detection system:
* Regular divergences for trend reversal signals
* Hidden divergences for trend continuation signals
- Fast Mode option for earlier pivot detection
- Customizable sensitivity for divergence filtering
- Dynamic color visualization based on indicator direction
- Adjustable smoothing to reduce noise
- Automatic fallback to OBV when Open Interest is unavailable
FORMULA
-------
POIV A/D = CumulativeSum(Open Interest * (Close - Close ) / (True High - True Low)) + OBV
Where:
- Open Interest: Current period's open interest
- Close - Close : Price change from previous period
- True High - True Low: True Range
- OBV: On Balance Volume
DIVERGENCE TYPES
---------------
1. Regular Divergences (Reversal Signals):
- Bullish: Price makes lower lows while indicator makes higher lows
- Bearish: Price makes higher highs while indicator makes lower highs
2. Hidden Divergences (Continuation Signals):
- Bullish: Price makes higher lows while indicator makes lower lows
- Bearish: Price makes lower highs while indicator makes higher highs
REQUIREMENTS
-----------
- Works best with futures and other instruments that provide Open Interest data
- Automatically adapts to work with any instrument by using OBV when OI is unavailable
USAGE GUIDE
-----------
1. Apply the indicator to any chart
2. Configure settings:
- Adjust sensitivity for divergence detection
- Enable/disable Fast Mode for earlier signals
- Customize visual settings as needed
3. Look for divergence signals:
- Regular divergences for potential trend reversals
- Hidden divergences for trend continuation opportunities
4. Use the alerts system for automated divergence detection
KNOWN LIMITATIONS
----------------
- Requires Open Interest data for full functionality
- Fast Mode may generate more signals but with lower reliability
ACKNOWLEDGEMENTS
---------------
This indicator is based on Larry Williams' work on Open Interest analysis. The implementation includes additional features for divergence detection while maintaining the integrity of the original formula.
JPMorgan Collar LevelsJPMorgan Collar Levels – SPX/SPY Auto-Responsive (Quarterly Logic)
This script tracks the JPMorgan Hedged Equity Fund collar strategy, one of the most watched institutional positioning tools on SPX/SPY. The strategy rolls quarterly and often acts as a magnet or resistance/support zone for price.
VOLD Ratio Histogram [Th16rry]How to Use the VOLD Ratio Histogram Indicator
The VOLD Ratio Histogram Indicator is a powerful tool for identifying buying and selling volume dominance over a selected period. It provides traders with visual cues about volume pressure in the market, helping them make more informed trading decisions.
How to Read the Indicator:
1. Green Bars (Positive Histogram):
- Indicates that buying volume is stronger than selling volume.
- Higher green bars suggest increasing bullish pressure.
- Useful for confirming uptrends or identifying potential accumulation phases.
2. Red Bars (Negative Histogram):
- Indicates that selling volume is stronger than buying volume.
- Lower red bars suggest increasing bearish pressure.
- Useful for confirming downtrends or identifying potential distribution phases.
3. Zero Line (Gray Line):
- Acts as a neutral reference point where buying and selling volumes are balanced.
- Crossing above zero suggests buying dominance; crossing below zero suggests selling dominance.
How to Use It:
1. Confirming Trends:
- A strong positive histogram during an uptrend supports bullish momentum.
- A strong negative histogram during a downtrend supports bearish momentum.
2. Detecting Reversals:
- Monitor for changes from positive (green) to negative (red) or vice versa as potential reversal signals.
- Divergences between price action and histogram direction can indicate weakening trends.
3. Identifying Volume Surges:
- Sharp spikes in the histogram may indicate strong buying or selling interest.
- Use these spikes to investigate potential breakout or breakdown scenarios.
4. Filtering Noise:
- Adjust the period length to control sensitivity:
- Shorter periods (e.g., 10) are more responsive but may produce more noise.
- Longer periods (e.g., 50) provide smoother signals, better for identifying broader trends.
Recommended Markets:
- Cryptocurrencies: Works effectively with real volume data from exchanges.
- Forex: Useful with tick volume, though interpretation may vary.
- Stocks & Commodities: Particularly effective for analyzing high-volume assets.
Best Practices:
- Combine the VOLD Ratio Histogram with other indicators like moving averages or RSI for confirmation.
- Use different period lengths depending on your trading style (scalping, swing trading, long-term investing).
- Observe volume spikes and divergences to anticipate potential market moves.
The VOLD Ratio Histogram Indicator is ideal for traders looking to enhance their volume analysis and gain a deeper understanding of market dynamics.
[TABLE] Moving Average Stage Indicator Table📈 MA Stage Indicator Table
🧠 Overview:
This script analyzes market phases based on moving average (MA) crossovers, classifying them into 6 distinct stages and displaying statistical summaries for each.
🔍 Key Features:
• Classifies market condition into Stage 1 to Stage 6 based on the relationship between MA1 (short), MA2 (mid), and MA3 (long)
• Provides detailed stats for each stage:
• Average Duration
• Average Width (MA distance)
• Slope (Angle) - High / Low / Average
• Shows current stage details in real-time
• Supports custom date range filtering
• Choose MA type: SMA or EMA
• Optional background coloring for stages
• Clean summary table displayed on the chart
ADR Nivele Horizontale dhe EMAThe user provided a Pine Script code for an indicator called "ADR Nivele Horizontale dhe EMA". The task is to explain how this code works. Hmm, first, I need to understand what this indicator does. The title mentions ADR levels and EMA, so it's probably combining horizontal lines based on Average Daily Range and some Exponential Moving Averages.
Looking at the code, the first part is the indicator declaration with version 6. The settings include an ADR period, levels above and below the mid, and line style. Then there's a section for calculations. They request daily high and low to compute the daily range. The ADR is the SMA of the daily range over the specified period. The mid is the average of daily high and low. The adr_val is half of ADR, maybe to create symmetrical levels around the mid.
Next, they create arrays for lines and labels above and below the mid. The loops go from 1 to levels_above/below, calculate each level, draw lines and labels. The mid line is also drawn with a different color. Then, there are several EMAs plotted: 13, 50, 200, 400, 600, 800, each with different colorsWait, but in Pine Script, when you use arrays to store lines and labels, you have to manage them properly to avoid repainting or memory issues. The code uses array.concat to add new lines and labels each bar. However, since this code is running on each bar, the for loops might be creating multiple lines each time, leading to too many objects. Oh right, but they use var to initialize the arrays, so they are only initialized once. Wait, no. The var keyword initializes the variable once, but in each iteration, they are concatenating new lines. Wait, no: the for loops are inside the main script, which runs on each bar. So every time a new bar is processed, the loops will run again, adding new lines and labels. That's a problem because each bar would create new lines, leading to an ever-increasing number of lines, which could hit the maximum limit (max_lines_count is set to 20, but maybe they have more bars). Oh, the indicator has max_lines_count=20, but the code might be creating multiple lines per bar. So maybe the code isn't handling the line management correctly. For example, if levels_above is 2, then each bar would create 2 new lines above and 2 below, plus the mid line. Over 20 bars, that's way over 20 lines. So this could cause the indicator to stop drawing after 20 lines. The user might not have realized that the lines are being recreated every bar, leading to a buildup. But perhaps the original code intended to have the lines update each bar, extending to the current bar. Let's see: in line.new, they use bar_index as the starting x1 and bar_index as x2. So each line is drawn from the previous bar's index to the current one. But since this is done on every bar, each line is only one bar long. Wait, no. Because on each new bar, the code creates a new line from the previous bar's index (bar_index , which is now the bar before the current one) to the current bar_index. So each line is just a segment from the previous bar to the current bar. But when the next bar comes, a new line is created again. So the result is that each level line is a series of one-bar-length segments, which might not be intended. The user probably wants continuous lines that extend from the left to the right, not just per bar. So this approach is incorrect. The correct way would be to have a line that starts at the first bar of the calculation and extends to the right, updating each bar. But the current code creates a new line each bar, leading to multiple short lines instead of one continuous line. That's a mistake.
So the main issue here is that the code is generating a new line segment for each bar, which is not efficient and would quickly hit the line limit. To fix this, instead of creating a new line every bar, they should create the line once and then update its position each bar. But in Pine Script, you can't directly update a line after it's created; instead, you need to track the line ID and use line.set_xy() to extend it. However, the current code uses array.concat to add new lines each bar, which isn't the right approach.
Therefore, the code as written will create multiple short lines instead of continuous horizontal lines. The correct approach for horizontal levels that extend to the right is to create the line once, starting at a certain bar and extending indefinitely, or to update the line's end point each new bar. But in Pine Script, you can't extend lines infinitely; you have to manage them each bar. Alternatively, using the 'line.extend' style might help, but I think the original code's logic is flawed here.
Additionally, the EMA part is straightforward: plotting multiple EMAs with different periods. That part should work as expected.
So the explanation should mention that the ADR levels are calculated based on the daily high and low, then the code attempts to draw horizontal lines above and below the mid-point. However, the way the lines are drawn may lead to multiple short segments instead of continuous lines, potentially causing performance issues or hitting the maximum line count. The EMAs are plotted correctly with various periods..
McClellan Oscillator - IRUS Optimized🧠 McClellan Oscillator (IRUS Index)
Type: Market Breadth Indicator
Category: Breadth, Momentum
Purpose: Gauge the internal strength of the IRUS index and anticipate trend reversals
📌 Based on
This indicator is built on the concept of advancing vs. declining issues — the number of stocks rising vs. falling each day within the IRUS index (a custom group of 40 Russian stocks).
It calculates the net advances (advancers minus decliners), then applies two exponential moving averages (EMA):
java
Copy
Edit
McClellan Oscillator = EMA_19(Net Advances) - EMA_39(Net Advances)
Where:
Net Advances = Number of advancing stocks - Number of declining stocks
Calculated from a fixed set of 40 IRUS stocks
🧭 What it shows
Above 0 → more stocks are rising: market is internally strong.
Below 0 → more stocks are falling: underlying weakness.
Rising from below -100 → oversold breadth, possible bullish reversal.
Falling from above +100 → overbought breadth, possible correction.
🎯 How to use it
1. Buy/Sell Signals
Buy: Oscillator drops below -100 and turns up → oversold, potential rally.
Sell: Oscillator rises above +100 and turns down → overbought, risk of pullback.
2. Trend Strength Confirmation
Sustained above 0 → confirms bullish trend.
Crosses below 0 → early warning of weakening market breadth.
3. Divergences with IRUS Price
IRUS rises, but Oscillator falls → narrowing leadership, bearish divergence.
IRUS falls, but Oscillator rises → improving breadth, bullish divergence.
⚠️ Notes
The oscillator measures participation, not price.
Works best with daily timeframe.
Does not account for volume or magnitude of price moves.
Use with price action or other indicators for confirmation.
⚙️ Custom Implementation
This version is specifically adapted for the IRUS index, using a fixed list of 40 component stocks.
Optimized for Pine Script v6 and complies with TradingView's request limits (max 40).