Smart Money Entry Detector //@version=5
indicator("Smart Money Entry Detector (Bullish + Bearish)", overlay=true)
// === Volatility (ATR)
atr = ta.atr(14)
atrAvg = ta.sma(atr, 14)
volatilitySpike = atr > atrAvg * 1.3
// === Volume Spike
volAvg = ta.sma(volume, 20)
volumeSpike = volume > volAvg * 1.5
// === RSI Confirmation
rsi = ta.rsi(close, 14)
rsiBull = rsi > 50
rsiBear = rsi < 50
// === EMA Crossover
emaFast = ta.ema(close, 9)
emaSlow = ta.ema(close, 21)
bullishCross = ta.crossover(emaFast, emaSlow)
bearishCross = ta.crossunder(emaFast, emaSlow)
// === Bullish Order Block
isBullOB = close < open and close > open and close > close
bullLow = low
bullHigh = high
bullRetest = low <= bullHigh and low >= bullLow
// === Bearish Order Block
isBearOB = close > open and close < open and close < close
bearHigh = high
bearLow = low
bearRetest = high >= bearLow and high <= bearHigh
// === Entry Signals
bullEntry = isBullOB and bullRetest and volumeSpike and volatilitySpike and rsiBull and bullishCross
bearEntry = isBearOB and bearRetest and volumeSpike and volatilitySpike and rsiBear and bearishCross
// === Plotting
plotshape(bullEntry, location=location.belowbar, color=color.green, style=shape.triangleup, title="Bullish Smart Entry")
plotshape(bearEntry, location=location.abovebar, color=color.red, style=shape.triangledown, title="Bearish Smart Entry")
// === Alerts
alertcondition(bullEntry, title="Bullish Smart Entry", message="Bullish order block retest with confirmation!")
alertcondition(bearEntry, title="Bearish Smart Entry", message="Bearish order block retest with confirmation!")
Grafik Desenleri
Strong BUY/SELL with BB + RSI + MACD (with alerts)Outer Bands (same as before)
BUY when price < lower BB + RSI < 30 + MACD bullish.
SELL when price > upper BB + RSI > 70 + MACD bearish.
Middle Band (new addition)
BUY when price crosses above middle band (basis) AND RSI > 50 + MACD bullish.
SELL when price crosses below middle band (basis) AND RSI < 50 + MACD bearish.
Market Structure by Gemini [v1.3]HH, HL, LH, LL indicator + BoS indicator. I'm now fully immersed in extracting the essential elements. I've pinpointed three critical concepts: Break and Retest (B&R), Liquidity Sweep & Reaction, and Market Structure (MS). My current focus is on the interactions between these components and on translating them into executable Pine Script instructions, starting with the simplest implementations.
Strong BUY/SELL with BB + RSI + MACD (with alerts)alertcondition() doesn’t fire alerts by itself — it enables the alert in TradingView’s alert menu.
Once you add this script to a chart, you can go to Alerts → Create Alert → Condition → (your script name).
You’ll see BUY Signal and SELL Signal in the dropdown.
You can then choose notification type: popup, email, SMS, app push, or webhook (for bots)
Strong BUY/SELL with BB + RSI + MACD (with alerts)alertcondition() doesn’t fire alerts by itself — it enables the alert in TradingView’s alert menu.
Once you add this script to a chart, you can go to Alerts → Create Alert → Condition → (your script name).
You’ll see BUY Signal and SELL Signal in the dropdown.
You can then choose notification type: popup, email, SMS, app push, or webhook (for bots)
Strong BUY/SELL with BB + RSI + MACDUpdated code for BB, RSI and MACD with labels to identify the Buy and sell
DYOR Portfolio (UPDATED)This is the updated chart of the performance accured by our dyor management portfolios.
Buy & Sell by AnupamKafleThis indicator provides Buy and Sell signals based on a combination of classic technical analysis tools: EMA Crossovers, RSI, MACD, and optional Bollinger Bands.
✅ Buy signals are shown as green arrows below bars
✅ Sell signals are shown as red arrows above bars
📊 Logic Overview:
EMA Crossover: Fast EMA crossing over the Slow EMA = Bullish signal
RSI Filter: RSI below oversold threshold = Buy condition, above overbought = Sell condition
MACD Filter: MACD line crossing above Signal line = Buy, crossing below = Sell
Bollinger Bands (optional): Buy when price breaks below lower band, Sell when price breaks above upper band
All filters can be turned on or off individually to customize the signal conditions to your strategy.
⚙️ Settings Include:
Enable/Disable each indicator (EMA, RSI, MACD, BB)
Custom lengths for EMA, RSI, MACD, and BB
Adjustable RSI thresholds and Bollinger Band deviation
🔔 Alerts:
Built-in alert conditions for Buy and Sell signals allow you to set up real-time notifications.
Strong BUY/SELL with BB + RSI + MACDGreen BUY arrows only if score ≥ +2 and confirmed
Red SELL arrows only if score ≤ -2 and confirmed
Background shading for trend phases
Strength meter below chart for confirmation
BB + RSI + MACD + Volume Filter SignalsPlots Bollinger Bands (upper, median, lower).
Confirms buy/sell signals only when all rules match:
Bollinger Band touch
RSI oversold/overbought
MACD crossover
Closes on the correct side of the median band
Volume above average
Labels BUY/SELL on chart.
Long-only Swing/Scalp (anchored exits + TP harness) Traders PostThis is the Traders Post friendly drag and drop version of the swing/ scalp strategy for the algo traders out there. Let me know your thoughts, constructive criticism is always welcome.
Long‑only Swing/ScalpThis is a basic scalper stategy for algos or crypto bots, tested on BNB, not the best backtest but you can tweak and get better results. Take profit at 1% and Sl at 2% , adjust those settings first to see different back test resutls.
Ultimate Gold Long Indicator - Execução Final v26.1 By M.LolasUltimate Gold Long Indicator - Execução Final v26.1 By M.Lolas
Central indicator for by long in 15m time frame 20x.
“Backtested indicator for an aggressive 15-minute, 20×-leverage strategy, packed with capital-protection features.”
By M.Lolas
Ultimate Gold Confluence Score – Validator v6.1 By M.Lolas“Ultimate Gold Confluence Score Validator — multi-indicator add-on for a 15-minute, 20× long strategy with a very high win rate. Supports the strategy’s main indicator.”
EMP Probabilistic [CHE]Part 1 — For Traders (Practical Overview, no formulas)
What this tool does
EMP Probabilistic \ turns raw price action into a clean, probability-aware map. It builds two adaptive bands around the session open of a higher timeframe you choose (called the S-timeframe) and highlights a robust median threshold. At a glance you know:
Where price has recently tended to stay,
Whether current momentum sits above or below the median, and
A live Long vs. Short probability based on recent outcomes.
Why it improves decisions
Objective context in any regime: The nonparametric band comes straight from recent market behavior, without assuming a particular distribution.
Volatility-aware risk lens: The parametric band adapts to current volatility, helping you judge stretch and room for continuation or snap-back.
No lookahead: All stats update only after an S-bar is finished. That means the panel reflects information you truly had at that time.
How to read the chart
Orange band = empirical, distribution-free range derived from recent session returns (nonparametric).
Teal band = volatility-scaled range around the session open (parametric).
Median dots: green when close is above the median threshold, red when below.
Info panel: shows the active S-timeframe, window sizes, live coverage for both bands, the internal width parameter and volatility estimate, plus a one-line summary.
Probability label: “Long XX% • Short YY%” — a simple read on the recent balance of up vs. down S-bars.
How to use it (quick start)
1. Choose S-timeframe with Auto, Multiplier, or Manual. “Auto” scales your chart TF up to a sensible higher step.
2. Set alpha to control how tight the inner band should be. A typical value gives you a comfortable center zone without cutting off healthy trends.
3. Trade the context:
Trend-following: Prefer longs when price holds above the median; prefer shorts when it stays below.
Mean-reversion: Fade moves near the outer edges during ranges; look for reversion back toward the median.
Breakout filter: Require closes that push and hold beyond the volatility band for momentum plays; avoid noise when price chops inside the middle of the orange band.
Risk management made practical
Size positions relative to the teal band width to keep risk consistent across instruments and regimes.
For stops, many traders set them just beyond the opposite orange bound or use a fraction of the teal band.
Watch the panel’s coverage readouts and Brier score; when they deteriorate, the market may be shifting — reduce size or demand stronger confirmation.
Suggested presets
Scalping (Crypto/FX): Auto S-TF, alpha around a fifth, calibration window near two hundred, RS volatility, metrics window near two hundred.
Intraday Futures: Multiplier 3–5× your chart TF; similar alpha and window sizes; RS volatility is a solid default.
Swing/Equities: S-TF at least daily; test both RS and GK volatility modes; keep windows on the larger side for stability.
What makes it different
Two complementary lenses: a distribution-free read of recent behavior and a volatility-scaled read for risk and stretch.
Self-calibrating width: the parametric band quietly nudges its internal multiplier so actual coverage tracks your target.
Clean UX: grouped inputs, tooltips, an info panel that tells you what’s going on, and a simple median bias you can act on.
Repainting & timing
The logic updates only when the S-bar closes. On lower-timeframe charts you’ll see intrabar flips of the dot color — that’s just live price moving around. For strict signals, confirm on S-bar close.
Friendly note (not financial advice)
Use this as a context engine. It won’t predict the future, but it will keep you on the right side of probability and volatility more often, which is exactly where consistency starts.
Part 2 — Under the Hood (Conceptual, no formulas)
Data and timeframe design
The script works on a higher S-timeframe you select. It fetches the open, high, low, close, and time of that S-bar. Internally, it only updates its rolling windows after an S-bar has finished. It then pushes the previous S-bar’s statistics into its arrays. That design removes lookahead and keeps the metrics out-of-sample relative to the current S-bar.
Nonparametric band (distribution-free)
The orange band comes from the empirical distribution of recent session-level close-minus-open moves. The script keeps a rolling window, sorts a safe copy, and reads three key points: a lower bound, a median, and an upper bound. Because it’s based purely on observed outcomes, it adapts naturally to skew, fat tails, and regime shifts without assuming any particular shape. The orange range shows “where price has tended to live” lately on the chosen S-timeframe.
Parametric band (volatility-scaled)
The teal band models log-space variability around the session open using one of two well-known OHLC volatility estimators: Rogers–Satchell or Garman–Klass. Each estimator contributes a per-bar variance figure; the script averages these across the rolling window to form a current volatility scale. It then builds a symmetric band around the session open in price space. This gives you a volatility-aware notion of stretch that complements the distribution-free orange band.
Self-calibration of band width
The teal band has an internal width multiplier. After each completed S-bar the script checks whether the realized move stayed inside that band. If the band was too tight, the multiplier is nudged upward; if it was too loose, it’s eased downward. A simple learning rate governs how quickly it adapts. Over time this keeps the realized inside-coverage close to the target implied by your alpha setting, without you having to hand-tune anything.
Long/Short probability and calibration quality
The Long vs. Short probability is a transparent statistic: it’s just the recent fraction of up sessions in the rolling window. It is not a complex model — and that’s the point. You get an honest, intuitive read on directional tendency.
To monitor how well this simple probability lines up with reality, the script tracks a Brier-style score over a separate metrics window. Lower is better: it means your recent probability read has matched outcomes more closely.
Coverage tracking for both bands
The panel reports coverage for the orange band (nonparametric) and the teal band (parametric). These are rolling averages of how often recent S-bar moves landed inside each band. Watching these two numbers tells you whether market behavior still aligns with the recent distribution and with the current volatility model.
Why it doesn’t repaint
Because the arrays update only when an S-bar closes and only push the previous bar’s stats, the panel and metrics reflect information you had at the time. Intrabar visuals can change while a bar is forming — that’s expected — but the decision framework itself is anchored to completed S-bars.
Performance and practicality
The heaviest step is sorting a copy of the window for the nonparametric band. With typical window sizes this stays responsive on TradingView. The volatility estimators and rolling averages are lightweight. Inputs are grouped with clear tooltips so you can tune without hunting.
Limitations and good practice
In thin or gappy markets the bands can jump; consider a larger window or a higher S-timeframe.
During violent regime shifts, shorten the window and increase the learning rate slightly so the teal band catches up faster — but don’t overdo it, or you’ll chase noise.
The Long/Short probability is intentionally simple; it’s a context indicator, not a standalone signal factory. Combine it with structure, volume, or your execution rules.
Takeaway
Under the hood, the script blends empirical behavior and volatility scaling, then self-calibrates so the teal band’s real-world coverage stays near your target. You get clarity, consistency, and a dashboard that tells you when its own assumptions are holding up — exactly what you need to trade with confidence.
Disclaimer
The content provided, including all code and materials, is strictly for educational and informational purposes only. It is not intended as, and should not be interpreted as, financial advice, a recommendation to buy or sell any financial instrument, or an offer of any financial product or service. All strategies, tools, and examples discussed are provided for illustrative purposes to demonstrate coding techniques and the functionality of Pine Script within a trading context.
Any results from strategies or tools provided are hypothetical, and past performance is not indicative of future results. Trading and investing involve high risk, including the potential loss of principal, and may not be suitable for all individuals. Before making any trading decisions, please consult with a qualified financial professional to understand the risks involved.
By using this script, you acknowledge and agree that any trading decisions are made solely at your discretion and risk.
Best regards and happy trading
Chervolino
15m Continuation — prev → new (v6, styled)This indicator gives you backtested statistics on how often reversals vs continuations occur on 15 minute candles on any pair you want to trade. This is great for 15m binary markets like on Polymarket.
EMA Volume Confluence + Trend Bands[BBM]# EMA Volume Confluence + Trend Bands Indicator
## Overview
A professional day trading indicator designed to eliminate false breakouts and early entries by combining multiple confirmation signals. Perfect for futures and crypto traders holding positions 1-2 days max.
## What It Does
- **Filters out false signals** by requiring EMA crossovers, volume spikes, VWAP confirmation, AND momentum alignment
- **Shows volatility-based trend bands** to identify genuine breakouts vs noise
- **Provides clear entry signals** only when ALL conditions align
- **Real-time metrics dashboard** showing RSI, volume, VWAP position, and band status
## Signal Types
- **LONG/SHORT triangles**: High-probability EMA cross entries with full confirmation
- **BO (Breakout) crosses**: Volatility expansion breakouts with volume support
- **Yellow background**: Volume spike in progress - watch for signals
- **Colored bands**: Trade inside the channel or wait for confirmed breakouts
## Recommended Settings
### For Crypto (High Volatility)
- **Volume Spike Multiplier**: 2.0x (crypto has bigger spikes)
- **Band Multiplier**: 2.5-3.0 (wider bands for volatility)
- **Best Timeframes**: 5min, 15min
- **RSI Settings**: Keep default (70/30)
### For Futures (E-mini, Oil, Gold)
- **Volume Spike Multiplier**: 1.3-1.5x (tighter volume filter)
- **Band Multiplier**: 1.5-2.0 (narrower for cleaner signals)
- **Best Timeframes**: 1min, 5min, 15min
- **RSI Settings**: Keep default (70/30)
### For Swing/Position (1-2 day holds)
- **Volume Spike Multiplier**: 1.5x
- **Band Multiplier**: 2.0
- **Best Timeframes**: 1H, 4H
- **Consider**: Adjust RSI to 65/35 for less filtering on larger timeframes
## Pro Tips
1. **Best trades**: LONG/SHORT signals that appear right as price touches the bands
2. **Avoid**: Signals when RSI is extended (red/green in table)
3. **Volume is key**: No yellow background = probably skip the signal
4. **VWAP acts as bias**: Above = favor longs, Below = favor shorts
5. **Band breakouts (BO)**: These are your highest conviction momentum plays
## Risk Management
- Use the Band Multiplier (ATR-based) to gauge volatility
- "Above/Below" band position = extended move, consider taking profits
- "Inside" band position = consolidation, best for entries
- Higher volume multiplier = fewer but higher quality signals
## Alert Setup
Set alerts for:
- "Long Entry" - Full EMA setup
- "Short Entry" - Full EMA setup
- "Breakout Long" - Band breakout with volume
- "Breakout Short" - Band breakdown with volume
---
**Note**: This indicator prioritizes quality over quantity. You'll get fewer signals, but they have much better win rates because they require multiple confirmations. Perfect for traders tired of getting whipsawed by false breakouts!
LW Outside Day Flip【SpeculationLab】Applicable Timeframe
⚠️ Note: This indicator is primarily designed for the Daily timeframe.
Larry Williams’ original discussion and statistics were based on daily data. While it can technically be applied to other timeframes, results may vary. It is strongly recommended to use it on daily charts.
Overview
This indicator marks a classic “Outside Day + Extreme Close” price action pattern. The idea comes from Larry Williams’ Long-Term Secrets to Short-Term Trading (2nd edition, Chapter 7).
The indicator does not execute trades or generate alerts — it simply plots visual markers on the chart when the pattern conditions are met, to assist research and review.
Logic
Outside Bar Condition
Current high > previous high
Current low < previous low
Extreme Close Filter
Long signal: Close < previous low
Short signal: Close > previous high
Confirmation
Signals are only confirmed at bar close (barstate.isconfirmed), to avoid repainting during intrabar movement.
Chart Display
When a long signal is triggered, a green downward triangle is plotted above the bar.
When a short signal is triggered, a red upward triangle is plotted below the bar.
Signals are overlaid directly on the price chart (overlay=true) and serve only as visual cues.
Usage Notes
Best used as a filter or secondary confirmation tool, not as a standalone entry trigger.
Consider combining with higher timeframe trend, key support/resistance, or volume analysis.
Entries, stop losses, and profit targets should be defined and tested independently by the trader.
Limitations and Risks
In strong trending markets, these signals may fail.
In low-liquidity or gapping conditions, accuracy may be reduced.
A single candlestick pattern cannot ensure consistent profitability.
Disclaimer
This script is for educational and research purposes only. It is not financial advice. Trading carries risk, and users are solely responsible for their own decisions and results.
===================
指标适用范围
⚠️ 特别提示:本指标主要适用于日线图(Daily Timeframe)。
Larry Williams 的原始讨论与统计均基于日线数据。虽然技术上可以在其它周期应用,但效果可能会不同,建议严格以日线作为主要参考周期。
功能概述
本指标用于在图表上标记一种经典的“外包线 + 极端收盘”的价格行为形态。思路参考 Larry Williams 在《Long-Term Secrets to Short-Term Trading》(第二版,第七章)中对日线“Outside Day”与反向收盘的讨论。指标不包含交易执行或提醒功能,仅在满足条件时绘制信号标记,用于辅助研究。
计算逻辑
外包线(Outside Bar)判定
最高价高于前一根K线的最高价;
最低价低于前一根K线的最低价。
极端收盘过滤
做多信号(Long):收盘价低于前一根K线的最低价;
做空信号(Short):收盘价高于前一根K线的最高价。
确认方式
仅在K线收盘后确认(避免盘中信号反复出现/消失)。
绘图说明
触发做多条件时,在K线 上方 绘制 绿色 向下三角形标记。
触发做空条件时,在K线 下方 绘制 红色 向上三角形标记。
信号直接叠加在价格图上(overlay=true),仅作提示。
使用建议
建议作为筛选条件或二次确认工具,不要单独作为入场依据;
可以配合趋势方向、关键支撑/阻力、成交量等其他因素一起使用;
入场、止损与止盈需由使用者自行定义和验证。
限制与风险
在强趋势行情中,信号可能失效;
在低流动性或跳空行情中,信号准确度下降;
单一形态不能保证稳定盈利。
免责声明
本指标仅用于教育与研究,不构成投资建议。实际交易风险由使用者自行承担。
ninu3q merged//@version=6
indicator("Ultimate Trend + Momentum + Volume Pro (merged)", overlay=true,
max_boxes_count=700, max_lines_count=300, max_labels_count=300)
// -----------------------------
// 1) EMA Trend + VWAP Layer (combined)
// -----------------------------
ema200 = ta.ema(close, 200)
ema50 = ta.ema(close, 50)
vwap = ta.vwap
ema200Plot = plot(ema200, "EMA 200", color=color.red, linewidth=2, style=plot.style_line)
ema50Plot = plot(ema50, "EMA 50", color=color.teal, linewidth=1, style=plot.style_line)
vwapPlot = plot(vwap, "VWAP", color=color.orange, linewidth=1, style=plot.style_line)
// Trick: combine them into a group so TradingView counts less
plot(na) // placeholder, only one is really required
// -----------------------------
// 2) UT Bot Alerts
// -----------------------------
utAtrPeriod = input.int(10, "UT ATR Period")
utAtrMultiplier = input.float(2.0, "UT ATR Multiplier")
utAtr = ta.atr(utAtrPeriod)
utUpper = close + utAtrMultiplier * utAtr
utLower = close - utAtrMultiplier * utAtr
utBuy = ta.crossover(close, utUpper)
utSell = ta.crossunder(close, utLower)
plotshape(utBuy, "UT Buy", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(utSell, "UT Sell", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
// -----------------------------
// 3) Volume Profile (anchored to last N bars)
// -----------------------------
barsBack = input.int(150, "Bars Back", minval=1, maxval=5000)
cols = input.int(35, "Columns", minval=5, maxval=200)
vaPct = input.float(70.0, "Value Area %", minval=40.0, maxval=99.0)
histWidth = input.int(24, "Histogram Width (bars)", minval=6, maxval=200)
direction = input.string("Into chart (left)", "Histogram Direction", options= )
// Block/line styles
blockFillColor = input.color(#B0B0B0, "Volume Block Fill Color")
blockFillOpacity = input.int(70, "Volume Block Fill Opacity %", minval=0, maxval=100)
blockBorderColor = input.color(#000000, "Volume Block Border Color")
blockBorderOpacity = input.int(0, "Volume Block Border Opacity %", minval=0, maxval=100)
showPOC = input.bool(true, "Show POC Line")
pocColor = input.color(#FF0000, "POC Color")
pocWidth = input.int(2, "POC Width", minval=1, maxval=6)
showVA = input.bool(false, "Show VAH/VAL Lines")
vaColor = input.color(#FFA500, "VA Color")
vaWidth = input.int(1, "VA Width", minval=1, maxval=6)
showVWAP = input.bool(false, "Show AVWAP Line")
vwapColor = input.color(#0000FF, "AVWAP Color")
vwapWidth = input.int(1, "AVWAP Width", minval=1, maxval=6)
showLabels = input.bool(false, "Show Line Labels")
priceForBin = hlcc4
// Draw registries
var boxesArr = array.new_box()
var linesArr = array.new_line()
var labelsArr = array.new_label()
f_wipe() =>
while array.size(boxesArr) > 0
box.delete(array.pop(boxesArr))
while array.size(linesArr) > 0
line.delete(array.pop(linesArr))
while array.size(labelsArr) > 0
label.delete(array.pop(labelsArr))
if barstate.islast
f_wipe()
eff = math.min(barsBack, bar_index + 1)
if eff > 1
float pMin = na
float pMax = na
float pvSum = 0.0
float vSum = 0.0
for look = 0 to eff - 1
lo = low
hi = high
pMin := na(pMin) ? lo : math.min(pMin, lo)
pMax := na(pMax) ? hi : math.max(pMax, hi)
pvSum += priceForBin * volume
vSum += volume
anchoredVWAP = vSum > 0 ? pvSum / vSum : na
if not na(pMin) and not na(pMax) and pMax > pMin
step = (pMax - pMin) / cols
step := step == 0.0 ? syminfo.mintick : step
var vols = array.new_float()
var lows = array.new_float()
var highs = array.new_float()
array.clear(vols), array.clear(lows), array.clear(highs)
for i = 0 to cols - 1
array.push(vols, 0.0)
lo = pMin + i * step
hi = lo + step
array.push(lows, lo)
array.push(highs, hi)
for look = 0 to eff - 1
pr = priceForBin
vol = volume
idx = int(math.floor((pr - pMin) / step))
idx := idx < 0 ? 0 : idx > cols - 1 ? cols - 1 : idx
array.set(vols, idx, array.get(vols, idx) + vol)
pocIdx = 0
pocVol = 0.0
totalVol = 0.0
for i = 0 to cols - 1
v = array.get(vols, i)
totalVol += v
if v > pocVol
pocVol := v
pocIdx := i
targetVol = totalVol * (vaPct / 100.0)
left = pocIdx
right = pocIdx
cumVA = array.get(vols, pocIdx)
while cumVA < targetVol and (left > 0 or right < cols - 1)
vLeft = left > 0 ? array.get(vols, left - 1) : -1.0
vRight = right < cols - 1 ? array.get(vols, right + 1) : -1.0
if vRight > vLeft
right += 1
cumVA += array.get(vols, right)
else if vLeft >= 0
left -= 1
cumVA += array.get(vols, left)
else
break
VAH = array.get(highs, right)
VAL = array.get(lows, left)
profileStart = bar_index - (eff - 1)
rightStart = bar_index + 1
rightEnd = bar_index + 1 + histWidth
intoChart = direction == "Into chart (left)"
for i = 0 to cols - 1
v = array.get(vols, i)
len = pocVol > 0 ? (v / pocVol) : 0.0
px = int(math.round(len * histWidth))
x1 = intoChart ? (rightEnd - px) : rightStart
x2 = intoChart ? rightEnd : (rightStart + px)
y1 = array.get(lows, i)
y2 = array.get(highs, i)
b = box.new(x1, y2, x2, y1, xloc=xloc.bar_index, border_color=color.new(blockBorderColor, blockBorderOpacity))
box.set_bgcolor(b, color.new(blockFillColor, 100 - blockFillOpacity))
array.push(boxesArr, b)
if showPOC
pocPrice = (array.get(lows, pocIdx) + array.get(highs, pocIdx)) / 2.0
lnPOC = line.new(profileStart, pocPrice, rightEnd, pocPrice, xloc=xloc.bar_index, extend=extend.right, color=pocColor, width=pocWidth)
array.push(linesArr, lnPOC)
if showLabels
lbPOC = label.new(rightEnd, pocPrice, "POC", xloc=xloc.bar_index, style=label.style_label_right, textcolor=color.white, color=pocColor)
array.push(labelsArr, lbPOC)
if showVA
lnVAL = line.new(profileStart, VAL, rightEnd, VAL, xloc=xloc.bar_index, extend=extend.right, color=vaColor, width=vaWidth)
lnVAH = line.new(profileStart, VAH, rightEnd, VAH, xloc=xloc.bar_index, extend=extend.right, color=vaColor, width=vaWidth)
array.push(linesArr, lnVAL)
array.push(linesArr, lnVAH)
if showLabels
lbVAH = label.new(rightEnd, VAH, "VAH", xloc=xloc.bar_index, style=label.style_label_right, textcolor=color.white, color=vaColor)
lbVAL = label.new(rightEnd, VAL, "VAL", xloc=xloc.bar_index, style=label.style_label_right, textcolor=color.white, color=vaColor)
array.push(labelsArr, lbVAH)
array.push(labelsArr, lbVAL)
if showVWAP and not na(anchoredVWAP)
lnVW = line.new(profileStart, anchoredVWAP, rightEnd, anchoredVWAP, xloc=xloc.bar_index, extend=extend.right, color=vwapColor, width=vwapWidth)
array.push(linesArr, lnVW)
if showLabels
lbVW = label.new(rightEnd, anchoredVWAP, "AVWAP", xloc=xloc.bar_index, style=label.style_label_right, textcolor=color.white, color=vwapColor)
array.push(labelsArr, lbVW)
// placeholder plot
plot(na)