Adaptive Heikin Ashi [CHE]Adaptive Heikin Ashi — volatility-aware HA with fewer fake flips
Summary
Adaptive Heikin Ashi is a volatility-aware reinterpretation of classic Heikin Ashi that continuously adjusts its internal smoothing based on the current ATR regime, which means that in quiet markets the indicator reacts more quickly to genuine directional changes, while in turbulent phases it deliberately increases its smoothing to suppress jitter and color whipsaws, thereby reducing “noise” and cutting down on fake flips without resorting to heavy fixed smoothing that would lag everywhere.
Motivation: why adapt at all?
Classic Heikin Ashi replaces raw OHLC candles with a smoothed construction that averages price and blends each new candle with the previous HA state, which typically cleans up trends and improves visual coherence, yet its fixed smoothing amount treats calm and violent markets the same, leading to the usual dilemma where a setting that looks crisp in a narrow range becomes too nervous in a spike, and a setting that tames high volatility feels unnecessarily sluggish as soon as conditions normalize; by allowing the smoothing weight to expand and contract with volatility, Adaptive HA aims to keep candles readable across shifting regimes without constant manual retuning.
What is different from normal Heikin Ashi?
Fixed vs. adaptive blend:
Classic HA implicitly uses a fixed 50/50 blend for the open update (`HA_open_t = 0.5 HA_open_{t-1} + 0.5 HA_close_{t-1}`), while this script replaces the constant 0.5 with a dynamic weight `w_t` that oscillates around 0.5 as a function of observed volatility, which turns the open update into an EMA-like filter whose “alpha” automatically changes with market conditions.
Volatility as the steering signal:
The script measures volatility via ATR and compares it to a rolling baseline (SMA of ATR over the same length), producing a normalized deviation that is scaled by sensitivity, clamped to ±1 for stability, and then mapped to a bounded weight interval ` `, so the adaptation is strong enough to matter but never runs away.
Outcome that matters to traders:
In high volatility, the weight shifts upward toward the prior HA open, which strengthens smoothing exactly where classic HA tends to “chatter,” while in low volatility the weight shifts downward toward the most recent HA close, which speeds up reaction so quiet trends do not feel artificially delayed; this is the practical mechanism by which noise and fake signals are reduced without accepting blanket lag.
How it works
1. HA close matches classic HA:
`HA_close_t = (Open_t + High_t + Low_t + Close_t) / 4`
2. Volatility normalization:
`ATR_t` is computed over `atr_length`, its baseline is `ATR_SMA_t = SMA(ATR, atr_length)`, and the raw deviation is `(ATR_t / ATR_SMA_t − 1)`, which is then scaled by `adapt_sensitivity` and clamped to ` ` to obtain `v_t`, ensuring that pathological spikes cannot destabilize the weighting.
3. Adaptive weight around 0.5:
`w_t = 0.5 + oscillation_range v_t`, giving `w_t ∈ `, so with a default `range = 0.20` the weight stays between 0.30 and 0.70, which is wide enough to matter but narrow enough to preserve HA identity.
4. EMA-like open update:
On the very first bar the open is seeded from a stable combination of the raw open and close, and thereafter the update is
`HA_open_t = w_t HA_open_{t−1} + (1 − w_t) HA_close_{t−1}`,
which is equivalent to an EMA where higher `w_t` means heavier inertia (more smoothing) and lower `w_t` means stronger pull to the latest price information (more responsiveness).
5. High and low follow classic HA composition:
`HA_high_t = max(High_t, max(HA_open_t, HA_close_t))`,
`HA_low_t = min(Low_t, min(HA_open_t, HA_close_t))`,
thereby keeping visual semantics consistent with standard HA so that your existing reading of bodies, wicks, and transitions still applies.
Why this reduces noise and fake signals in practice
Fake flips in HA typically occur when a fixed blending rule is forced to process candles during a volatility surge, producing rapid alternations around pivots or within wide intrabar ranges; by increasing smoothing exactly when ATR jumps relative to its baseline, the adaptive open stabilizes the candle body progression and suppresses transient color changes, while in the opposite scenario of compressed ranges, the reduced smoothing allows small but persistent directional pressure to reflect in candle color earlier, which reduces the tendency to enter late after multiple slow transitions.
Parameter guide (what each input really does)
ATR Length (default 14): controls both the ATR and its baseline window, where longer values dampen the adaptation by making the baseline slower and the deviation smaller, which is helpful for noisy lower timeframes, while shorter values make the regime detector more reactive.
Oscillation Range (default 0.20): sets the maximum distance from 0.5 that the weight may travel, so increasing it towards 0.25–0.30 yields stronger smoothing in turbulence and faster response in calm periods, whereas decreasing it to 0.10–0.15 keeps the behavior closer to classical HA and is useful if your strategy already includes heavy downstream smoothing.
Adapt Sensitivity (default 6.0): multiplies the normalized ATR deviation before clamping, such that higher sensitivity accelerates adaptation to regime shifts, while lower sensitivity produces gradual transitions; negative values intentionally invert the mapping (higher vol → less smoothing) and are generally not recommended unless you are testing a counter-intuitive hypothesis.
Reading the candles and the optional diagnostic
You interpret colors and bodies just like with normal HA, but you can additionally enable the Adaptive Weight diagnostic plot to see the regime in real time, where values drifting up toward the upper bound indicate a turbulent context that is being deliberately smoothed, and values gliding down toward the lower bound indicate a calm environment in which the indicator chooses to move faster, which can be valuable for discretionary confirmation when deciding whether a fresh color shift is likely to stick.
Practical workflows and combinations
Trend-following entries: use color continuity and body expansion as usual, but expect fewer spurious alternations around news spikes or into liquidity gaps; pairing with structure (swing highs/lows, breaks of internal ranges) keeps entries disciplined.
Exit management: when the diagnostic weight remains elevated for an extended period, you can be stricter with exit triggers because flips are less likely to be accidental noise; conversely, when the weight is depressed, consider earlier partials since the indicator is intentionally more nimble.
Multi-asset, multi-TF: the adaptation is especially helpful if you rotate instruments with very different vol profiles or hop across timeframes, since you will not need to retune a fixed smoothing parameter every time conditions change.
Behavior, constraints, and performance
The script does not repaint historical bars and uses only past information on closed candles, yet just like any candle-based visualization the current live bar will update until it closes, so you should avoid acting on mid-bar flips without a rule that accounts for bar close; there are no `security()` calls or higher-timeframe lookups, which keeps performance light and execution deterministic, and the clamping of the volatility signal ensures numerical stability even during extreme ATR spikes.
Sensible defaults and quick tuning
Start with the defaults (`ATR 14`, `Range 0.20`, `Sensitivity 6.0`) and observe the weight plot across a few volatile events; if you still see too many flips in turbulence, either raise `Range` to 0.25 or trim `Sensitivity` to 4–5 so that the weight can move high but does not overreact, and if the indicator feels too slow in quiet markets, lower `Range` toward 0.15 or raise `Sensitivity` to 7–8 to bias the weight a bit more aggressively downward when conditions compress.
What this indicator is—and is not
Adaptive Heikin Ashi is a context-aware visualization layer that improves the signal-to-noise ratio and reduces fake flips by modulating smoothing with volatility, but it is not a complete trading system, it does not predict the future, and it should be combined with structure, risk controls, and position management that fit your market and timeframe; always forward-test on your instruments, and remember that even adaptive smoothing can delay recognition at sharp turning points when volatility remains elevated.
Disclaimer
The content provided, including all code and materials, is strictly for educational and informational purposes only. It is not intended as, and should not be interpreted as, financial advice, a recommendation to buy or sell any financial instrument, or an offer of any financial product or service. All strategies, tools, and examples discussed are provided for illustrative purposes to demonstrate coding techniques and the functionality of Pine Script within a trading context.
Any results from strategies or tools provided are hypothetical, and past performance is not indicative of future results. Trading and investing involve high risk, including the potential loss of principal, and may not be suitable for all individuals. Before making any trading decisions, please consult with a qualified financial professional to understand the risks involved.
By using this script, you acknowledge and agree that any trading decisions are made solely at your discretion and risk.
Best regards and happy trading
Chervolino
Motif-Motif Chart
Multi-Timeframe Sweep IndicatorsLiquidity Sweeps: Identify when price sweeps stops above/below key levels
Breakout Confirmation: Confirm breakouts across multiple timeframes
Entry Timing: Use lower timeframe sweeps for precise entries
Risk Management: Higher timeframe sweeps may indicate stronger moves
The indicator works best when combined with other analysis techniques like support/resistance levels, volume analysis, and market structure.
Liquidity + FVG + OB Markings (Fixed v6)This indicator is built for price-action traders.
It automatically finds and plots three key structures on your chart:
Liquidity Levels – swing highs & lows that often get targeted by price.
Fair-Value Gaps (FVG) – inefficient price gaps between candles.
Order-Blocks (OB) – zones created by strong, high-volume impulsive candles.
It also provides alerts and a small information table so you can quickly gauge the current market context.
H/L Swings/pivots detectorThis indicator detects and labels swing highs and swing lows using pivot logic.
It highlights market structure shifts by identifying:
- Higher Highs (HH) and Lower Highs (LH)
- Lower Lows (LL) and Higher Lows (HL)
Traders often use these levels to analyze trends, reversals, and key support/resistance zones.
The script also plots pivot markers above highs and below lows for visual clarity.
This tool is designed for educational and analytical purposes, and it does not provide financial advice or guaranteed results.
📂 Categories (choose when publishing)
Type of script → Indicator
Category → Trend Analysis (fits best for HH/LL pivots)
Optionally → Support/Resistance (if you emphasize pivots as zones)
swing high
swing low
pivot points
market structure
trend analysis
higher high
lower low
support resistance
Golden/Death Cross with SMAGolden Cross: Triggered when the 50 SMA crosses above the 200 SMA.
Death Cross: Triggered when the 50 SMA crosses below the 200 SMA.
EMA + MACD Sequential Crossover MNQ BBCbest works for 100 or 1000 tick chart for nasdaq 100.
9 21 ema crossover with macd crossover
Publisher BBCKPS
LibbyThis script is a refined chopzone index script with additional functionalities.
it produce buy and sell signals as directed by chopzone
How to use:
BUY: Look for buy signal on the chart and proceed to place buy or long orders
SELL: Look for sell on the chart and proceed to place sell or short orders.
NOTE: i recommend you set alerts and make it activate on bar close to avoid fadeouts and sideways.
expect sideways market and multiple opposite signals within a short time during news or when economic data are released.
as always, no indicator is failproof, it is recommended to always pair more than 1 indicator for more clarity and practice safe trading.
M5 Session Rectangles (GMT+2) - Last 30 Sessions Rectangles on the M5 timeframe showing the MAX and MIN of the New York Session:
OPEN SESSION (15:30 - 16:20)
MID SESSION (16:20 - 19:00)
POWER HOUR (19:00 - 22:00)
The indicator tracks the last 30 days, and the rectangle for the current day is drawn only after the respective session closes.
Multi Timeframe BOS & rBOSThis is the same Multi-Timeframe Break of Structure and Market Structure Shift posted by Lenny_Kiruthu. However, the only difference is the naming of Market Structure Shift to rBOS (Break of Structure Reverse). To me, they are all break of structures when previous peaks or valleys are violated. The only difference is in sequence. Once a sequence of BOS reverses, then a new sequence begins. To me, this simplifies the various terminology incorporated by different systems such as ICT or SMT which adds unnecessary complexity.
eT
Crypto Market Dominance Stacked with LabelsA professional stacked area chart showing the dominance of major crypto market segments: BTC, ETH, Top 100 Altcoins, and #101+ Altcoins. Each layer is color-coded for clarity and includes dynamic labels with the current dominance percentage. Provides a clear visual representation of market share trends for traders, analysts, and crypto enthusiasts.
Features:
Stacked visualization of BTC, ETH, Top 100, and small-cap altcoins (#101+).
Color-coded areas for easy identification.
Dynamic labels showing each category’s current dominance percentage.
Horizontal reference lines for percentage levels.
Approximates top 100 and #101+ altcoins using TOTAL2 and TOTAL3 market cap tickers.
Use Case:
Track how market share shifts between BTC, ETH, large altcoins, and smaller altcoins over time. Ideal for analyzing trends, spotting dominance changes, and visualizing overall crypto market structure.
OR Box + Full Key Levels (Cash Hours • Strict v5)This is the final working script, just choose from the drop down to adjkust for Europeon / US markets
Opening ATR + High Momentum (10/30/60)this is a custom momentum indicator using atr
A fixed, compiling Pine v5 script is below with the three issues corrected: no plots in local scope, a ≤10-character shorttitle, and cleaned ternaries/formatting that remove the “end of line without line continuation” error.
MACD Josh MACD Study — Visual Crossover Tags
Overview:
This script displays MACD signals in a clear, visual way by showing:
Histogram = EMA(Fast) − EMA(Slow)
Signal = EMA(Histogram, Signal Length)
It adds labels and arrows to help you see crossover events between the Histogram and the Signal line more easily.
⚠️ Disclaimer: This tool is for educational and research purposes only. It is not financial advice or an investment recommendation. Past performance does not guarantee future results. Users should make their own decisions and manage risk responsibly.
Features
Central Zero Line with Signal and Histogram plots
Optional labels/arrows to highlight Histogram–Signal crossovers
Alerts for crossover and crossunder events, integrated with TradingView’s alert system
Standard adjustable inputs: Fast EMA, Slow EMA, Signal EMA
How to Interpret (for study only)
When the Histogram crosses above the Signal, a visual label/arrow marks a positive MACD event
When the Histogram crosses below the Signal, a visual label/arrow marks a negative MACD event
The “BUY/SELL” labels are visual study tags only — they do not represent trade instructions or recommendations
Responsible Usage Tips
Test across multiple timeframes and different assets
Combine with higher-timeframe trend, support/resistance, or volume for confirmation
Use alerts with caution, and always test in a demo environment first
Technical Notes
The script does not use future data and does not repaint signals once bars are closed
Results depend on market conditions and may vary across assets and timeframes
License & Credits
Written in Pine Script® v5 for TradingView
The indicator name shown on chart is for labeling purposes only and carries no implication of advice or solicitation
MACD COM PONTOS//@version=5
indicator(title="MACD COM PONTOS", shorttitle="MACD COM PONTOS")
//Plot Inputs
res = input.timeframe("", "Indicator TimeFrame")
fast_length = input.int(title="Fast Length", defval=12)
slow_length = input.int(title="Slow Length", defval=26)
src = input.source(title="Source", defval=close)
signal_length = input.int(title="Signal Smoothing", minval = 1, maxval = 999, defval = 9)
sma_source = input.string(title="Oscillator MA Type", defval="EMA", options= )
sma_signal = input.string(title="Signal Line MA Type", defval="EMA", options= )
// Show Plots T/F
show_macd = input.bool(true, title="Show MACD Lines", group="Show Plots?", inline="SP10")
show_macd_LW = input.int(3, minval=0, maxval=5, title = "MACD Width", group="Show Plots?", inline="SP11")
show_signal_LW= input.int(2, minval=0, maxval=5, title = "Signal Width", group="Show Plots?", inline="SP11")
show_Hist = input.bool(true, title="Show Histogram", group="Show Plots?", inline="SP20")
show_hist_LW = input.int(5, minval=0, maxval=5, title = "-- Width", group="Show Plots?", inline="SP20")
show_trend = input.bool(true, title = "Show MACD Lines w/ Trend Color", group="Show Plots?", inline="SP30")
show_HB = input.bool(false, title="Show Highlight Price Bars", group="Show Plots?", inline="SP40")
show_cross = input.bool(false, title = "Show BackGround on Cross", group="Show Plots?", inline="SP50")
show_dots = input.bool(true, title = "Show Circle on Cross", group="Show Plots?", inline="SP60")
show_dots_LW = input.int(5, minval=0, maxval=5, title = "-- Width", group="Show Plots?", inline="SP60")
//show_trend = input(true, title = "Colors MACD Lines w/ Trend Color", group="Show Plots?", inline="SP5")
// MACD Lines colors
col_macd = input.color(#FF6D00, "MACD Line ", group="Color Settings", inline="CS1")
col_signal = input.color(#2962FF, "Signal Line ", group="Color Settings", inline="CS1")
col_trnd_Up = input.color(#4BAF4F, "Trend Up ", group="Color Settings", inline="CS2")
col_trnd_Dn = input.color(#B71D1C, "Trend Down ", group="Color Settings", inline="CS2")
// Histogram Colors
col_grow_above = input.color(#26A69A, "Above Grow", group="Histogram Colors", inline="Hist10")
col_fall_above = input.color(#B2DFDB, "Fall", group="Histogram Colors", inline="Hist10")
col_grow_below = input.color(#FF5252, "Below Grow", group="Histogram Colors",inline="Hist20")
col_fall_below = input.color(#FFCDD2, "Fall", group="Histogram Colors", inline="Hist20")
// Alerts T/F Inputs
alert_Long = input.bool(true, title = "MACD Cross Up", group = "Alerts", inline="Alert10")
alert_Short = input.bool(true, title = "MACD Cross Dn", group = "Alerts", inline="Alert10")
alert_Long_A = input.bool(false, title = "MACD Cross Up & > 0", group = "Alerts", inline="Alert20")
alert_Short_B = input.bool(false, title = "MACD Cross Dn & < 0", group = "Alerts", inline="Alert20")
// Calculating
fast_ma = request.security(syminfo.tickerid, res, sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length))
slow_ma = request.security(syminfo.tickerid, res, sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length))
macd = fast_ma - slow_ma
signal = request.security(syminfo.tickerid, res, sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length))
hist = macd - signal
// MACD Trend and Cross Up/Down conditions
trend_up = macd > signal
trend_dn = macd < signal
cross_UP = signal >= macd and signal < macd
cross_DN = signal <= macd and signal > macd
cross_UP_A = (signal >= macd and signal < macd) and macd > 0
cross_DN_B = (signal <= macd and signal > macd) and macd < 0
// Condition that changes Color of MACD Line if Show Trend is turned on..
trend_col = show_trend and trend_up ? col_trnd_Up : trend_up ? col_macd : show_trend and trend_dn ? col_trnd_Dn: trend_dn ? col_macd : na
//Var Statements for Histogram Color Change
var bool histA_IsUp = false
var bool histA_IsDown = false
var bool histB_IsDown = false
var bool histB_IsUp = false
histA_IsUp := hist == hist ? histA_IsUp : hist > hist and hist > 0
histA_IsDown := hist == hist ? histA_IsDown : hist < hist and hist > 0
histB_IsDown := hist == hist ? histB_IsDown : hist < hist and hist <= 0
histB_IsUp := hist == hist ? histB_IsUp : hist > hist and hist <= 0
hist_col = histA_IsUp ? col_grow_above : histA_IsDown ? col_fall_above : histB_IsDown ? col_grow_below : histB_IsUp ? col_fall_below :color.silver
// Plot Statements
//Background Color
bgcolor(show_cross and cross_UP ? col_trnd_Up : na, editable=false)
bgcolor(show_cross and cross_DN ? col_trnd_Dn : na, editable=false)
//Highlight Price Bars
barcolor(show_HB and trend_up ? col_trnd_Up : na, title="Trend Up", offset = 0, editable=false)
barcolor(show_HB and trend_dn ? col_trnd_Dn : na, title="Trend Dn", offset = 0, editable=false)
//Regular Plots
plot(show_Hist and hist ? hist : na, title="Histogram", style=plot.style_columns, color=color.new(hist_col ,0),linewidth=show_hist_LW)
plot(show_macd and signal ? signal : na, title="Signal", color=color.new(col_signal, 0), style=plot.style_line ,linewidth=show_signal_LW)
plot(show_macd and macd ? macd : na, title="MACD", color=color.new(trend_col, 0), style=plot.style_line ,linewidth=show_macd_LW)
hline(0, title="0 Line", color=color.new(color.gray, 0), linestyle=hline.style_dashed, linewidth=1, editable=false)
plot(show_dots and cross_UP ? macd : na, title="Dots", color=color.new(trend_col ,0), style=plot.style_circles, linewidth=show_dots_LW, editable=false)
plot(show_dots and cross_DN ? macd : na, title="Dots", color=color.new(trend_col ,0), style=plot.style_circles, linewidth=show_dots_LW, editable=false)
//Alerts
if alert_Long and cross_UP
alert("Symbol = (" + syminfo.tickerid + ") TimeFrame = (" + timeframe.period + ") Current Price (" + str.tostring(close) + ") MACD Crosses Up.", alert.freq_once_per_bar_close)
if alert_Short and cross_DN
alert("Symbol = (" + syminfo.tickerid + ") TimeFrame = (" + timeframe.period + ") Current Price (" + str.tostring(close) + ") MACD Crosses Down.", alert.freq_once_per_bar_close)
//Alerts - Stricter Condition - Only Alerts When MACD Crosses UP & MACD > 0 -- Crosses Down & MACD < 0
if alert_Long_A and cross_UP_A
alert("Symbol = (" + syminfo.tickerid + ") TimeFrame = (" + timeframe.period + ") Current Price (" + str.tostring(close) + ") MACD > 0 And Crosses Up.", alert.freq_once_per_bar_close)
if alert_Short_B and cross_DN_B
alert("Symbol = (" + syminfo.tickerid + ") TimeFrame = (" + timeframe.period + ") Current Price (" + str.tostring(close) + ") MACD < 0 And Crosses Down.", alert.freq_once_per_bar_close)
//End Code
MC WITH ALERTS DINESH SETHIYAManipulation Candle (MC): A candlestick that initially suggests price movement in one direction but then reverses, manipulating liquidity and closing in the opposite direction.
Types of MCs:
Bullish MC: Takes out the previous candle's low, reverses, takes out the previous candle's high, and closes above it.
Bearish MC: Takes out the previous candle's high, reverses, takes out the previous candle's low, and closes below it.
Ideal MC Characteristic: The rejection wick (bottom wick for bullish MC, top wick for bearish MC) should be larger than the directional wick.
Custom Candle Coloring (3% Drop / Breakout / Follow-through)Naveen's custom bars. It helps with custom color of the bars to see significant candle movements and their interpretations
UpDownBow + BullBear ZoneUpDownBow + BullBear UpDownBow + BullBear ZoneUpDoUpDownBow + BullBear ZoneUpDownBow + BullBear ZoneUpDownBow + BullBear ZoneUpDownBow + BullBear ZoneUpDownBow + BullBear ZonewnBow + BullBear ZoneUpDownBow + BullBear UpDownBow + BullBear ZoneUpDoUpDownBow + BullBear ZoneUpDownBow + BullBear ZoneUpDownBow + BullBear ZoneUpDownBow + BullBear ZoneUpDownBow + BullBear ZonewnBow + BullBear ZoneUpDownBow + BullBear UpDownBow + BullBear ZoneUpDoUpDownBow + BullBear ZoneUpDownBow + BullBear ZoneUpDownBow + BullBear ZoneUpDownBow + BullBear ZoneUpDownBow + BullBear ZonewnBow + BullBear ZoneUpDownBow + BullBear UpDownBow + BullBear ZoneUpDoUpDownBow + BullBear ZoneUpDownBow + BullBear ZoneUpDownBow + BullBear ZoneUpDownBow + BullBear ZoneUpDownBow + BullBear ZonewnBow + BullBear ZoneUpDownBow + BullBear UpDownBow + BullBear ZoneUpDoUpDownBow + BullBear ZoneUpDownBow + BullBear ZoneUpDownBow + BullBear ZoneUpDownBow + BullBear ZoneUpDownBow + BullBear ZonewnBow + BullBear ZoneUpDownBow + BullBear UpDownBow + BullBear ZoneUpDoUpDownBow + BullBear ZoneUpDownBow + BullBear ZoneUpDownBow + BullBear ZoneUpDownBow + BullBear ZoneUpDownBow + BullBear ZonewnBow + BullBear ZoneUpDownBow + BullBear UpDownBow + BullBear ZoneUpDoUpDownBow + BullBear ZoneUpDownBow + BullBear ZoneUpDownBow + BullBear ZoneUpDownBow + BullBear ZoneUpDownBow + BullBear ZonewnBow + BullBear ZoneUpDownBow + BullBear UpDownBow + BullBear ZoneUpDoUpDownBow + BullBear ZoneUpDownBow + BullBear ZoneUpDownBow + BullBear ZoneUpDownBow + BullBear ZoneUpDownBow + BullBear ZonewnBow + BullBear Zone
Tristan's Star: 15m Shooting Star DetectorThis script is designed to be used on the 1-minute chart , but it analyzes the market as if you were watching the 15-minute candles.
Every cluster of 15 one-minute candles is grouped together and treated as a single 15-minute candle.
When that 15-minute “synthetic” candle looks like a shooting star pattern (small body near the low, long upper wick, short lower wick, bearish bias), the script triggers a signal.
At the close of that 15-minute cluster, the script will:
Plot a single “Sell” label on the last 1-minute bar of the group.
Draw a horizontal line across the 15 bars at the high, showing the level that created the shooting star.
Optionally display a table cell in the corner with the word “SELL.”
This lets you stay on the 1-minute timeframe for precision entries and exits, while still being alerted when the higher-timeframe (15-minute) shows a bearish reversal pattern.
HH/HL/LH/LLThe script works by detecting swing highs and swing lows with a simple pivot function (ta.pivothigh / ta.pivotlow) using a fixed 2-bar lookback and confirmation window. Each new pivot is compared against the previous confirmed pivot of the same type:
If a swing high is greater than the last swing high → it is labelled HH.
If a swing high is lower than the last swing high → it is labelled LH.
If a swing low is greater than the last swing low → it is labelled HL.
If a swing low is lower than the last swing low → it is labelled LL.
To keep the chart clean and readable, the indicator:
Plots only the two-letter labels (HH, HL, LH, LL) with no background box.
Uses red text for highs and green text for lows.
Places labels directly at the pivot bar (with the necessary confirmation offset).
Keeps labels small (size.tiny) to avoid clutter.
Positional Toolbox v6 (distinct colors)what the lines mean (colors)
EMA20 (green) = fast trend
EMA50 (orange) = intermediate trend
EMA200 (purple, thicker) = primary trend
when the chart is “bullish” vs “bearish”
Bullish bias (look for buys):
EMA20 > EMA50 > EMA200 and EMA200 sloping up.
Bearish bias (avoid longs / consider exits):
EMA20 < EMA50 < EMA200 or price closing under EMA50/EMA200.
the two buy signals the script gives you
Pullback Long (triangle up)
Prints when price dips to EMA20 (green) and closes back above it while trend is bullish and ADX is decent.
Entry: buy on the same close or on a break of that candle’s high next day.
Stop: below the pullback swing-low (or below EMA50 for simplicity).
Best for: adding on an existing uptrend after a shallow dip.
Breakout 55D (“BO55” label)
Prints when price closes above prior 55-day high with volume surge in a bullish trend.
Entry: on the close that triggers, or next day above the breakout candle’s high.
Stop: below the breakout candle’s low (conservative: below base low).
Best for: fresh trend legs from bases.
simple “sell / exit” rules
Trend exit (clean & mechanical): exit if daily close < EMA50 (orange).
More conservative: only exit if close < EMA200 (purple).
Momentum fade / weak breakout: if BO55 triggers but price re-closes back inside the base within 1–3 sessions on above-avg volume → exit or cut size.
Profit taking: book some at +1.5R to +2R, trail the rest (e.g., below prior swing lows or EMA20).
quick visual checklist (what to look for)
Are the EMAs stacked up (green over orange over purple)? → ok to buy setups.
Did a triangle print near EMA20? → pullback long candidate.
Did a BO55 label print with strong volume? → breakout candidate.
Any close under EMA50 after you’re in? → reduce/exit.
timeframe
Use Daily for positional signals.
If you want a tighter entry, drop to 30m/1h only to time the trigger—but keep decisions anchored to the daily trend.
alerts to set (so you don’t miss signals)
Add alert on Breakout 55D and Pullback Long (from the indicator’s alertconditions).
Optional price alerts at the breakout level or EMA20 touch.
risk guardrails (MTF friendly)
Risk ≤1% of capital per trade.
Avoid fresh entries within ~5 trading days of earnings unless you accept gap risk.
Prefer high-liquidity NSE F&O names (your CSV watchlist covers this).
TL;DR (super short):
Green > Orange > Purple = uptrend.
Triangle near green = buy the pullback; stop under swing low/EMA50.
BO55 label = buy the breakout; stop under breakout candle/base.
Exit on close below EMA50 (or below EMA200 if you’re giving more room).
Opening Range IndicatorComplete Trading Guide: Opening Range Breakout Strategy
What Are Opening Ranges?
Opening ranges capture the high and low prices during the first few minutes of market open. These levels often act as key support and resistance throughout the trading day because:
Heavy volume occurs at market open as overnight orders execute
Institutional activity is concentrated during opening minutes
Price discovery happens as market participants react to overnight news
Psychological levels are established that traders watch all day
Understanding the Three Timeframes
OR5 (5-Minute Range: 9:30-9:35 AM)
Most sensitive - captures immediate market reaction
Quick signals but higher false breakout rate
Best for scalping and momentum trading
Use for early entry when conviction is high
OR15 (15-Minute Range: 9:30-9:45 AM)
Balanced approach - most popular among day traders
Moderate sensitivity with better reliability
Good for swing trades lasting several hours
Primary timeframe for most strategies
OR30 (30-Minute Range: 9:30-10:00 AM)
Most reliable but slower signals
Lower false breakout rate
Best for position trades and trend following
Use when looking for major moves
Core Trading Strategies
Strategy 1: Basic Breakout
Setup:
Wait for price to break above OR15 high or below OR15 low
Enter on the breakout candle close
Stop loss: Opposite side of the range
Target: 2-3x the range size
Example:
OR15 range: $100.00 - $102.00 (Range = $2.00)
Long entry: Break above $102.00
Stop loss: $99.50 (below OR15 low)
Target: $104.00+ (2x range size)
Strategy 2: Multiple Confirmation
Setup:
Wait for OR5 break first (early signal)
Confirm with OR15 break in same direction
Enter on OR15 confirmation
Stop: Below OR30 if available, or OR15 opposite level
Why it works:
Multiple timeframe confirmation reduces false signals and increases probability of sustained moves.
Strategy 3: Failed Breakout Reversal
Setup:
Price breaks OR15 level but fails to hold
Wait for re-entry into the range
Enter reversal trade toward opposite OR level
Stop: Recent breakout high/low
Target: Opposite side of range + extension
Key insight: Failed breakouts often lead to strong moves in the opposite direction.
Advanced Techniques
Range Quality Assessment
High-Quality Ranges (Trade these):
Range size: 0.5% - 2% of stock price
Clean boundaries (not choppy)
Volume spike during range formation
Clear rejection at range levels
Low-Quality Ranges (Avoid these):
Very narrow ranges (<0.3% of stock price)
Extremely wide ranges (>3% of stock price)
Choppy, overlapping candles
Low volume during formation
Volume Confirmation
For Breakouts:
Look for volume spike (2x+ average) on breakout
Declining volume often signals false breakout
Rising volume during range formation shows interest
Market Context Filters
Best Conditions:
Trending market days (SPY/QQQ with clear direction)
Earnings reactions or news-driven moves
High-volume stocks with good liquidity
Volatility above average (VIX considerations)
Avoid Trading When:
Extremely low volume days
Major economic announcements pending
Holidays or half-days
Choppy, sideways market conditions
Risk Management Rules
Position Sizing
Conservative: Risk 0.5% of account per trade
Moderate: Risk 1% of account per trade
Aggressive: Risk 2% maximum per trade
Stop Loss Placement
Inside the range: Quick exit but higher stop-out rate
Outside opposite level: More room but larger risk
ATR-based: 1.5-2x Average True Range below entry
Profit Taking
Target 1: 1x range size (take 50% off)
Target 2: 2x range size (take 25% off)
Runner: Trail remaining 25% with moving stops
Specific Entry Techniques
Breakout Entry Methods
Method 1: Immediate Entry
Enter as soon as price closes above/below range
Fastest entry but highest false signal rate
Best for strong momentum situations
Method 2: Pullback Entry
Wait for breakout, then pullback to range level
Enter when price bounces off former resistance/support
Better risk/reward but may miss some moves
Method 3: Volume Confirmation
Wait for breakout + volume spike
Enter after volume confirmation candle
Reduces false signals significantly
Multiple Timeframe Entries
Aggressive: OR5 break → immediate entry
Conservative: OR5 + OR15 + OR30 all align → enter
Balanced: OR15 break with OR30 support → enter
Common Mistakes to Avoid
1. Trading Poor-Quality Ranges
❌ Don't trade ranges that are too narrow or too wide
✅ Focus on clean, well-defined ranges with good volume
2. Ignoring Volume
❌ Don't chase breakouts without volume confirmation
✅ Always check for volume spike on breakouts
3. Over-Trading
❌ Don't force trades when ranges are unclear
✅ Wait for high-probability setups only
4. Poor Risk Management
❌ Don't risk more than planned or use tight stops in volatile conditions
✅ Stick to predetermined risk levels
5. Fighting the Trend
❌ Don't fade breakouts in strongly trending markets
✅ Align trades with overall market direction
Daily Trading Routine
Pre-Market (8:00-9:30 AM)
Check overnight news and earnings
Review major indices (SPY, QQQ, IWM)
Identify potential opening range candidates
Set alerts for range breakouts
Market Open (9:30-10:00 AM)
Watch opening range formation
Note volume and price action quality
Mark key levels on charts
Prepare for breakout signals
Trading Session (10:00 AM - 4:00 PM)
Execute breakout strategies
Manage existing positions
Trail stops as profits develop
Look for additional setups
Post-Market Review
Analyze winning and losing trades
Review range quality vs. outcomes
Identify improvement areas
Prepare for next session
Best Stocks/ETFs for Opening Range Trading
Large Cap Stocks (Best for beginners):
AAPL, MSFT, GOOGL, AMZN, TSLA
High liquidity, predictable behavior
Good range formation most days
ETFs (Consistent patterns):
SPY, QQQ, IWM, XLF, XLE
Excellent liquidity
Clear range boundaries
Mid-Cap Growth (Advanced traders):
Stocks with good volume (1M+ shares daily)
Recent news catalysts
Clean technical patterns
Performance Optimization
Track These Metrics:
Win rate by range type (OR5 vs OR15 vs OR30)
Average R/R (risk vs reward ratio)
Best performing market conditions
Time of day performance
Continuous Improvement:
Keep detailed trade journal
Review failed breakouts for patterns
Adjust position sizing based on win rate
Refine entry timing based on backtesting
Final Tips for Success
Start small - Paper trade or use tiny positions initially
Focus on quality - Better to miss trades than take bad ones
Stay disciplined - Stick to your rules even during losing streaks
Adapt to conditions - What works in trending markets may fail in choppy conditions
Keep learning - Markets evolve, so should your approach
The opening range strategy is powerful because it captures natural market behavior, but like all strategies, it requires practice, discipline, and proper risk management to be profitable long-term.






















