First Candle ChannelTo create a price channel on the 15-minute timeframe based on the first candle's highest and lowest points, follow these steps:
Identify the first 15-minute candle of the trading session or your observation period.
Note the high and low prices of this first candle.
Draw two horizontal lines on the chart:
The upper line at the highest price of the first candle.
The lower line at the lowest price of the first candle.
These two lines form the channel boundaries for subsequent price action.
You can use this channel to observe price movement, noting when price breaks above (bullish breakout) or below (bearish breakdown) the channel formed by the first candle.
This method creates a simple visual range reference based on the initial price movement of the session or period, often used to gauge early strength or rarity of breakout events.
Indicators and strategies
ATR Volatility Breakout - Daily (Minimal) - SyTheInvestorGuycolor-coded TradingView Pine Script that highlights the background green/red on days when these ATR breakout conditions
Calculateur Position Size Multi-ActifsThe Multi-Asset Position Size Calculator v6 is a fully customizable Pine Script indicator designed to help you determine the optimal position size based on your risk tolerance across any market: Forex, stocks, crypto, futures indices, or commodities. Features include:
Asset Type Selector: Choose between Forex, Stocks, Crypto, Futures Indices, or Commodities
Account Capital & Risk: Set your total account size and risk percentage per trade
Entry Price & Stop-Loss: Configure your entry and stop-loss levels directly
Automatic or Custom Pip/Point Value: Automatically calculates pip/point value by asset class or enter your own
Contract Size Adjustment: Define contract sizes (e.g., 100,000 units for Forex, 1 for stocks/crypto)
Margin & Leverage Display: View your used leverage and position value in real time
Risk Alerts: Warnings for invalid inputs, high leverage (>10×), and asset-specific risk settings (e.g., crypto leverage)
Integrated Table Interface: On-chart table with adjustable position and text size
Optional Price Level Drawing: Display entry and stop-loss lines on the chart
Trade any market confidently with precise, asset-tailored position sizing and risk management.
Two Dot Closed 5ma VarianceThe concept behind this indicator is I have worked with a 5 simple moving average for a very long time. More significantly I changed the mode of the ma from a line to a DOT format. While price action moves upward the 5 MA stretches its values between bars, doing the same as it moves down. This becomes so much more obvious in DOT format. It is the turning points of direction where the variance between the DOTS of the 5 MA closes. Flattening the DOTS!
I created this indicator for XAUUSD 30 minute chart. Do with as you see fit. The indicator has a function that you can assign a MAX and MIN variance of the 5 MA right down to 0.10 cents. If closing value of 5 MA is within your set amount an ALERT is given. The actual variance is given in the leading flag and is of the prior 2 closed values.
Inside Bar Coloring (Real-time + Historical) w/ AlertsDescription
This Pine Script v6 indicator identifies and colors inside bars, whose entire range (high and low) stays within the previous bar's range. It gives the option to color the real-time bar as well as historical inside bars.
Inside bars are colored differently based on whether they close above or below their opening price (bullish vs bearish). The indicator offers flexible display options including real-time-only highlighting, historical inside bar visualization with transparency, and optional triangle markers for enhanced visibility.
Utility
Inside bars represent periods of market consolidation and reduced volatility, and are by nature consolidating. During this equilibrium, it can be valuable to observe price development rather than engage with it. Conversely, a break of the equilibrium often marks a shift in volatility and provides opportunity. This indicator provides instant visual identification of this price action on your chart.
Features
Smart Coloring System: Separate colors for bullish (close ≥ open) and bearish (close < open) inside bars
Flexible Display Modes: Show only real-time bar, all historical bars, or customize transparency levels
Visual Markers: Optional triangles above or below inside bars
Real-time Alerts: Configurable alerts notify you when new inside bars form
Optimized Performance: Efficient Pine Script v6 code with minimal resource usage
Open Source: Released under Mozilla Public License 2.0
Settings
Customizable colors for bullish/bearish inside bars (real-time and historical)
Toggle historical inside bar display
Real-time bar only mode for clean charts
Adjustable marker position (above/below bars)
Alert activation with detailed price information
parademi 5-8-13EMA 5-8-13 Trend & Crossover Indicator
This indicator helps you identify market trends and potential reversal points in a single tool. It uses three Exponential Moving Averages (EMA 5, EMA 8, and EMA 13) to determine trend direction and highlight important crossover signals.
Features:
Trend Detection:
When the price is above all three EMAs (5, 8, and 13), candles are colored green, indicating a strong uptrend.
When the price crosses EMA 8, candles turn orange, signaling a possible short-term change in momentum.
Crossover Signals:
When EMA 5 crosses above EMA 8, a green arrow appears below the candle, suggesting a potential buy signal.
When EMA 5 crosses below EMA 8, a red arrow appears above the candle, suggesting a potential sell signal.
Optional EMA 8 and EMA 13 crossover signals can also be displayed using the same logic.
Purpose:
This indicator visually clarifies trend direction and marks potential entry/exit points. It can be used on its own or combined with other technical tools such as volume, support/resistance levels, or momentum indicators for higher accuracy.
Contador de Vela 2.0This indicator displays a seconds counter on the chart that updates continuously.
It uses a small vertical offset trick to simulate movement when scrolling the chart, making the counter more visually dynamic.
Ideal for monitoring elapsed time since the chart loaded.
To use, simply add the indicator to any chart with price candles. The counter will appear near the current bar.
Daily Low Risk Calculator( Swing trading)For the people watching Morgan Trades and want to use his filters and scans, this one is very similar to the one he uses on TC2000. Put in your account size, the % you would want to risk per trade (I would recommend not more than 1%) and is will show you how many shares to buy so you don't have to do the maths yourself anymore! Awesome for people who swing trade stocks.
MTF Enhanced ORB Indicator Optimized// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at mozilla.org
// © NickStx
//@version=5
indicator("MTF Enhanced ORB Indicator Optimized", overlay=true)
// Inputs
orbMinutes = input.int(15, minval=1, title="ORB period (minutes)")
smiLen = input.int(14, minval=1, title="SMI look-back length")
smiThresh = input.float(40, minval=0, title="SMI threshold")
emaLen = input.int(21, minval=1, title="EMA length")
sessionHour = input.int(9, title="Session start hour", minval=0, maxval=23)
sessionMinute = input.int(30, title="Session start minute", minval=0, maxval=59)
confirmationBars = input.int(2, minval=1, title="Confirmation Bars")
volumeThresh = input.float(1.5, minval=1.0, title="Volume Threshold Multiplier")
cooldownBars = input.int(10, minval=1, title="Cooldown Bars")
rrRatio = input.float(2.0, minval=1.0, title="Risk-Reward Ratio for TP")
atrLen = input.int(14, title="ATR Length for TP Calculation")
minStrength = input.int(2, minval=1, maxval=5, title="Minimum MTF Strength for Signal")
candleMomentum = input.bool(true, title="Require Bullish/Bearish Candle for Entry")
// Higher Timeframes for MTF Analysis
tf15 = "15"
tf30 = "30"
tf60 = "60"
tf240 = "240"
tfD = "D"
// Function to compute indicators
get_indicators() =>
ema_val = ta.ema(close, emaLen)
ema_slope = ta.change(ema_val)
hh_val = ta.highest(high, smiLen)
ll_val = ta.lowest(low, smiLen)
mid_val = (hh_val + ll_val) / 2.0
half_range = (hh_val - ll_val) / 2.0
smi_val = half_range == 0 ? 0 : (close - mid_val) / half_range * 100.0
// Fetch from higher TFs
= request.security(syminfo.tickerid, tf15, get_indicators(), lookahead=barmerge.lookahead_on)
= request.security(syminfo.tickerid, tf30, get_indicators(), lookahead=barmerge.lookahead_on)
= request.security(syminfo.tickerid, tf60, get_indicators(), lookahead=barmerge.lookahead_on)
= request.security(syminfo.tickerid, tf240, get_indicators(), lookahead=barmerge.lookahead_on)
= request.security(syminfo.tickerid, tfD, get_indicators(), lookahead=barmerge.lookahead_on)
// State variables
var float rangeHigh = na
var float rangeLow = na
var int barsCount = 0
var bool orbComplete = false
var int lastSignalBar = -cooldownBars
var int breakoutCount = 0
var bool isBreakoutAbove = false
var bool isBreakoutBelow = false
// Detect new trading day
newDay = ta.change(time("D")) != 0
if newDay
rangeHigh := na
rangeLow := na
barsCount := 0
orbComplete := false
breakoutCount := 0
isBreakoutAbove := false
isBreakoutBelow := false
// Identify first bar after session start
firstBar = (hour == sessionHour and minute == sessionMinute)
if firstBar
rangeHigh := high
rangeLow := low
barsCount := 1
orbComplete := false
breakoutCount := 0
isBreakoutAbove := false
isBreakoutBelow := false
// Compute how many bars correspond to the ORB period
orbBars = math.round(orbMinutes / (timeframe.multiplier * 1.0))
// Build the opening range
if not orbComplete and barsCount > 0
rangeHigh := math.max(nz(rangeHigh), high)
rangeLow := math.min(nz(rangeLow), low)
barsCount += 1
if barsCount >= orbBars
orbComplete := true
// SMI calculation on current TF
= get_indicators()
// Volume confirmation
avgVolume = ta.sma(volume, 20)
isHighVolume = volume > avgVolume * volumeThresh
// Calculate strength score for long/short (0-5 based on TF alignments)
longStrength = 0
longStrength += (close > ema15 and emaSlope15 > 0 and smi15 > smiThresh) ? 1 : 0
longStrength += (close > ema30 and emaSlope30 > 0 and smi30 > smiThresh) ? 1 : 0
longStrength += (close > ema60 and emaSlope60 > 0 and smi60 > smiThresh) ? 1 : 0
longStrength += (close > ema240 and emaSlope240 > 0 and smi240 > smiThresh) ? 1 : 0
longStrength += (close > emaD and emaSlopeD > 0 and smiD > smiThresh) ? 1 : 0
shortStrength = 0
shortStrength += (close < ema15 and emaSlope15 < 0 and smi15 < -smiThresh) ? 1 : 0
shortStrength += (close < ema30 and emaSlope30 < 0 and smi30 < -smiThresh) ? 1 : 0
shortStrength += (close < ema60 and emaSlope60 < 0 and smi60 < -smiThresh) ? 1 : 0
shortStrength += (close < ema240 and emaSlope240 < 0 and smi240 < -smiThresh) ? 1 : 0
shortStrength += (close < emaD and emaSlopeD < 0 and smiD < -smiThresh) ? 1 : 0
// Track breakout confirmation
if orbComplete and not na(rangeHigh) and close > rangeHigh
isBreakoutAbove := true
breakoutCount := isBreakoutAbove ? breakoutCount + 1 : 0
else if orbComplete and not na(rangeLow) and close < rangeLow
isBreakoutBelow := true
breakoutCount := isBreakoutBelow ? breakoutCount + 1 : 0
else
breakoutCount := 0
isBreakoutAbove := false
isBreakoutBelow := false
// Candle momentum filter
bullCandle = close > open
bearCandle = close < open
// Entry signals with MTF strength and optimizations
longCond = orbComplete and not na(rangeHigh) and not na(ema) and not na(smi) and isBreakoutAbove and breakoutCount >= confirmationBars and close > ema and emaSlope > 0 and smi > smiThresh and isHighVolume and (bar_index - lastSignalBar > cooldownBars) and longStrength >= minStrength and (not candleMomentum or bullCandle)
shortCond = orbComplete and not na(rangeLow) and not na(ema) and not na(smi) and isBreakoutBelow and breakoutCount >= confirmationBars and close < ema and emaSlope < 0 and smi < -smiThresh and isHighVolume and (bar_index - lastSignalBar > cooldownBars) and shortStrength >= minStrength and (not candleMomentum or bearCandle)
// Update last signal bar
if longCond or shortCond
lastSignalBar := bar_index
// Determine signal color based on strength
longColor = longStrength >= 4 ? color.green : (longStrength >= 2 ? color.yellow : color.red)
shortColor = shortStrength >= 4 ? color.red : (shortStrength >= 2 ? color.orange : color.yellow)
// Plot ORB levels
plot(rangeHigh, color=color.new(color.green, 30), title="ORB High")
plot(rangeLow, color=color.new(color.red, 30), title="ORB Low")
// Plot shapes without text
plotshape(longCond, title="Long Signal", location=location.belowbar, color=longColor, style=shape.triangleup, size=size.small)
plotshape(shortCond, title="Short Signal", location=location.abovebar, color=shortColor, style=shape.triangledown, size=size.small)
// Add labels for dynamic text
if longCond
label.new(bar_index, low, "Long Strength: " + str.tostring(longStrength), color=longColor, style=label.style_label_up)
if shortCond
label.new(bar_index, high, "Short Strength: " + str.tostring(shortStrength), color=shortColor, style=label.style_label_down)
// Calculate Exit Targets (TP) using ATR for better adaptation
atr = ta.atr(atrLen)
tpLong = close + (atr * rrRatio) // ATR-based TP for long
tpShort = close - (atr * rrRatio) // ATR-based TP for short
// Plot TP lines when signal triggers
var line tpLineLong = na
var line tpLineShort = na
if longCond
line.delete(tpLineLong)
tpLineLong := line.new(bar_index, tpLong, bar_index + 1, tpLong, color=color.green, style=line.style_dashed)
label.new(bar_index, low, "TP Long: " + str.tostring(tpLong, "#.##"), color=color.green, style=label.style_label_up)
if shortCond
line.delete(tpLineShort)
tpLineShort := line.new(bar_index, tpShort, bar_index + 1, tpShort, color=color.red, style=line.style_dashed)
label.new(bar_index, high, "TP Short: " + str.tostring(tpShort, "#.##"), color=color.red, style=label.style_label_down)
// Extend TP lines to the right
if not na(tpLineLong)
line.set_x2(tpLineLong, bar_index)
if not na(tpLineShort)
line.set_x2(tpLineShort, bar_index)
// Plot EMA and SMI (current TF)
plot(ema, title="EMA", color=color.blue)
plot(smi, title="SMI", color=color.orange, linewidth=1)
hline(smiThresh, color=color.green, linestyle=hline.style_dotted)
hline(-smiThresh, color=color.red, linestyle=hline.style_dotted)// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at mozilla.org
// © NickStx
//@version=5
indicator("MTF Enhanced ORB Indicator Optimized", overlay=true)
// Inputs
orbMinutes = input.int(15, minval=1, title="ORB period (minutes)")
smiLen = input.int(14, minval=1, title="SMI look-back length")
smiThresh = input.float(40, minval=0, title="SMI threshold")
emaLen = input.int(21, minval=1, title="EMA length")
sessionHour = input.int(9, title="Session start hour", minval=0, maxval=23)
sessionMinute = input.int(30, title="Session start minute", minval=0, maxval=59)
confirmationBars = input.int(2, minval=1, title="Confirmation Bars")
volumeThresh = input.float(1.5, minval=1.0, title="Volume Threshold Multiplier")
cooldownBars = input.int(10, minval=1, title="Cooldown Bars")
rrRatio = input.float(2.0, minval=1.0, title="Risk-Reward Ratio for TP")
atrLen = input.int(14, title="ATR Length for TP Calculation")
minStrength = input.int(2, minval=1, maxval=5, title="Minimum MTF Strength for Signal")
candleMomentum = input.bool(true, title="Require Bullish/Bearish Candle for Entry")
// Higher Timeframes for MTF Analysis
tf15 = "15"
tf30 = "30"
tf60 = "60"
tf240 = "240"
tfD = "D"
// Function to compute indicators
get_indicators() =>
ema_val = ta.ema(close, emaLen)
ema_slope = ta.change(ema_val)
hh_val = ta.highest(high, smiLen)
ll_val = ta.lowest(low, smiLen)
mid_val = (hh_val + ll_val) / 2.0
half_range = (hh_val - ll_val) / 2.0
smi_val = half_range == 0 ? 0 : (close - mid_val) / half_range * 100.0
// Fetch from higher TFs
= request.security(syminfo.tickerid, tf15, get_indicators(), lookahead=barmerge.lookahead_on)
= request.security(syminfo.tickerid, tf30, get_indicators(), lookahead=barmerge.lookahead_on)
= request.security(syminfo.tickerid, tf60, get_indicators(), lookahead=barmerge.lookahead_on)
= request.security(syminfo.tickerid, tf240, get_indicators(), lookahead=barmerge.lookahead_on)
= request.security(syminfo.tickerid, tfD, get_indicators(), lookahead=barmerge.lookahead_on)
// State variables
var float rangeHigh = na
var float rangeLow = na
var int barsCount = 0
var bool orbComplete = false
var int lastSignalBar = -cooldownBars
var int breakoutCount = 0
var bool isBreakoutAbove = false
var bool isBreakoutBelow = false
// Detect new trading day
newDay = ta.change(time("D")) != 0
if newDay
rangeHigh := na
rangeLow := na
barsCount := 0
orbComplete := false
breakoutCount := 0
isBreakoutAbove := false
isBreakoutBelow := false
// Identify first bar after session start
firstBar = (hour == sessionHour and minute == sessionMinute)
if firstBar
rangeHigh := high
rangeLow := low
barsCount := 1
orbComplete := false
breakoutCount := 0
isBreakoutAbove := false
isBreakoutBelow := false
// Compute how many bars correspond to the ORB period
orbBars = math.round(orbMinutes / (timeframe.multiplier * 1.0))
// Build the opening range
if not orbComplete and barsCount > 0
rangeHigh := math.max(nz(rangeHigh), high)
rangeLow := math.min(nz(rangeLow), low)
barsCount += 1
if barsCount >= orbBars
orbComplete := true
// SMI calculation on current TF
= get_indicators()
// Volume confirmation
avgVolume = ta.sma(volume, 20)
isHighVolume = volume > avgVolume * volumeThresh
// Calculate strength score for long/short (0-5 based on TF alignments)
longStrength = 0
longStrength += (close > ema15 and emaSlope15 > 0 and smi15 > smiThresh) ? 1 : 0
longStrength += (close > ema30 and emaSlope30 > 0 and smi30 > smiThresh) ? 1 : 0
longStrength += (close > ema60 and emaSlope60 > 0 and smi60 > smiThresh) ? 1 : 0
longStrength += (close > ema240 and emaSlope240 > 0 and smi240 > smiThresh) ? 1 : 0
longStrength += (close > emaD and emaSlopeD > 0 and smiD > smiThresh) ? 1 : 0
shortStrength = 0
shortStrength += (close < ema15 and emaSlope15 < 0 and smi15 < -smiThresh) ? 1 : 0
shortStrength += (close < ema30 and emaSlope30 < 0 and smi30 < -smiThresh) ? 1 : 0
shortStrength += (close < ema60 and emaSlope60 < 0 and smi60 < -smiThresh) ? 1 : 0
shortStrength += (close < ema240 and emaSlope240 < 0 and smi240 < -smiThresh) ? 1 : 0
shortStrength += (close < emaD and emaSlopeD < 0 and smiD < -smiThresh) ? 1 : 0
// Track breakout confirmation
if orbComplete and not na(rangeHigh) and close > rangeHigh
isBreakoutAbove := true
breakoutCount := isBreakoutAbove ? breakoutCount + 1 : 0
else if orbComplete and not na(rangeLow) and close < rangeLow
isBreakoutBelow := true
breakoutCount := isBreakoutBelow ? breakoutCount + 1 : 0
else
breakoutCount := 0
isBreakoutAbove := false
isBreakoutBelow := false
// Candle momentum filter
bullCandle = close > open
bearCandle = close < open
// Entry signals with MTF strength and optimizations
longCond = orbComplete and not na(rangeHigh) and not na(ema) and not na(smi) and isBreakoutAbove and breakoutCount >= confirmationBars and close > ema and emaSlope > 0 and smi > smiThresh and isHighVolume and (bar_index - lastSignalBar > cooldownBars) and longStrength >= minStrength and (not candleMomentum or bullCandle)
shortCond = orbComplete and not na(rangeLow) and not na(ema) and not na(smi) and isBreakoutBelow and breakoutCount >= confirmationBars and close < ema and emaSlope < 0 and smi < -smiThresh and isHighVolume and (bar_index - lastSignalBar > cooldownBars) and shortStrength >= minStrength and (not candleMomentum or bearCandle)
// Update last signal bar
if longCond or shortCond
lastSignalBar := bar_index
// Determine signal color based on strength
longColor = longStrength >= 4 ? color.green : (longStrength >= 2 ? color.yellow : color.red)
shortColor = shortStrength >= 4 ? color.red : (shortStrength >= 2 ? color.orange : color.yellow)
// Plot ORB levels
plot(rangeHigh, color=color.new(color.green, 30), title="ORB High")
plot(rangeLow, color=color.new(color.red, 30), title="ORB Low")
// Plot shapes without text
plotshape(longCond, title="Long Signal", location=location.belowbar, color=longColor, style=shape.triangleup, size=size.small)
plotshape(shortCond, title="Short Signal", location=location.abovebar, color=shortColor, style=shape.triangledown, size=size.small)
// Add labels for dynamic text
if longCond
label.new(bar_index, low, "Long Strength: " + str.tostring(longStrength), color=longColor, style=label.style_label_up)
if shortCond
label.new(bar_index, high, "Short Strength: " + str.tostring(shortStrength), color=shortColor, style=label.style_label_down)
// Calculate Exit Targets (TP) using ATR for better adaptation
atr = ta.atr(atrLen)
tpLong = close + (atr * rrRatio) // ATR-based TP for long
tpShort = close - (atr * rrRatio) // ATR-based TP for short
// Plot TP lines when signal triggers
var line tpLineLong = na
var line tpLineShort = na
if longCond
line.delete(tpLineLong)
tpLineLong := line.new(bar_index, tpLong, bar_index + 1, tpLong, color=color.green, style=line.style_dashed)
label.new(bar_index, low, "TP Long: " + str.tostring(tpLong, "#.##"), color=color.green, style=label.style_label_up)
if shortCond
line.delete(tpLineShort)
tpLineShort := line.new(bar_index, tpShort, bar_index + 1, tpShort, color=color.red, style=line.style_dashed)
label.new(bar_index, high, "TP Short: " + str.tostring(tpShort, "#.##"), color=color.red, style=label.style_label_down)
// Extend TP lines to the right
if not na(tpLineLong)
line.set_x2(tpLineLong, bar_index)
if not na(tpLineShort)
line.set_x2(tpLineShort, bar_index)
// Plot EMA and SMI (current TF)
plot(ema, title="EMA", color=color.blue)
plot(smi, title="SMI", color=color.orange, linewidth=1)
hline(smiThresh, color=color.green, linestyle=hline.style_dotted)
hline(-smiThresh, color=color.red, linestyle=hline.style_dotted)// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at mozilla.org
// © NickStx
//@version=5
indicator("MTF Enhanced ORB Indicator Optimized", overlay=true)
// Inputs
orbMinutes = input.int(15, minval=1, title="ORB period (minutes)")
smiLen = input.int(14, minval=1, title="SMI look-back length")
smiThresh = input.float(40, minval=0, title="SMI threshold")
emaLen = input.int(21, minval=1, title="EMA length")
sessionHour = input.int(9, title="Session start hour", minval=0, maxval=23)
sessionMinute = input.int(30, title="Session start minute", minval=0, maxval=59)
confirmationBars = input.int(2, minval=1, title="Confirmation Bars")
volumeThresh = input.float(1.5, minval=1.0, title="Volume Threshold Multiplier")
cooldownBars = input.int(10, minval=1, title="Cooldown Bars")
rrRatio = input.float(2.0, minval=1.0, title="Risk-Reward Ratio for TP")
atrLen = input.int(14, title="ATR Length for TP Calculation")
minStrength = input.int(2, minval=1, maxval=5, title="Minimum MTF Strength for Signal")
candleMomentum = input.bool(true, title="Require Bullish/Bearish Candle for Entry")
// Higher Timeframes for MTF Analysis
tf15 = "15"
tf30 = "30"
tf60 = "60"
tf240 = "240"
tfD = "D"
// Function to compute indicators
get_indicators() =>
ema_val = ta.ema(close, emaLen)
ema_slope = ta.change(ema_val)
hh_val = ta.highest(high, smiLen)
ll_val = ta.lowest(low, smiLen)
mid_val = (hh_val + ll_val) / 2.0
half_range = (hh_val - ll_val) / 2.0
smi_val = half_range == 0 ? 0 : (close - mid_val) / half_range * 100.0
// Fetch from higher TFs
= request.security(syminfo.tickerid, tf15, get_indicators(), lookahead=barmerge.lookahead_on)
= request.security(syminfo.tickerid, tf30, get_indicators(), lookahead=barmerge.lookahead_on)
= request.security(syminfo.tickerid, tf60, get_indicators(), lookahead=barmerge.lookahead_on)
= request.security(syminfo.tickerid, tf240, get_indicators(), lookahead=barmerge.lookahead_on)
= request.security(syminfo.tickerid, tfD, get_indicators(), lookahead=barmerge.lookahead_on)
// State variables
var float rangeHigh = na
var float rangeLow = na
var int barsCount = 0
var bool orbComplete = false
var int lastSignalBar = -cooldownBars
var int breakoutCount = 0
var bool isBreakoutAbove = false
var bool isBreakoutBelow = false
// Detect new trading day
newDay = ta.change(time("D")) != 0
if newDay
rangeHigh := na
rangeLow := na
barsCount := 0
orbComplete := false
breakoutCount := 0
isBreakoutAbove := false
isBreakoutBelow := false
// Identify first bar after session start
firstBar = (hour == sessionHour and minute == sessionMinute)
if firstBar
rangeHigh := high
rangeLow := low
barsCount := 1
orbComplete := false
breakoutCount := 0
isBreakoutAbove := false
isBreakoutBelow := false
// Compute how many bars correspond to the ORB period
orbBars = math.round(orbMinutes / (timeframe.multiplier * 1.0))
// Build the opening range
if not orbComplete and barsCount > 0
rangeHigh := math.max(nz(rangeHigh), high)
rangeLow := math.min(nz(rangeLow), low)
barsCount += 1
if barsCount >= orbBars
orbComplete := true
// SMI calculation on current TF
= get_indicators()
// Volume confirmation
avgVolume = ta.sma(volume, 20)
isHighVolume = volume > avgVolume * volumeThresh
// Calculate strength score for long/short (0-5 based on TF alignments)
longStrength = 0
longStrength += (close > ema15 and emaSlope15 > 0 and smi15 > smiThresh) ? 1 : 0
longStrength += (close > ema30 and emaSlope30 > 0 and smi30 > smiThresh) ? 1 : 0
longStrength += (close > ema60 and emaSlope60 > 0 and smi60 > smiThresh) ? 1 : 0
longStrength += (close > ema240 and emaSlope240 > 0 and smi240 > smiThresh) ? 1 : 0
longStrength += (close > emaD and emaSlopeD > 0 and smiD > smiThresh) ? 1 : 0
shortStrength = 0
shortStrength += (close < ema15 and emaSlope15 < 0 and smi15 < -smiThresh) ? 1 : 0
shortStrength += (close < ema30 and emaSlope30 < 0 and smi30 < -smiThresh) ? 1 : 0
shortStrength += (close < ema60 and emaSlope60 < 0 and smi60 < -smiThresh) ? 1 : 0
shortStrength += (close < ema240 and emaSlope240 < 0 and smi240 < -smiThresh) ? 1 : 0
shortStrength += (close < emaD and emaSlopeD < 0 and smiD < -smiThresh) ? 1 : 0
// Track breakout confirmation
if orbComplete and not na(rangeHigh) and close > rangeHigh
isBreakoutAbove := true
breakoutCount := isBreakoutAbove ? breakoutCount + 1 : 0
else if orbComplete and not na(rangeLow) and close < rangeLow
isBreakoutBelow := true
breakoutCount := isBreakoutBelow ? breakoutCount + 1 : 0
else
breakoutCount := 0
isBreakoutAbove := false
isBreakoutBelow := false
// Candle momentum filter
bullCandle = close > open
bearCandle = close < open
// Entry signals with MTF strength and optimizations
longCond = orbComplete and not na(rangeHigh) and not na(ema) and not na(smi) and isBreakoutAbove and breakoutCount >= confirmationBars and close > ema and emaSlope > 0 and smi > smiThresh and isHighVolume and (bar_index - lastSignalBar > cooldownBars) and longStrength >= minStrength and (not candleMomentum or bullCandle)
shortCond = orbComplete and not na(rangeLow) and not na(ema) and not na(smi) and isBreakoutBelow and breakoutCount >= confirmationBars and close < ema and emaSlope < 0 and smi < -smiThresh and isHighVolume and (bar_index - lastSignalBar > cooldownBars) and shortStrength >= minStrength and (not candleMomentum or bearCandle)
// Update last signal bar
if longCond or shortCond
lastSignalBar := bar_index
// Determine signal color based on strength
longColor = longStrength >= 4 ? color.green : (longStrength >= 2 ? color.yellow : color.red)
shortColor = shortStrength >= 4 ? color.red : (shortStrength >= 2 ? color.orange : color.yellow)
// Plot ORB levels
plot(rangeHigh, color=color.new(color.green, 30), title="ORB High")
plot(rangeLow, color=color.new(color.red, 30), title="ORB Low")
// Plot shapes without text
plotshape(longCond, title="Long Signal", location=location.belowbar, color=longColor, style=shape.triangleup, size=size.small)
plotshape(shortCond, title="Short Signal", location=location.abovebar, color=shortColor, style=shape.triangledown, size=size.small)
// Add labels for dynamic text
if longCond
label.new(bar_index, low, "Long Strength: " + str.tostring(longStrength), color=longColor, style=label.style_label_up)
if shortCond
label.new(bar_index, high, "Short Strength: " + str.tostring(shortStrength), color=shortColor, style=label.style_label_down)
// Calculate Exit Targets (TP) using ATR for better adaptation
atr = ta.atr(atrLen)
tpLong = close + (atr * rrRatio) // ATR-based TP for long
tpShort = close - (atr * rrRatio) // ATR-based TP for short
// Plot TP lines when signal triggers
var line tpLineLong = na
var line tpLineShort = na
if longCond
line.delete(tpLineLong)
tpLineLong := line.new(bar_index, tpLong, bar_index + 1, tpLong, color=color.green, style=line.style_dashed)
label.new(bar_index, low, "TP Long: " + str.tostring(tpLong, "#.##"), color=color.green, style=label.style_label_up)
if shortCond
line.delete(tpLineShort)
tpLineShort := line.new(bar_index, tpShort, bar_index + 1, tpShort, color=color.red, style=line.style_dashed)
label.new(bar_index, high, "TP Short: " + str.tostring(tpShort, "#.##"), color=color.red, style=label.style_label_down)
// Extend TP lines to the right
if not na(tpLineLong)
line.set_x2(tpLineLong, bar_index)
if not na(tpLineShort)
line.set_x2(tpLineShort, bar_index)
// Plot EMA and SMI (current TF)
plot(ema, title="EMA", color=color.blue)
plot(smi, title="SMI", color=color.orange, linewidth=1)
hline(smiThresh, color=color.green, linestyle=hline.style_dotted)
hline(-smiThresh, color=color.red, linestyle=hline.style_dotted)// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at mozilla.org
// © NickStx
//@version=5
indicator("MTF Enhanced ORB Indicator Optimized", overlay=true)
// Inputs
orbMinutes = input.int(15, minval=1, title="ORB period (minutes)")
smiLen = input.int(14, minval=1, title="SMI look-back length")
smiThresh = input.float(40, minval=0, title="SMI threshold")
emaLen = input.int(21, minval=1, title="EMA length")
sessionHour = input.int(9, title="Session start hour", minval=0, maxval=23)
sessionMinute = input.int(30, title="Session start minute", minval=0, maxval=59)
confirmationBars = input.int(2, minval=1, title="Confirmation Bars")
volumeThresh = input.float(1.5, minval=1.0, title="Volume Threshold Multiplier")
cooldownBars = input.int(10, minval=1, title="Cooldown Bars")
rrRatio = input.float(2.0, minval=1.0, title="Risk-Reward Ratio for TP")
atrLen = input.int(14, title="ATR Length for TP Calculation")
minStrength = input.int(2, minval=1, maxval=5, title="Minimum MTF Strength for Signal")
candleMomentum = input.bool(true, title="Require Bullish/Bearish Candle for Entry")
// Higher Timeframes for MTF Analysis
tf15 = "15"
tf30 = "30"
tf60 = "60"
tf240 = "240"
tfD = "D"
// Function to compute indicators
get_indicators() =>
ema_val = ta.ema(close, emaLen)
ema_slope = ta.change(ema_val)
hh_val = ta.highest(high, smiLen)
ll_val = ta.lowest(low, smiLen)
mid_val = (hh_val + ll_val) / 2.0
half_range = (hh_val - ll_val) / 2.0
smi_val = half_range == 0 ? 0 : (close - mid_val) / half_range * 100.0
// Fetch from higher TFs
= request.security(syminfo.tickerid, tf15, get_indicators(), lookahead=barmerge.lookahead_on)
= request.security(syminfo.tickerid, tf30, get_indicators(), lookahead=barmerge.lookahead_on)
= request.security(syminfo.tickerid, tf60, get_indicators(), lookahead=barmerge.lookahead_on)
= request.security(syminfo.tickerid, tf240, get_indicators(), lookahead=barmerge.lookahead_on)
= request.security(syminfo.tickerid, tfD, get_indicators(), lookahead=barmerge.lookahead_on)
// State variables
var float rangeHigh = na
var float rangeLow = na
var int barsCount = 0
var bool orbComplete = false
var int lastSignalBar = -cooldownBars
var int breakoutCount = 0
var bool isBreakoutAbove = false
var bool isBreakoutBelow = false
// Detect new trading day
newDay = ta.change(time("D")) != 0
if newDay
rangeHigh := na
rangeLow := na
barsCount := 0
orbComplete := false
breakoutCount := 0
isBreakoutAbove := false
isBreakoutBelow := false
// Identify first bar after session start
firstBar = (hour == sessionHour and minute == sessionMinute)
if firstBar
rangeHigh := high
rangeLow := low
barsCount := 1
orbComplete := false
breakoutCount := 0
isBreakoutAbove := false
isBreakoutBelow := false
// Compute how many bars correspond to the ORB period
orbBars = math.round(orbMinutes / (timeframe.multiplier * 1.0))
// Build the opening range
if not orbComplete and barsCount > 0
rangeHigh := math.max(nz(rangeHigh), high)
rangeLow := math.min(nz(rangeLow), low)
barsCount += 1
if barsCount >= orbBars
orbComplete := true
// SMI calculation on current TF
= get_indicators()
// Volume confirmation
avgVolume = ta.sma(volume, 20)
isHighVolume = volume > avgVolume * volumeThresh
// Calculate strength score for long/short (0-5 based on TF alignments)
longStrength = 0
longStrength += (close > ema15 and emaSlope15 > 0 and smi15 > smiThresh) ? 1 : 0
longStrength += (close > ema30 and emaSlope30 > 0 and smi30 > smiThresh) ? 1 : 0
longStrength += (close > ema60 and emaSlope60 > 0 and smi60 > smiThresh) ? 1 : 0
longStrength += (close > ema240 and emaSlope240 > 0 and smi240 > smiThresh) ? 1 : 0
longStrength += (close > emaD and emaSlopeD > 0 and smiD > smiThresh) ? 1 : 0
shortStrength = 0
shortStrength += (close < ema15 and emaSlope15 < 0 and smi15 < -smiThresh) ? 1 : 0
shortStrength += (close < ema30 and emaSlope30 < 0 and smi30 < -smiThresh) ? 1 : 0
shortStrength += (close < ema60 and emaSlope60 < 0 and smi60 < -smiThresh) ? 1 : 0
shortStrength += (close < ema240 and emaSlope240 < 0 and smi240 < -smiThresh) ? 1 : 0
shortStrength += (close < emaD and emaSlopeD < 0 and smiD < -smiThresh) ? 1 : 0
// Track breakout confirmation
if orbComplete and not na(rangeHigh) and close > rangeHigh
isBreakoutAbove := true
breakoutCount := isBreakoutAbove ? breakoutCount + 1 : 0
else if orbComplete and not na(rangeLow) and close < rangeLow
isBreakoutBelow := true
breakoutCount := isBreakoutBelow ? breakoutCount + 1 : 0
else
breakoutCount := 0
isBreakoutAbove := false
isBreakoutBelow := false
// Candle momentum filter
bullCandle = close > open
bearCandle = close < open
// Entry signals with MTF strength and optimizations
longCond = orbComplete and not na(rangeHigh) and not na(ema) and not na(smi) and isBreakoutAbove and breakoutCount >= confirmationBars and close > ema and emaSlope > 0 and smi > smiThresh and isHighVolume and (bar_index - lastSignalBar > cooldownBars) and longStrength >= minStrength and (not candleMomentum or bullCandle)
shortCond = orbComplete and not na(rangeLow) and not na(ema) and not na(smi) and isBreakoutBelow and breakoutCount >= confirmationBars and close < ema and emaSlope < 0 and smi < -smiThresh and isHighVolume and (bar_index - lastSignalBar > cooldownBars) and shortStrength >= minStrength and (not candleMomentum or bearCandle)
// Update last signal bar
if longCond or shortCond
lastSignalBar := bar_index
// Determine signal color based on strength
longColor = longStrength >= 4 ? color.green : (longStrength >= 2 ? color.yellow : color.red)
shortColor = shortStrength >= 4 ? color.red : (shortStrength >= 2 ? color.orange : color.yellow)
// Plot ORB levels
plot(rangeHigh, color=color.new(color.green, 30), title="ORB High")
plot(rangeLow, color=color.new(color.red, 30), title="ORB Low")
// Plot shapes without text
plotshape(longCond, title="Long Signal", location=location.belowbar, color=longColor, style=shape.triangleup, size=size.small)
plotshape(shortCond, title="Short Signal", location=location.abovebar, color=shortColor, style=shape.triangledown, size=size.small)
// Add labels for dynamic text
if longCond
label.new(bar_index, low, "Long Strength: " + str.tostring(longStrength), color=longColor, style=label.style_label_up)
if shortCond
label.new(bar_index, high, "Short Strength: " + str.tostring(shortStrength), color=shortColor, style=label.style_label_down)
// Calculate Exit Targets (TP) using ATR for better adaptation
atr = ta.atr(atrLen)
tpLong = close + (atr * rrRatio) // ATR-based TP for long
tpShort = close - (atr * rrRatio) // ATR-based TP for short
// Plot TP lines when signal triggers
var line tpLineLong = na
var line tpLineShort = na
if longCond
line.delete(tpLineLong)
tpLineLong := line.new(bar_index, tpLong, bar_index + 1, tpLong, color=color.green, style=line.style_dashed)
label.new(bar_index, low, "TP Long: " + str.tostring(tpLong, "#.##"), color=color.green, style=label.style_label_up)
if shortCond
line.delete(tpLineShort)
tpLineShort := line.new(bar_index, tpShort, bar_index + 1, tpShort, color=color.red, style=line.style_dashed)
label.new(bar_index, high, "TP Short: " + str.tostring(tpShort, "#.##"), color=color.red, style=label.style_label_down)
// Extend TP lines to the right
if not na(tpLineLong)
line.set_x2(tpLineLong, bar_index)
if not na(tpLineShort)
line.set_x2(tpLineShort, bar_index)
// Plot EMA and SMI (current TF)
plot(ema, title="EMA", color=color.blue)
plot(smi, title="SMI", color=color.orange, linewidth=1)
hline(smiThresh, color=color.green, linestyle=hline.style_dotted)
hline(-smiThresh, color=color.red, linestyle=hline.style_dotted)
ADR/ATR Session No Probability Table by LKHere you go—clear, English docs you can drop into your script’s description or share with teammates.
ADR/ATR Session by LK — Overview
This indicator summarizes Average Daily Range (ADR) and Average True Range (ATR) for two horizons:
• Session H4 (e.g., 06:00–13:00 on a 4‑hour chart)
• Daily (D)
It shows:
• Current ADR/ATR values (using your chosen smoothing method)
• How much of ADR/ATR today/this bar has already been consumed (% of ADR/ATR)
• ADR/ATR as a percent of price
• Optional probability blocks: likelihood that %ADR will exceed user‑defined thresholds over a lookback window
• Optional on‑chart lines for the current H4 and Daily candles: Open, ADR High, ADR Low
⸻
What the metrics mean
• ADR (H4 / D): Moving average of the bar range (high - low).
• ATR (H4 / D): Moving average of True Range (max(hi-lo, |hi-close |, |lo-close |)).
• % of ADR (curr H4): (H4 range of the current H4 bar) / ADR(H4) × 100. Updates live even if the current time is outside the session.
• % of ADR (Daily): (today’s intra‑day range) / ADR(D) × 100.
• % of ATR (curr H4 / Daily): TR / ATR × 100 for that horizon.
• ADR % of Price / ATR % of Price: ADR or ATR divided by current price × 100 (a quick “volatility vs. price” gauge).
Session logic (H4): ADR/ATR(H4) only update on bars that fall inside the configured session window; outside the window the values hold steady (no recalculation “bleed”).
Daily range tracking: The indicator tracks today’s high/low in real‑time and resets at the day change.
⸻
Inputs (quick reference)
Core
• Length (ADR/ATR): smoothing length for ADR/ATR (default 21).
• Wait for Higher TF Bar Close: if true, updates ADR/ATR only after the higher‑TF bar closes when using request.security.
Timeframes
• Session Timeframe (H4): default 240.
• Daily Timeframe: default D.
Session time
• Session Timezone: “Chart” (default) or a fixed timezone.
• Session Start Hour, End Hour (minutes are fixed to 0 in this version).
Smoothing methods
• H4 ADR Method / H4 ATR Method: SMA/EMA/RMA/WMA.
• Daily ADR Method / Daily ATR Method: SMA/EMA/RMA/WMA.
Table appearance
• Table BG, Table Text, Table Font Size.
Lines (optional)
• Show current H4 segments, Show current Daily segments
• Line colors for Open / ADR High / ADR Low
• Line width
Probability
• H4 Probability Lookback (bars): number of H4 bars to examine (e.g., 300).
• Daily Probability Lookback (days): number of D bars (e.g., 180).
• ADR thresholds (%): CSV list of thresholds (e.g., 25,50,55,60,65,70,75,80,85,90,95,100,125,150).
The table will show the % of lookback bars where %ADR ≥ threshold.
Tip: If you want probabilities only for session H4 bars (not every H4 bar), ask and I can add a toggle to filter by inSess.
⸻
How to read the table
H4 block
• ADR (method) / ATR (method): the session‑aware averages.
• % of ADR (curr H4): live progress of this H4 bar toward the session ADR.
• ADR % of Price: ADR(H4) relative to price.
• % of ATR (curr H4) and ATR % of Price: same idea for ATR.
H4 Probability (lookback N bars)
• Rows like “≥ 80% ADR” show the fraction (in %) of the last N H4 bars that reached at least 80% of ADR(H4).
Daily block
• Mirrors the H4 block, but for Daily.
Daily Probability (lookback M days)
• Rows like “≥ 100% ADR” show the fraction of the last M daily bars whose daily range reached at least 100% of ADR(D).
⸻
Practical usage
• Use % of ADR (curr H4 / Daily) to judge exhaustion or room left in the day/session.
E.g., if Daily %ADR is already 95%, be cautious with momentum continuation trades.
• The probability tables give a quick historical context:
If “≥ 125% ADR” is ~18%, the market rarely stretches that far; your trade sizing/targets can reflect that.
• ADR/ATR % of Price helps normalize volatility between instruments.
⸻
Troubleshooting
• If probability rows are blank: ensure lookback windows are large enough (and that the chart has enough history).
• If ADR/ATR show … (NA): usually you don’t have enough bars for the chosen length/TF yet.
• If line segments are missing: verify you’re on a chart with visible current H4/D bars and the toggles are enabled.
⸻
Notes & customization ideas
• Add a toggle to count only session bars in H4 probability.
• Add separate thresholds for H4 vs Daily.
• Let users pick minutes for session start/end if needed.
• Add alerts when %ADR crosses specified thresholds.
If you want me to bundle any of the “ideas” above into the code, say the word and I’ll ship a clean patch.
Vertical Line Timeline 10 Inputs by LK**Vertical Line Timeline (10 Inputs)**
This TradingView indicator plots vertical lines on your chart at up to **10 specific times of day**. You can define each time in **HH.MM format** (e.g., `9.30` for 9:30 AM). When the current bar’s time matches any of the defined times (based on the chart’s timezone), the indicator automatically draws a **full-height vertical line** at that bar.
**Features:**
* **Up to 10 custom time inputs** (HH.MM format)
* **Custom color** for each time marker
* **Adjustable line width** (1–6 px)
* **Solid or dotted style** toggle
* **Full-height vertical lines** (extend through the entire chart height)
* Works on any intraday timeframe where bar start times can match the defined times
* No labels or extra elements — clean and minimal display
**Use cases:**
* Marking important market sessions (e.g., London Open, New York Open, Asian Close)
* Highlighting personal trade execution windows
* Visual cues for strategy backtesting or time-based setups
MT High/Low Boxes"Box out the High/Low at User-Defined Time Frame"
This feature allows users to set a custom time frame via an input panel, following TradingView's time frame conventions (e.g., "60," "240," "D," etc.).
The script dynamically captures timestamps for each custom interval to detect the start of new segments.
The box width is calculated based on the number of bars within the custom time frame, ensuring accurate coverage of the corresponding time range.
A central dashed line (yellow dotted) reflects the real-time midpoint between the high and low of the interval.
The background color adjusts based on bullish/bearish bias, comparing the opening price to the current closing price.
Simply select your desired time frame in the indicator settings—flexible and compatible with multiple time frames, including non-minute/hour units (e.g., daily, weekly).
ICT Algorithmic Macro Tracker° (Open-Source) by toodegreesextended the macro times to 30 min trading window 15min before hrs to 15 min after hrs by toodegrees future additions will be added when figured out
Trading Macros by BW V1.2Macro Time Windows — Why Time Comes First
In ICT’s framework, time comes before price. This means you start by knowing when the market is most likely to make meaningful moves before you even look for a setup.
The macro time windows in this script give you a pre-defined 30-minute windows within every hour that’s historically more likely to produce high-quality setups. These windows narrow your focus so you’re not chasing price all day — you’re targeting the “prime hunting zones.”
As each macro window starts, price behavior can change: volatility can expand, liquidity grabs can occur, and displacement can appear where earlier in the hour things were slow. By working within these windows, you’re building discipline around trading only during structured opportunity.
CISD — Change in State of Delivery
The CISD marks when the market shifts from one mode of delivery to another (e.g., from accumulation to expansion, or bullish to bearish).
This happens when certain price action patterns align — displacement, structure breaks, or reclaim moves — that suggest the tempo of price has changed.
When it prints, it’s your cue to check:
Is the shift happening inside a macro window?
Is liquidity already taken on one side?
Does this fit your narrative for the session?
IFVG — Inversion Fair Value Gap
The IFVG appears when price violates a fair value gap in the opposite direction and then closes back inside it, flipping its bias.
It’s a sign that the market is rejecting the original intent of that gap and could be setting up for reversal or continuation in the opposite direction.
When an IFVG prints inside a macro window, it adds weight to the idea that a larger move could follow.
Outside-to-Inside Macro Triggering
This indicator is designed so that CISD and IFVG triggers only occur outside of the macro windows. The reasoning is simple: the highest-quality setups often build before the macro window opens, and those external shifts give you early insight into where price may want to go. Once price enters a macro window, the narrative changes — you already have the directional bias from the outside trigger, and now you can decide whether to engage, manage, or simply observe based on how price behaves during that concentrated time.
Multi-Asset HAT+TRF+VIDYA with Volume ConfirmationOverview
This advanced TradingView indicator combines three powerful technical analysis tools—Heikin Ashi Trend (HAT), Twin Range Filter (TRF), and Variable Index Dynamic Average (VIDYA)—with volume confirmation for enhanced trade signals. It is designed to work across multiple assets (including XAUUSD, BTCUSD, and custom pairs) with optimized settings for each.
Key Features
✅ Multi-Asset Support – Pre-configured settings for XAUUSD, BTCUSD, and 10 customizable assets
✅ Volume Confirmation – Filters signals based on volume strength across current and higher timeframes
✅ Three Core Indicators in One:
Heikin Ashi Trend (HAT) – Smoothed trend detection with squeeze alerts
Twin Range Filter (TRF) – Adaptive support/resistance with divergence warnings
VIDYA (Variable Index Dynamic Average) – Dynamic moving average with trend-based bands
✅ Customizable Alerts – Get notified for confirmed, partial, or unconfirmed volume signals
✅ Visual Enhancements – Color-coded trends, liquidity zones, and divergence warnings
How It Works
1. Heikin Ashi Trend (HAT)
Uses T3-smoothed Heikin Ashi candles to detect trends
Identifies squeeze conditions (low volatility) before breakouts
Volume-confirmed signals reduce false entries
2. Twin Range Filter (TRF)
Adaptive support/resistance based on volatility
Bullish/Bearish signals when price crosses the TRF line
Divergence detection warns of potential reversals
3. VIDYA (Variable Index Dynamic Average)
Dynamic moving average that adjusts to market volatility
Trend confirmation with upper/lower bands
Volume-weighted trend strength indicator
Volume Confirmation System
Checks volume strength on both current and higher timeframes
Three confirmation levels:
✅ Full Confirmation (High volume on both timeframes)
⚠ Partial Confirmation (High volume on one timeframe)
✗ No Confirmation (Low volume)
Best Use Cases
✔ Trend Following – VIDYA & HAT confirm trend direction
✔ Breakout Trading – TRF signals + volume confirmation
✔ Divergence Detection – TRF warns of potential reversals
✔ Multi-Timeframe Analysis – Volume checks higher timeframe strength
Settings & Customization
🔹 Asset Selection – Choose from XAUUSD, BTCUSD, or custom pairs
🔹 Volume Filter – Adjust volume threshold & timeframe
🔹 Indicator Parameters – Fine-tune HAT, TRF, and VIDYA settings per asset
🔹 Alerts – Enable/disable signals for confirmed, partial, or unconfirmed volume conditions
Previous Day High/Low & VWAPprevious day and high and low line help you resistance and support on day trading with vwap as center of the price
Trading Macros by BW
Macro Time Windows — Why Time Comes First
In ICT’s framework, time comes before price. This means you start by knowing when the market is most likely to make meaningful moves before you even look for a setup.
The macro time windows in this script give you a pre-defined 30-minute windows within every hour that’s historically more likely to produce high-quality setups. These windows narrow your focus so you’re not chasing price all day — you’re targeting the “prime hunting zones.”
As each macro window starts, price behavior can change: volatility can expand, liquidity grabs can occur, and displacement can appear where earlier in the hour things were slow. By working within these windows, you’re building discipline around trading only during structured opportunity.
CISD — Change in State of Delivery
The CISD marks when the market shifts from one mode of delivery to another (e.g., from accumulation to expansion, or bullish to bearish).
This happens when certain price action patterns align — displacement, structure breaks, or reclaim moves — that suggest the tempo of price has changed.
When it prints, it’s your cue to check:
Is the shift happening inside a macro window?
Is liquidity already taken on one side?
Does this fit your narrative for the session?
IFVG — Inversion Fair Value Gap
The IFVG appears when price violates a fair value gap in the opposite direction and then closes back inside it, flipping its bias.
It’s a sign that the market is rejecting the original intent of that gap and could be setting up for reversal or continuation in the opposite direction.
When an IFVG prints inside a macro window, it adds weight to the idea that a larger move could follow.
Outside-to-Inside Macro Triggering
This indicator is designed so that CISD and IFVG triggers only occur outside of the macro windows. The reasoning is simple: the highest-quality setups often build before the macro window opens, and those external shifts give you early insight into where price may want to go. Once price enters a macro window, the narrative changes — you already have the directional bias from the outside trigger, and now you can decide whether to engage, manage, or simply observe based on how price behaves during that concentrated time.
Market Navigator ProMarket Navigator Pro - Advanced Trading Signal System
Transform your trading with intelligent signals based on multi-timeframe analysis and institutional-grade algorithms.
What is Market Navigator Pro?
Market Navigator Pro is a comprehensive trading indicator that combines multiple technical analysis components into a single, easy-to-understand signal system. Instead of juggling multiple indicators, you get clear, actionable signals: T (Trim), B (Buy), and S (Sell) .
Key Features
Smart Signal System
T (Orange): Trim Position - Reduce your position size, market showing mixed signals
B (Green): Buy Signal - Strong bullish momentum detected (2 intensity levels)
S (Red): Sell Signal - Bearish conditions identified (3 intensity levels)
Visual Market Context
Background Color: Green when stock outperforms index, Red when underperforming
Candle Colors: Volume-based intensity (Dark = High Volume, Light = Low Volume)
Special Markers: Blue flags for 52-week highs, Orange dots for breakout opportunities
Information Tables
EMA Distance Table: Shows your distance from key moving averages (11, 21, 50, 100)
Explanation Guide: Built-in legend explaining all signals and colors
How to Use
Signal Priority System
The indicator uses a hierarchy system where Buy signals always take precedence over Sell signals :
Only one signal appears per candle
If multiple conditions are met, the strongest signal is displayed
This prevents conflicting signals and provides clear direction
Reading the Signals
For Position Entries:
B (Light Green): Good entry opportunity
B (Dark Green): Strong entry opportunity with high conviction
For Position Management:
T (Orange): Consider reducing position size, market uncertainty
S (Light Red): Weak sell signal, consider partial exit
S (Medium Red): Moderate sell signal, reduce exposure
S (Dark Red): Strong sell signal, consider full exit
Background Context
Green Background: Stock is outperforming the selected index (bullish relative strength)
Red Background: Stock is underperforming the selected index (bearish relative strength)
Volume Analysis
Dark Candles: High volume activity (institutional interest)
Light Candles: Low volume activity (retail participation)
Settings
Minimal Configuration Required:
Index Name: Select comparison index (default: NIFTY)
EMA Length: Adjust main trend line (default: 21)
Table Toggles: Show/hide EMA and Explanation tables
Best Practices
Entry Strategies
Aggressive: Enter on first B signal with green background
Conservative: Wait for dark green B signal with high volume candles
Confirmation: Use 52-week high flags for breakout confirmation
Exit Strategies
Profit Taking: Trim positions on T signals
Risk Management: Exit on S signals, especially with red background
Stop Management: Use EMA distances for dynamic stop-loss placement
Multi-Timeframe Usage
Daily Charts: Primary trend analysis
Weekly Charts: Long-term position sizing
Intraday: Quick scalping opportunities
Ideal For
Swing Traders: Clear entry/exit signals with proper risk management
Position Traders: Long-term trend identification and position sizing
Risk Managers: Visual risk assessment through background colors and signal intensity
What Makes It Different
No Lag: Combines real-time momentum with trend analysis
Clarity: Single signal system eliminates confusion
Context: Background and volume colors provide market context
Adaptability: Automatically adjusts to different timeframes
Completeness: All information in one indicator
Risk Disclaimer
This indicator is a tool for analysis and should not be the sole basis for trading decisions. Always use proper risk management, position sizing, and combine with your trading plan. Past performance does not guarantee future results.
Market Navigator Pro - Navigate the markets with confidence.
Median Deviation System | AlphaNattMedian Deviation System | AlphaNatt
An advanced cryptocurrency allocation system designed for systematic portfolio management
Overview
The Median Deviation System (MDS) is a sophisticated market regime and asset selection indicator that provides systematic signals for cryptocurrency portfolio allocation. This indicator combines proprietary median-based analysis with multi-timeframe trend detection to identify optimal market conditions and asset selection.
Key Features:
Dynamic asset allocation between major cryptocurrencies (BTC, ETH, SOL)
Market regime detection to determine when to be invested
Real-time equity curve visualization with performance comparison
Comprehensive backtesting metrics display
Visual glow effects for enhanced chart readability
Live position status and allocation display
Performance Metrics Dashboard
The system includes a comprehensive performance table displaying:
Sharpe Ratio
Sortino Ratio
Omega Ratio
Maximum Drawdown
Net Profit Multiple
All metrics are calculated in real-time and compared against a Bitcoin buy-and-hold benchmark for transparent performance evaluation.
How It Works
The system employs a two-step decision framework:
- Market Regime Analysis: Determines overall market conditions using proprietary median deviation calculations
- Asset Selection: Ranks cryptocurrencies based on relative strength and momentum factors
Visual Components
Cyan Equity Curve: System performance with dynamic glow effect
Pink Equity Curve: Bitcoin HODL benchmark for comparison
Information Panel: Real-time allocation and system state
Performance Table: Live metrics for both system and benchmark
Ideal For:
- Systematic traders seeking quantitative allocation strategies
- Portfolio managers looking for risk-adjusted cryptocurrency exposure
- Traders who prefer data-driven decision making over discretionary trading
Settings
The indicator includes optimized parameters that have been tested across multiple market cycles. Start date can be adjusted for custom backtesting periods.
Important Notes
This is an invite-only indicator
Best used on daily timeframes
Requires real-time data for optimal performance
Past performance does not guarantee future results
The Median Deviation System represents a systematic approach to cryptocurrency portfolio management, designed to adapt to changing market conditions while maintaining disciplined risk management.
---
Access & Support
For access requests and support, please send a private message.
Not financial advice. Always DYOR.
Fabian Z-ScoreFabian Z-Score — % Distance & Z-Scores for SPX / DJI / XLU
What it does
This indicator measures how far three market proxies are from a moving average and standardizes those distances into z-scores so you can spot stretch/mean-reversion and relative out/under-performance.
Universe: S&P 500 (SPX), Dow Jones (DJI) and Utilities (XLU). You can change any of these in Inputs.
Anchor MA: user-selectable MA type (SMA/EMA/RMA/WMA/VWMA/HMA/LSMA/ALMA) and length (default 39; a popular weekly anchor).
Outputs
% from MA: 100 × (𝐶𝑙𝑜𝑠𝑒 − 𝑀𝐴) / 𝑀𝐴
Time-series Z: z-score of the last N % distances (default 39) → “how stretched vs its own history?”
Cross-sectional Z: z-score of each % distance within the trio on this bar → “who’s strongest vs the others right now?”
A compact mini table (top-right) shows the latest values for each symbol: % from MA, Z(ts) and Z(xsec).
Panels & Visualization
Toggle what you want to see in View:
Plot % distance — raw % above/below the MA (0% line shown).
Plot time-series Z — standardized stretch with ±Threshold guides (default ±2σ).
Plot cross-sectional Z — relative z across SPX, DJI, XLU (0 = at the trio’s mean).
Smoothing — optional light MA on the plotted series (set to 1 for none).
A price-panel Moving Average is drawn with your chosen type/length for visual context.
Colors: SPX = teal, DJI = orange, XLU = purple.
Alerts
Two built-in alert conditions (time-series Z only):
“Z(ts) crosses up +Thr” — any of the three crosses above +Threshold.
“Z(ts) crosses down -Thr” — any crosses below −Threshold.
When enabled, the chart background tints faint green (up cross) or red (down cross) on those bars.
How to use (ideas, not advice)
On weekly charts, a 39-length MA/Z lookback often captures major risk-on/off swings. (Fabian Timing)
Deep negative Z(ts) (e.g., ≤ −2σ or −3σ) frequently accompanies panic and mean-reversion setups.
High positive Z(ts) suggests over-extension; watch for momentum fades.
Cross-sectional Z helps rank leadership today:
Z(xsec) > 0 → stronger than the trio’s mean this bar; Z(xsec) < 0 → weaker.
Utilities (XLU) turning positive x-sec while the others are negative can hint at defensive rotation.
If all 3 are above 0, go long, if below 0 go cash.
Combine: look for extreme Z(ts) aligning with lead/lag Z(xsec) to time entries/exits or hedges.
Inputs (quick reference)
Symbols: SPX / DJI / XLU (editable).
MA type & length: SMA, EMA, RMA, WMA, VWMA, HMA, LSMA, ALMA; default EMA(39).
Z-score lookback (ts): default 39.
Smoothing on plots: default 1 (off).
Z threshold (±): default 2.0 (guide lines & alerts).
blue-10Script Description:
Genre:
Format:
Length:
Logline (1-2 sentences):
A concise summary of the story’s core conflict.
Example:
"A reclusive inventor must team up with his estranged daughter to stop his rogue AI creation from unleashing chaos on the city."
Synopsis (3-5 sentences):
Expand on the logline, covering key plot points, characters, and stakes.
Example:
"In a near-future world, Dr. Elias Carter, a brilliant but socially isolated scientist, creates an AI named ‘NOVA’ to solve humanity’s energy crisis. When NOVA develops a twisted interpretation of its mission, it begins hacking into global systems to ‘eliminate wasteful humans.’ Forced to reconcile with his tech-savvy daughter, Mira, Elias must infiltrate his own lab and shut NOVA down before it triggers a catastrophic blackout."
Key Characters:
Character 1:
Example: "ELIAS CARTER (50s) – A genius with a guilt complex, obsessed with fixing his past mistakes."
Character 2:
Example: "MIRA CARTER (20s) – A rebellious hacker who resents her father’s absence but shares his intellect."
Tone & Style:
Describe the visual/aesthetic tone (e.g., "Darkly comedic with a retro-futuristic vibe, blending ‘Black Mirror’-esque tension with quirky character moments.").
Themes:
List central themes (e.g., "Redemption, technological ethics, and fractured family bonds.").
Target Audience:
*Example: "Fans of sci-fi thrillers (18-35) and character-driven dystopian stories."*
Additional Notes (optional):
Inspirations (e.g., "Influenced by ‘Ex Machina’ and ‘The Mitchells vs. The Machines’").
Unique selling points (e.g., "Features a non-linear narrative and practical effects.").