ICT Premium/Discount Zones [Exponential-X]Premium/Discount Zones - Visual Market Structure Tool
Overview
This indicator helps traders visualize premium and discount price zones based on recent market structure. It automatically identifies swing highs and lows within a specified lookback period and divides the price range into three key areas: Premium Zone, Equilibrium, and Discount Zone.
What This Indicator Does
The script continuously monitors price action and calculates:
Highest High and Lowest Low within the lookback period
Equilibrium Level - the midpoint between the swing high and low
Premium Zone - the area from equilibrium to the swing high (typically viewed as relatively expensive price levels)
Discount Zone - the area from the swing low to equilibrium (typically viewed as relatively cheap price levels)
Core Calculation Method
The indicator uses pivot point logic to identify significant swing highs and lows based on the pivot strength parameter. It then calculates the highest high and lowest low over the specified lookback period. The equilibrium is computed as the arithmetic mean of these two extremes, creating a fair value reference point.
The zones are dynamically updated as new price data becomes available, ensuring the visualization remains relevant to current market conditions.
Key Features
Dynamic Zone Detection
Automatically adjusts zones based on recent price action
Uses customizable lookback period for flexibility across different timeframes
Employs pivot strength parameter to filter out minor price fluctuations
Visual Clarity
Color-coded zones for easy identification (red for premium, green for discount)
Optional equilibrium line display
Adjustable zone label placement
Customizable color schemes to match your charting preferences
Alert Capabilities
Alerts when price enters the premium zone
Alerts when price enters the discount zone
Alerts when price returns to equilibrium
Helps traders monitor key zone interactions without constant chart watching
Customization Options
Adjustable lookback period (5-500 bars)
Configurable pivot strength for swing detection (1-20 bars)
Control over box extension into the future
Toggle labels and equilibrium line on/off
Full color customization for all visual elements
How to Use This Indicator
Setup
Add the indicator to your chart
Adjust the lookback period to match your trading timeframe (shorter for intraday, longer for swing trading)
Set pivot strength to filter out noise (higher values for major swings, lower for more frequent updates)
Customize colors and labels to your preference
Interpretation
Premium Zone: Price trading here may indicate potential resistance or selling opportunities when aligned with other technical factors
Discount Zone: Price trading here may indicate potential support or buying opportunities when aligned with other technical factors
Equilibrium: Acts as a fair value reference point where price often consolidates or reacts
Trading Applications
This tool works well when combined with other forms of analysis such as:
Trend identification indicators
Volume analysis
Support and resistance levels
Price action patterns
Market structure analysis
Important Considerations
This indicator identifies zones based purely on historical price data
Premium and discount zones are relative to the recent lookback period
The effectiveness varies across different market conditions and timeframes
Should be used as part of a comprehensive trading strategy, not in isolation
Past price structure does not guarantee future price behavior
Technical Details
Calculation Method
Uses Pine Script's ta.pivothigh() and ta.pivotlow() functions for swing detection
Employs ta.highest() and ta.lowest() for range calculation
Updates dynamically with each new bar
Draws zones using box objects for clear visual representation
Performance Optimization
Efficiently manages box and line objects to minimize resource usage
Uses conditional plotting to reduce unnecessary calculations
Limited to essential visual elements for chart clarity
Timeframe Compatibility
This indicator works on all timeframes but the recommended settings vary:
1-5 minute charts: Lookback period 10-20, Pivot strength 3-5
15-60 minute charts: Lookback period 20-50, Pivot strength 5-10
Daily charts: Lookback period 50-100, Pivot strength 10-15
Weekly charts: Lookback period 20-50, Pivot strength 5-10
Adjust these values based on the volatility of your specific instrument.
Limitations and Considerations
What This Indicator Does NOT Do
Does not provide buy or sell signals on its own
Does not predict future price movements
Does not account for fundamental factors or market events
Does not guarantee profitability or accuracy
Market Condition Awareness
In strong trending markets, price may remain in premium or discount zones for extended periods
During ranging conditions, price typically oscillates between zones more predictably
High volatility can cause frequent zone recalculations
Low volatility may result in narrow zones with limited practical use
Risk Considerations
Premium and discount are relative concepts, not absolute values
What appears as a discount zone may continue lower in a downtrend
What appears as a premium zone may continue higher in an uptrend
Always use proper risk management and position sizing
Consider multiple timeframe analysis for context
Version Information
This indicator is written in Pine Script v6, ensuring compatibility with the latest TradingView features and optimal performance.
Final Notes
This tool is designed to enhance your market analysis by providing a clear visual representation of premium and discount price zones. It should be used as one component of a well-rounded trading approach that includes proper risk management, multiple forms of analysis, and realistic expectations about market behavior.
The concept of premium and discount zones is rooted in auction market theory and the idea that price oscillates around fair value. However, traders should understand that these zones are interpretive tools based on historical data and do not constitute trading advice or predictions about future price action.
Remember to backtest any strategy using this indicator on historical data before applying it to live trading, and always trade responsibly within your risk tolerance.
Disclaimer: The information provided by this indicator is for educational and informational purposes only. It does not constitute financial advice, investment advice, trading advice, or any other sort of advice. Always conduct your own research and consult with qualified financial professionals before making trading decisions.
Search in scripts for "美股标普500"
Renkli EMA BAR//@version=5
indicator("EMA Color Cross + Trend Arrows V6", overlay=true, max_bars_back=500)
// === Inputs ===
fastLen = input.int(9, "Hızlı EMA")
slowLen = input.int(21, "Yavaş EMA")
// === EMA Hesapları ===
emaFast = ta.ema(close, fastLen)
emaSlow = ta.ema(close, slowLen)
// Trend Yönü
trendUp = emaFast > emaSlow
trendDown = emaFast < emaSlow
// === Çizgi Renkleri ===
lineColor = trendUp ? color.new(color.green, 0) : color.new(color.red, 0)
// === EMA Çizgileri (agresif kalın) ===
plot(emaFast, "Hızlı EMA", lineColor, 4)
plot(emaSlow, "Yavaş EMA", color.new(color.gray, 70), 2)
// === Ok Sinyalleri ===
buySignal = ta.crossover(emaFast, emaSlow)
sellSignal = ta.crossunder(emaFast, emaSlow)
// Büyük Oklar
plotshape(buySignal, title="AL", style=shape.triangleup, color=color.green, size=size.large, location=location.belowbar)
plotshape(sellSignal, title="SAT", style=shape.triangledown, color=color.red, size=size.large, location=location.abovebar)
// === Trend Bar Color ===
barcolor(trendUp ? color.green : color.red)
EMA Cross Color Buy/Sell//@version=5
indicator("EMA Color Cross + Trend Arrows V6", overlay=true, max_bars_back=500)
// === Inputs ===
fastLen = input.int(9, "Hızlı EMA")
slowLen = input.int(21, "Yavaş EMA")
// === EMA Hesapları ===
emaFast = ta.ema(close, fastLen)
emaSlow = ta.ema(close, slowLen)
// Trend Yönü
trendUp = emaFast > emaSlow
trendDown = emaFast < emaSlow
// === Çizgi Renkleri ===
lineColor = trendUp ? color.new(color.green, 0) : color.new(color.red, 0)
// === EMA Çizgileri (agresif kalın) ===
plot(emaFast, "Hızlı EMA", lineColor, 4)
plot(emaSlow, "Yavaş EMA", color.new(color.gray, 70), 2)
// === Ok Sinyalleri ===
buySignal = ta.crossover(emaFast, emaSlow)
sellSignal = ta.crossunder(emaFast, emaSlow)
// Büyük Oklar
plotshape(buySignal, title="AL", style=shape.triangleup, color=color.green, size=size.large, location=location.belowbar)
plotshape(sellSignal, title="SAT", style=shape.triangledown, color=color.red, size=size.large, location=location.abovebar)
// === Trend Bar Color ===
barcolor(trendUp ? color.green : color.red)
EMA Color Cross + Trend Arrows V6//@version=5
indicator("EMA Color Cross + Trend Arrows V6", overlay=true, max_bars_back=500)
// === Inputs ===
fastLen = input.int(9, "Hızlı EMA")
slowLen = input.int(21, "Yavaş EMA")
// === EMA Hesapları ===
emaFast = ta.ema(close, fastLen)
emaSlow = ta.ema(close, slowLen)
// Trend Yönü
trendUp = emaFast > emaSlow
trendDown = emaFast < emaSlow
// === Çizgi Renkleri ===
lineColor = trendUp ? color.new(color.green, 0) : color.new(color.red, 0)
// === EMA Çizgileri (agresif kalın) ===
plot(emaFast, "Hızlı EMA", lineColor, 4)
plot(emaSlow, "Yavaş EMA", color.new(color.gray, 70), 2)
// === Ok Sinyalleri ===
buySignal = ta.crossover(emaFast, emaSlow)
sellSignal = ta.crossunder(emaFast, emaSlow)
// Büyük Oklar
plotshape(buySignal, title="AL", style=shape.triangleup, color=color.green, size=size.large, location=location.belowbar)
plotshape(sellSignal, title="SAT", style=shape.triangledown, color=color.red, size=size.large, location=location.abovebar)
// === Trend Bar Color ===
barcolor(trendUp ? color.green : color.red)
ZLSMA Trend + Al/Sat Sinyali/@version=6
indicator("ZLSMA Trend + Al/Sat Sinyali", overlay=true, max_labels_count=500)
length = input.int(25, "ZLSMA Periyodu")
src = input.source(close, "Kaynak")
thickness = input.int(4, "Çizgi Kalınlığı")
colorUp = input.color(color.new(color.lime, 0), "Yükselen Renk")
colorDown = input.color(color.new(color.red, 0), "Düşen Renk")
ema1 = ta.ema(src, length)
ema2 = ta.ema(ema1, length)
zlsma = 2 * ema1 - ema2
trendUp = zlsma > zlsma
trendDown = zlsma < zlsma
zlsmaColor = trendUp ? colorUp : colorDown
plot(zlsma, title="ZLSMA", color=zlsmaColor, linewidth=thickness)
buySignal = ta.crossover(close, zlsma)
sellSignal = ta.crossunder(close, zlsma)
plotshape(buySignal, title="Al", location=location.belowbar, color=color.new(color.lime, 0), style=shape.triangleup, size=size.large, text="AL")
plotshape(sellSignal, title="Sat", location=location.abovebar, color=color.new(color.red, 0), style=shape.triangledown, size=size.large, text="SAT")
bgcolor(trendUp ? color.new(color.lime, 90) : color.new(color.red, 90))
CRUX-3 Macro Regime Index"CRUX-3 Macro Regime Index"
Description:
CRUX-3 Macro Regime Index is a higher-timeframe macro indicator designed to evaluate how crypto markets are performing relative to traditional equities. It compares Bitcoin, Ethereum, and the broader altcoin market (TOTAL3) against the S&P 500 using Z-score normalization to highlight periods of relative outperformance or underperformance.
The indicator incorporates liquidity-based regime detection using Bitcoin dominance and stablecoin dominance to classify market environments as Risk-On, BTC-Led, or Risk-Off. Background shading visually highlights these regimes, helping users identify broader macro conditions rather than short-term trade signals.
CRUX-3 is intended for macro context, regime awareness, and allocation bias decisions, not for precise trade entries or timing.
How to Use:
Weekly timeframe recommended for best results
Rising Z-scores indicate crypto outperforming equities
ETH/SPX typically acts as an early rotation signal
TOTAL3/SPX confirms broader altcoin participation
Regime shading reflects liquidity conditions, not price forecasts
Regime Definitions:
Risk-On: BTC dominance and stablecoin dominance declining
BTC-Led: BTC dominance strong while stablecoin dominance eases
Risk-Off: BTC dominance and stablecoin dominance rising
Notes:
Forward regime bands are statistical reference guides based on historical behavior
This indicator does not predict future prices or market direction
Best used alongside price charts and other macro tools
Disclaimer:
This indicator is for educational and informational purposes only. It does not constitute financial advice, investment advice, or trading recommendations.
Recommended Settings:
Timeframe: Weekly (1W)
Z-Score Lookback: 52
Forward Regime Bands: Enabled
new takesi_2Step_Screener_MOU_KAKU_FIXED4 (Visible)//@version=5
indicator("MNO_2Step_Screener_MOU_KAKU_FIXED4 (Visible)", overlay=true, max_labels_count=500)
// =========================
// Inputs
// =========================
emaSLen = input.int(5, "EMA Short (5)")
emaMLen = input.int(13, "EMA Mid (13)")
emaLLen = input.int(26, "EMA Long (26)")
macdFast = input.int(12, "MACD Fast")
macdSlow = input.int(26, "MACD Slow")
macdSignal = input.int(9, "MACD Signal")
macdZeroTh = input.float(0.2, "MOU: MACD near-zero threshold", step=0.05)
volLookback = input.int(5, "Volume MA days", minval=1)
volMinRatio = input.float(1.3, "MOU: Volume ratio min", step=0.1)
volStrong = input.float(1.5, "Strong volume ratio (Breakout/KAKU)", step=0.1)
volMaxRatio = input.float(3.0, "Volume ratio max (filter)", step=0.1)
wickBodyMult = input.float(2.0, "Pinbar: lowerWick >= body*x", step=0.1)
pivotLen = input.int(20, "Resistance lookback", minval=5)
pullMinPct = input.float(5.0, "Pullback min (%)", step=0.1)
pullMaxPct = input.float(15.0, "Pullback max (%)", step=0.1)
breakLookbackBars = input.int(5, "Pullback route: valid bars after break", minval=1)
// --- Breakout route (押し目なし初動ブレイク) ---
useBreakoutRoute = input.bool(true, "Enable MOU Breakout Route (no pullback)")
breakConfirmPct = input.float(0.3, "Break confirm: close > R*(1+%)", step=0.1)
bigBodyLookback = input.int(20, "Break candle body MA length", minval=5)
bigBodyMult = input.float(1.2, "Break candle: body >= MA*mult", step=0.1)
requireCloseNearHigh = input.bool(true, "Break candle: close near high")
closeNearHighPct = input.float(25.0, "Close near high threshold (% of range)", step=1.0)
allowMACDAboveZeroInstead = input.bool(true, "Breakout route: allow MACD GC above zero instead")
// 表示
showEMA = input.bool(true, "Plot EMAs")
showMou = input.bool(true, "Show MOU label")
showKaku = input.bool(true, "Show KAKU label")
// ★ここを改善:デバッグ表はデフォルトON
showDebugTbl = input.bool(true, "Show debug table (last bar)")
// ★稼働確認ラベル(最終足に必ず出す)
showStatusLbl = input.bool(true, "Show status label (last bar always)")
locChoice = input.string("Below Bar", "Label location", options= )
lblLoc = locChoice == "Below Bar" ? location.belowbar : location.abovebar
// =========================
// EMA
// =========================
emaS = ta.ema(close, emaSLen)
emaM = ta.ema(close, emaMLen)
emaL = ta.ema(close, emaLLen)
plot(showEMA ? emaS : na, color=color.new(color.yellow, 0), title="EMA 5")
plot(showEMA ? emaM : na, color=color.new(color.blue, 0), title="EMA 13")
plot(showEMA ? emaL : na, color=color.new(color.orange, 0), title="EMA 26")
emaUpS = emaS > emaS
emaUpM = emaM > emaM
emaUpL = emaL > emaL
goldenOrder = emaS > emaM and emaM > emaL
above26_2days = close > emaL and close > emaL
// 勝率維持の土台(緩めない)
baseTrendOK = (emaUpS and emaUpM and emaUpL) and goldenOrder and above26_2days
// =========================
// MACD
// =========================
= ta.macd(close, macdFast, macdSlow, macdSignal)
macdGC = ta.crossover(macdLine, macdSig)
macdUp = macdLine > macdLine
macdNearZero = math.abs(macdLine) <= macdZeroTh
macdGCAboveZero = macdGC and macdLine > 0 and macdSig > 0
macdMouOK = macdGC and macdNearZero and macdUp
macdBreakOK = allowMACDAboveZeroInstead ? (macdMouOK or macdGCAboveZero) : macdMouOK
// =========================
// Volume
// =========================
volMA = ta.sma(volume, volLookback)
volRatio = volMA > 0 ? (volume / volMA) : na
volumeMouOK = volRatio >= volMinRatio and volRatio <= volMaxRatio
volumeStrongOK = volRatio >= volStrong and volRatio <= volMaxRatio
// =========================
// Candle patterns
// =========================
body = math.abs(close - open)
upperWick = high - math.max(open, close)
lowerWick = math.min(open, close) - low
pinbar = (lowerWick >= wickBodyMult * body) and (lowerWick > upperWick) and (close >= open)
bullEngulf =
close > open and close < open and
close >= open and open <= close
bigBull =
close > open and
open < emaM and close > emaS and
(body > ta.sma(body, 20))
candleOK = pinbar or bullEngulf or bigBull
// =========================
// Resistance / Pullback route
// =========================
res = ta.highest(high, pivotLen)
pullbackPct = res > 0 ? (res - close) / res * 100.0 : na
pullbackOK = pullbackPct >= pullMinPct and pullbackPct <= pullMaxPct
brokeRes = ta.crossover(close, res )
barsSinceBreak = ta.barssince(brokeRes)
afterBreakZone = (barsSinceBreak >= 0) and (barsSinceBreak <= breakLookbackBars)
pullbackRouteOK = afterBreakZone and pullbackOK
// =========================
// Breakout route (押し目なし初動ブレイク)
// =========================
breakConfirm = close > res * (1.0 + breakConfirmPct / 100.0)
bullBreak = close > open
bodyMA = ta.sma(body, bigBodyLookback)
bigBodyOK = bodyMA > 0 ? (body >= bodyMA * bigBodyMult) : false
rng = math.max(high - low, syminfo.mintick)
closeNearHighOK = not requireCloseNearHigh ? true : ((high - close) / rng * 100.0 <= closeNearHighPct)
mou_breakout =
useBreakoutRoute and
baseTrendOK and
breakConfirm and
bullBreak and
bigBodyOK and
closeNearHighOK and
volumeStrongOK and
macdBreakOK
mou_pullback = baseTrendOK and volumeMouOK and candleOK and macdMouOK and pullbackRouteOK
mou = mou_pullback or mou_breakout
// =========================
// KAKU (Strict): 8条件 + 最終三点
// =========================
cond1 = emaUpS and emaUpM and emaUpL
cond2 = goldenOrder
cond3 = above26_2days
cond4 = macdGCAboveZero
cond5 = volumeMouOK
cond6 = candleOK
cond7 = pullbackOK
cond8 = pullbackRouteOK
all8_strict = cond1 and cond2 and cond3 and cond4 and cond5 and cond6 and cond7 and cond8
final3 = pinbar and macdGCAboveZero and volumeStrongOK
kaku = all8_strict and final3
// =========================
// Display (猛 / 猛B / 確)
// =========================
showKakuNow = showKaku and kaku
showMouPull = showMou and mou_pullback and not kaku
showMouBrk = showMou and mou_breakout and not kaku
plotshape(showMouPull, title="MOU_PULLBACK", style=shape.labelup, text="猛",
color=color.new(color.lime, 0), textcolor=color.black, location=lblLoc, size=size.tiny)
plotshape(showMouBrk, title="MOU_BREAKOUT", style=shape.labelup, text="猛B",
color=color.new(color.lime, 0), textcolor=color.black, location=lblLoc, size=size.tiny)
plotshape(showKakuNow, title="KAKU", style=shape.labelup, text="確",
color=color.new(color.yellow, 0), textcolor=color.black, location=lblLoc, size=size.small)
// =========================
// ★稼働確認:最終足に必ず出すステータスラベル
// =========================
var label status = na
if showStatusLbl and barstate.islast
label.delete(status)
statusTxt =
"MNO RUNNING\n" +
"MOU: " + (mou ? "YES" : "no") + " (pull=" + (mou_pullback ? "Y" : "n") + " / brk=" + (mou_breakout ? "Y" : "n") + ")\n" +
"KAKU: " + (kaku ? "YES" : "no") + "\n" +
"BaseTrend: " + (baseTrendOK ? "OK" : "NO") + "\n" +
"MACD(mou): " + (macdMouOK ? "OK" : "NO") + " / MACD(zeroGC): " + (macdGCAboveZero ? "OK" : "NO") + "\n" +
"Vol: " + (na(volRatio) ? "na" : str.tostring(volRatio, format.mintick)) + "\n" +
"Pull%: " + (na(pullbackPct) ? "na" : str.tostring(pullbackPct, format.mintick))
status := label.new(bar_index, high, statusTxt, style=label.style_label_left,
textcolor=color.white, color=color.new(color.black, 0))
// =========================
// Alerts
// =========================
alertcondition(mou, title="MNO_MOU", message="MNO: MOU triggered")
alertcondition(mou_breakout, title="MNO_MOU_BREAKOUT", message="MNO: MOU Breakout triggered")
alertcondition(mou_pullback, title="MNO_MOU_PULLBACK", message="MNO: MOU Pullback triggered")
alertcondition(kaku, title="MNO_KAKU", message="MNO: KAKU triggered")
// =========================
// Debug table (optional)
// =========================
var table t = table.new(position.top_right, 2, 14, border_width=1, border_color=color.new(color.white, 60))
fRow(_name, _cond, _r) =>
bg = _cond ? color.new(color.lime, 70) : color.new(color.red, 80)
tx = _cond ? "OK" : "NO"
table.cell(t, 0, _r, _name, text_color=color.white, bgcolor=color.new(color.black, 0))
table.cell(t, 1, _r, tx, text_color=color.white, bgcolor=bg)
if showDebugTbl and barstate.islast
table.cell(t, 0, 0, "MNO Debug", text_color=color.white, bgcolor=color.new(color.black, 0))
table.cell(t, 1, 0, "", text_color=color.white, bgcolor=color.new(color.black, 0))
fRow("BaseTrend", baseTrendOK, 1)
fRow("MOU Pullback", mou_pullback, 2)
fRow("MOU Breakout", mou_breakout, 3)
fRow("Break confirm", breakConfirm, 4)
fRow("Break big body", bigBodyOK, 5)
fRow("Break close high", closeNearHighOK, 6)
fRow("Break vol strong", volumeStrongOK, 7)
fRow("Break MACD", macdBreakOK, 8)
fRow("KAKU all8", all8_strict, 9)
fRow("KAKU final3", final3, 10)
fRow("MOU any", mou, 11)
fRow("KAKU", kaku, 12)
Trendlines & SR ZonesIt's a comprehensive indicator (Pine Script v6) that represents two powerful technical analysis tools: automatic trendline detection based on pivot points and volume delta analysis with support/resistance zone identification. This overlay indicator helps traders identify potential trend directions and key price levels where significant buying or selling pressure has occurred.
Features: =
1. Price Trendlines
The indicator automatically identifies and draws trendlines based on pivot points, creating dynamic support and resistance levels.
Key Components:
Pivot Detection: Uses configurable left and right bars to identify significant pivot highs and lows
Trendline Filtering: Only draws downward-sloping resistance trendlines and upward-sloping support trendlines
Zone Creation: Creates filled zones around trendlines based on average price volatility
Automatic Management: Maintains only the 3 most recent significant trendlines to avoid chart clutter
Customization Options:
Left/Right Bars for Pivot: Adjust sensitivity of pivot detection (default: 10 bars each side)
Extension Length: Control how far trendlines extend past the second pivot (default: 50 bars)
Average Body Periods: Set the lookback period for volatility calculation (default: 100)
Tolerance Multiplier: Adjust the width of the trendline zones (default: 1.0)
Color Customization: Separate colors for high (resistance) and low (support) trendlines and their fills
2. Volume Delta % Bars
The indicator analyzes volume distribution across price levels to identify significant supply and demand zones.
Key Components:
Volume Profile Analysis: Divides the price range into rows and calculates volume delta at each level
Delta Visualization: Displays horizontal bars showing the percentage difference between buying and selling volume
Zone Identification: Automatically identifies the most significant supply and demand zones
Visual Integration: Connects volume delta bars with corresponding support/resistance zones on the price chart
Customization Options:
Lookback Period: Set the number of bars to analyze for volume (default: 200)
Price Rows: Control the granularity of the volume analysis (default: 50 rows)
Delta Sections: Adjust the number of horizontal delta bars displayed (default: 20)
Panel Appearance: Customize width, position, and direction of the delta panel
Zone Settings: Control the number of supply/demand zones and their extension (default: 3 zones)
How It Works-
Trendline Logic:
The script continuously scans for pivot highs and lows based on the specified left and right bars
When a pivot is detected, it creates a horizontal line at that price level
The script then looks for the previous pivot of the same type (high or low)
It connects these pivots with a trendline, extending it based on the user-specified setting
A parallel line is created to form a zone, with the distance based on average price volatility
The script filters out invalid trendlines (upward-sloping resistance and downward-sloping support). Only the 3 most recent trendlines are maintained to prevent chart clutter
Volume Delta Logic:
The script divides the price range over the lookback period into the specified number of rows
For each bar in the lookback period, it categorizes volume as bullish (close > open) or bearish (close < open). This volume is assigned to the appropriate price level based on the HLC3 price.
The price levels are grouped into sections, and the net delta (bullish - bearish volume) is calculated for each Horizontal bars are drawn to represent these delta percentages.
The most significant positive and negative deltas are identified and displayed as support and resistance zones. These zones are extended to the left on the price chart and connected to the delta panel with dotted lines.
Ideal Timeframes:
The indicator is versatile and can be used across multiple timeframes, but it performs optimally on specific timeframes depending on your trading style:
For Day Trading:
Optimal Timeframes: 15-minute to 1-hour charts
Why: These timeframes provide a good balance between noise reduction and sufficient volume data. The volume delta analysis is particularly effective on these timeframes as it captures intraday accumulation/distribution patterns while the trendlines remain reliable enough for intraday trading decisions.
For Swing Trading:
Optimal Timeframes: 1-hour to 4-hour charts
Why: These timeframes offer the best combination of reliable trendline formation and meaningful volume analysis. The trendlines on these timeframes are less prone to whipsaws, while the volume delta analysis captures multi-day trading sessions and institutional activity.
For Position Trading:
Optimal Timeframes: Daily and weekly charts
Why: On these higher timeframes, trendlines become extremely reliable as they represent significant market structure points. The volume delta analysis reveals longer-term accumulation and distribution patterns that can define major support and resistance zones for weeks or months.
Timeframe-Specific Adjustments:
Lower Timeframes (1-15 minutes):
Reduce left/right bars for pivots (5-8 bars)
Decrease lookback period for volume delta (50-100 bars)
Increase tolerance multiplier (1.2-1.5) to account for higher volatility
Higher Timeframes (Daily+):
Increase left/right bars for pivots (15-20 bars)
Extend lookback period for volume delta (300-500 bars)
Consider increasing the number of price rows (70-100) for more detailed volume analysis
Usage Guidelines-
For Trendline Analysis:
Use the trendlines as dynamic support and resistance levels
Price reactions at these levels can indicate potential trend continuation or reversal points
The filled zones around trendlines represent areas of price volatility or uncertainty
Consider the slope of the trendline as an indication of trend strength
For Volume Delta Analysis:
The horizontal delta bars show where buying or selling pressure has been concentrated
Green bars indicate areas where buying volume exceeded selling volume (demand)
Red bars indicate areas where selling volume exceeded buying volume (supply)
The highlighted supply and demand zones on the price chart represent significant price levels
These zones can act as future support or resistance areas as price revisits them
Customization Tips:
Trendline Sensitivity: Decrease left/right bars values to detect more pivots (more sensitive) or increase them for fewer, more significant pivots
Zone Width: Adjust the tolerance multiplier to make trendline zones wider or narrower based on your trading style
Volume Analysis: Increase the lookback period for a longer-term volume profile or decrease it for more recent activity
Visual Clarity: Adjust colors and transparency settings to match your chart theme and preferences
Conclusion:
This indicator provides traders with a comprehensive view of both trend dynamics and volume-based support/resistance levels. With these two analytical approaches, the indicator offers valuable insights for identifying potential entry and exit points, trend strength, and key price levels where significant market activity has occurred. The extensive customization options allow traders to adapt the indicator to various trading styles and timeframes, with optimal performance on 15-minute to daily charts depending on their trading horizon.
Chart Attached: NSE HINDZINC, EoD 12/12/25
DISCLAIMER: This information is provided for educational purposes only and should not be considered financial, investment, or trading advice. Please do boost if you like it. Happy Trading.
takeshi_2Step_Screener_MOU_KAKU_FIXED3//@version=5
indicator("MNO_2Step_Screener_MOU_KAKU_FIXED3", overlay=true, max_labels_count=500)
// =========================
// Inputs
// =========================
emaSLen = input.int(5, "EMA Short (5)")
emaMLen = input.int(13, "EMA Mid (13)")
emaLLen = input.int(26, "EMA Long (26)")
macdFast = input.int(12, "MACD Fast")
macdSlow = input.int(26, "MACD Slow")
macdSignal = input.int(9, "MACD Signal")
macdZeroTh = input.float(0.2, "MOU: MACD near-zero threshold", step=0.05)
volLookback = input.int(5, "Volume MA days", minval=1)
volMinRatio = input.float(1.3, "MOU: Volume ratio min", step=0.1)
volStrong = input.float(1.5, "Strong volume ratio (Breakout/KAKU)", step=0.1)
volMaxRatio = input.float(3.0, "Volume ratio max (filter)", step=0.1)
wickBodyMult = input.float(2.0, "Pinbar: lowerWick >= body*x", step=0.1)
pivotLen = input.int(20, "Resistance lookback", minval=5)
pullMinPct = input.float(5.0, "Pullback min (%)", step=0.1)
pullMaxPct = input.float(15.0, "Pullback max (%)", step=0.1)
breakLookbackBars = input.int(5, "Pullback route: valid bars after break", minval=1)
// --- Breakout route (押し目なし初動ブレイク) ---
useBreakoutRoute = input.bool(true, "Enable MOU Breakout Route (no pullback)")
breakConfirmPct = input.float(0.3, "Break confirm: close > R*(1+%)", step=0.1)
bigBodyLookback = input.int(20, "Break candle body MA length", minval=5)
bigBodyMult = input.float(1.2, "Break candle: body >= MA*mult", step=0.1)
requireCloseNearHigh = input.bool(true, "Break candle: close near high")
closeNearHighPct = input.float(25.0, "Close near high threshold (% of range)", step=1.0)
allowMACDAboveZeroInstead = input.bool(true, "Breakout route: allow MACD GC above zero instead")
// 表示
showEMA = input.bool(true, "Plot EMAs")
showMou = input.bool(true, "Show MOU label")
showKaku = input.bool(true, "Show KAKU label")
showDebugTbl = input.bool(false, "Show debug table (last bar)")
locChoice = input.string("Below Bar", "Label location", options= )
lblLoc = locChoice == "Below Bar" ? location.belowbar : location.abovebar
// =========================
// EMA
// =========================
emaS = ta.ema(close, emaSLen)
emaM = ta.ema(close, emaMLen)
emaL = ta.ema(close, emaLLen)
// plot は if の中に入れない(naで制御)
plot(showEMA ? emaS : na, color=color.new(color.yellow, 0), title="EMA 5")
plot(showEMA ? emaM : na, color=color.new(color.blue, 0), title="EMA 13")
plot(showEMA ? emaL : na, color=color.new(color.orange, 0), title="EMA 26")
emaUpS = emaS > emaS
emaUpM = emaM > emaM
emaUpL = emaL > emaL
goldenOrder = emaS > emaM and emaM > emaL
above26_2days = close > emaL and close > emaL
// 勝率維持の土台(緩めない)
baseTrendOK = (emaUpS and emaUpM and emaUpL) and goldenOrder and above26_2days
// =========================
// MACD
// =========================
= ta.macd(close, macdFast, macdSlow, macdSignal)
macdGC = ta.crossover(macdLine, macdSig)
macdUp = macdLine > macdLine
macdNearZero = math.abs(macdLine) <= macdZeroTh
macdGCAboveZero = macdGC and macdLine > 0 and macdSig > 0
macdMouOK = macdGC and macdNearZero and macdUp
macdBreakOK = allowMACDAboveZeroInstead ? (macdMouOK or macdGCAboveZero) : macdMouOK
// =========================
// Volume
// =========================
volMA = ta.sma(volume, volLookback)
volRatio = volMA > 0 ? (volume / volMA) : na
volumeMouOK = volRatio >= volMinRatio and volRatio <= volMaxRatio
volumeStrongOK = volRatio >= volStrong and volRatio <= volMaxRatio
// =========================
// Candle patterns
// =========================
body = math.abs(close - open)
upperWick = high - math.max(open, close)
lowerWick = math.min(open, close) - low
pinbar = (lowerWick >= wickBodyMult * body) and (lowerWick > upperWick) and (close >= open)
bullEngulf =
close > open and close < open and
close >= open and open <= close
bigBull =
close > open and
open < emaM and close > emaS and
(body > ta.sma(body, 20))
candleOK = pinbar or bullEngulf or bigBull
// =========================
// Resistance / Pullback route
// =========================
res = ta.highest(high, pivotLen)
pullbackPct = res > 0 ? (res - close) / res * 100.0 : na
pullbackOK = pullbackPct >= pullMinPct and pullbackPct <= pullMaxPct
brokeRes = ta.crossover(close, res )
barsSinceBreak = ta.barssince(brokeRes)
afterBreakZone = (barsSinceBreak >= 0) and (barsSinceBreak <= breakLookbackBars)
pullbackRouteOK = afterBreakZone and pullbackOK
// =========================
// Breakout route (押し目なし初動ブレイク)
// =========================
breakConfirm = close > res * (1.0 + breakConfirmPct / 100.0)
bullBreak = close > open
bodyMA = ta.sma(body, bigBodyLookback)
bigBodyOK = bodyMA > 0 ? (body >= bodyMA * bigBodyMult) : false
rng = math.max(high - low, syminfo.mintick)
closeNearHighOK = not requireCloseNearHigh ? true : ((high - close) / rng * 100.0 <= closeNearHighPct)
mou_breakout =
useBreakoutRoute and
baseTrendOK and
breakConfirm and
bullBreak and
bigBodyOK and
closeNearHighOK and
volumeStrongOK and
macdBreakOK
mou_pullback = baseTrendOK and volumeMouOK and candleOK and macdMouOK and pullbackRouteOK
mou = mou_pullback or mou_breakout
// =========================
// KAKU (Strict): 8条件 + 最終三点
// =========================
cond1 = emaUpS and emaUpM and emaUpL
cond2 = goldenOrder
cond3 = above26_2days
cond4 = macdGCAboveZero
cond5 = volumeMouOK
cond6 = candleOK
cond7 = pullbackOK
cond8 = pullbackRouteOK
all8_strict = cond1 and cond2 and cond3 and cond4 and cond5 and cond6 and cond7 and cond8
final3 = pinbar and macdGCAboveZero and volumeStrongOK
kaku = all8_strict and final3
// =========================
// Display (統一ラベル)
// =========================
showKakuNow = showKaku and kaku
showMouPull = showMou and mou_pullback and not kaku
showMouBrk = showMou and mou_breakout and not kaku
plotshape(showMouPull, title="MOU_PULLBACK", style=shape.labelup, text="猛",
color=color.new(color.lime, 0), textcolor=color.black, location=lblLoc, size=size.tiny)
plotshape(showMouBrk, title="MOU_BREAKOUT", style=shape.labelup, text="猛B",
color=color.new(color.lime, 0), textcolor=color.black, location=lblLoc, size=size.tiny)
plotshape(showKakuNow, title="KAKU", style=shape.labelup, text="確",
color=color.new(color.yellow, 0), textcolor=color.black, location=lblLoc, size=size.small)
// =========================
// Alerts
// =========================
alertcondition(mou, title="MNO_MOU", message="MNO: MOU triggered")
alertcondition(mou_breakout, title="MNO_MOU_BREAKOUT", message="MNO: MOU Breakout triggered")
alertcondition(mou_pullback, title="MNO_MOU_PULLBACK", message="MNO: MOU Pullback triggered")
alertcondition(kaku, title="MNO_KAKU", message="MNO: KAKU triggered")
// =========================
// Debug table (optional)
// =========================
var table t = table.new(position.top_right, 2, 14, border_width=1, border_color=color.new(color.white, 60))
fRow(_name, _cond, _r) =>
bg = _cond ? color.new(color.lime, 70) : color.new(color.red, 80)
tx = _cond ? "OK" : "NO"
table.cell(t, 0, _r, _name, text_color=color.white, bgcolor=color.new(color.black, 0))
table.cell(t, 1, _r, tx, text_color=color.white, bgcolor=bg)
if showDebugTbl and barstate.islast
// ❗ colspanは使えないので2セルでヘッダーを作る
table.cell(t, 0, 0, "MNO Debug", text_color=color.white, bgcolor=color.new(color.black, 0))
table.cell(t, 1, 0, "", text_color=color.white, bgcolor=color.new(color.black, 0))
fRow("BaseTrend", baseTrendOK, 1)
fRow("MOU Pullback", mou_pullback, 2)
fRow("MOU Breakout", mou_breakout, 3)
fRow("Break confirm", breakConfirm, 4)
fRow("Break big body", bigBodyOK, 5)
fRow("Break close high", closeNearHighOK, 6)
fRow("Break vol strong", volumeStrongOK, 7)
fRow("Break MACD", macdBreakOK, 8)
fRow("KAKU all8", all8_strict, 9)
fRow("KAKU final3", final3, 10)
fRow("MOU any", mou, 11)
fRow("KAKU", kaku, 12)
indicator("MouNoOkite_InitialMove_Screener", overlay=true)//@version=5
indicator("猛の掟・初動スクリーナー(5EMA×MACD×出来高×ローソク)", overlay=true, max_labels_count=500)
// =========================
// Inputs
// =========================
emaSLen = input.int(5, "EMA Short (5)")
emaMLen = input.int(13, "EMA Mid (13)")
emaLLen = input.int(26, "EMA Long (26)")
macdFast = input.int(12, "MACD Fast")
macdSlow = input.int(26, "MACD Slow")
macdSignal = input.int(9, "MACD Signal")
volLookback = input.int(5, "出来高平均(日数)", minval=1)
volMinRatio = input.float(1.3, "出来高倍率(初動点灯)", step=0.1)
volStrong = input.float(1.5, "出来高倍率(本物初動)", step=0.1)
volMaxRatio = input.float(2.0, "出来高倍率(上限目安)", step=0.1)
wickBodyMult = input.float(2.0, "ピンバー判定: 下ヒゲ >= (実体×倍率)", step=0.1)
pivotLen = input.int(20, "直近高値/レジスタンス判定のLookback", minval=5)
pullMinPct = input.float(5.0, "押し目最小(%)", step=0.1)
pullMaxPct = input.float(15.0, "押し目最大(%)", step=0.1)
showDebug = input.bool(true, "デバッグ表示(条件チェック)")
// =========================
// EMA
// =========================
emaS = ta.ema(close, emaSLen)
emaM = ta.ema(close, emaMLen)
emaL = ta.ema(close, emaLLen)
plot(emaS, color=color.new(color.yellow, 0), title="EMA 5")
plot(emaM, color=color.new(color.blue, 0), title="EMA 13")
plot(emaL, color=color.new(color.orange, 0), title="EMA 26")
emaUpS = emaS > emaS
emaUpM = emaM > emaM
emaUpL = emaL > emaL
// 26EMA上に2日定着
above26_2days = close > emaL and close > emaL
// 黄金隊列
goldenOrder = emaS > emaM and emaM > emaL
// =========================
// MACD
// =========================
= ta.macd(close, macdFast, macdSlow, macdSignal)
// ヒストグラム縮小(マイナス圏で上向きの準備)も見たい場合の例
histShrinking = math.abs(macdHist) < math.abs(macdHist )
histUp = macdHist > macdHist
// ゼロライン上でGC(最終シグナル)
macdGCAboveZero = ta.crossover(macdLine, macdSig) and macdLine > 0 and macdSig > 0
// 参考:ゼロ直下で上昇方向(勢い準備)
macdRisingNearZero = (macdLine < 0) and (macdLine > macdLine ) and (math.abs(macdLine) <= math.abs(0.5))
// =========================
// Volume
// =========================
volMA = ta.sma(volume, volLookback)
volRatio = volMA > 0 ? (volume / volMA) : na
volumeOK = volRatio >= volMinRatio and volRatio <= volMaxRatio
volumeStrongOK = volRatio >= volStrong
// =========================
// Candle patterns
// =========================
body = math.abs(close - open)
upperWick = high - math.max(open, close)
lowerWick = math.min(open, close) - low
// 長い下ヒゲ(ピンバー系): 実体が小さく、下ヒゲが優位
pinbar = (lowerWick >= wickBodyMult * body) and (lowerWick > upperWick) and (close >= open)
// 陽線包み足(前日陰線を包む)
bullEngulf =
close > open and close < open and
close >= open and open <= close
// 5EMA・13EMA を貫く大陽線(勢い)
bigBull =
close > open and
open < emaM and close > emaS and
(body > ta.sma(body, 20)) // “相対的に大きい”目安
candleOK = pinbar or bullEngulf or bigBull
// =========================
// 押し目 (-5%〜-15%) & レジブレ後
// =========================
recentHigh = ta.highest(high, pivotLen)
pullbackPct = recentHigh > 0 ? (recentHigh - close) / recentHigh * 100.0 : na
pullbackOK = pullbackPct >= pullMinPct and pullbackPct <= pullMaxPct
// “レジスタンスブレイク”簡易定義:直近pivotLen高値を一度上抜いている
// → その後に押し目位置にいる(現在が押し目)
brokeResistance = ta.crossover(close, recentHigh ) or (close > recentHigh )
afterBreakPull = brokeResistance or brokeResistance or brokeResistance or brokeResistance or brokeResistance
breakThenPullOK = afterBreakPull and pullbackOK
// =========================
// 最終三点シグナル(ヒゲ × 出来高 × MACD)
// =========================
final3 = pinbar and macdGCAboveZero and volumeStrongOK
// =========================
// 猛の掟 8条件チェック(1つでも欠けたら「見送り」)
// =========================
// 1) 5EMA↑ 13EMA↑ 26EMA↑
cond1 = emaUpS and emaUpM and emaUpL
// 2) 5>13>26 黄金隊列
cond2 = goldenOrder
// 3) ローソク足が26EMA上に2日定着
cond3 = above26_2days
// 4) MACD(12,26,9) ゼロライン上でGC
cond4 = macdGCAboveZero
// 5) 出来高が直近5日平均の1.3〜2.0倍
cond5 = volumeOK
// 6) ピンバー or 包み足 or 大陽線
cond6 = candleOK
// 7) 押し目 -5〜15%
cond7 = pullbackOK
// 8) レジスタンスブレイク後の押し目
cond8 = breakThenPullOK
all8 = cond1 and cond2 and cond3 and cond4 and cond5 and cond6 and cond7 and cond8
// =========================
// 判定(2択のみ)
// =========================
isBuy = all8 and final3
decision = isBuy ? "買い" : "見送り"
// =========================
// 表示
// =========================
plotshape(isBuy, title="BUY", style=shape.labelup, text="買い", color=color.new(color.lime, 0), textcolor=color.black, location=location.belowbar, size=size.small)
plotshape((not isBuy) and all8, title="ALL8_OK_but_noFinal3", style=shape.labelup, text="8条件OK\n(最終3未)", color=color.new(color.yellow, 0), textcolor=color.black, location=location.belowbar, size=size.tiny)
// デバッグ(8項目チェック結果)
if showDebug and barstate.islast
var label dbg = na
label.delete(dbg)
txt =
"【8項目チェック】\n" +
"1 EMA全上向き: " + (cond1 ? "達成" : "未達") + "\n" +
"2 黄金隊列: " + (cond2 ? "達成" : "未達") + "\n" +
"3 26EMA上2日: " + (cond3 ? "達成" : "未達") + "\n" +
"4 MACDゼロ上GC: " + (cond4 ? "達成" : "未達") + "\n" +
"5 出来高1.3-2.0: "+ (cond5 ? "達成" : "未達") + "\n" +
"6 ローソク条件: " + (cond6 ? "達成" : "未達") + "\n" +
"7 押し目5-15%: " + (cond7 ? "達成" : "未達") + "\n" +
"8 ブレイク後押し目: " + (cond8 ? "達成" : "未達") + "\n\n" +
"最終三点(ヒゲ×出来高×MACD): " + (final3 ? "成立" : "未成立") + "\n" +
"判定: " + decision
dbg := label.new(bar_index, high, txt, style=label.style_label_left, textcolor=color.white, color=color.new(color.black, 0))
// アラート
alertcondition(isBuy, title="猛の掟 BUY", message="猛の掟: 買いシグナル(8条件+最終三点)")
11-MA Institutional System (ATR+HTF Filters)11-MA Institutional Trading System Analysis.
This is a comprehensive Trading View Pine Script indicator that implements a sophisticated multi-timeframe moving average system with institutional-grade filters. Let me break down its key components and functionality:
🎯 Core Features
1. 11 Moving Average System. The indicator plots 11 customizable moving averages with different roles:
MA1-MA4 (5, 8, 10, 12): Fast-moving averages for short-term trends
MA5 (21 EMA): Short-term anchor - critical pivot point
MA6 (34 EMA): Intermediate support/resistance
MA7 (50 EMA): Medium-term bridge between short and long trends
MA8-MA9 (89, 100): Transition zone indicators
MA10-MA11 (150, 200): Long-term anchors for major trend identification
Each MA is fully customizable:
Type: SMA, EMA, WMA, TMA, RMA
Color, width, and enable/disable toggle
📊 Signal Generation System
Three Signal Tiers: Short-Term Signals (ST)
Trigger: MA8 (EMA 8) crossing MA21 (EMA 21)
Filters Applied:
✅ ATR-based post-cross confirmation (optional)
✅ Momentum confirmation (RSI > 50, MACD positive)
✅ Volume spike requirement
✅ HTF (Higher Timeframe) alignment
✅ Strong candle body ratio (>50%)
✅ Multi-MA confirmation (3+ MAs supporting direction)
✅ Price beyond MA21 with conviction
✅ Minimum bar spacing (prevents signal clustering)
✅ Consolidation filter
✅ Whipsaw protection (ATR-based price threshold)
Medium-Term Signals (MT)
Trigger: MA21 crossing MA50
Less strict filtering for swing trades
Major Signals
Golden Cross: MA50 crossing above MA200 (major bullish)
Death Cross: MA50 crossing below MA200 (major bearish)
🔍 Advanced Filtering System1. ATR-Based ConfirmationPrice must move > (ATR × 0.25) beyond the MA after crossover
This prevents false signals during low-volatility consolidation.2. Momentum Filters
RSI (14)
MACD Histogram
Rate of Change (ROC)
Composite momentum score (-3 to +3)
3. Volume Analysis
Volume spike detection (2x MA)
Volume classification: LOW, MED, HIGH, EXPL
Directional volume confirmation
4. Higher Timeframe Alignment
HTF1: 60-minute (default)
HTF2: 4-hour (optional)
HTF3: Daily (optional)
Signals only trigger when current TF aligns with HTF trend
5. Market Structure Detection
Break of Structure (BOS): Price breaking recent swing highs/lows
Order Blocks (OB): Institutional demand/supply zones
Fair Value Gaps (FVG): Imbalance areas for potential fills
📈 Comprehensive DashboardReal-Time Metrics Display: {scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;} ::-webkit-scrollbar{display:none}MetricDescriptionPriceCurrent close priceTimeframeCurrent chart timeframeSHORT/MEDIUM/MAJORTrend classification (🟢BULL/🔴BEAR/⚪NEUT)HTF TrendsHigher timeframe alignment indicatorsMomentumSTR↑/MOD↑/WK↑/WK↓/MOD↓/STR↓VolatilityLOW/MOD/HIGH/EXTR (based on ATR%)RSI(14)Color-coded: >70 red, <30 greenATR%Volatility as % of priceAdvanced Dashboard Features (Optional):
Price Distance from Key MAs
vs MA21, MA50, MA200 (percentage)
Color-coded: green (above), red (below)
MA Alignment Score
Calculates % of MAs in proper order
🟢 for bullish alignment, 🔴 for bearish
Trend Strength
Based on separation between MA21 and MA200
NONE/WEAK/MODERATE/STRONG/EXTREME
Consolidation Detection
Identifies low-volatility ranges
Prevents signals during sideways markets
⚙️ Customization OptionsFilter Toggles:
☑️ Require Momentum
☑️ Require Volume
☑️ Require HTF Alignment
☑️ Use ATR post-cross confirmation
☑️ Whipsaw filter
Min bars between signals (default: 5)
Dashboard Styling:
9 position options
6 text sizes
Custom colors for header, rows, and text
Toggle individual metrics on/off
🎨 Visual Elements
Signal Labels:
ST▲/ST▼ (green/red) - Short-term
MT▲/MT▼ (blue/orange) - Medium-term
GOLDEN CROSS / DEATH CROSS - Major signals
Volume Spikes:
Small labels showing volume class + direction
Example: "HIGH🟢" or "EXPL🔴"
Market Structure:
Dashed lines for Break of Structure levels
Automatic detection of swing highs/lows
🔔 Alert Conditions
Pre-configured alerts for:
Short-term bullish/bearish crosses
Medium-term bullish/bearish crosses
Golden Cross / Death Cross
Volume spikes
💡 Key Strengths
Institutional-Grade Filtering: Multiple confirmation layers reduce false signals
Multi-Timeframe Analysis: Ensures alignment across timeframes
Adaptive to Market Conditions: ATR-based thresholds adjust to volatility
Comprehensive Dashboard: All critical metrics in one view
Highly Customizable: 100+ input parameters
Signal Quality Over Quantity: Strict filters prioritize high-probability setups
⚠️ Usage Recommendations
Best for: Swing trading and position trading
Timeframes: Works on all TFs, optimized for 15m-Daily
Markets: Stocks, Forex, Crypto, Indices
Signal Frequency: Conservative (quality over quantity)
Combine with: Support/resistance, price action, risk management
🔧 Technical Implementation Notes
Uses Pine Script v6 syntax
Efficient calculation with minimal repainting
Maximum 500 labels for performance
Security function for HTF data (no lookahead bias)
Array-based MA alignment calculation
State variables to track signal spacing
This is a professional-grade trading system that combines classical technical analysis (moving averages) with modern institutional concepts (market structure, order blocks, multi-timeframe alignment).
The extensive filtering system is designed to eliminate noise and focus on high-probability trade setups.
Kalkulator pozycji XAUUSD PLN, 1:500, 1100 to 100 kontaPosition calculator based on the number of pips that you quickly enter from the tool, this device will select the appropriate lot for you and you can quickly take a position
ALT Risk Metric StrategyHere's a professional write-up for your ALT Risk Strategy script:
ALT/BTC Risk Strategy - Multi-Crypto DCA with Bitcoin Correlation Analysis
Overview
This strategy uses Bitcoin correlation as a risk indicator to time entries and exits for altcoins. By analyzing how your chosen altcoin performs relative to Bitcoin, the strategy identifies optimal accumulation periods (when alt/BTC is oversold) and profit-taking opportunities (when alt/BTC is overbought). Perfect for traders who want to outperform Bitcoin by strategically timing altcoin positions.
Key Innovation: Why Alt/BTC Matters
Most traders focus solely on USD price, but Alt/BTC ratios reveal true altcoin strength:
When Alt/BTC is low → Altcoin is undervalued relative to Bitcoin (buy opportunity)
When Alt/BTC is high → Altcoin has outperformed Bitcoin (take profits)
This approach captures the rotation between BTC and alts that drives crypto cycles
Key Features
📊 Advanced Technical Analysis
RSI (60% weight): Primary momentum indicator on weekly timeframe
Long-term MA Deviation (35% weight): Measures distance from 150-period baseline
MACD (5% weight): Minor confirmation signal
EMA Smoothing: Filters noise while maintaining responsiveness
All calculations performed on Alt/BTC pairs for superior market timing
💰 3-Tier DCA System
Level 1 (Risk ≤ 70): Conservative entry, base allocation
Level 2 (Risk ≤ 50): Increased allocation, strong opportunity
Level 3 (Risk ≤ 30): Maximum allocation, extreme undervaluation
Continuous buying: Executes every bar while below threshold for true DCA behavior
Cumulative sizing: L3 triggers = L1 + L2 + L3 amounts combined
📈 Smart Profit Management
Sequential selling: Must complete L1 before L2, L2 before L3
Percentage-based exits: Sell portions of position, not fixed amounts
Auto-reset on re-entry: New buy signals reset sell progression
Prevents premature full exits during volatile conditions
🤖 3Commas Automation
Pre-configured JSON webhooks for Custom Signal Bots
Multi-exchange support: Binance, Coinbase, Kraken, Bitfinex, Bybit
Flexible quote currency: USD, USDT, or BUSD
Dynamic order sizing: Automatically adjusts to your tier thresholds
Full webhook documentation compliance
🎨 Multi-Asset Support
Pre-configured for popular altcoins:
ETH (Ethereum)
SOL (Solana)
ADA (Cardano)
LINK (Chainlink)
UNI (Uniswap)
XRP (Ripple)
DOGE
RENDER
Custom option for any other crypto
How It Works
Risk Metric Calculation (0-100 scale):
Fetches weekly Alt/BTC price data for stability
Calculates RSI, MACD, and deviation from 150-period MA
Normalizes MACD to 0-100 range using 500-bar lookback
Combines weighted components: (MACD × 0.05) + (RSI × 0.60) + (Deviation × 0.35)
Applies 5-period EMA smoothing for cleaner signals
Color-Coded Risk Zones:
Green (0-30): Extreme buying opportunity - Alt heavily oversold vs BTC
Lime/Yellow (30-70): Accumulation range - favorable risk/reward
Orange (70-85): Caution zone - consider taking initial profits
Red/Maroon (85-100+): Euphoria zone - aggressive profit-taking
Entry Logic:
Buys execute every candle when risk is below threshold
As risk decreases, position sizing automatically scales up
Example: If risk drops from 60→25, you'll be buying at L1 rate until it hits 50, then L2 rate, then L3 rate
Exit Logic:
Sells only trigger when in profit AND risk exceeds thresholds
Sequential execution ensures partial profit-taking
If new buy signal occurs before all sells complete, sell levels reset to L1
Configuration Guide
Choosing Your Altcoin:
Select crypto from dropdown (or use CUSTOM for unlisted coins)
Pick your exchange
Choose quote currency (USD, USDT, BUSD)
Risk Metric Tuning:
Long Term MA (default 150): Higher = more extreme signals, Lower = more frequent
RSI Length (default 10): Lower = more volatile, Higher = smoother
Smoothing (default 5): Increase for less noise, decrease for faster reaction
Buy Settings (Aggressive DCA Example):
L1 Threshold: 70 | Amount: $5
L2 Threshold: 50 | Amount: $6
L3 Threshold: 30 | Amount: $7
Total L3 buy = $18 per candle when deeply oversold
Sell Settings (Balanced Exit Example):
L1: 70 threshold, 25% position
L2: 85 threshold, 35% position
L3: 100 threshold, 40% position (final exit)
3Commas Setup
Bot Configuration:
Create Custom Signal Bot in 3Commas
Set trading pair to your altcoin/USD (e.g., ETH/USD, SOL/USDT)
Order size: Select "Send in webhook, quote" to use strategy's dollar amounts
Copy Bot UUID and Secret Token
Script Configuration:
Paste credentials into 3Commas section inputs
Check "Enable 3Commas Alerts"
Save and apply to chart
TradingView Alert:
Create Alert → Condition: "alert() function calls only"
Webhook URL: api.3commas.io
Enable "Webhook URL" checkbox
Expiration: Open-ended
Strategy Advantages
✅ Outperform Bitcoin: Designed specifically to beat BTC by timing alt rotations
✅ Capture Alt Seasons: Automatically accumulates when alts lag, sells when they pump
✅ Risk-Adjusted Sizing: Buys more when cheaper (better risk/reward)
✅ Emotional Discipline: Systematic approach removes fear and FOMO
✅ Multi-Asset: Run same strategy across multiple altcoins simultaneously
✅ Proven Indicators: Combines RSI, MACD, and MA deviation - battle-tested tools
Backtesting Insights
Optimal Timeframes:
Daily chart: Best for backtesting and signal generation
Weekly data is fetched internally regardless of display timeframe
Historical Performance Characteristics:
Accumulates heavily during bear markets and BTC dominance periods
Captures explosive altcoin rallies when BTC stagnates
Sequential selling preserves capital during extended downtrends
Works best on established altcoins with multi-year history
Risk Considerations:
Requires capital reserves for extended accumulation periods
Some altcoins may never recover if fundamentals deteriorate
Past correlation patterns may not predict future performance
Always size positions according to personal risk tolerance
Visual Interface
Indicator Panel Displays:
Dynamic color line: Green→Lime→Yellow→Orange→Red as risk increases
Horizontal threshold lines: Dashed lines mark your buy/sell levels
Entry/Exit labels: Green labels for buys, Orange/Red/Maroon for sells
Real-time risk value: Numerical display on price scale
Customization:
All threshold lines are adjustable via inputs
Color scheme clearly differentiates buy zones (green spectrum) from sell zones (red spectrum)
Line weights emphasize most extreme thresholds (L3 buy and L3 sell)
Strategy Philosophy
This strategy is built on the principle that altcoins move in cycles relative to Bitcoin. During Bitcoin rallies, alts often bleed against BTC (high sell, accumulate). When Bitcoin consolidates, alts pump (take profits). By measuring risk on the Alt/BTC chart instead of USD price, we time these rotations with precision.
The 3-tier system ensures you're always averaging in at better prices and scaling out at better prices, maximizing your Bitcoin-denominated returns.
Advanced Tips
Multi-Bot Strategy:
Run this on 5-10 different altcoins simultaneously to:
Diversify correlation risk
Capture whichever alt is pumping
Smooth equity curve through rotation
Pairing with BTC Strategy:
Use alongside the BTC DCA Risk Strategy for complete portfolio coverage:
BTC strategy for core holdings
ALT strategies for alpha generation
Rebalance between them based on BTC dominance
Threshold Calibration:
Check 2-3 years of historical data for your chosen alt
Note where risk metric sat during major bottoms (set buy thresholds)
Note where it peaked during euphoria (set sell thresholds)
Adjust for your risk tolerance and holding period
Credits
Strategy Development & 3Commas Integration: Claude AI (Anthropic)
Technical Analysis Framework: RSI, MACD, Moving Average theory
Implementation: pommesUNDwurst
Disclaimer
This strategy is for educational purposes only. Cryptocurrency trading involves substantial risk of loss. Altcoins are especially volatile and many fail completely. The strategy assumes liquid markets and reliable Alt/BTC price data. Always do your own research, understand the fundamentals of any asset you trade, and never risk more than you can afford to lose. Past performance does not guarantee future results. The authors are not financial advisors and assume no liability for trading decisions.
Additional Warning: Using leverage or trading illiquid altcoins amplifies risk significantly. This strategy is designed for spot trading of established cryptocurrencies with deep liquidity.
Tags: Altcoin, Alt/BTC, DCA, Risk Metric, Dollar Cost Averaging, 3Commas, ETH, SOL, Crypto Rotation, Bitcoin Correlation, Automated Trading, Alt Season
Feel free to modify any sections to better match your style or add specific backtesting results you've observed! 🚀Claude is AI and can make mistakes. Please double-check responses. Sonnet 4.5
Volume Profile VisionVolume Profile Vision - Complete Description
Overview
Volume Profile Vision (VPV) is an advanced volume profile indicator that visualizes where trading activity has occurred at different price levels over a specified time period. Unlike traditional volume indicators that show volume over time, this indicator displays volume distribution across price levels, helping traders identify key support/resistance zones, fair value areas, and potential reversal points.
What Makes This Indicator Original
Volume Profile Vision introduces several unique features not found in standard volume profile tools:
Dual-Direction Histogram Display:
Unlike conventional volume profiles that only show bars extending in one direction, VPV displays volume bars extending both left (into historical candles) and right (as a traditional histogram). This bi-directional approach allows traders to see exactly where historical price action intersected with high-volume nodes.
Real-Time Candle Highlighting: The indicator dynamically highlights volume bars that intersect with the current candle's price range, making it immediately obvious which volume levels are currently in play.
Four Professional Color Schemes: Each color scheme uses distinct gradient algorithms and visual encoding systems:
Traffic Light: Uses red (POC), green (VA boundaries), yellow (HVN), with grayscale gradients outside the value area
Aurora Glass: Modern cyan-to-magenta gradient with hot magenta POC highlighting
Obsidian Precision: Professional dark theme with white POC and electric cyan accents
Black Ice: Monochromatic cyan family with graduated intensity
Adaptive Transparency System: Automatically adjusts bar transparency based on position relative to value area, with special handling for each color scheme to maintain visual clarity.
Core Concepts & Calculations
Volume Distribution Analysis
The indicator divides the visible price range into user-defined price levels (default: 80 levels) and calculates the total volume traded at each level by:
Scanning back through the specified lookback period (customizable or visible range)
For each historical bar, determining which price levels the bar's high/low range intersects
Accumulating volume for each intersected price level
Optionally filtering by bullish/bearish volume only
Point of Control (POC)
The POC is the price level with the highest traded volume during the analyzed period. This represents the "fairest" price where most traders agreed on value. The indicator marks this with distinct coloring (red in Traffic Light, magenta in Aurora Glass, white in Obsidian Precision, cyan in Black Ice).
Trading Significance: POC acts as a strong magnet for price - markets tend to return to fair value. When price is away from POC, traders watch for:
Mean reversion opportunities when price is far from POC
Rejection signals when price tests POC from above/below
Breakout confirmation when price breaks through and holds beyond POC
Value Area (VA)
The Value Area encompasses the price range where a specified percentage (default: 68%) of all volume traded. This represents the range of "accepted value" by market participants.
Calculation Method:
Start at the POC (highest volume level)
Expand upward and downward, adding adjacent price levels
Always add the level with higher volume next
Continue until accumulated volume reaches the VA percentage threshold
Value Area High (VAH): Upper boundary of accepted value - acts as resistance
Value Area Low (VAL): Lower boundary of accepted value - acts as support
Trading Significance:
Price spending time inside VA indicates market equilibrium
Breakouts above VAH suggest bullish momentum shift
Breakdowns below VAL suggest bearish momentum shift
Returns to VA boundaries often provide high-probability entry zones
High Volume Nodes (HVN)
Price levels with volume exceeding a threshold percentage (default: 80%) of POC volume. These represent areas of strong agreement and consolidation.
Trading Significance:
HVNs act as strong support/resistance zones
Price tends to consolidate at HVNs before making directional moves
Breaking through an HVN often signals strong momentum
Low Volume Nodes (LVN)
Price levels within the Value Area with volume ≤30% of POC volume. These are zones price moved through quickly with minimal consolidation.
Trading Significance:
LVNs represent areas of rejection - price finds little acceptance
Price tends to move rapidly through LVN zones
Useful for setting stop-losses (below LVN for longs, above for shorts)
Can identify potential gaps or "air pockets" in the market structure
Grayscale POC Detection
A secondary POC detection system identifies the highest volume level outside the Value Area (with a 2-level buffer to avoid confusion). This helps identify significant volume accumulation zones that exist beyond the main value area.
How to Use This Indicator
Setup
Choose Lookback Period:
Enable "Use Visible Range" to analyze only what's on your chart
Or set "Fixed Range Lookback Depth" (default: 200 bars) for consistent analysis
Adjust Profile Resolution:
"Number of Price Levels" (default: 80) - higher = more granular analysis, lower = broader zones
Select Color Scheme:
Traffic Light: Best for clear POC/VA/HVN identification
Aurora Glass: Modern aesthetic for dark charts
Obsidian Precision: Professional trader preference
Black Ice: Minimalist single-color family
Visual Customization
Left Extension: How far back the left-side histogram extends into historical candles (default: 490 bars)
Right Extension: Width of the traditional histogram bars on the right (default: 50 bars)
Right Margin: Space between current price bar and histogram (default: 0 for flush alignment)
Left Profile Gap: Space between left-side histogram and candles (default: 0)
Trading Strategies
Strategy 1: Value Area Mean Reversion
Wait for price to move outside the Value Area (above VAH or below VAL)
Look for rejection signals (wicks, bearish/bullish candles)
Enter trades toward the POC
Take profits as price returns to POC or opposite VA boundary
Strategy 2: Breakout Confirmation
Identify when price is consolidating within the Value Area
Wait for a strong close above VAH (bullish) or below VAL (bearish)
Enter on the breakout or on first pullback to the VA boundary
Target previous HVNs or swing highs/lows outside the VA
Strategy 3: POC Support/Resistance
Watch for price approaching the POC level
If approaching from below, look for bullish reversal patterns at POC (support)
If approaching from above, look for bearish reversal patterns at POC (resistance)
Trade in the direction of the bounce with stops beyond the POC
Strategy 4: LVN Fast Movement Zones
Identify LVN zones within the Value Area (marked with "LVN" label)
When price enters an LVN, expect rapid movement through the zone
Avoid entering trades within LVNs
Use LVNs as confirmation of directional momentum
Alert System
The indicator includes 7 customizable alert conditions:
POC Touch: Alerts when price comes within 0.5 ATR of POC
VAH/VAL Touch: Alerts at Value Area boundaries
VA Breakout: Alerts on breakouts above VAH or below VAL
HVN Touch: Alerts when price contacts High Volume Nodes
LVN Entry: Alerts when entering Low Volume zones
POC Shift: Alerts when POC moves to a new price level
Reading the Profile
Price Labels (shown on the right side):
POC: Point of Control - highest volume price level
VAH: Value Area High - upper boundary of accepted value
VAL: Value Area Low - lower boundary of accepted value
LVN: Low Volume Node - expect fast movement through this zone
Color Intensity Interpretation:
Brighter colors = higher volume concentration
Dimmer colors = lower volume
Abrupt color changes = transition between volume zones
Gaps in the histogram = price levels with no trading activity
Technical Details
Volume Accumulation Logic:
For each bar in lookback period:
For each price level:
If bar's high/low range intersects price level:
Add bar's volume to that price level's total
Gradient Algorithm:
Traffic Light: Dual-range piecewise gradient (0-50% and 50-100% volume intensity)
Aurora Glass: Linear cyan-to-magenta interpolation
Obsidian Precision: Dark blue gradient with cyan highlights
Black Ice: Three-stage cyan intensity progression
Real-Time Updates:
The profile recalculates on every bar, including real-time tick data, ensuring the volume distribution always reflects current market structure.
Best Practices
Timeframe Selection: Use higher timeframes (4H, Daily) for swing trading, lower timeframes (5min, 15min) for day trading
Combine with Price Action: Volume profile shows WHERE, price action shows WHEN
Multiple Timeframe Analysis: Check daily VP for major levels, then drill down to intraday for entries
Volume Type Selection: Use "Bullish" volume in uptrends, "Bearish" in downtrends, or "Both" for complete picture
Adjust VA Percentage: 68% (default) captures one standard deviation; try 70% for tighter or 60% for broader value areas
Performance Notes
Maximum bars back: 5000 (handles deep historical analysis)
Maximum boxes: 500 (handles complex profiles)
Optimized calculation: Only recalculates on last bar for efficiency
Real-time capable: Updates as new ticks arrive
Swing Trading IndicatorThis script is a swing‑trading dashboard designed for BTC, ETH, S&P 500 (for now). It combines weekly RSI, USDT.D, VIX, moving averages and Fisher Transform into a single visual tool, with background highlights, an on‑chart info table and ready‑made alerts to help you time high‑probability swing entries and manage risk.
1. Overview
The indicator is intended to work on daily timeframe.
Signals are context‑aware: BTC and ETH get USDT.D conditions, SPX gets VIX and EMA‑100 logic, and all non‑ETH symbols can also use Fisher Transform as a mean‑reversion filter.
2. Conditions and background highlights
Each component sets a boolean condition and, when active, paints a background layer:
Weekly RSI condition
True when weekly RSI is below its symbol‑specific threshold.
USDT.D conditions
BTC: triggered when USDT.D is above the user threshold and the chart symbol is BTC.
ETH: same logic for ETH, but tracked separately..
VIX condition (SPX only)
True when VIX high is at or above the VIX threshold while the chart is SPX.
EMA condition (BTC & SPX)
BTC: daily close below EMA‑200.
SPX: daily close below EMA‑100.
Fisher Transform condition (non‑ETH)
Fisher Transform on the chart timeframe, using the configured period.
True when Fisher value is below the Fisher threshold.
3. Intended use and notes
This indicator is designed as a confluence tool for swing traders, not a standalone buy/sell system. It works best on assets that are in a clear uptrend, where the main idea is to accumulate during corrections within that broader bullish structure.
During larger market shocks, deep corrections, or black‑swan events, trend‑based and mean‑reversion filters can produce false signals, because volatility and correlations often behave abnormally in those periods. For that reason, this script should always be combined with independent risk management, higher‑timeframe trend analysis, and your own discretion.
SMC N-Gram Probability Matrix [PhenLabs]📊 SMC N-Gram Probability Matrix
Version: PineScript™ v6
📌 Description
The SMC N-Gram Probability Matrix applies computational linguistics methodology to Smart Money Concepts trading. By treating SMC patterns as a discrete “alphabet” and analyzing their sequential relationships through N-gram modeling, this indicator calculates the statistical probability of which pattern will appear next based on historical transitions.
Traditional SMC analysis is reactive—traders identify patterns after they form and then anticipate the next move. This indicator inverts that approach by building a transition probability matrix from up to 5,000 bars of pattern history, enabling traders to see which SMC formations most frequently follow their current market sequence.
The indicator detects and classifies 11 distinct SMC patterns including Fair Value Gaps, Order Blocks, Liquidity Sweeps, Break of Structure, and Change of Character in both bullish and bearish variants, then tracks how these patterns transition from one to another over time.
🚀 Points of Innovation
First indicator to apply N-gram sequence modeling from computational linguistics to SMC pattern analysis
Dynamic transition matrix rebuilds every 50 bars for adaptive probability calculations
Supports bigram (2), trigram (3), and quadgram (4) sequence lengths for varying analysis depth
Priority-based pattern classification ensures higher-significance patterns (CHoCH, BOS) take precedence
Configurable minimum occurrence threshold filters out statistically insignificant predictions
Real-time probability visualization with graphical confidence bars
🔧 Core Components
Pattern Alphabet System: 11 discrete SMC patterns encoded as integers for efficient matrix indexing and transition tracking
Swing Point Detection: Uses ta.pivothigh/pivotlow with configurable sensitivity for non-repainting structure identification
Transition Count Matrix: Flattened array storing occurrence counts for all possible pattern sequence transitions
Context Encoder: Converts N-gram pattern sequences into unique integer IDs for matrix lookup
Probability Calculator: Transforms raw transition counts into percentage probabilities for each possible next pattern
🔥 Key Features
Multi-Pattern SMC Detection: Simultaneously identifies FVGs, Order Blocks, Liquidity Sweeps, BOS, and CHoCH formations
Adjustable N-Gram Length: Choose between 2-4 pattern sequences to balance specificity against sample size
Flexible Lookback Range: Analyze anywhere from 100 to 5,000 historical bars for matrix construction
Pattern Toggle Controls: Enable or disable individual SMC pattern types to customize analysis focus
Probability Threshold Filtering: Set minimum occurrence requirements to ensure prediction reliability
Alert Integration: Built-in alert conditions trigger when high-probability predictions emerge
🎨 Visualization
Probability Table: Displays current pattern, recent sequence, sample count, and top N predicted patterns with percentage probabilities
Graphical Probability Bars: Visual bar representation (█░) showing relative probability strength at a glance
Chart Pattern Markers: Color-coded labels placed directly on price bars identifying detected SMC formations
Pattern Short Codes: Compact notation (F+, F-, O+, O-, L↑, L↓, B+, B-, C+, C-) for quick pattern identification
Customizable Table Position: Place probability display in any corner of your chart
📖 Usage Guidelines
N-Gram Configuration
N-Gram Length: Default 2, Range 2-4. Lower values provide more samples but less specificity. Higher values capture complex sequences but require more historical data.
Matrix Lookback Bars: Default 500, Range 100-5000. More bars increase statistical significance but may include outdated market behavior.
Min Occurrences for Prediction: Default 2, Range 1-10. Higher values filter noise but may reduce prediction availability.
SMC Detection Settings
Swing Detection Length: Default 5, Range 2-20. Controls pivot sensitivity for structure analysis.
FVG Minimum Size: Default 0.1%, Range 0.01-2.0%. Filters insignificant gaps.
Order Block Lookback: Default 10, Range 3-30. Bars to search for OB formations.
Liquidity Sweep Threshold: Default 0.3%, Range 0.05-1.0%. Minimum wick extension beyond swing points.
Display Settings
Show Probability Table: Toggle the probability matrix display on/off.
Show Top N Probabilities: Default 5, Range 3-10. Number of predicted patterns to display.
Show SMC Markers: Toggle on-chart pattern labels.
✅ Best Use Cases
Anticipating continuation or reversal patterns after liquidity sweeps
Identifying high-probability BOS/CHoCH sequences for trend trading
Filtering FVG and Order Block signals based on historical follow-through rates
Building confluence by comparing predicted patterns with other technical analysis
Studying how SMC patterns typically sequence on specific instruments or timeframes
⚠️ Limitations
Predictions are based solely on historical pattern frequency and do not account for fundamental factors
Low sample counts produce unreliable probabilities—always check the Samples display
Market regime changes can invalidate historical transition patterns
The indicator requires sufficient historical data to build meaningful probability matrices
Pattern detection uses standardized parameters that may not capture all institutional activity
💡 What Makes This Unique
Linguistic Modeling Applied to Markets: Treats SMC patterns like words in a language, analyzing how they “flow” together
Quantified Pattern Relationships: Transforms subjective SMC analysis into objective probability percentages
Adaptive Learning: Matrix rebuilds periodically to incorporate recent pattern behavior
Comprehensive SMC Coverage: Tracks all major Smart Money Concepts in a unified probability framework
🔬 How It Works
1. Pattern Detection Phase
Each bar is analyzed for SMC formations using configurable detection parameters
A priority hierarchy assigns the most significant pattern when multiple detections occur
2. Sequence Encoding Phase
Detected patterns are stored in a rolling history buffer of recent classifications
The current N-gram context is encoded into a unique integer identifier
3. Matrix Construction Phase
Historical pattern sequences are iterated to count transition occurrences
Each context-to-next-pattern transition increments the appropriate matrix cell
4. Probability Calculation Phase
Current context ID retrieves corresponding transition counts from the matrix
Raw counts are converted to percentages based on total context occurrences
5. Visualization Phase
Probabilities are sorted and the top N predictions are displayed in the table
Chart markers identify the current detected pattern for visual reference
💡 Note:
This indicator performs best when used as a confluence tool alongside traditional SMC analysis. The probability predictions highlight statistically common pattern sequences but should not be used as standalone trading signals. Always verify predictions against price action context, higher timeframe structure, and your overall trading plan. Monitor the sample count to ensure predictions are based on adequate historical data.
VWAP-Anchored MACD [BOSWaves]VWAP-Anchored MACD - Volume-Weighted Momentum Mapping With Zero-Line Filtering
Overview
The VWAP-Anchored MACD delivers a refined momentum model built on volume-weighted price rather than raw closes, giving you a more grounded view of trend strength during sessions, weeks, or months.
Instead of tracking two EMAs of price like a standard MACD, this tool reconstructs the MACD engine using anchored VWAP as the core input. The result is a momentum structure that reacts to real liquidity flow, filters out weak crossovers near the zero line, and visualizes acceleration shifts with clear, high-contrast gradients.
This indicator acts as a precise momentum map that adapts in real time. You see how weighted price is accelerating, where valid crossovers form, and when trend conviction is strong enough to justify execution.
It uses gradient line coloring to show bullish or bearish momentum, histogram shading to highlight energy shifts, cross dots to mark valid crossovers, optional buy/sell diamonds for execution cues, and candle coloring to display trend strength at a glance.
Theoretical Foundation
Traditional MACD compares the difference between two exponential moving averages of price.
This variant replaces price with anchored VWAP, making the calculation sensitive to actual traded volume across your chosen period (Session, Week, or Month).
Three principles drive the logic:
Anchored VWAP Momentum : Price is weighted by volume and aggregated across the selected anchor. The fast and slow VWAP-EMAs then expose how liquidity-corrected momentum is expanding or contracting.
Zero-Line Distance Filtering : Crossover signals that occur too close to the zero line are removed. This eliminates the common MACD problem of generating weak, directionless signals in choppy phases.
Directional Visualization : MACD line, signal line, histogram, candle colors, and optional diamond markers all react to shifts in VWAP-momentum, giving you a clean structural read on market pressure.
Anchoring VWAP to session, weekly, or monthly resets creates a systematic framework for tracking how capital flow is driving momentum throughout each trading cycle.
How It Works
The core engine processes momentum through several mapped layers:
VWAP Aggregation : Price × volume is accumulated until the anchor resets. This creates a continuous, liquidity-corrected VWAP curve.
MACD Construction : Fast and slow VWAP-EMAs define the MACD line, while a smoothed signal line identifies edges where momentum shifts.
Zero-Line Distance Filter : MACD and signal must both exceed a threshold distance from zero for a crossover to count as valid. This prevents fake crossovers during compression.
Visual Momentum Layers : It uses gradient line coloring to show bullish or bearish momentum, histogram shading to highlight energy shifts, cross dots to mark valid crossovers, optional buy/sell diamonds for execution cues, and candle coloring to display trend strength at a glance.
This layered structure ensures you always know whether momentum is strengthening, fading, or transitioning.
Interpretation
You get a clean, structural understanding of VWAP-based momentum:
Bullish Phases : MACD > Signal, histogram expands, candles turn bullish, and crossovers occur above the threshold.
Bearish Phases : MACD < Signal, histogram drives lower, candles shift bearish, and downward crossovers trigger below the threshold.
Neutral/Compression : Both lines remain near the zero boundary, histogram flattens, and signals are suppressed to avoid noise.
This creates a more disciplined version of MACD momentum reading - less noise, more conviction, and better alignment with liquidity.
Strategy Integration
Trend Continuation : Use VWAP-MACD crossovers that occur far from the zero line as higher-conviction entries.
Zero-Line Rejection : Watch for histogram contractions near zero to anticipate flattening momentum and potential reversal setups.
Session/Week/Month Anchors : Session anchor works best for intraday flows. Weekly or monthly anchor structures create cleaner macro momentum reads for swing trading.
Signal-Only Execution : Optional buy/sell diamonds give you direct points to trigger trades without overanalyzing the chart.
This indicator slots cleanly into any momentum-following system and offers higher signal quality than classic MACD variants due to the volume-weighted core.
Technical Implementation Details
VWAP Reset Logic : Session (D), Week (W), or Month (M)
Dynamic Fast/Slow VWAP EMAs : Fully configurable lengths, smoothing and anchor settings
MACD/Signal Line Framework : Traditional structure with volume-anchored input
Zero-Line Filtering : Adjustable threshold for structural confirmation
Dual Visualization Layers : MACD body + histogram + crosses + candle coloring
Optimized Performance : Lightweight, fast rendering across all timeframes
Optimal Application Parameters
Timeframes:
1- 15 min : Short-term momentum scalping and rapid trend shifts
30- 240 min : Balanced momentum mapping with clear structural filtering
Daily : Macro VWAP regime identification
Suggested Configuration:
Fast Length : 12
Slow Length : 26
Signal Length : 9
Zero Threshold : 200 - 500 depending on asset range
These suggested parameters should be used as a baseline; their effectiveness depends on the asset volatility, liquidity, and preferred entry frequency, so fine-tuning is expected for optimal performance.
Performance Characteristics
High Effectiveness:
Assets with strong intraday or session-based volume cycles
Markets where volume-weighted momentum leads price swings
Trend environments with strong acceleration
Reduced Effectiveness:
Ultra-choppy markets hugging the VWAP axis
Sessions with abnormally low volume
Ranges where MACD naturally compresses
Disclaimer
The VWAP-Anchored MACD is a structural momentum tool designed to enhance directional clarity - not a guaranteed predictor. Performance depends on market regime, volatility, and disciplined execution. Use it alongside broader trend, volume, and structural analysis for optimal results.
ShooterViz Lazy Trader EMA SystemShooterViz Lazy Trader EMA System - Complete User Guide
What This Script Does
This is a position scaling indicator that tells you exactly when to enter, add to, and exit trades using a simplified 5-EMA system. It removes the guesswork and decision fatigue from trading by giving you clear visual signals.
The Core Concept
3 entry signals that build your position from 20% → 50% → 100%
2 exit signals that scale you out at 50% → 50% (complete exit)
1 higher timeframe filter that keeps you on the right side of the trend
No Fibonacci calculations, no RSI divergence, no multi-indicator confusion. Just EMAs and price action.
What You'll See On Your Chart
1. Colored EMA Lines
Blue Lines (Entry Zone):
3 EMA (lightest blue) - Early reversal detector
5 EMA (darker blue) - Confirmation line
Green Lines (Add Zone):
21 EMA (bright green) - First add location
34 EMA (lighter green) - Final add location
Red Lines (Exit Zone):
89 EMA (lighter red) - First exit trigger
144 EMA (darker red) - Final exit trigger
Orange Lines (Hyper Frame - optional):
Hyper 21 EMA (from higher timeframe) - Trend direction
Hyper 34 EMA (from higher timeframe) - Bias confirmation
2. Triangle Signals
Green Triangles (Below Price) = BUY/ADD:
Lime triangle with "20%" = Entry 1: Price reclaimed 3→5 EMA (starter position)
Green triangle with "30%" = Entry 2: Price bounced off 21 EMA (first add)
Teal triangle with "50%" = Entry 3: Price broke out from 34 EMA compression (final add)
Red Triangles (Above Price) = SELL:
Orange triangle with "50% OFF" = Exit 1: Price broke below 89 EMA (take half off)
Red triangle with "EXIT ALL" = Exit 2: Price broke below 144 EMA (close remaining position)
3. Background Color (Trend Bias)
Light green background = Hyper frame EMAs trending up (bias LONG)
Light red background = Hyper frame EMAs trending down (bias SHORT)
Gray background = Neutral/choppy (be cautious)
4. Info Table (Top Right Corner)
A live status dashboard showing:
Which entry signals are currently active (✓ or —)
Which exit signals are currently active (⚠ or ⛔)
Current hyper frame bias (🟢 LONG / 🔴 SHORT / ⚪ NEUTRAL)
Which timeframe you're using for hyper frame filtering
How to Install and Set Up
Step 1: Add the Script to TradingView
Open TradingView
Click "Pine Editor" at the bottom of the screen
Copy the entire script code
Paste it into the Pine Editor
Click "Add to Chart"
Step 2: Configure Your Settings
Click the gear icon ⚙️ next to "LazyEMA" in your indicators list.
Critical Settings to Configure:
Hyper Frame Selection (Most Important!)
Location: "Hyper Frame (Pick ONE)" section
Setting: "Timeframe"
What to choose:
Trading 15min or 1H charts? → Use "240" (4-hour)
Trading 4H or Daily charts? → Use "D" (Daily)
Trading Daily or Weekly charts? → Use "W" (Weekly)
Why this matters: This filter keeps you aligned with the bigger trend. Only take longs when this timeframe is green, shorts when it's red.
MA Type (Optional, default is fine)
Location: "MA Config" section
Default: EMA (recommended)
Options: EMA, SMA, WMA, HMA, RMA, VWMA
Most traders should stick with EMA
Visual Toggles (Customize your view)
Entry Zone: Turn individual EMAs on/off (3, 5, 21, 34)
Exit Zone: Turn individual EMAs on/off (89, 144)
Hyper Frame: Toggle the higher timeframe EMAs on/off
Step 3: Clean Up Your Chart
Turn OFF these if visible:
Volume bars (they clutter the view)
Any other indicators you have loaded
Grid lines (optional, but cleaner)
Keep ONLY:
Price candles
Your ShooterViz Lazy Trader EMA System
Maybe support/resistance levels if you manually draw them
How to Trade With This Script
The Basic Workflow
Before the Market Opens:
Check the background color and info table bias
Green background? Look for LONG setups only
Red background? Look for SHORT setups only
Gray background? Stay flat or trade small
During the Trading Session:
LONGS (When hyper frame is bullish):
Wait for Entry 1 signal:
Lime triangle appears with "20%"
Price has reclaimed the 5 EMA after dipping to 3 EMA
Action: Enter 20% of your intended position
Stop loss: Place below the 5 EMA or recent swing low
Wait for Entry 2 signal:
Green triangle appears with "30%"
Price pulled back to 21 EMA and bounced
Action: Add 30% more (you're now at 50% total)
Move stop: Trail it up to below 21 EMA
Wait for Entry 3 signal:
Teal triangle appears with "50%"
Price compressed at 34 EMA and broke out
Action: Add final 50% (you're now 100% loaded)
Move stop: Trail it up to below 34 EMA
Wait for Exit 1 signal:
Orange triangle appears with "50% OFF"
Price broke below 89 EMA
Action: Exit 50% of your position immediately
Move stop on rest: Trail to 89 EMA or lock in profits
Wait for Exit 2 signal:
Red triangle appears with "EXIT ALL"
Price broke below 144 EMA
Action: Exit remaining 50% (you're now flat)
Or: Stop gets hit at 89 EMA (same result)
SHORTS (When hyper frame is bearish):
Same process, but inverted
Triangles appear above price instead of below
Look for breakdowns below EMAs instead of bounces off them
Exit when price reclaims 89 and 144 EMAs
Real-World Example Walkthrough
Setup: Trading ES (S&P 500 Futures) on 1H Chart
Chart Configuration:
Timeframe: 1 Hour
Hyper Frame: 240 (4-hour)
Ticker: ES
Pre-Market Check:
Background is light green
Info table shows "🟢 LONG" for Hyper Bias
Decision: Only look for long entries today
9:30 AM - Market Opens
Price dips and touches 3 EMA
Watch for: Reclaim of 5 EMA
9:45 AM - Entry 1 Triggers
Lime triangle appears below bar
Price closed above 5 EMA at $4,550
Action taken:
Enter long 20% position (2 contracts if targeting 10 total)
Stop loss at $4,545 (below 5 EMA)
Risk: $10 per contract × 2 = $20 risk
10:30 AM - Entry 2 Triggers
Price rallied to $4,565, pulls back
Green triangle appears at 21 EMA ($4,555)
Action taken:
Add 30% (3 more contracts, now have 5 total)
Move stop to $4,550 (below 21 EMA)
Current P/L: +$25 ($5 gain on original 2 contracts, break-even on new 3)
11:15 AM - Entry 3 Triggers
Price consolidates at 34 EMA around $4,560
Teal triangle appears as price breaks to $4,568
Action taken:
Add final 50% (5 more contracts, now have 10 total)
Move stop to $4,555 (below 34 EMA)
Current P/L: +$70
1:00 PM - Price Extends
Price rallies to $4,595 (on track)
89 EMA is at $4,575
No action yet, let it run
2:15 PM - Exit 1 Triggers
Price pulls back from $4,600
Orange triangle appears as price breaks below 89 EMA at $4,580
Action taken:
Exit 50% (5 contracts closed at $4,580)
Keep 5 contracts with stop at 89 EMA ($4,575)
Banked: +$150 average gain on closed 5 contracts
2:45 PM - Exit 2 Triggers
Price continues down
Red triangle appears as price breaks 144 EMA at $4,570
Action taken:
Exit remaining 5 contracts at $4,570
Banked: +$100 on remaining 5 contracts
Final Results:
Total gain: $250 on the trade
Initial risk: $50 (if stopped out at Entry 1)
Risk/Reward: 5:1
Time in trade: ~5 hours
Common Questions
"What if I miss Entry 1? Can I still take Entry 2?"
Yes! Each entry is independent. If you miss the 3→5 reclaim, wait for the 21 EMA bounce. You'll start with a 30% position instead of 20%, but that's fine.
Rule: Never chase. Wait for the next EMA setup.
"What if multiple entry signals trigger at the same bar?"
Rare, but possible. If you see both Entry 1 and Entry 2 trigger together:
Take Entry 1 first (20%)
If the next bar confirms Entry 2 is still valid, add 30%
When in doubt, scale in gradually
"The hyper frame is green but I'm seeing short signals?"
Don't take them. The hyper frame is your bias filter. If it says "go long," ignore short setups. They're usually lower probability and will get stopped out.
"Can I use this for swing trading overnight?"
Absolutely. Just switch your hyper frame:
If you're on Daily charts, use Weekly hyper frame
If you're on 4H charts, use Daily hyper frame
Adjust position sizes for overnight risk
"What if the signal appears right at market close?"
Don't chase it. Wait for the next bar (next day) to confirm. Signals that appear in the last 5 minutes are often noise.
"How do I set up alerts?"
Right-click on the chart
Select "Add Alert"
Choose "LazyEMA" from the condition dropdown
Select which signal you want alerts for:
Entry 1: 3→5 Reclaim
Entry 2: 21 EMA Add
Entry 3: 34 EMA Breakout
Exit 1: 89 EMA Break
Exit 2: 144 EMA Break
Click "Create"
Pro tip: Set up all 5 alerts so you never miss a signal.
Position Sizing Guide see
swingtradenotes.substack.com
Critical Rule: Know your total risk BEFORE you take Entry 1. Don't wing it.
Customization Tips
For Day Traders (Scalpers)
Use 5min or 15min charts
Hyper frame: 1H or 4H
Expect 2-4 setups per day
Tighter stops (0.5% risk per entry)
For Swing Traders
Use 4H or Daily charts
Hyper frame: Daily or Weekly
Expect 1-2 setups per week
Wider stops (1-2% risk per entry)
For Position Traders
Use Daily or Weekly charts
Hyper frame: Weekly or Monthly
Expect 1-2 setups per month
Widest stops (2-3% risk per entry)
The "Don't Be Stupid" Checklist
Before taking ANY signal from this script, ask:
✅ Is the hyper frame bias pointing in my direction?
✅ Is the signal clean (not at a weird time or during news)?
✅ Do I know my stop loss level?
✅ Do I know my position size?
✅ Can I afford to lose if this trade fails?
If you answered "no" to ANY of these, skip the trade.
Troubleshooting
"I'm not seeing any signals"
Possible causes:
The "Show Lazy Trader System" toggle is off (turn it on)
Your chart timeframe is too high (try 1H or 4H)
Market is in a tight range (EMAs are compressed)
You need to refresh the chart
"Too many signals, getting whipsawed"
Fixes:
Increase your chart timeframe (go from 15m to 1H)
Switch to a less volatile ticker
Only trade when hyper frame bias is STRONG (not neutral)
Add a minimum bar count between signals
"The info table is covering my price action"
Fix:
Edit the script
Find the line: table.new(position.top_right, ...
Change position.top_right to position.bottom_right or position.top_left
"Signals appear then disappear"
This is normal (repainting). Some signals (especially compression breakouts) can disappear if the next bar reverses. This is why you:
Wait for bar close before acting
Use alerts that only fire on confirmed bars
Don't chase signals mid-bar
Final Thoughts
This script is a decision-making tool, not a crystal ball. It shows you high-probability setups based on EMA dynamics and trend structure. You still need to:
Manage your risk
Choose your position size
Stick to the rules
Accept losses when they happen
The system works when YOU work the system.
Print this guide, tape it next to your monitor, and follow it religiously for 20 trades before making ANY changes.
Good luck, and stay lazy (the smart way).
RV − IV Spread Alert (SPY vs VIX)Realized vs Implied Volatility Spread (RV − IV) for the S&P 500 / SPY.
Plots the daily difference between 30-day realized volatility (SPY) and implied volatility (VIX) in basis points.
Key insight from the research: when the spread turns and stays above ≈ +50 bps, forward returns historically degrade and volatility of returns rises sharply — a useful early-warning regime flag.
Features:
- Clean daily plot of RV − IV in bps
- Horizontal lines at 0, −50 bps and +50 bps
- Red background when spread > +50 bps
- Built-in alert condition that fires once per bar close when spread closes above +50 bps
- Optional “all-clear” alert when it drops back below
Use on SPY or ES1! daily chart. Perfect for anyone wanting a simple notification when the market enters the “risk-on” volatility regime highlighted by Machina Quanta and the original Bali & Hovakimian (2007) paper.
Reversal WaveThis is the type of quantitative system that can get you hated on investment forums, now that the Random Walk Theory is back in fashion. The strategy has simple price action rules, zero over-optimization, and is validated by a historical record of nearly a century on both Gold and the S&P 500 index.
Recommended Markets
SPX (Weekly, Monthly)
SPY (Monthly)
Tesla (Weekly)
XAUUSD (Weekly, Monthly)
NVDA (Weekly, Monthly)
Meta (Weekly, Monthly)
GOOG (Weekly, Monthly)
MSFT (Weekly, Monthly)
AAPL (Weekly, Monthly)
System Rules and Parameters
Total capital: $10,000
We will use 10% of the total capital per trade
Commissions will be 0.1% per trade
Condition 1: Previous Bearish Candle (isPrevBearish) (the closing price was lower than the opening price).
Condition 2: Midpoint of the Body The script calculates the exact midpoint of the body of that previous bearish candle.
• Formula: (Previous Open + Previous Close) / 2.
Condition 3: 50% Recovery (longCondition) The current candle must be bullish (green) and, most importantly, its closing price must be above the midpoint calculated in the previous step.
Once these parameters are met, the system executes a long entry and calculates the exit parameters:
Stop Loss (SL): Placed at the low of the candle that generated the entry signal.
Take Profit (TP): Calculated by projecting the risk distance upward.
• Calculation: Entry Price + (Risk * 1).
Risk:Reward Ratio of 1:1.
About the Profit Factor
In my experience, TradingView calculates profits and losses based on the percentage of movement, which can cause returns to not match expectations. This doesn’t significantly affect trending systems, but it can impact systems with a high win rate and a well-defined risk-reward ratio. It only takes one large entry candle that triggers the SL to translate into a major drop in performance.
For example, you might see a system with a 60% win rate and a 1:1 risk-reward ratio generating losses, even though commissions are under control relative to the number of trades.
My recommendation is to manually calculate the performance of systems with a well-defined risk-reward ratio, assuming you will trade using a fixed amount per trade and limit losses to a fixed percentage.
Remember that, even if candles are larger or smaller in size, we can maintain a fixed loss percentage by using leverage (in cases of low volatility) or reducing the capital at risk (when volatility is high).
Implementing leverage or capital reduction based on volatility is something I haven’t been able to incorporate into the code, but it would undoubtedly improve the system’s performance dramatically, as it would fix a consistent loss percentage per trade, preventing losses from fluctuating with volatility swings.
For example, we can maintain a fixed loss percentage when volatility is low by using the following formula:
Leverage = % of SL you’re willing to risk / % volatility from entry point to exit or SL
And if volatility is high and exceeds the fixed percentage we want to expose per trade (if SL is hit), we could reduce the position size.
For example, imagine we only want to risk 15% per SL on Tesla, where volatility is high and would cause a 23.57% loss. In this case, we subtract 23.57% from 15% (the loss percentage we’re willing to accept per trade), then subtract the result from our usual position size.
23.57% - 15% = 8.57%
Suppose I use $200 per trade.
To calculate 8.57% of $200, simply multiply 200 by 8.57/100. This simple calculation shows that 8.57% equals about $17.14 of the $200. Then subtract that value from $200:
$200 - $17.14 = $182.86
In summary, if we reduced the position size to $182.86 (from the usual $200, where we’re willing to lose 15%), no matter whether Tesla moves up or down 23.57%, we would still only gain or lose 15% of the $200, thus respecting our risk management.
Final Notes
The code is extremely simple, and every step of its development is detailed within it.
If you liked this strategy, which complements very well with others I’ve already published, stay tuned. Best regards.
MeanReversion_tradeALERTOverview The Apex Reversal Predictor v2.5 is a specialized mean reversion strategy designed for scalping high-volatility assets like NQ (Nasdaq), ES (S&P 500), and Crypto. While most indicators chase breakouts, this system hunts for "Liquidity Sweeps"—moments where the market briefly breaks a key level to trap retail traders before snapping back to the true value (VWAP).
This is not just a signal indicator; it is a full Trade Manager that calculates your Entry, Stop Loss, and Take Profit levels automatically based on volatility (ATR).
The Logic: Why This Works Markets act like a rubber band. They can only stretch so far from their average price before snapping back. This script combines three layers of logic to identify these snap-back points:
The Stretch (Sigma Score): Measures how far price is from the VWAP relative to ATR. If the score > 2.0, the "rubber band" is overextended.
The Trap (Liquidity Sweep): Identifies Pivot Highs/Lows. It waits for price to break a pivot (luring in breakout traders) and then immediately reverse (trapping them).
The Exhaustion (RSI): Confirms that momentum is Overbought/Oversold to prevent trading against a strong trend.
Key Features
Dynamic Lines: Automatically draws Blue (Entry), Red (SL), and Green (TP) lines on the chart for active trades.
Smart Targets: Two modes for taking profit:
Mean Reversion: Targets the VWAP line (High Win Rate).
Fixed Ratio: Targets a specific Risk:Reward (e.g., 1:2).
Live Dashboard: Tracks Win Rate, Net Points, and the live "Stretch Score" in the bottom right corner.
Alert Ready: Formatted JSON alerts for easy integration with Discord or trading bots.
How & When to Use (User Guide)
1. Best Timeframes
5-Minute (5m): Best for NQ and volatile stocks (TSLA, NVDA). Filters out 1-minute noise but catches the intraday reversals.
15-Minute (15m): Best for Forex or slower-moving indices (ES).
2. The Setup Checklist Before taking a trade, look at the Dashboard in the bottom right:
Step 1: Check the "Stretch (Sigma)". Is it Orange or Red? This means price is extended and ripe for a reversal. If it's Green, the market is calm—be careful.
Step 2: Wait for the Signal.
"Apex BUY" (Green Label): Price swept a low and closed green.
"Apex SELL" (Red Label): Price swept a high and closed red.
Step 3: Execute. Enter at the close of the signal candle. Set your stop loss at the Red Line provided by the script.
3. Warning / When NOT to Use
Strong Trending Days: If the market is trending heavily (e.g., creating higher highs all day without looking back), do not fight the trend.
News Events: Avoid using this during CPI, FOMC, or NFP releases. The "rubber band" logic breaks during news because volatility expands indefinitely.
Volatility Risk PremiumTHE INSURANCE PREMIUM OF THE STOCK MARKET
Every day, millions of investors face a fundamental question that has puzzled economists for decades: how much should protection against market crashes cost? The answer lies in a phenomenon called the Volatility Risk Premium, and understanding it may fundamentally change how you interpret market conditions.
Think of the stock market like a neighborhood where homeowners buy insurance against fire. The insurance company charges premiums based on their estimates of fire risk. But here is the interesting part: insurance companies systematically charge more than the actual expected losses. This difference between what people pay and what actually happens is the insurance premium. The same principle operates in financial markets, but instead of fire insurance, investors buy protection against market volatility through options contracts.
The Volatility Risk Premium, or VRP, measures exactly this difference. It represents the gap between what the market expects volatility to be (implied volatility, as reflected in options prices) and what volatility actually turns out to be (realized volatility, calculated from actual price movements). This indicator quantifies that gap and transforms it into actionable intelligence.
THE FOUNDATION
The academic study of volatility risk premiums began gaining serious traction in the early 2000s, though the phenomenon itself had been observed by practitioners for much longer. Three research papers form the backbone of this indicator's methodology.
Peter Carr and Liuren Wu published their seminal work "Variance Risk Premiums" in the Review of Financial Studies in 2009. Their research established that variance risk premiums exist across virtually all asset classes and persist over time. They documented that on average, implied volatility exceeds realized volatility by approximately three to four percentage points annualized. This is not a small number. It means that sellers of volatility insurance have historically collected a substantial premium for bearing this risk.
Tim Bollerslev, George Tauchen, and Hao Zhou extended this research in their 2009 paper "Expected Stock Returns and Variance Risk Premia," also published in the Review of Financial Studies. Their critical contribution was demonstrating that the VRP is a statistically significant predictor of future equity returns. When the VRP is high, meaning investors are paying substantial premiums for protection, future stock returns tend to be positive. When the VRP collapses or turns negative, it often signals that realized volatility has spiked above expectations, typically during market stress periods.
Gurdip Bakshi and Nikunj Kapadia provided additional theoretical grounding in their 2003 paper "Delta-Hedged Gains and the Negative Market Volatility Risk Premium." They demonstrated through careful empirical analysis why volatility sellers are compensated: the risk is not diversifiable and tends to materialize precisely when investors can least afford losses.
HOW THE INDICATOR CALCULATES VOLATILITY
The calculation begins with two separate measurements that must be compared: implied volatility and realized volatility.
For implied volatility, the indicator uses the CBOE Volatility Index, commonly known as the VIX. The VIX represents the market's expectation of 30-day forward volatility on the S&P 500, calculated from a weighted average of out-of-the-money put and call options. It is often called the "fear gauge" because it rises when investors rush to buy protective options.
Realized volatility requires more careful consideration. The indicator offers three distinct calculation methods, each with specific advantages rooted in academic literature.
The Close-to-Close method is the most straightforward approach. It calculates the standard deviation of logarithmic daily returns over a specified lookback period, then annualizes this figure by multiplying by the square root of 252, the approximate number of trading days in a year. This method is intuitive and widely used, but it only captures information from closing prices and ignores intraday price movements.
The Parkinson estimator, developed by Michael Parkinson in 1980, improves efficiency by incorporating high and low prices. The mathematical formula calculates variance as the sum of squared log ratios of daily highs to lows, divided by four times the natural logarithm of two, times the number of observations. This estimator is theoretically about five times more efficient than the close-to-close method because high and low prices contain additional information about the volatility process.
The Garman-Klass estimator, published by Mark Garman and Michael Klass in 1980, goes further by incorporating opening, high, low, and closing prices. The formula combines half the squared log ratio of high to low prices minus a factor involving the log ratio of close to open. This method achieves the minimum variance among estimators using only these four price points, making it particularly valuable for markets where intraday information is meaningful.
THE CORE VRP CALCULATION
Once both volatility measures are obtained, the VRP calculation is straightforward: subtract realized volatility from implied volatility. A positive result means the market is paying a premium for volatility insurance. A negative result means realized volatility has exceeded expectations, typically indicating market stress.
The raw VRP signal receives slight smoothing through an exponential moving average to reduce noise while preserving responsiveness. The default smoothing period of five days balances signal clarity against lag.
INTERPRETING THE REGIMES
The indicator classifies market conditions into five distinct regimes based on VRP levels.
The EXTREME regime occurs when VRP exceeds ten percentage points. This represents an unusual situation where the gap between implied and realized volatility is historically wide. Markets are pricing in significantly more fear than is materializing. Research suggests this often precedes positive equity returns as the premium normalizes.
The HIGH regime, between five and ten percentage points, indicates elevated risk aversion. Investors are paying above-average premiums for protection. This often occurs after market corrections when fear remains elevated but realized volatility has begun subsiding.
The NORMAL regime covers VRP between zero and five percentage points. This represents the long-term average state of markets where implied volatility modestly exceeds realized volatility. The insurance premium is being collected at typical rates.
The LOW regime, between negative two and zero percentage points, suggests either unusual complacency or that realized volatility is catching up to implied volatility. The premium is shrinking, which can precede either calm continuation or increased stress.
The NEGATIVE regime occurs when realized volatility exceeds implied volatility. This is relatively rare and typically indicates active market stress. Options were priced for less volatility than actually occurred, meaning volatility sellers are experiencing losses. Historically, deeply negative VRP readings have often coincided with market bottoms, though timing the reversal remains challenging.
TERM STRUCTURE ANALYSIS
Beyond the basic VRP calculation, sophisticated market participants analyze how volatility behaves across different time horizons. The indicator calculates VRP using both short-term (default ten days) and long-term (default sixty days) realized volatility windows.
Under normal market conditions, short-term realized volatility tends to be lower than long-term realized volatility. This produces what traders call contango in the term structure, analogous to futures markets where later delivery dates trade at premiums. The RV Slope metric quantifies this relationship.
When markets enter stress periods, the term structure often inverts. Short-term realized volatility spikes above long-term realized volatility as markets experience immediate turmoil. This backwardation condition serves as an early warning signal that current volatility is elevated relative to historical norms.
The academic foundation for term structure analysis comes from Scott Mixon's 2007 paper "The Implied Volatility Term Structure" in the Journal of Derivatives, which documented the predictive power of term structure dynamics.
MEAN REVERSION CHARACTERISTICS
One of the most practically useful properties of the VRP is its tendency to mean-revert. Extreme readings, whether high or low, tend to normalize over time. This creates opportunities for systematic trading strategies.
The indicator tracks VRP in statistical terms by calculating its Z-score relative to the trailing one-year distribution. A Z-score above two indicates that current VRP is more than two standard deviations above its mean, a statistically unusual condition. Similarly, a Z-score below negative two indicates VRP is unusually low.
Mean reversion signals trigger when VRP reaches extreme Z-score levels and then shows initial signs of reversal. A buy signal occurs when VRP recovers from oversold conditions (Z-score below negative two and rising), suggesting that the period of elevated realized volatility may be ending. A sell signal occurs when VRP contracts from overbought conditions (Z-score above two and falling), suggesting the fear premium may be excessive and due for normalization.
These signals should not be interpreted as standalone trading recommendations. They indicate probabilistic conditions based on historical patterns. Market context and other factors always matter.
MOMENTUM ANALYSIS
The rate of change in VRP carries its own information content. Rapidly rising VRP suggests fear is building faster than volatility is materializing, often seen in the early stages of corrections before realized volatility catches up. Rapidly falling VRP indicates either calming conditions or rising realized volatility eating into the premium.
The indicator tracks VRP momentum as the difference between current VRP and VRP from a specified number of bars ago. Positive momentum with positive acceleration suggests strengthening risk aversion. Negative momentum with negative acceleration suggests intensifying stress or rapid normalization from elevated levels.
PRACTICAL APPLICATION
For equity investors, the VRP provides context for risk management decisions. High VRP environments historically favor equity exposure because the market is pricing in more pessimism than typically materializes. Low or negative VRP environments suggest either reducing exposure or hedging, as markets may be underpricing risk.
For options traders, understanding VRP is fundamental to strategy selection. Strategies that sell volatility, such as covered calls, cash-secured puts, or iron condors, tend to profit when VRP is elevated and compress toward its mean. Strategies that buy volatility tend to profit when VRP is low and risk materializes.
For systematic traders, VRP provides a regime filter for other strategies. Momentum strategies may benefit from different parameters in high versus low VRP environments. Mean reversion strategies in VRP itself can form the basis of a complete trading system.
LIMITATIONS AND CONSIDERATIONS
No indicator provides perfect foresight, and the VRP is no exception. Several limitations deserve attention.
The VRP measures a relationship between two estimates, each subject to measurement error. The VIX represents expectations that may prove incorrect. Realized volatility calculations depend on the chosen method and lookback period.
Mean reversion tendencies hold over longer time horizons but provide limited guidance for short-term timing. VRP can remain extreme for extended periods, and mean reversion signals can generate losses if the extremity persists or intensifies.
The indicator is calibrated for equity markets, specifically the S&P 500. Application to other asset classes requires recalibration of thresholds and potentially different data sources.
Historical relationships between VRP and subsequent returns, while statistically robust, do not guarantee future performance. Structural changes in markets, options pricing, or investor behavior could alter these dynamics.
STATISTICAL OUTPUTS
The indicator presents comprehensive statistics including current VRP level, implied volatility from VIX, realized volatility from the selected method, current regime classification, number of bars in the current regime, percentile ranking over the lookback period, Z-score relative to recent history, mean VRP over the lookback period, realized volatility term structure slope, VRP momentum, mean reversion signal status, and overall market bias interpretation.
Color coding throughout the indicator provides immediate visual interpretation. Green tones indicate elevated VRP associated with fear and potential opportunity. Red tones indicate compressed or negative VRP associated with complacency or active stress. Neutral tones indicate normal market conditions.
ALERT CONDITIONS
The indicator provides alerts for regime transitions, extreme statistical readings, term structure inversions, mean reversion signals, and momentum shifts. These can be configured through the TradingView alert system for real-time monitoring across multiple timeframes.
REFERENCES
Bakshi, G., and Kapadia, N. (2003). Delta-Hedged Gains and the Negative Market Volatility Risk Premium. Review of Financial Studies, 16(2), 527-566.
Bollerslev, T., Tauchen, G., and Zhou, H. (2009). Expected Stock Returns and Variance Risk Premia. Review of Financial Studies, 22(11), 4463-4492.
Carr, P., and Wu, L. (2009). Variance Risk Premiums. Review of Financial Studies, 22(3), 1311-1341.
Garman, M. B., and Klass, M. J. (1980). On the Estimation of Security Price Volatilities from Historical Data. Journal of Business, 53(1), 67-78.
Mixon, S. (2007). The Implied Volatility Term Structure of Stock Index Options. Journal of Empirical Finance, 14(3), 333-354.
Parkinson, M. (1980). The Extreme Value Method for Estimating the Variance of the Rate of Return. Journal of Business, 53(1), 61-65.
Relative Strength Line by QuantxThe Relative Strength Line compares the price performance of a stock against a benchmark index (e.g., NIFTY, S&P 500, Bank Nifty, etc.).
It does not indicate momentum of the stock itself — it indicates whether the stock is outperforming or underperforming the market.
🔍 How To Read It
RSL Behavior Meaning
RSL moving up Stock is outperforming the benchmark (strong leadership)
RSL moving down Stock is underperforming the benchmark (weakness vs market)
RSL breaking above previous highs Strong institutional demand, leadership candidate
RSL trending sideways Stock is performing similar to the index (no leadership)
📈 Why It Matters
Institutional traders and top-performing strategies focus on stocks showing relative strength BEFORE price breakout.
A stock making new RSL highs even before a price breakout often becomes a top performer in the coming trend.
🧠 Core Trading Edge
You don’t need to predict the market.
Just identify which stocks are being accumulated and leading the market right now — that’s what the Relative Strength Line reveals.






















