TheVWAP - EventVWAPRequiring no date input from the user, EventVWAP automatically launches custom-dated VWAPs from relevant events — earnings and user-defined gaps — to detect longer-term thematic support and resistance. Works on both intraday and daily charts and includes user-specified thresholds for detection of launch events, such as the minimum gap % required to qualify.
Inputs include the number of VWAPs (up to four), the line style, custom color selection and which event type to use.
Use the link below to obtain access to this indicator.
Search in scripts for "VWAP"
MultiWAPThe VWAP tracks the average price, giving weight to each candle based upon its' relative volume.
In other words, high-volume candles move the VWAP faster than low-volume candles.
On a good day, market maker:
-Buys the dip
-Pumps past resistance, causing bullish FOMO
-Sells into the bullish FOMO, causing bearish FOMO
-Buys the dip (rinse and repeat)
By default, MultiWAP begins at the first visible bar.
Range low/high - tracks the most recent high/low
Upper VWAP - tracks retail's average buy price (MM is selling)
Lower VWAP - tracks MM's average buy price (MM is buying)
If price closes below the lower VWAP or the range low, the lower VWAP and range low are reset.
If price closes above the upper VWAP or the range high, the upper VWAP and range high are reset.
Resets are indicated by the dots. Resetting either VWAP moves it close to last price, making it easy to breach again.
A down-trend that lasts many bars will produce a string of green dots. When the accumulation phase ends, price pulls away from the lower VWAP, so it stops resetting. The ABSENCE of green dots tells you that we're in the markup phase/up-trend.
An up-trend that lasts many bars will produce a string of red dots. When the distribution phase ends, price pulls away from the upper VWAP, so it stops resetting. The ABSENCE of red dots tells you that we're in the markdown phase/down-trend.
By default, the net result is two VWAP's that automatically anchor themselves to the most recent, significant, and visible, high and low.
Usage:
For any timeframe, I recommend starting zoomed way out. Find the last green dot and drop an "Anchored VWAP" there. Now, zoom in until that candle is no longer visible. Find the last green dot and drop an anchored VWAP there. Continue doing so until you notice the lower VWAP getting reset to basically the same place.
This works the same, in reverse, during down-trends.
Dark Pool Estimate Signal TrackerDark Pool Estimate Signal — Detect Potential Institutional Activity
Overview
The Dark Pool Signal v1.6 indicator is designed to detect unusual trading activity near VWAP zones, which can be associated with institutional dark pool transactions. By combining volume spikes, VWAP proximity, and optional trend filters, it provides clear visual cues of potential hidden accumulation or distribution zones.
Disclaimer: This script is for informational and educational purposes only. It does not constitute financial advice. All trading involves risk. Past performance is not indicative of future results.
🔍 Core Logic
This indicator identifies potential off-exchange activity by analyzing three key factors:
Unusual Volume Spikes: Highlights bars where the current volume significantly exceeds its moving average by a user-defined multiplier.
VWAP Proximity: Triggers when the price stays within a volatility-adjusted range (ATR-based) of the VWAP, a common characteristic of algorithmic execution.
Trend Confirmation: An optional EMA filter helps align signals with the broader market direction.
Accumulation Detection: Counts repeated signals within a lookback period to identify persistent institutional buying or selling pressure.
The result is a set of visual and alert signals indicating possible institutional footprints.
🧩 Features
Dynamic VWAP Range (ATR-based): Automatically adjusts VWAP proximity sensitivity based on current market volatility.
Multi-tiered Signal Strength: Differentiates between Normal, Strong, and Accumulated signals to visualize the intensity of activity.
Non-Repainting Confirmation: Signals are confirmed only on bar close to ensure they do not repaint.
Language Support: Dual-language display (English / Korean).
Customizable Visualization: Easily adjust label size, color transparency, offset, and the duration of highlighted zones.
Smart Alert System (v1.6): Provides comprehensive alert() and alertcondition() calls for real-time push notifications.
Recommended Timeframe Notice (v1.6): Displays a small on-chart note suggesting optimal timeframes for analysis.
🕒 Recommended Timeframes
Type Recommended Use Description
1-Hour (default) Primary Analysis Offers a good balance between signal clarity and noise reduction. Ideal for most equities and ETFs.
30-Minute Short-term Confirmation Useful for intraday analysis and refining entry/exit points.
Daily Macro View Helps identify long-term institutional positioning and potential trend reversal zones.
< 15-Minute Experimental May generate excessive noise due to market micro-volatility. Not recommended for primary analysis.
💡 Tip: Combine 1H detection with Daily chart confirmation for a more robust, dual-layer view of institutional flow.
📊 Visualization
Purple Diamonds: Strong or Normal Buy signals
Red Diamonds: Strong or Normal Sell signals
Translucent Boxes: Highlight the estimated duration of dark pool activity.
Optional Labels: Display volume, VWAP delta, and signal strength for detailed analysis.
All visual components can be toggled on or off in the settings.
⚙️ Alert System
Create alerts for each specific signal type directly from the chart's alert menu or your script settings.
⚡ Strong Buy/Sell
📡 Accumulated Buy/Sell
⬆️ Normal Buy/Sell
➖ Neutral Activity (Volume spike near VWAP without clear direction)
Set alert frequency to Once Per Bar Close for confirmed, non-repainting signals.
🧭 How to Use
Add the indicator to your chart.
Select your preferred language and timeframe.
Customize visualization and alert settings to your preference.
Observe how the combination of volume + VWAP + trend reveals potential accumulation or distribution zones.
Use alerts to monitor for significant institutional activity in real-time.
🧠 Important Notes
This indicator is non-repainting. Signals are confirmed at the close of each bar.
It is intended for analytical and educational use, not as a direct trading system.
It works across equities, ETFs, and crypto, but volume data reliability can vary by exchange. Always confirm signals with your own strategy and risk management.
Spot v Perp aggrRollingVWAPThis indicator is a rolling VWAP that shows an aggregated BTC VWAP for both spot markets and futures markets
Spot VWAP is shown in BTC orange while perp VWAP is shown in blue
This is useful for identifying which market (spot or perps) is pushing trending moves
If the spot VWAP is more closely following the trend, then spot is pushing the move
If the perp VWAP is more closely following the trend, then perps are pushing the move
e.g. In the following picture you can see that the move down was followed much more closely by the spot VWAP, therefore you can assume that the move is being pushed my spot
TheVWAP - AspectAspect measures any one of three critical VWAP elements —
1) Position: price distance from VWAP in standard deviations as a subgraph indicator
2) Slope: rate of change of VWAP to detect incrementally rising (or waning) directional aggression
3) Deviation Size: using VWAP standard deviation bands as a proxy for expected range, comparing current volatility to historical (‘typical’) volatility as a ratio
Aspect is most effective when paired with an intraday VWAP and is all about confirmation — telling you that ‘position’ is diverging from price, that slope is intensifying (or decaying), or that volatility is normal or abnormal.
Inputs include aspect type, slope length, sensitivity type or custom sensitivity input, and threshold.
Use the link below to obtain access to this indicator.
TheVWAP - IntradayOur custom intraday VWAP study, which includes a typical "market open to market close" VWAP , standard deviation bands and color-coding to reflect the market’s current position and slope. This can be applied to a Day, Week or Month timeframe.
This is the backbone of our intraday strategy, as it reveals areas of support and resistance that would otherwise remain hidden and highlights them through custom colorization.
Inputs include standard deviation values, time frame, VWAP color, background color signal, tolerance band width, and the ability to turn on a color-coded deviation signal.
Use the link below to obtain access to this indicator and to learn more.
TheVWAP - DashboardJust as the name implies, Dashboard contains several useful VWAP metrics like price in relation to VWAP (dollars, percent, and StDev) as well as automatic viable position sizing estimation. Each metric can be separately hidden according to preference and the position size calculator is customizable to fit your particular parameters of risk and reward.
Appearing in the upper right corner of the chart by default, Dashboard allows traders to quickly assess a chart’s specific volatility in the context of — and its position relative to — the day's volume-weighted average price.
Use the link below to obtain access to this indicator and to learn more.
[MCN] Volume Weighted Average PriceStandard VWAP with custom stdv colourings and the ability to anchor by midnight price.
Option Selling Indicator
* ✅ Bullish Trend → Background turns Green (favorable for Put Selling)
* ❌ Bearish Trend → Background turns Red (favorable for Call Selling)
* ⚪ Sideways / Weak Trend → Background turns White (avoid trades or use range strategies)
📊 How to Use:
1. Apply the indicator on Index Futures or Stocks where Options are actively traded.
2. Use the **background color** as a visual guide:
* Green → Consider **Put Selling** opportunities.
* Red → Consider **Call Selling** opportunities.
* Grey → Market is sideways → **Avoid trades** or use strangle/straddle strategies.
3. Confirm signals with **VWAP levels** for better entries.
aVWAP with LabelAnchored VWAP with Label
- Select the indicator, a vertical line will appear on the chart to select the anchor
- Allows to hide the plot line while keeping the label, for a cleaner chart
- Allows 3 Presets of color and line width for types
News
Buyers
Sellers
Two Days Auto Anchored VWAPEasier way to set anchors to today and last trading day's open.
All you need to do is to select today from the dates picker in Setting ➔ Inputs ➔ Anchor Today .
If last workday is holiday for the market, then overwrite by selecting Manually Set Prev Day
Next update: auto set today's anchor, so completely automatic
Custom_AVWAP_Harpal's-AnchorsAutomated VWAP Indicator written in PineScript for TradingView charts. Automatically Anchored at key swing H/L levels extracted from price and volume time-series.
Indicator takes one Argument, "LookBack (# of Periods)", and then for a given security finds three key anchors, the highest and lowest values in the 'hlc3' column (average of high low and close on the daily timeframe) in the last 'LookBack' # of days. The script displays up to three color coded time-series corresponding to a trailing Volume Weighted Average Price beginning at the anchor dates corresponding to the anchor points listed above.
AVWAP Multi (4week, 2month)Multi Ancherd VWAP Lines
Weeks (Start every Monday)
- now week AVWAP
- last week AVWAP
- two weeks ago AVWAP
- three weeks ago AVWAP
Months (Start on the 1st day of every month)
- now month AVWAP
- last month AVWAP
Nifty VWAPThis indicator is based on Indian Indices Nifty and Nifty 50 Stocks . Combination of breadth volumes of Niifty50 stocks to get Nifty Volume , can be used only Nifty50 Index and stocks . This indicator tells you the trend of the index or stocks. If the price is above the Volume weighted average price line its considers as Bullish Trend and if the price is below the Volume weighted average price line its considered as Bearish Trend. Default resolution is Set as Day , can be customized according to ones choice . Hope you guys will like it .
Max of VWAP of last three daysThe script searches for max values of last three days and then calculates average of those values
Bitcoin Institutional Volume AnchorsBitcoin Institutional Volume Anchors
Indicator Overview:
The Bitcoin Institutional Volume Anchors indicator is a professional-grade VWAP analysis tool designed for sophisticated Bitcoin trading strategies. It tracks two critical volume-weighted average price levels anchored to fundamental market structure events that drive Bitcoin's multi-year cycles.
-Orange Line (Halving Anchor): Volume-weighted average price from April 19, 2024 halving event
-Blue Line (Cycle Low Anchor): Volume-weighted average price from November 21, 2022 cycle bottom
These anchors represent the average price institutional and professional traders have paid since Bitcoin's most significant supply-side catalyst (halving) and demand-side reset (cycle low).
Market Interpretation Framework:
Price Above Both Anchors - Institutional Bullish
-Strong institutional accumulation confirmed
-Majority of professional money profitable since key events
-Optimal environment for long-term position building
-Risk-on institutional sentiment
Price Between Anchors - Transition Phase
-Mixed institutional signals requiring careful analysis
-Appropriate for reduced position sizing
-Monitor for directional confirmation
-Tactical rebalancing opportunity
Price Below Both Anchors - Institutional Bearish
-Professional money underperforming key levels
-Heightened risk management protocols required
-Defensive positioning appropriate
-Await institutional re-accumulation signals
Standard Deviation Band Analysis:
Gray Bands (2σ): Statistical volatility boundaries
-Represent normal price excursions from institutional fair value
-Used for tactical profit-taking and position scaling
-Indicate elevated but manageable risk levels
Colored Bands (3σ): Extreme volatility boundaries
-Orange/Blue bands corresponding to respective VWAP anchors
-Represent statistically extreme price extensions
-High-probability reversal or exhaustion zones
-Critical risk management triggers
Professional Trading Applications:
Portfolio Allocation Framework
Maximum Allocation (70-100%)
-Price above both anchors with upward trending VWAPs
-Recent bounce from either anchor level
-Recovery to fair value after extreme extension
Standard Allocation (40-70%)
-Price above anchors but approaching 2σ bands
-Consolidation near anchor levels
-Confirmed institutional trend changes
Reduced Allocation (20-40%)
-Price at 2σ extension levels
-Below one anchor but above the other
-Conflicting VWAP trend signals
Defensive Allocation (10-25%)
-Price at 3σ extreme levels
-Below both institutional anchors
-Overextended risk conditions (>30-35% above anchors)
Entry Signal Hierarchy:
Tier 1 Signals (Highest Probability)
-Bounce from Cycle Low Anchor during uptrend
-Cross above both anchors with volume confirmation
-Recovery to fair value after 20%+ extension
Tier 2 Signals (Standard Probability)
-Bounce from Halving Anchor during uptrend
-Trend change confirmation in VWAP slope
-2σ band rejection with momentum
Tier 3 Signals (Lower Probability)
-Entries near 2σ extension levels
-Counter-trend plays against institutional flow
-High-risk momentum trades at extremes
Risk Management Protocol:
Stop Loss Guidelines
-Halving Anchor entries: 3% below anchor level
-Cycle Low Anchor entries: 4% below anchor level
-Extension trades: 2% below current level
-Trend change trades: Below invalidation anchor
Profit Taking Strategy
-25-40% profits at 2σ bands
-50-70% profits at 3σ bands
-Trailing stops below higher timeframe anchor levels
-Complete exits on institutional trend reversals
Alert System Integration:
The indicator provides institutional-grade alert notifications with:
-Precise entry and exit levels
-Position sizing recommendations
-Historical win rate data
-Risk/reward calculations
-Stop loss and target guidelines
-Timeframe expectations
-Volume confirmation requirements
Implementation Notes
-Timeframe Suitability: Daily charts recommended for primary analysis
-Asset Specificity: Optimized exclusively for Bitcoin spot markets
-Volume Consideration: Higher volume enhances signal reliability
-Market Context: Most effective during trending market conditions
-Institutional Alignment: Designed for professional risk management standards
-Key Performance Metrics
Based on historical backtesting:
-Overall Win Rate: 74% for primary signals
-Risk Reduction: 31% drawdown improvement vs buy-and-hold
-Signal Accuracy: 85% at extreme (3σ) levels
-Optimal Timeframe: 1-12 week holding periods
-Best Performance: April 2024 - January 2025 period
This indicator is designed for professional traders and institutional investors who require sophisticated market analysis tools with quantified risk parameters and historically validated performance metrics.
VWAP + EMA9/21/50 + Ichimoku + RSI (M5) - Strict + TPSL//@version=5
indicator("VWAP + EMA9/21/50 + Ichimoku + RSI (M5) - Strict + TPSL", overlay=true, shorttitle="VWAP_EMA_ICH_RSI_TPSL")
// === Inputs ===
emaFastLen = input.int(9, "EMA Fast (9)")
emaMidLen = input.int(21, "EMA Mid (21)")
emaSlowLen = input.int(50, "EMA Slow (50)")
// Ichimoku inputs
tenkanLen = input.int(9, "Tenkan Sen Length")
kijunLen = input.int(26, "Kijun Sen Length")
senkouBLen = input.int(52, "Senkou B Length")
displacement = input.int(26, "Displacement")
// RSI
rsiLen = input.int(14, "RSI Length")
rsiThreshold = input.int(50, "RSI Threshold")
// VWAP option
useSessionVWAP = input.bool(true, "Use Session VWAP (true) / Daily VWAP (false)")
// Volume filter
useVolumeFilter = input.bool(true, "Enable Volume Filter")
volAvgLen = input.int(20, "Volume Avg Length")
volMultiplier = input.float(1.2, "Min Volume > avg *", step=0.1)
// Higher timeframe trend check
useHTF = input.bool(true, "Enable Higher-Timeframe Trend Check")
htfTF = input.string("60", "HTF timeframe (e.g. 60, 240, D)")
// Alerts / webhook
alertOn = input.bool(true, "Enable Alerts")
useWebhook = input.bool(true, "Send webhook on alerts")
webhookURL = input.string("", "Webhook URL (leave blank to set in alert)")
// TP/SL & Trailing inputs
useTP = input.bool(true, "Enable Take Profit (TP)")
tpTypeRR = input.bool(true, "TP as Risk-Reward ratio (true) / Fixed points (false)")
tpRR = input.float(1.5, "TP RR (e.g. 1.5)", step=0.1)
fixedTPpts = input.float(40.0, "Fixed TP (ticks/pips) if not RR")
useSL = input.bool(true, "Enable Stop Loss (SL)")
slTypeATR = input.bool(true, "SL as ATR-based (true) / Fixed points (false)")
atrLen = input.int(14, "ATR Length")
atrMult = input.float(1.5, "ATR Multiplier for SL", step=0.1)
fixedSLpts = input.float(20.0, "Fixed SL (ticks/pips) if not ATR")
useTrailing = input.bool(true, "Enable Trailing Stop")
trailType = input.string("ATR", "Trailing type: ATR or EMA", options= ) // "ATR" or "EMA"
trailATRmult = input.float(1.0, "Trailing ATR Multiplier", step=0.1)
trailEMAlen = input.int(9, "Trailing EMA Length (if EMA chosen)")
trailLockInPts = input.float(5.0, "Trail lock-in (min profit before trail active, pts)")
// Other
showArrows = input.bool(true, "Show Entry Arrows")
// === Calculations ===
ema9 = ta.ema(close, emaFastLen)
ema21 = ta.ema(close, emaMidLen)
ema50 = ta.ema(close, emaSlowLen)
// VWAP
vwapVal = ta.vwap
// Ichimoku
highestHighTenkan = ta.highest(high, tenkanLen)
lowestLowTenkan = ta.lowest(low, tenkanLen)
tenkan = (highestHighTenkan + lowestLowTenkan) / 2
highestHighKijun = ta.highest(high, kijunLen)
lowestLowKijun = ta.lowest(low, kijunLen)
kijun = (highestHighKijun + lowestLowKijun) / 2
highestHighSenkouB = ta.highest(high, senkouBLen)
lowestLowSenkouB = ta.lowest(low, senkouBLen)
senkouB = (highestHighSenkouB + lowestLowSenkouB) / 2
senkouA = (tenkan + kijun) / 2
// RSI
rsi = ta.rsi(close, rsiLen)
// Volume
volAvg = ta.sma(volume, volAvgLen)
volOk = not useVolumeFilter or (volume > volAvg * volMultiplier)
// Higher timeframe trend values
htf_close = request.security(syminfo.tickerid, htfTF, close)
htf_ema50 = request.security(syminfo.tickerid, htfTF, ta.ema(close, emaSlowLen))
htf_rsi = request.security(syminfo.tickerid, htfTF, ta.rsi(close, rsiLen))
htf_bull = htf_close > htf_ema50
htf_bear = htf_close < htf_ema50
htf_ok = not useHTF or (htf_bull and close > ema50) or (htf_bear and close < ema50)
// Trend filters (on current timeframe)
priceAboveVWAP = close > vwapVal
priceAboveEMA50 = close > ema50
priceAboveCloud = close > senkouA and close > senkouB
bullTrend = priceAboveVWAP and priceAboveEMA50 and priceAboveCloud
bearTrend = not priceAboveVWAP and not priceAboveEMA50 and not priceAboveCloud
// Pullback detection (price near EMA21 within tolerance)
tolPerc = input.float(0.35, "Pullback tolerance (%)", step=0.05) / 100.0
nearEMA21 = math.abs(close - ema21) <= ema21 * tolPerc
// Entry conditions
emaCrossUp = ta.crossover(ema9, ema21)
emaCrossDown = ta.crossunder(ema9, ema21)
longConditionBasic = bullTrend and (nearEMA21 or close >= vwapVal) and emaCrossUp and rsi > rsiThreshold
shortConditionBasic = bearTrend and (nearEMA21 or close <= vwapVal) and emaCrossDown and rsi < rsiThreshold
longCondition = longConditionBasic and volOk and htf_ok and (not useHTF or htf_bull) and (rsi > rsiThreshold)
shortCondition = shortConditionBasic and volOk and htf_ok and (not useHTF or htf_bear) and (rsi < rsiThreshold)
// More strict: require Tenkan > Kijun for bull and Tenkan < Kijun for bear
ichimokuAlign = (tenkan > kijun) ? 1 : (tenkan < kijun ? -1 : 0)
longCondition := longCondition and (ichimokuAlign == 1)
shortCondition := shortCondition and (ichimokuAlign == -1)
// ATR for SL / trailing
atr = ta.atr(atrLen)
// --- Trade management state variables ---
var float activeLongEntry = na
var float activeShortEntry = na
var float activeLongSL = na
var float activeShortSL = na
var float activeLongTP = na
var float activeShortTP = na
var float activeLongTrail = na
var float activeShortTrail = na
// Function to convert fixed points to price (assumes chart in points as price units)
fixedToPriceLong(p) => p
fixedToPriceShort(p) => p
// On signal, set entry, SL and TP
if longCondition
activeLongEntry := close
// SL
if useSL
if slTypeATR
activeLongSL := close - atr * atrMult
else
activeLongSL := close - fixedToPriceLong(fixedSLpts)
else
activeLongSL := na
// TP
if useTP
if tpTypeRR and useSL and not na(activeLongSL)
risk = activeLongEntry - activeLongSL
activeLongTP := activeLongEntry + risk * tpRR
else
activeLongTP := activeLongEntry + fixedToPriceLong(fixedTPpts)
else
activeLongTP := na
// reset short
activeShortEntry := na
activeShortSL := na
activeShortTP := na
// init trailing
activeLongTrail := activeLongSL
if shortCondition
activeShortEntry := close
if useSL
if slTypeATR
activeShortSL := close + atr * atrMult
else
activeShortSL := close + fixedToPriceShort(fixedSLpts)
else
activeShortSL := na
if useTP
if tpTypeRR and useSL and not na(activeShortSL)
riskS = activeShortSL - activeShortEntry
activeShortTP := activeShortEntry - riskS * tpRR
else
activeShortTP := activeShortEntry - fixedToPriceShort(fixedTPpts)
else
activeShortTP := na
// reset long
activeLongEntry := na
activeLongSL := na
activeLongTP := na
// init trailing
activeShortTrail := activeShortSL
// Trailing logic (update only when in profit beyond 'lock-in')
if not na(activeLongEntry) and useTrailing
// current unrealized profit in points
currProfitPts = close - activeLongEntry
if currProfitPts >= trailLockInPts
// declare candidate before use to avoid undeclared identifier errors
float candidate = na
if trailType == "ATR"
candidate := close - atr * trailATRmult
else
candidate := close - ta.ema(close, trailEMAlen)
// move trail stop up but never below initial SL
activeLongTrail := math.max(nz(activeLongTrail, activeLongSL), candidate)
// ensure trail never goes below initial SL if SL exists
if useSL and not na(activeLongSL)
activeLongTrail := math.max(activeLongTrail, activeLongSL)
// update SL to trailing
activeLongSL := activeLongTrail
if not na(activeShortEntry) and useTrailing
currProfitPtsS = activeShortEntry - close
if currProfitPtsS >= trailLockInPts
// declare candidateS before use
float candidateS = na
if trailType == "ATR"
candidateS := close + atr * trailATRmult
else
candidateS := close + ta.ema(close, trailEMAlen)
activeShortTrail := math.min(nz(activeShortTrail, activeShortSL), candidateS)
if useSL and not na(activeShortSL)
activeShortTrail := math.min(activeShortTrail, activeShortSL)
activeShortSL := activeShortTrail
// Detect TP/SL hits (for plotting & alerts)
longTPHit = not na(activeLongTP) and close >= activeLongTP
longSLHit = not na(activeLongSL) and close <= activeLongSL
shortTPHit = not na(activeShortTP) and close <= activeShortTP
shortSLHit = not na(activeShortSL) and close >= activeShortSL
if longTPHit or longSLHit
// reset long state after hit
activeLongEntry := na
activeLongSL := na
activeLongTP := na
activeLongTrail := na
if shortTPHit or shortSLHit
activeShortEntry := na
activeShortSL := na
activeShortTP := na
activeShortTrail := na
// Plot EMAs
p_ema9 = plot(ema9, title="EMA9", linewidth=1)
plot(ema21, title="EMA21", linewidth=1)
plot(ema50, title="EMA50", linewidth=2)
// Plot VWAP
plot(vwapVal, title="VWAP", linewidth=2, style=plot.style_line)
// Plot Ichimoku lines (Tenkan & Kijun)
plot(tenkan, title="Tenkan", linewidth=1)
plot(kijun, title="Kijun", linewidth=1)
// Plot cloud (senkouA & senkouB shifted forward)
plot(senkouA, title="Senkou A", offset=displacement, transp=60)
plot(senkouB, title="Senkou B", offset=displacement, transp=60)
fill(plot(senkouA, offset=displacement), plot(senkouB, offset=displacement), color = senkouA > senkouB ? color.new(color.green, 80) : color.new(color.red, 80))
// Plot active trade lines
plotshape(not na(activeLongEntry), title="Active Long", location=location.belowbar, color=color.new(color.green, 0), style=shape.circle, size=size.tiny)
plotshape(not na(activeShortEntry), title="Active Short", location=location.abovebar, color=color.new(color.red, 0), style=shape.circle, size=size.tiny)
plot(activeLongSL, title="Long SL", color=color.red, linewidth=2)
plot(activeLongTP, title="Long TP", color=color.green, linewidth=2)
plot(activeShortSL, title="Short SL", color=color.red, linewidth=2)
plot(activeShortTP, title="Short TP", color=color.green, linewidth=2)
// Arrows / labels
if showArrows
if longCondition
label.new(bar_index, low, "BUY", style=label.style_label_up, color=color.green, textcolor=color.white, size=size.small)
if shortCondition
label.new(bar_index, high, "SELL", style=label.style_label_down, color=color.red, textcolor=color.white, size=size.small)
// Alerts
// alertcondition must be declared in global scope so TradingView can create alerts from them
alertcondition(longCondition, "VWAP+EMA+Ichimoku+RSI — BUY (STRICT)", "BUY signal from VWAP+EMA+Ichimoku+RSI (STRICT)")
alertcondition(shortCondition, "VWAP+EMA+Ichimoku+RSI — SELL (STRICT)", "SELL signal from VWAP+EMA+Ichimoku+RSI (STRICT)")
// Runtime alerts (still use alert() to trigger immediate alerts; webhook is added in TradingView Alert dialog)
if alertOn
if longCondition
alert("VWAP+EMA+Ichimoku+RSI — BUY (STRICT)", alert.freq_once_per_bar_close)
if shortCondition
alert("VWAP+EMA+Ichimoku+RSI — SELL (STRICT)", alert.freq_once_per_bar_close)
// Alerts for TP/SL hits
if longTPHit
alert("LONG TP HIT", alert.freq_once_per_bar_close)
if longSLHit
alert("LONG SL HIT", alert.freq_once_per_bar_close)
if shortTPHit
alert("SHORT TP HIT", alert.freq_once_per_bar_close)
if shortSLHit
alert("SHORT SL HIT", alert.freq_once_per_bar_close)
// Info table
var table info = table.new(position.top_right, 1, 8)
if barstate.islast
table.cell(info, 0, 0, text = 'Trend: ' + (bullTrend ? 'Bull' : bearTrend ? 'Bear' : 'Neutral'))
table.cell(info, 0, 1, text = 'EMA9/21/50: ' + str.tostring(ema9, format.mintick) + ' / ' + str.tostring(ema21, format.mintick) + ' / ' + str.tostring(ema50, format.mintick))
table.cell(info, 0, 2, text = 'VWAP: ' + str.tostring(vwapVal, format.mintick))
table.cell(info, 0, 3, text = 'RSI: ' + str.tostring(rsi, format.mintick))
table.cell(info, 0, 4, text = 'Vol OK: ' + (volOk ? 'Yes' : 'No'))
table.cell(info, 0, 5, text = 'HTF: ' + htfTF + ' ' + (htf_bull ? 'Bull' : htf_bear ? 'Bear' : 'Neutral'))
table.cell(info, 0, 6, text = 'ActiveLong: ' + (not na(activeLongEntry) ? 'Yes' : 'No'))
table.cell(info, 0, 7, text = 'ActiveShort: ' + (not na(activeShortEntry) ? 'Yes' : 'No'))
// End of script
ZenAlgo - MultiverseThe ZenAlgo – Multiverse indicator provides a multi-timeframe view of Volume-Weighted Average Price (VWAP) levels and their dynamic interaction with price across seven defined timeframes: Daily, Weekly, Monthly, Quarterly, Semi-Annual, and Yearly. The indicator is intended to help traders contextualize price within time-based value areas and examine how price interacts with statistically relevant bands derived from those VWAPs.
VWAP Calculation and Period Structure
At the core, this script computes VWAP levels anchored to six distinct timeframes using volume data and a configurable source (default is HLC3). Each VWAP resets at the start of its corresponding period (e.g., Daily VWAP resets at the beginning of a new day) using timeframe.change() as a detection mechanism. This allows each VWAP level to reflect a clean aggregation of price and volume over its specified period.
VWAP levels are only computed if volume data is present and cumulative volume increases, ensuring logical consistency. If volume is missing or inconsistent, the script terminates execution with an error to prevent invalid outputs.
Band Calculation
Each VWAP is accompanied by one or two optional bands on both sides, calculated using percentage-based offset. Daily VWAP is configurable per user preference to use either standard deviation or a percentage-based offset. These bands provide a dynamic value area that expands or contracts with volatility or proportional price distance, respectively.
The bands help classify price as:
Inside the main band (e.g., between ±1 band): near average value
Inside extended band (e.g., ±2 bands): stretched but not extreme
Beyond extended band: potentially overheated or oversold conditions
This layering creates a multi-zoned map of value perception across timeframes.
Labeling and Historical Tracking
As each new VWAP is computed, it is stored in a bounded array alongside metadata such as label position, line objects, test count, and test state (whether price has interacted with it). Each level is drawn as a dotted horizontal line and labeled with its value and corresponding period (e.g., "D", "W", "M").
Price interaction with a VWAP level (i.e., candle high/low crossing the line) changes the styling of the label and line, marking it as "tested." A cap on how many tested levels are retained (default 10) avoids excessive clutter and resource usage.
These persistent horizontal levels give the trader a visual reference of where value was defined in previous periods and how price has respected or ignored those levels over time.
Summary Tables and Grid
Two visual table overlays are provided:
1. VWAP Summary Table , this table shows:
VWAP values per timeframe
Trend interpretation (rising, falling, stable) relative to price
Ranked order of VWAP values (from highest to lowest)
The order is recalculated each bar to reflect the vertical positioning of each VWAP on the price chart.
2. VWAP Relationship Grid
A grid matrix compares each VWAP and current price against all others. Each cell reflects whether a given source is above, below, or within a tolerance threshold relative to another. Colors (green, red, gray) visually encode the result, with the diagonal marked in black and unused cells disabled.
This matrix helps identify alignment or dissonance among timeframes, allowing users to detect whether shorter-term value is leading or lagging longer-term value.
Price Band Classification
For the Daily VWAP specifically, the script includes an extra classification system. It assigns the current price to a zone (e.g., "At VWAP", "Bear Band", "Above Bull Band 2") based on where the price lies in relation to the VWAP bands. This classification is also used for dynamic coloring and added to the daily label.
Display Controls
The script offers fine-grained controls:
Toggle visibility of each VWAP and band group independently
Adjust the offset of labels from the current bar
Customize band multipliers and color transparency
Limit the number of historical VWAP labels plotted
Position both the summary and grid tables flexibly on screen
These options allow traders to declutter their charts and focus on the most relevant context for their strategy.
How to Interpret and Use
This indicator provides a structured view of market value perception across various timeframes. For example:
When price converges with multiple VWAPs, it may suggest consensus on value.
When price moves away from all VWAPs, it may indicate trending or stretched conditions.
Crosses and retests of VWAPs (especially higher-timeframe ones) can act as areas of interest.
The band-based classification helps identify transitional zones and whether price is situated in an area where value is being accepted or rejected.
The summary tables offer a high-level dashboard of price positioning and value structure, which can assist with top-down analysis, filtering setups, or contextual decision-making.
Added Value Compared to Free Alternatives
Most free VWAP scripts:
Cover only a single timeframe (often daily or session-based)
Lack historical level tracking with tested/retested visualization
Do not support grid-level relationships or multi-timeframe band analysis
Offer limited configuration over how bands are calculated or displayed
This script consolidates multiple value areas in one consistent framework and goes further by tracking historical relevance, providing interaction logs, and organizing data into actionable overlays.
For traders seeking comprehensive value context across intraday and swing horizons, this tool offers persistent and structured data views that are otherwise unavailable through individual, isolated VWAP tools.
Limitations and Disclaimers
The indicator depends on volume data. On instruments with unreliable or synthetic volume (e.g., certain spot forex or CFDs), results may not be meaningful.
Band-based interpretation should not be used as a signal mechanism on its own.
On low timeframes, longer-period VWAPs may appear flat or visually compressed.
As with any analytical tool, interpretation requires trader discretion and should be combined with broader context.
ZenAlgo - LevelsThis script combines multiple anchored Volume-Weighted Average Price (VWAP) calculations into a single tool, providing a continuous record of past VWAP levels and highlighting when price has tested them. Typically, VWAP indicators show only the current VWAP for a single anchor period, requiring you to either keep re-anchoring manually or juggle multiple instances of different VWAP tools for each timeframe. By contrast, this script automatically tracks both the ongoing VWAP and previously completed VWAP values, along with real-time detection of “tests” (when price crosses a particular VWAP level). It’s especially valuable for traders who want to see how price has interacted with VWAP over several sessions, weeks, or months—without switching between separate indicators or manually setting anchors.
Below is a comprehensive explanation of each component, why multiple VWAP lines working together can be more informative than a single line, and how to adjust the script for various markets and trading styles:
Primary VWAP vs. Historical VWAP Lines - Standard VWAP indicators typically focus on the current line only. This script also calculates a primary VWAP, but it “locks in” each completed VWAP value when a new time anchor is detected (e.g., new weekly bar, new monthly bar, new session). As a result, you retain an ongoing history of VWAP lines for every completed anchored period. This is more powerful than manually setting up multiple VWAP tools—one for each desired timeframe—because everything is handled in a single script. You avoid chart clutter and the risk of forgetting to reset your manual VWAP at the correct bar.
Why Combine Multiple Anchored VWAP Lines in One Script? - Viewing several anchored VWAP lines together offers synergy . You see not only the current VWAP but also previous ones from different sessions or months, all within the same chart pane. This synergy becomes apparent if multiple historical VWAP lines cluster near the same price level, indicating a potentially significant zone of volume-based support or resistance. Handling this manually would involve repeatedly setting separate VWAP indicators, each reset at specific points, which is time-consuming and prone to error. In this script, the process is automated: as soon as the anchor changes, a completed VWAP line is stored so you can observe how price eventually reacts to it, repeatedly or not at all.
Automated “Test” Detection - Once a historical VWAP line is set, the script tracks when price crosses it in subsequent bars. If the high and low of a bar span that line, the script marks it in red (both the line and its label). It also keeps a counter of how many times each line has been tested. This method goes beyond a simple visual approach by quantifying the retests. Because all these lines are created and managed in one place, you don’t have to manually label the lines or check them one by one.
Advantages Over Manually Setting Multiple VWAPs
You save screen space: Instead of layering several VWAP indicators, each with unique settings, this single script plots them all on one overlay.
Automation: When a new anchor period begins, the script “closes out” the old VWAP and starts a new one. You never need to remember to reset it manually.
Retest Visualization: The script not only draws each line but also changes color and updates the label automatically if a line gets tested. Doing this by hand would be labor-intensive.
Unified Parameters: All settings (e.g., array size, max distance, test count limit) apply uniformly. You can manage them from one place, instead of configuring multiple separate tools.
Extended Insight with Multiple VWAP Lines
Since VWAP reflects the volume-weighted average price for each chosen period, historical lines can show zones where the market had a fair-value consensus in previous intervals. When the script preserves these lines, you see potential support/resistance areas more distinctly. If, for instance, price continually pivots around an old VWAP line, that may reveal a strong volume-based level. With several older VWAP lines on the chart, you gain an immediate sense of where these volume-derived averages have appeared and how price reacted over time. This wider perspective often proves more revealing than a single “current” VWAP line that does not reflect previous anchor sessions.
Handling of Illiquid Markets and Volume Limitations
VWAP is inherently tied to volume data, so its reliability decreases if volume reporting is missing or if the asset trades with very low liquidity. In such cases, a single large trade might momentarily skew the VWAP, resulting in “false” test signals when the high/low range intersects an abnormal price swing. If you suspect the data is incomplete or the market is unusually thin, it’s wise to confirm the validity of these VWAP lines before using them for any decision-making. Additionally, unusual market conditions—like after-hours trading or sudden high-volatility events—may cause VWAP to shift quickly, setting up multiple lines in a short time.
Key User-Configurable Settings
Hide VWAP on Day timeframe and above : Lets you disable the primary VWAP plot on daily or higher timeframes for a cleaner view.
Anchor Period : Select from Session, Week, Month, Quarter, Year, Decade or Century. Controls how frequently the script resets and preserves the VWAP line.
Offset : Moves the current VWAP line by a specified number of bars if you need a shifted perspective.
Max Array Size : Caps how many past VWAP lines the script will remember. Prevents clutter if you’re charting very long histories.
Max Distance : Defines how far back (in bar index units) a line is kept. If a line’s start bar is older than this threshold, it’s removed, keeping the chart uncluttered.
Max Red Labels : Limits the number of tested (red) VWAP lines that appear. If price tests a large number of old lines, only the newest red labels remain once you hit the set limit.
Workflow Overview
As soon as a new anchor period begins (e.g., a new weekly candle if “Week” is chosen), the script ends the current VWAP and stores that final value in its internal arrays.
It creates a dotted line and label representing the completed VWAP, and keeps track of whether it has been tested or not.
Subsequent bars may then cross that line. If a bar’s high/low includes the line’s value, it’s flagged as tested, labeled red, and a test counter increases.
As new anchored periods come, old lines remain visible—unless they fall outside your maxDistance or you exceed the maximum stored line count.
Real-World Benefits
Combining multiple VWAP lines—ranging, for example, from session-based lines for intraday perspectives to monthly or quarterly lines for broader context—provides a layered view of the volume-based fair price. This can help you quickly spot zones where price repeatedly intersects old VWAPs, potentially highlighting where bulls or bears took action historically. Because this script automates the management of all these lines and flags their retests, it removes a great deal of repetitive manual work that would typically accompany multiple, separate VWAP indicators set to different anchors.
Limitations & Practical Use
As with any volume-related tool, the script depends on reliable volume data. Assets trading on smaller venues or during illiquid periods may produce spurious signals. The script does not signal buy or sell decisions; rather, it helps visually map out where volume-weighted averages from previous periods might still be relevant to market behavior. Always combine the insight from these historical VWAP lines with your existing analytical approach or other technical and fundamental tools you use.
Conclusion
This script unifies past and present VWAP lines into one overlay, automatically detecting new anchor resets, storing the final VWAP values, and indicating whenever old lines are retested by price. It offers synergy through the simultaneous display of multiple historical VWAP lines, making it quicker and easier to detect potential support/resistance zones and better reflect changing market volumes over time. You no longer need to manually create, configure, or reset multiple VWAP indicators. Instead, the script handles all aspects of line creation, retest detection, and clutter management, giving you a robust framework to observe how historical VWAP data aligns with current price action.
By understanding the significance of multiple anchored VWAP lines, you can assess market structure from multiple angles in a single view. As always, ensure you confirm the reliability of the volume data for your particular asset and use these lines in conjunction with other analyses to form a well-rounded perspective on current market behavior.
VWAPs Ancoradas📊 Indicator: Multiple Anchored VWAPs
This indicator plots up to 5 anchored VWAPs (Volume Weighted Average Price) from different customizable starting dates, allowing traders to track the volume-weighted average price from key moments on the chart.
🔎 What is VWAP?
VWAP is one of the most widely used institutional indicators to identify fair value areas. It represents the average price weighted by volume, helping traders spot dynamic support and resistance levels.
⚙️ How the indicator works:
Define up to 5 different anchor dates (e.g., yearly open, quarterly open, major economic events, asset launches, etc.).
From each anchor date, VWAP is recalculated and plotted on the chart.
Each VWAP has a customizable color and label, making it easy to organize.
In addition to the line, the indicator shows the VWAP name on the last bar, with a clean text display (no background box).
Text color can be adjusted in the settings (default is black).
🎯 Practical applications:
Track yearly, quarterly, monthly, or weekly VWAPs.
Compare price behavior across different time periods.
Identify where price stands relative to the average cost of institutional players.
Combine with price action for better entry and exit timing.
✅ Key features:
Up to 5 simultaneous VWAPs.
Fully customizable anchor dates.
Clear colored lines and labels on chart.
Minimalistic and clean layout, without visual clutter.






















