//@version=5
indicator("NIFTY 10 Sector Scanner + Crypto + Trend + Configurable Dual ABC Divergence",
overlay=false, max_bars_back=2000)
//====================================================
// ALL SECTORS & GROUPS SELECTION
//====================================================
scanTF = [Link]("60", "Scanner Timeframe")
pageSel = [Link](
"BANKING",
"Sector",
options=[
"BANKING",
"IT",
"AUTO",
"FMCG",
"PHARMA",
"ENERGY",
"METAL",
"REALTY",
"FINANCE",
"CONSUMER",
"CRYPTO",
"MCX",
"SECTORS"
])
groupSel = [Link]("GROUP 1", "Select Group",
options=["GROUP 1","GROUP 2"])
//====================================================
// NEW DIVERGENCE MODE TOGGLE SWITCH
//====================================================
enableDivergence = [Link](true, "Enable Divergence")
divergenceMode = [Link](
"Both (Either Triggers)",
"Divergence Execution Mode",
options=[
"Divergence 1 Only",
"Divergence 2 Only",
"Both (Either Triggers)"
])
//====================================================
// FILTER TOGGLES
//====================================================
filterStoch1 = [Link](false, "Filter: Show only if Stoch 9,3 is OB/OS")
filterStoch2 = [Link](false, "Filter: Show only if Stoch 14,3 is OB/OS")
filterStoch3 = [Link](false, "Filter: Show only if Stoch 40,4 is OB/OS")
filterStoch4 = [Link](false, "Filter: Show only if Stoch 60,10 is OB/OS")
//====================================================
// CUSTOM OB / OS LEVELS
//====================================================
// Stoch 9,3
st1OB = [Link](80, "Stoch 9,3 Overbought")
st1OS = [Link](20, "Stoch 9,3 Oversold")
// Stoch 14,3
st2OB = [Link](80, "Stoch 14,3 Overbought")
st2OS = [Link](20, "Stoch 14,3 Oversold")
// Stoch 40,4
st3OB = [Link](80, "Stoch 40,4 Overbought")
st3OS = [Link](20, "Stoch 40,4 Oversold")
// Stoch 60,10
st4OB = [Link](80, "Stoch 60,10 Overbought")
st4OS = [Link](20, "Stoch 60,10 Oversold")
//====================================================
// TECHNICAL INPUTS
//====================================================
div_k = [Link](9, "Divergence 1 K")
div_d = [Link](3, "Divergence 1 D")
div2_k = [Link](14, "Divergence 2 K")
div2_d = [Link](3, "Divergence 2 D")
signalMode = [Link](
"Strong + Weak",
"Signal Strength",
options=[
"Strong Only",
"Weak Only",
"Strong + Weak"
])
k1 = [Link](9, "Stoch 1 K (9)")
d1 = [Link](3, "Stoch 1 D (3)")
k2 = [Link](14, "Stoch 2 K (14)")
d2 = [Link](3, "Stoch 2 D (3)")
k3 = [Link](40, "Stoch 3 K (40)")
d3 = [Link](4, "Stoch 3 D (4)")
k4 = [Link](60, "Stoch 4 K (60)")
d4 = [Link](10, "Stoch 4 D (10)")
pivotLen = [Link](5, "Pivot Length")
momentumLen = [Link](20, "Momentum Length")
zigzagLen = [Link](8, "ZigZag Length")
slopeLen = [Link](20, "Slope Length")
minSlope = [Link](0.0, "Minimum Slope Strength")
swingPct = [Link](0.0, "Minimum ABC Swing %")
fibMin = [Link](0.382, "B Wave Fib Min")
fibMax = [Link](0.786, "B Wave Fib Max")
momentumPct = [Link](1.0, "Momentum Min Move %", step=0.1)
divMode = [Link]( "ALL", "Divergence Mode",options=["MOM", "ZZ", "PIVOT","SLOPE", "ALL"])
patternMode = [Link](
"ALL",
"Pattern Mode",
options=[
"CLASSIC",
"ELLIOTT",
"CHANNEL",
"ALL"
])
//====================================================
// FIXED STOCHASTIC & DIVERGENCE ENGINE
//====================================================
// Updated function to calculate the %D line specifically
// Updated function definition
f_stoch_d(_len, _smoothK, _smoothD) =>
ll = [Link](low, _len)
hh = [Link](high, _len)
k = hh != ll ? 100 * (close - ll) / (hh - ll) : 0
k_smooth = [Link](k, _smoothK)
d = [Link](k_smooth, _smoothD)
nz(d, 0)
//--- DIVERGENCE MATH CORE FUNCTIONS ---
// Replace your old f_pivot_abc_bull with this updated version
// --- PIVOT ENGINES ---
//====================================================
// PURE ABC DIVERGENCE ENGINE
//====================================================
f_abc_divergence(
aPrice,
bPrice,
cPrice,
aStoch,
cStoch,
signalMode,
swingPct,
fibMin,
fibMax) =>
//----------------------------------
// Fib Retracement
//----------------------------------
abMove = [Link](bPrice - aPrice)
bullRetrace =
abMove > 0 ?
(bPrice - cPrice) / abMove :
0.0
bearRetrace =
abMove > 0 ?
(cPrice - bPrice) / abMove :
0.0
bullFib =
bullRetrace >= fibMin and
bullRetrace <= fibMax
bearFib =
bearRetrace >= fibMin and
bearRetrace <= fibMax
//----------------------------------
// Elliott ABC
//----------------------------------
bullABC =
not na(aPrice) and
not na(bPrice) and
not na(cPrice) and
cPrice < aPrice and
bPrice > [Link](aPrice, cPrice)
bearABC =
not na(aPrice) and
not na(bPrice) and
not na(cPrice) and
cPrice > aPrice and
bPrice < [Link](aPrice, cPrice)
//----------------------------------
// Swing Filter
//----------------------------------
bullSwing =
[Link](bPrice - aPrice) / aPrice * 100 >= swingPct and
[Link](bPrice - cPrice) / cPrice * 100 >= swingPct
bearSwing =
[Link](aPrice - bPrice) / aPrice * 100 >= swingPct and
[Link](cPrice - bPrice) / cPrice * 100 >= swingPct
//----------------------------------
// Classic Divergence
//----------------------------------
bullDiv =
not na(aPrice) and
not na(cPrice) and
cPrice < aPrice and
cStoch > aStoch and
aStoch < 20 and
cStoch > 20
bearDiv =
not na(aPrice) and
not na(cPrice) and
cPrice > aPrice and
cStoch < aStoch and
aStoch > 80 and
cStoch < 80
//----------------------------------
// Ascending / Descending Channel
//----------------------------------
channelBull =
not na(aPrice) and
not na(bPrice) and
not na(cPrice) and
aPrice < cPrice and
bPrice > aPrice and
bPrice > cPrice and
cStoch > aStoch
channelBear =
not na(aPrice) and
not na(bPrice) and
not na(cPrice) and
aPrice > cPrice and
bPrice < aPrice and
bPrice < cPrice and
cStoch < aStoch
//----------------------------------
// Pattern Selector
//----------------------------------
bullPattern =
patternMode == "CLASSIC" ? bullDiv :
patternMode == "ELLIOTT" ? (bullABC and bullDiv) :
patternMode == "CHANNEL" ? channelBull :
(bullDiv or (bullABC and bullDiv) or channelBull)
bearPattern =
patternMode == "CLASSIC" ? bearDiv :
patternMode == "ELLIOTT" ? (bearABC and bearDiv) :
patternMode == "CHANNEL" ? channelBear :
(bearDiv or (bearABC and bearDiv) or channelBear)
//----------------------------------
// Strong / Weak Bull
//----------------------------------
strongBull =
bullPattern and
bullSwing and
bullFib and
aStoch < 20 and
cStoch > 20
weakBull =
not na(aPrice) and
not na(cPrice) and
cPrice < aPrice and
cStoch > aStoch and
aStoch < 20 and
cStoch > 20
//----------------------------------
// Strong / Weak Bear
//----------------------------------
strongBear =
bearPattern and
bearSwing and
bearFib and
aStoch > 80 and
cStoch < 80
weakBear =
not na(aPrice) and
not na(cPrice) and
cPrice > aPrice and
cStoch < aStoch and
aStoch > 80 and
cStoch < 80
//----------------------------------
// Output
//----------------------------------
float result = 0.0
if signalMode == "Strong Only"
result :=
strongBull ? 2 :
strongBear ? -2 :
else if signalMode == "Weak Only"
result :=
weakBull ? 1 :
weakBear ? -1 :
else
result :=
strongBull ? 2 :
strongBear ? -2 :
weakBull ? 1 :
weakBear ? -1 :
result
//====================================================
// PIVOT ABC
//====================================================
f_div_core(aPrice, bPrice, cPrice, aOsc, cOsc) =>
bullDiv = cPrice < aPrice and cOsc > aOsc
bearDiv = cPrice > aPrice and cOsc < aOsc
bullStruct = aPrice > bPrice and cPrice > bPrice
bearStruct = aPrice < bPrice and cPrice < bPrice
bullABC = cPrice < aPrice
bearABC = cPrice > aPrice
bull = bullDiv and bullStruct and bullABC
bear = bearDiv and bearStruct and bearABC
bull ? 1 : bear ? -1 : 0
f_engine_pivot(st, signalMode, swingPct, fibMin, fibMax) =>
ph = [Link](high, pivotLen, pivotLen)
pl = [Link](low, pivotLen, pivotLen)
aPrice = [Link](not na(pl), low[pivotLen], 2)
bPrice = [Link](not na(ph), high[pivotLen], 1)
cPrice = [Link](not na(pl), low[pivotLen], 0)
aOsc = [Link](not na(pl), st[pivotLen], 2)
cOsc = [Link](not na(pl), st[pivotLen], 0)
result = f_abc_divergence(
aPrice,
bPrice,
cPrice,
aOsc,
cOsc,
signalMode,
swingPct,
fibMin,
fibMax)
//====================================================
// MOMENTUM ABC
//====================================================
//====================================================
// MOMENTUM DIVERGENCE (CANDLE BASED)
//====================================================
f_engine_momentum(st, signalMode, swingPct, fibMin, fibMax) =>
aPrice = close[momentumLen]
cPrice = low
aOsc = st[momentumLen]
cOsc = st
priceMovePct = aPrice != 0 ? [Link](cPrice - aPrice) / aPrice * 100 : 0
validMove =
priceMovePct >= momentumPct
bullDiv =
validMove and
cPrice < aPrice and
cOsc > aOsc and
aOsc < 20 and
cOsc > 20
bearDiv =
validMove and
cPrice > aPrice and
cOsc < aOsc and
aOsc > 80 and
cOsc < 80
strongBull =
bullDiv and
aOsc < 20 and
cOsc > 20
strongBear =
bearDiv and
aOsc > 80 and
cOsc < 80
float result = 0
if signalMode == "Strong Only"
result :=
strongBull ? 2 :
strongBear ? -2 :
else if signalMode == "Weak Only"
result :=
bullDiv ? 1 :
bearDiv ? -1 :
else
result :=
strongBull ? 2 :
strongBear ? -2 :
bullDiv ? 1 :
bearDiv ? -1 :
result
//====================================================
// SLOPE DIVERGENCE ENGINE
//====================================================
f_engine_slope(st, signalMode) =>
//----------------------------------
// Regression Slopes
//----------------------------------
priceSlope =
[Link](low, slopeLen, 0) -
[Link](low, slopeLen, 1)
oscSlope =
[Link](st, slopeLen, 0) -
[Link](st, slopeLen, 1)
//----------------------------------
// Bull / Bear Divergence
//----------------------------------
bullDiv =
priceSlope < -minSlope and
oscSlope > minSlope and
st[slopeLen] < 20 and
st > 20
bearDiv =
priceSlope > minSlope and
oscSlope < -minSlope and
st[slopeLen] > 80 and
st < 80
//----------------------------------
// Strong Signals
//----------------------------------
strongBull =
bullDiv and
st[slopeLen] < 20
strongBear =
bearDiv and
st[slopeLen] > 80
//----------------------------------
// Output
//----------------------------------
float result = 0
if signalMode == "Strong Only"
result :=
strongBull ? 2 :
strongBear ? -2 :
else if signalMode == "Weak Only"
result :=
bullDiv ? 1 :
bearDiv ? -1 :
else
result :=
strongBull ? 2 :
strongBear ? -2 :
bullDiv ? 1 :
bearDiv ? -1 :
result
//====================================================
// ZIGZAG ABC
//====================================================
f_engine_zigzag(st, signalMode, swingPct, fibMin, fibMax) =>
ph = [Link](high, zigzagLen, zigzagLen)
pl = [Link](low, zigzagLen, zigzagLen)
aPrice = [Link](not na(pl), low[zigzagLen], 2)
bPrice = [Link](not na(ph), high[zigzagLen], 1)
cPrice = [Link](not na(pl), low[zigzagLen], 0)
aOsc = [Link](not na(pl), st[zigzagLen], 2)
cOsc = [Link](not na(pl), st[zigzagLen], 0)
result = f_abc_divergence(
aPrice,
bPrice,
cPrice,
aOsc,
cOsc,
signalMode,
swingPct,
fibMin,
fibMax)
//====================================================
// DATA PROCESSOR WITH CONDITIONAL MODE MATRIX
//====================================================
f_calc_data(
k1, d1,
k2, d2,
k3, d3,
k4, d4,
div_k, div_d,
div2_k, div2_d,
momentumLen,
zigzagLen,
divergenceMode,
divMode,
patternMode,
signalMode,
swingPct,
fibMin,
fibMax
) =>
//========================
// STOCHASTICS
//========================
s1 = f_stoch_d(k1, 3, d1)
s2 = f_stoch_d(k2, 3, d2)
s3 = f_stoch_d(k3, 3, d3)
s4 = f_stoch_d(k4, 3, d4)
div_st1 = f_stoch_d(div_k, 3, div_d)
div_st2 = f_stoch_d(div2_k, 3, div2_d)
//========================
// RAW ENGINE OUTPUTS
//========================
//========================
// DIVERGENCE 1 ENGINES
//========================
piv1 = f_engine_pivot(
div_st1,
signalMode,
swingPct,
fibMin,
fibMax)
zz1 = f_engine_zigzag(
div_st1,
signalMode,
swingPct,
fibMin,
fibMax)
mom1 = f_engine_momentum(
div_st1,
signalMode,
swingPct,
fibMin,
fibMax)
//========================
// DIVERGENCE 2 ENGINES
//========================
slope1 = f_engine_slope(
div_st1,
signalMode)
piv2 = f_engine_pivot(
div_st2,
signalMode,
swingPct,
fibMin,
fibMax)
zz2 = f_engine_zigzag(
div_st2,
signalMode,
swingPct,
fibMin,
fibMax)
mom2 = f_engine_momentum(
div_st2,
signalMode,
swingPct,
fibMin,
fibMax)
slope2 = f_engine_slope(
div_st2,
signalMode)
//========================
// DIVERGENCE MODE
//========================
p_state =
divergenceMode == "Divergence 1 Only" ? piv1 :
divergenceMode == "Divergence 2 Only" ? piv2 :
piv1 != 0 ? piv1 : piv2
z_state =
divergenceMode == "Divergence 1 Only" ? zz1 :
divergenceMode == "Divergence 2 Only" ? zz2 :
zz1 != 0 ? zz1 : zz2
m_state =
divergenceMode == "Divergence 1 Only" ? mom1 :
divergenceMode == "Divergence 2 Only" ? mom2 :
mom1 != 0 ? mom1 : mom2
s_state =
divergenceMode == "Divergence 1 Only" ? slope1 :
divergenceMode == "Divergence 2 Only" ? slope2 :
slope1 != 0 ? slope1 : slope2
//========================
// DIVMODE FILTER
//========================
final_mom =
not enableDivergence ? 0 :
divMode == "MOM" ? m_state :
divMode == "ALL" ? m_state :
final_zz =
not enableDivergence ? 0 :
divMode == "ZZ" ? z_state :
divMode == "ALL" ? z_state :
final_piv =
not enableDivergence ? 0 :
divMode == "PIVOT" ? p_state :
divMode == "ALL" ? p_state :
0
final_slope =
not enableDivergence ? 0 :
divMode == "SLOPE" ? s_state :
divMode == "ALL" ? s_state :
//========================
// OUTPUT
//========================
[s1, s2, s3, s4, final_mom, final_zz, final_piv, final_slope]
//====================================================
////====================================================
// UPDATED SYMBOL ROUTING MATRIX (GROUP 1 / GROUP 2)
//====================================================
// PAGE BASED SYMBOL MATRIX (CLEAN VERSION)
//====================================================
// FIXED PAGE + GROUP SYMBOL MATRIX (WORKING)
//====================================================
isG1 = groupSel == "GROUP 1"
isG2 = groupSel == "GROUP 2"
// PAGE 1 BANKING
s1 = pageSel=="BANKING" ? (isG1 ? "NSE:HDFCBANK" : "NSE:INDUSINDBK") : na
s2 = pageSel=="BANKING" ? (isG1 ? "NSE:ICICIBANK" : "NSE:BANDHANBNK") : na
s3 = pageSel=="BANKING" ? (isG1 ? "NSE:SBIN" : "NSE:AUBANK") : na
s4 = pageSel=="BANKING" ? (isG1 ? "NSE:AXISBANK" : "NSE:FEDERALBNK") : na
s5 = pageSel=="BANKING" ? (isG1 ? "NSE:KOTAKBANK" : "NSE:IDFCFIRSTB") : na
// PAGE 2 IT
s1 := pageSel=="IT" ? (isG1 ? "NSE:TCS" : "NSE:LTIM") : s1
s2 := pageSel=="IT" ? (isG1 ? "NSE:INFY" : "NSE:PERSISTENT") : s2
s3 := pageSel=="IT" ? (isG1 ? "NSE:WIPRO" : "NSE:MPHASIS") : s3
s4 := pageSel=="IT" ? (isG1 ? "NSE:HCLTECH" : "NSE:COFORGE") : s4
s5 := pageSel=="IT" ? (isG1 ? "NSE:TECHM" : "NSE:OFSS") : s5
// PAGE 3 AUTO
s1 := pageSel=="AUTO" ? (isG1 ? "NSE:MARUTI" : "NSE:TVSMOTOR") : s1
s2 := pageSel=="AUTO" ? (isG1 ? "NSE:TATAMOTORS" : "NSE:HEROMOTOCO") : s2
s3 := pageSel=="AUTO" ? (isG1 ? "NSE:M&M" : "NSE:BOSCHLTD") : s3
s4 := pageSel=="AUTO" ? (isG1 ? "NSE:BAJAJ_AUTO" : "NSE:MRF") : s4
s5 := pageSel=="AUTO" ? (isG1 ? "NSE:EICHERMOT" : "NSE:ASHOKLEY") : s5
// PAGE 4 FMCG
s1 := pageSel=="FMCG" ? (isG1 ? "NSE:HINDUNILVR" : "NSE:DABUR") : s1
s2 := pageSel=="FMCG" ? (isG1 ? "NSE:ITC" : "NSE:MARICO") : s2
s3 := pageSel=="FMCG" ? (isG1 ? "NSE:NESTLEIND" : "NSE:GODREJCP") : s3
s4 := pageSel=="FMCG" ? (isG1 ? "NSE:BRITANNIA" : "NSE:COLPAL") : s4
s5 := pageSel=="FMCG" ? (isG1 ? "NSE:VBL" : "NSE:TATACONSUM") : s5
// PAGE 5 PHARMA
s1 := pageSel=="PHARMA" ? (isG1 ? "NSE:SUNPHARMA" : "NSE:GLENMARK") : s1
s2 := pageSel=="PHARMA" ? (isG1 ? "NSE:DRREDDY" : "NSE:LUPIN") : s2
s3 := pageSel=="PHARMA" ? (isG1 ? "NSE:CIPLA" : "NSE:TORNTPHARM") : s3
s4 := pageSel=="PHARMA" ? (isG1 ? "NSE:DIVISLAB" : "NSE:ALKEM") : s4
s5 := pageSel=="PHARMA" ? (isG1 ? "NSE:AUROPHARMA" : "NSE:ZYDUSLIFE") : s5
// PAGE 6 ENERGY
s1 := pageSel=="ENERGY" ? (isG1 ? "NSE:RELIANCE" : "NSE:POWERGRID") : s1
s2 := pageSel=="ENERGY" ? (isG1 ? "NSE:ONGC" : "NSE:TATAPOWER") : s2
s3 := pageSel=="ENERGY" ? (isG1 ? "NSE:BPCL" : "NSE:ADANIGREEN") : s3
s4 := pageSel=="ENERGY" ? (isG1 ? "NSE:IOC" : "NSE:ADANITRANS") : s4
s5 := pageSel=="ENERGY" ? (isG1 ? "NSE:NTPC" : "NSE:COALINDIA") : s5
// PAGE 7 METAL
s1 := pageSel=="METAL" ? (isG1 ? "NSE:TATASTEEL" : "NSE:NATIONALUM") : s1
s2 := pageSel=="METAL" ? (isG1 ? "NSE:JSWSTEEL" : "NSE:HINDZINC") : s2
s3 := pageSel=="METAL" ? (isG1 ? "NSE:HINDALCO" : "NSE:SAIL") : s3
s4 := pageSel=="METAL" ? (isG1 ? "NSE:VEDL" : "NSE:MOIL") : s4
s5 := pageSel=="METAL" ? (isG1 ? "NSE:JINDALSTEL" : "NSE:RATNAMANI") : s5
// PAGE 8 REALTY
s1 := pageSel=="REALTY" ? (isG1 ? "NSE:DLF" : "NSE:BRIGADE") : s1
s2 := pageSel=="REALTY" ? (isG1 ? "NSE:GODREJPROP" : "NSE:SOBHA") : s2
s3 := pageSel=="REALTY" ? (isG1 ? "NSE:OBEROIRLTY" : "NSE:MAHLIFE") : s3
s4 := pageSel=="REALTY" ? (isG1 ? "NSE:PHOENIXLTD" : "NSE:IBULLSLTD") : s4
s5 := pageSel=="REALTY" ? (isG1 ? "NSE:PRESTIGE" : "NSE:ANANTRAJ") : s5
// PAGE 9 FINANCE
s1 := pageSel=="FINANCE" ? (isG1 ? "NSE:BAJFINANCE" : "NSE:PFC") : s1
s2 := pageSel=="FINANCE" ? (isG1 ? "NSE:BAJAJFINSV" : "NSE:RECLTD") : s2
s3 := pageSel=="FINANCE" ? (isG1 ? "NSE:CHOLAFIN" : "NSE:ICICIPRULI") : s3
s4 := pageSel=="FINANCE" ? (isG1 ? "NSE:MUTHOOTFIN" : "NSE:LICI") : s4
s5 := pageSel=="FINANCE" ? (isG1 ? "NSE:SHRIRAMFIN" : "NSE:SBILIFE") : s5
// PAGE 10 CONSUMER
s1 := pageSel=="CONSUMER" ? (isG1 ? "NSE:TATACONSUM" : "NSE:RELAXO") : s1
s2 := pageSel=="CONSUMER" ? (isG1 ? "NSE:UBL" : "NSE:PAGEIND") : s2
s3 := pageSel=="CONSUMER" ? (isG1 ? "NSE:UNITDSPR" : "NSE:KAJARIACER") : s3
s4 := pageSel=="CONSUMER" ? (isG1 ? "NSE:RADICO" : "NSE:BLUESTARCO") : s4
s5 := pageSel=="CONSUMER" ? (isG1 ? "NSE:VOLTAS" : "NSE:WHIRLPOOL") : s5
// PAGE 11 CRYPTO
s1 := pageSel=="CRYPTO" ? (isG1 ? "BINANCE:BTCUSDT" : "BINANCE:ZECUSDT") : s1
s2 := pageSel=="CRYPTO" ? (isG1 ? "BINANCE:ETHUSDT" : "BINANCE:AVAXUSDT") : s2
s3 := pageSel=="CRYPTO" ? (isG1 ? "BINANCE:SOLUSDT" : "MUSD.P") : s3
s4 := pageSel=="CRYPTO" ? (isG1 ? "BINANCE:BNBUSDT" : "RIVERUSD.P") : s4
s5 := pageSel=="CRYPTO" ? (isG1 ? "BINANCE:LINKUSDT" : "BINANCE:DOGEUSDT") : s5
// PAGE 12 MCX
s1 := pageSel=="MCX" ? (isG1 ? "MCX:GOLD1!" : "MCX:ALUMINIUM1!") : s1
s2 := pageSel=="MCX" ? (isG1 ? "MCX:SILVER1!" : "MCX:ZINC1!") : s2
s3 := pageSel=="MCX" ? (isG1 ? "MCX:CRUDEOIL1!" : "MCX:LEAD1!") : s3
s4 := pageSel=="MCX" ? (isG1 ? "MCX:NATURALGAS1!" : "MCX:NICKEL1!") : s4
s5 := pageSel=="MCX" ? (isG1 ? "MCX:COPPER1!" : "MCX:MENTHAOIL1!") : s5
// PAGE 13 SECTOR INDICES
s1 := pageSel=="SECTORS" ? (isG1 ? "NSE:BANKNIFTY" : "NSE:CNXPHARMA") : s1
s2 := pageSel=="SECTORS" ? (isG1 ? "NSE:CNXFINANCE" : "NSE:CNXMETAL") : s2
s3 := pageSel=="SECTORS" ? (isG1 ? "NSE:CNXIT" : "NSE:CNXENERGY") : s3
s4 := pageSel=="SECTORS" ? (isG1 ? "NSE:CNXAUTO" : "NSE:CNXREALTY") : s4
s5 := pageSel=="SECTORS" ? (isG1 ? "NSE:CNXFMCG" : "NSE:CNXCONSUMPTION") : s5
//====================================================
// DATA STREAM ACQUISITIONS
//====================================================
[r1_st1, r1_st2, r1_st3, r1_st4, r1_mom, r1_zz, r1_piv, r1_slope] =
[Link](s1, scanTF,
f_calc_data(
k1, d1,
k2, d2,
k3, d3,
k4, d4,
div_k, div_d,
div2_k, div2_d,
momentumLen,
zigzagLen,
divergenceMode,
divMode,
patternMode,
signalMode,
swingPct,
fibMin,
fibMax
))
[r2_st1, r2_st2, r2_st3, r2_st4, r2_mom, r2_zz, r2_piv, r2_slope] =
[Link](s2, scanTF,
f_calc_data(
k1, d1,
k2, d2,
k3, d3,
k4, d4,
div_k, div_d,
div2_k, div2_d,
momentumLen,
zigzagLen,
divergenceMode,
divMode,
patternMode,
signalMode,
swingPct,
fibMin,
fibMax
))
[r3_st1, r3_st2, r3_st3, r3_st4, r3_mom, r3_zz, r3_piv, r3_slope] =
[Link](s3, scanTF,
f_calc_data(
k1, d1,
k2, d2,
k3, d3,
k4, d4,
div_k, div_d,
div2_k, div2_d,
momentumLen,
zigzagLen,
divergenceMode,
divMode,
patternMode,
signalMode,
swingPct,
fibMin,
fibMax
))
[r4_st1, r4_st2, r4_st3, r4_st4, r4_mom, r4_zz, r4_piv, r4_slope] =
[Link](s4, scanTF,
f_calc_data(
k1, d1,
k2, d2,
k3, d3,
k4, d4,
div_k, div_d,
div2_k, div2_d,
momentumLen,
zigzagLen,
divergenceMode,
divMode,
patternMode,
signalMode,
swingPct,
fibMin,
fibMax
))
[r5_st1, r5_st2, r5_st3, r5_st4, r5_mom, r5_zz, r5_piv, r5_slope] =
[Link](s5, scanTF,
f_calc_data(
k1, d1,
k2, d2,
k3, d3,
k4, d4,
div_k, div_d,
div2_k, div2_d,
momentumLen,
zigzagLen,
divergenceMode,
divMode,
patternMode,
signalMode,
swingPct,
fibMin,
fibMax
))
//====================================================
// FILTER VERIFICATION LOGIC
//====================================================
f_is_filtered(st1, st2, st3, st4) =>
bool pass1 =
not filterStoch1 or
(not na(st1) and (st1 >= st1OB or st1 <= st1OS))
bool pass2 =
not filterStoch2 or
(not na(st2) and (st2 >= st2OB or st2 <= st2OS))
bool pass3 =
not filterStoch3 or
(not na(st3) and (st3 >= st3OB or st3 <= st3OS))
bool pass4 =
not filterStoch4 or
(not na(st4) and (st4 >= st4OB or st4 <= st4OS))
pass1 and pass2 and pass3 and pass4
//====================================================
// CELL RENDER STYLES & CONVERSIONS
//====================================================
f_col(v) =>
na(v) or v > 100 or v < 0 ? [Link] : v > 80 ? [Link] : v < 20 ? [Link] : [Link]
f_cell_val(v) =>
na(v) or v > 100 or v < 0 ? "-" : [Link]([Link](v))
f_div_display(state) =>
string txt = "-"
color bg = [Link]
if state == 2
txt := "STR BULL"
bg := [Link]
else if state == 1
txt := "WEAKBULL"
bg := [Link]
else if state == -1
txt := "WEAKBEAR"
bg := [Link]
else if state == -2
txt := "STR BEAR"
bg := [Link]
[txt, bg]
//====================================================
// DISPLAY MATRIX DASHBOARD
//====================================================
var table t = [Link](position.top_right, 9, 6, border_width=1)
if [Link]
[Link](t, 0, 0, 7, 5)
[Link](t,0,0,"SYMBOL (" + pageSel + ")",bgcolor=[Link],text_color=[Link])
[Link](t,1,0,[Link](k1)+","+[Link](d1),bgcolor=[Link],text_color=[Link])
[Link](t,2,0,[Link](k2)+","+[Link](d2),bgcolor=[Link],text_color=[Link])
[Link](t,3,0,[Link](k3)+","+[Link](d3),bgcolor=[Link],text_color=[Link])
[Link](t,4,0,[Link](k4)+","+[Link](d4),bgcolor=[Link],text_color=[Link])
[Link](t,5,0,"MOM",bgcolor=[Link],text_color=[Link])
[Link](t,6,0,"ZZ",bgcolor=[Link],text_color=[Link])
[Link](t,7,0,"PIVOT",bgcolor=[Link],text_color=[Link])
[Link](t,8,0,"SLOPE",bgcolor=[Link],text_color=[Link])
int rowIdx = 1
// Row 1 Processing
if f_is_filtered(r1_st1, r1_st2,r1_st3, r1_st4)
[r1M_txt, r1M_bg] = f_div_display(r1_mom)
[r1Z_txt, r1Z_bg] = f_div_display(r1_zz)
[r1P_txt, r1P_bg] = f_div_display(r1_piv)
[r1S_txt, r1S_bg] = f_div_display(r1_slope)
[Link](t,0,rowIdx,s1)
[Link](t,1,rowIdx,f_cell_val(r1_st1), bgcolor=f_col(r1_st1))
[Link](t,2,rowIdx,f_cell_val(r1_st2), bgcolor=f_col(r1_st2))
[Link](t,3,rowIdx,f_cell_val(r1_st3), bgcolor=f_col(r1_st3))
[Link](t,4,rowIdx,f_cell_val(r1_st4), bgcolor=f_col(r1_st4))
[Link](t,5,rowIdx,r1M_txt, bgcolor=r1M_bg, text_color=[Link])
[Link](t,6,rowIdx,r1Z_txt, bgcolor=r1Z_bg, text_color=[Link])
[Link](t,7,rowIdx,r1P_txt, bgcolor=r1P_bg, text_color=[Link])
[Link](t,8,rowIdx,r1S_txt, bgcolor=r1S_bg, text_color=[Link])
rowIdx := rowIdx + 1
// Row 2 Processing
if f_is_filtered(r2_st1, r2_st2, r2_st3, r2_st4)
[r2M_txt, r2M_bg] = f_div_display(r2_mom)
[r2Z_txt, r2Z_bg] = f_div_display(r2_zz)
[r2P_txt, r2P_bg] = f_div_display(r2_piv)
[r2S_txt, r2S_bg] = f_div_display(r2_slope)
[Link](t,0,rowIdx,s2)
[Link](t,1,rowIdx,f_cell_val(r2_st1), bgcolor=f_col(r2_st1))
[Link](t,2,rowIdx,f_cell_val(r2_st2), bgcolor=f_col(r2_st2))
[Link](t,3,rowIdx,f_cell_val(r2_st3), bgcolor=f_col(r2_st3))
[Link](t,4,rowIdx,f_cell_val(r2_st4), bgcolor=f_col(r2_st4))
[Link](t,5,rowIdx,r2M_txt, bgcolor=r2M_bg, text_color=[Link])
[Link](t,6,rowIdx,r2Z_txt, bgcolor=r2Z_bg, text_color=[Link])
[Link](t,7,rowIdx,r2P_txt, bgcolor=r2P_bg, text_color=[Link])
[Link](t,8,rowIdx,r2S_txt, bgcolor=r2S_bg, text_color=[Link])
rowIdx := rowIdx + 1
// Row 3 Processing
if f_is_filtered(r3_st1, r3_st2, r3_st3, r3_st4)
[r3M_txt, r3M_bg] = f_div_display(r3_mom)
[r3Z_txt, r3Z_bg] = f_div_display(r3_zz)
[r3P_txt, r3P_bg] = f_div_display(r3_piv)
[r3S_txt, r3S_bg] = f_div_display(r3_slope)
[Link](t,0,rowIdx,s3)
[Link](t,1,rowIdx,f_cell_val(r3_st1), bgcolor=f_col(r3_st1))
[Link](t,2,rowIdx,f_cell_val(r3_st2), bgcolor=f_col(r3_st2))
[Link](t,3,rowIdx,f_cell_val(r3_st3), bgcolor=f_col(r3_st3))
[Link](t,4,rowIdx,f_cell_val(r3_st4), bgcolor=f_col(r3_st4))
[Link](t,5,rowIdx,r3M_txt, bgcolor=r3M_bg, text_color=[Link])
[Link](t,6,rowIdx,r3Z_txt, bgcolor=r3Z_bg, text_color=[Link])
[Link](t,7,rowIdx,r3P_txt, bgcolor=r3P_bg, text_color=[Link])
[Link](t,8,rowIdx,r3S_txt, bgcolor=r3S_bg, text_color=[Link])
rowIdx := rowIdx + 1
// Row 4 Processing
if f_is_filtered(r4_st1, r4_st2, r4_st3, r4_st4)
[r4M_txt, r4M_bg] = f_div_display(r4_mom)
[r4Z_txt, r4Z_bg] = f_div_display(r4_zz)
[r4P_txt, r4P_bg] = f_div_display(r4_piv)
[r4S_txt, r4S_bg] = f_div_display(r4_slope)
[Link](t,0,rowIdx,s4)
[Link](t,1,rowIdx,f_cell_val(r4_st1), bgcolor=f_col(r4_st1))
[Link](t,2,rowIdx,f_cell_val(r4_st2), bgcolor=f_col(r4_st2))
[Link](t,3,rowIdx,f_cell_val(r4_st3), bgcolor=f_col(r4_st3))
[Link](t,4,rowIdx,f_cell_val(r4_st4), bgcolor=f_col(r4_st4))
[Link](t,5,rowIdx,r4M_txt, bgcolor=r4M_bg, text_color=[Link])
[Link](t,6,rowIdx,r4Z_txt, bgcolor=r4Z_bg, text_color=[Link])
[Link](t,7,rowIdx,r4P_txt, bgcolor=r4P_bg, text_color=[Link])
[Link](t,8,rowIdx,r4S_txt, bgcolor=r4S_bg, text_color=[Link])
rowIdx := rowIdx + 1
// Row 5 Processing
if f_is_filtered(r5_st1, r5_st2, r5_st3, r5_st4)
[r5M_txt, r5M_bg] = f_div_display(r5_mom)
[r5Z_txt, r5Z_bg] = f_div_display(r5_zz)
[r5P_txt, r5P_bg] = f_div_display(r5_piv)
[r5S_txt, r5S_bg] = f_div_display(r5_slope)
[Link](t,0,rowIdx,s5)
[Link](t,1,rowIdx,f_cell_val(r5_st1), bgcolor=f_col(r5_st1))
[Link](t,2,rowIdx,f_cell_val(r5_st2), bgcolor=f_col(r5_st2))
[Link](t,3,rowIdx,f_cell_val(r5_st3), bgcolor=f_col(r5_st3))
[Link](t,4,rowIdx,f_cell_val(r5_st4), bgcolor=f_col(r5_st4))
[Link](t,5,rowIdx,r5M_txt, bgcolor=r5M_bg, text_color=[Link])
[Link](t,6,rowIdx,r5Z_txt, bgcolor=r5Z_bg, text_color=[Link])
[Link](t,7,rowIdx,r5P_txt, bgcolor=r5P_bg, text_color=[Link])
[Link](t,8,rowIdx,r5S_txt, bgcolor=r5S_bg, text_color=[Link])
//====================================================
// CHART STOCHASTIC VALUES
//====================================================
chart_stoch1 = f_stoch_d(k1, 3, d1)
chart_stoch2 = f_stoch_d(k2, 3, d2)
chart_stoch3 = f_stoch_d(k3, 3, d3)
chart_stoch4 = f_stoch_d(k4, 3, d4)
//====================================================
// PANEL OFFSETS
//====================================================
p1 = chart_stoch1 + 360
p2 = chart_stoch2 + 240
p3 = chart_stoch3 + 120
p4 = chart_stoch4
plot(360, color=[Link], linewidth=4)
plot(240, color=[Link], linewidth=4)
plot(120, color=[Link], linewidth=4)
// Top panel
hline(380, color=[Link])
hline(440, color=[Link])
// Second panel
hline(260, color=[Link])
hline(320, color=[Link])
// Third panel
hline(140, color=[Link])
hline(200, color=[Link])
// Bottom panel
hline(20, color=[Link])
hline(80, color=[Link])
plot(p1, color=[Link], linewidth=2, title="9,3")
plot(p2, color=[Link], linewidth=2, title="14,3")
plot(p3, color=[Link], linewidth=2, title="40,4")
plot(p4, color=[Link], linewidth=2, title="60,10")