Scan parameters (Minervini defaults)
[[ scanStatus ]]
[[ scanError ]]
LC
Price Chart
[[ chartSymbolSub ]]
[[ alignBadge.text ]]
TF
Range
[[ chartMeta ]]
[[ maLegend.ma50 ]]
[[ maLegend.ma150 ]]
[[ maLegend.ma200 ]]
[[ avatarLetter ]]
[[ scanResult && scanResult.symbol || '—' ]]
[[ scanResult && scanResult.exchange || '—' ]]
[[ ltpFormatted ]]
[[ changeText ]]
[[ stage.stage_label || '—' ]]
52W High
[[ h52w != null ? '₹' + fmt(h52w) : '—' ]]
52W Low
[[ l52w != null ? '₹' + fmt(l52w) : '—' ]]
MA 50
[[ stage.ma50 != null ? '₹' + fmt(stage.ma50) : '—' ]]
MA 150
[[ stage.ma150 != null ? '₹' + fmt(stage.ma150) : '—' ]]
MA 200
[[ stage.ma200 != null ? '₹' + fmt(stage.ma200) : '—' ]]
Bars
[[ scanResult && scanResult.bars || '—' ]]
MA Alignment [[ c.label ]]
[[ c.text ]]
Volume Rally (3-criteria)
HV → LV Setup
Minervini Base & Point 9
[[ p.type ]] [[ fmt(p.price, 1) ]]
Breakout (vs Point 9)
Trend Checks (SEPA)
Base Type
VCP – Volatility Contraction Pattern
#HighLowDepth%Avg VolH dateL date
[[ i + 1 ]] ₹[[ fmt(c.high_price) ]] ₹[[ fmt(c.low_price) ]] [[ c.depth_pct ]]% [[ (c.avg_vol / 1e6).toFixed(2) ]]M [[ c.high_date || '—' ]] [[ c.low_date || '—' ]]

Historical Walk-Forward

Same scanner, run at every step through history
to [[ histStatus ]]
Historical signals on price chart — [[ histChartLabel ]]
[[ c.count ]] [[ c.label ]]
DateCloseStage BaseBuy ₹DepthLenType VCPBreakoutBO DateBO ₹Vol% MA20025%H30%L
[[ r.date ]] ₹[[ fmt(r.close) ]] [[ r.stage ?? '—' ]] [[ r.is_base ? '✓' : '—' ]] [[ r.buy_price != null ? '₹' + fmt(r.buy_price) : '—' ]] [[ r.base_depth_pct != null ? r.base_depth_pct + '%' : '—' ]] [[ r.base_len ?? '—' ]] [[ BT_LABEL[r.base_type] ?? '—' ]] [[ r.is_vcp ? '✓ ' + (r.contraction_count ?? '') : '—' ]] [[ r.is_breakout ? '⚡' : '—' ]] [[ r.breakout_date ?? '—' ]] [[ r.breakout_high != null ? '₹' + fmt(r.breakout_high) : '—' ]] [[ r.vol_surge_pct != null ? r.vol_surge_pct + '%' : '—' ]] [[ SLOPE[r.ma200_slope] ?? '—' ]] [[ r.within_25pct_52wh ? '✓' : '✗' ]] [[ r.above_30pct_52wl ? '✓' : '✗' ]]