//@version=5
indicator("Nse investment Configurable Dual ABC Divergence_MOBILE", overlay=false,
max_bars_back=2000)
//====================================================
// ALL SECTORS & GROUPS SELECTION
//====================================================
scanTF = [Link]("60", "Scanner Timeframe")
pageSel = [Link]("PAGE 1", "Select Page",
options=["PAGE 1","PAGE 2","PAGE 3","PAGE 4","PAGE 5"])
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
bearDiv =
not na(aPrice) and
not na(cPrice) and
cPrice > aPrice and
cStoch < aStoch
//----------------------------------
// 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
//----------------------------------
// 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
//----------------------------------
// 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
bearDiv =
validMove and
cPrice > aPrice and
cOsc < aOsc
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 :
0
else
result :=
strongBull ? 2 :
strongBear ? -2 :
bullDiv ? 1 :
bearDiv ? -1 :
result
//====================================================
// ZIGZAG ABC
//====================================================
//====================================================
// 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
bearDiv =
priceSlope > minSlope and
oscSlope < -minSlope
//----------------------------------
// Strong Signals
//----------------------------------
strongBull =
bullDiv and
st < 20
strongBear =
bearDiv and
st > 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
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)
//========================
// DIVERGENCE MODE
//========================
slope2 = f_engine_slope(
div_st2,
signalMode)
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
//========================
// DIVMODE FILTER
//========================
s_state =
divergenceMode == "Divergence 1 Only" ? slope1 :
divergenceMode == "Divergence 2 Only" ? slope2 :
slope1 != 0 ? slope1 : slope2
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 :
//========================
// OUTPUT
//========================
final_slope =
not enableDivergence ? 0 :
divMode == "SLOPE" ? s_state :
divMode == "ALL" ? s_state :
0
[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 ----------------
s1 = pageSel == "PAGE 1" ? (isG1 ? "NSE:SUZLON" : "NSE:UCOBANK") : na
s2 = pageSel == "PAGE 1" ? (isG1 ? "NSE:IDEA" : "NSE:IOB") : na
s3 = pageSel == "PAGE 1" ? (isG1 ? "NSE:IRFC" : "NSE:SAIL") : na
s4 = pageSel == "PAGE 1" ? (isG1 ? "NSE:RVNL" : "NSE:NMDC") : na
s5 = pageSel == "PAGE 1" ? (isG1 ? "NSE:NBCC" : "NSE:IRB") : na
//---------------- PAGE 2 ----------------
s1 := pageSel == "PAGE 2" ? (isG1 ? "NSE:HFCL" : "NSE:YESBANK") : s1
s2 := pageSel == "PAGE 2" ? (isG1 ? "NSE:CENTRALBK" : "NSE:MAZDOCK") : s2
s3 := pageSel == "PAGE 2" ? (isG1 ? "NSE:JPPOWER" : "NSE:PCBL") : s3
s4 := pageSel == "PAGE 2" ? (isG1 ? "NSE:NETWORK18" : "NSE:TTML") : s4
s5 := pageSel == "PAGE 2" ? (isG1 ? "NSE:RPOWER" : "NSE:GSFC") : s5
//---------------- PAGE 3 ----------------
s1 := pageSel == "PAGE 3" ? (isG1 ? "NSE:RCF" : "NSE:NCC") : s1
s2 := pageSel == "PAGE 3" ? (isG1 ? "NSE:ENGINERSIN" : "NSE:IDBI") : s2
s3 := pageSel == "PAGE 3" ? (isG1 ? "NSE:MMTC" : "NSE:ITI") : s3
s4 := pageSel == "PAGE 3" ? (isG1 ? "NSE:RAILTEL" : "NSE:IRCON") : s4
s5 := pageSel == "PAGE 3" ? (isG1 ? "NSE:SCI" : "NSE:COCHINSHIP"): s5
//---------------- PAGE 4 ----------------
s1 := pageSel == "PAGE 4" ? (isG1 ? "NSE:GRAPHITE" : "NSE:GRSE") : s1
s2 := pageSel == "PAGE 4" ? (isG1 ? "NSE:WELCORP" : "NSE:REDINGTON") : s2
s3 := pageSel == "PAGE 4" ? (isG1 ? "NSE:NETWORK18" : "NSE:EASEMYTRIP"): s3
s4 := pageSel == "PAGE 4" ? (isG1 ? "NSE:AFFLE" : "NSE:KNRCON") : s4
s5 := pageSel == "PAGE 4" ? (isG1 ? "NSE:FINPIPE" : "NSE:POWERINDIA"): s5
//---------------- PAGE 5 ----------------
s1 := pageSel == "PAGE 5" ? (isG1 ? "NSE:SUZLON" : "NSE:IDEA") : s1
s2 := pageSel == "PAGE 5" ? (isG1 ? "NSE:IRFC" : "NSE:RVNL") : s2
s3 := pageSel == "PAGE 5" ? (isG1 ? "NSE:HFCL" : "NSE:YESBANK") : s3
s4 := pageSel == "PAGE 5" ? (isG1 ? "NSE:RCF" : "NSE:NCC") : s4
s5 := pageSel == "PAGE 5" ? (isG1 ? "NSE:GRAPHITE" : "NSE:GRSE") : 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 := "SB"
bg := [Link]
else if state == 1
txt := "B"
bg := [Link]
else if state == -1
txt := "R"
bg := [Link]
else if state == -2
txt := "SR"
bg := [Link]
[txt, bg]
//====================================================
// DISPLAY MATRIX DASHBOARD
//====================================================
//====================================================
// MOBILE DASHBOARD
//====================================================
var table t = [Link](position.top_right, 9, 6, border_width=1)
f_sym(txt) =>
[Link](txt, "NSE:", "")
if [Link]
[Link](t, 0, 0, 8, 5)
[Link](t,0,0,"SYM",bgcolor=[Link],text_color=[Link],text_size=[Link])
[Link](t,1,0,"9",bgcolor=[Link],text_color=[Link],text_size=[Link])
[Link](t,2,0,"14",bgcolor=[Link],text_color=[Link],text_size=[Link])
[Link](t,3,0,"40",bgcolor=[Link],text_color=[Link],text_size=[Link])
[Link](t,4,0,"60",bgcolor=[Link],text_color=[Link],text_size=[Link])
[Link](t,5,0,"M",bgcolor=[Link],text_color=[Link],text_size=[Link])
[Link](t,6,0,"Z",bgcolor=[Link],text_color=[Link],text_size=[Link])
[Link](t,7,0,"P",bgcolor=[Link],text_color=[Link],text_size=[Link])
[Link](t,8,0,"S",bgcolor=[Link],text_color=[Link],text_size=[Link])
int rowIdx = 1
if f_is_filtered(r1_st1, r1_st2, r1_st3, r1_st4)
[mtxt,mbg] = f_div_display(r1_mom)
[ztxt,zbg] = f_div_display(r1_zz)
[ptxt,pbg] = f_div_display(r1_piv)
[stxt,sbg] = f_div_display(r1_slope)
[Link](t,0,rowIdx,f_sym(s1),text_size=[Link])
[Link](t,1,rowIdx,f_cell_val(r1_st1),bgcolor=f_col(r1_st1),text_size=[Link])
[Link](t,2,rowIdx,f_cell_val(r1_st2),bgcolor=f_col(r1_st2),text_size=[Link])
[Link](t,3,rowIdx,f_cell_val(r1_st3),bgcolor=f_col(r1_st3),text_size=[Link])
[Link](t,4,rowIdx,f_cell_val(r1_st4),bgcolor=f_col(r1_st4),text_size=[Link])
[Link](t,5,rowIdx,mtxt,bgcolor=mbg,text_color=[Link],text_size=[Link])
[Link](t,6,rowIdx,ztxt,bgcolor=zbg,text_color=[Link],text_size=[Link])
[Link](t,7,rowIdx,ptxt,bgcolor=pbg,text_color=[Link],text_size=[Link])
[Link](t,8,rowIdx,stxt,bgcolor=pbg,text_color=[Link],text_size=[Link])
rowIdx += 1
if f_is_filtered(r2_st1, r2_st2, r2_st3, r2_st4)
[mtxt,mbg] = f_div_display(r2_mom)
[ztxt,zbg] = f_div_display(r2_zz)
[ptxt,pbg] = f_div_display(r2_piv)
[stxt,sbg] = f_div_display(r2_slope)
[Link](t,0,rowIdx,f_sym(s2),text_size=[Link])
[Link](t,1,rowIdx,f_cell_val(r2_st1),bgcolor=f_col(r2_st1),text_size=[Link])
[Link](t,2,rowIdx,f_cell_val(r2_st2),bgcolor=f_col(r2_st2),text_size=[Link])
[Link](t,3,rowIdx,f_cell_val(r2_st3),bgcolor=f_col(r2_st3),text_size=[Link])
[Link](t,4,rowIdx,f_cell_val(r2_st4),bgcolor=f_col(r2_st4),text_size=[Link])
[Link](t,5,rowIdx,mtxt,bgcolor=mbg,text_color=[Link],text_size=[Link])
[Link](t,6,rowIdx,ztxt,bgcolor=zbg,text_color=[Link],text_size=[Link])
[Link](t,7,rowIdx,ptxt,bgcolor=pbg,text_color=[Link],text_size=[Link])
[Link](t,8,rowIdx,stxt,bgcolor=sbg,text_color=[Link],text_size=[Link])
rowIdx += 1
if f_is_filtered(r3_st1, r3_st2, r3_st3, r3_st4)
[mtxt,mbg] = f_div_display(r3_mom)
[ztxt,zbg] = f_div_display(r3_zz)
[ptxt,pbg] = f_div_display(r3_piv)
[stxt,sbg] = f_div_display(r3_slope)
[Link](t,0,rowIdx,f_sym(s3),text_size=[Link])
[Link](t,1,rowIdx,f_cell_val(r3_st1),bgcolor=f_col(r3_st1),text_size=[Link])
[Link](t,2,rowIdx,f_cell_val(r3_st2),bgcolor=f_col(r3_st2),text_size=[Link])
[Link](t,3,rowIdx,f_cell_val(r3_st3),bgcolor=f_col(r3_st3),text_size=[Link])
[Link](t,4,rowIdx,f_cell_val(r3_st4),bgcolor=f_col(r3_st4),text_size=[Link])
[Link](t,5,rowIdx,mtxt,bgcolor=mbg,text_color=[Link],text_size=[Link])
[Link](t,6,rowIdx,ztxt,bgcolor=zbg,text_color=[Link],text_size=[Link])
[Link](t,7,rowIdx,ptxt,bgcolor=pbg,text_color=[Link],text_size=[Link])
[Link](t,8,rowIdx,stxt,bgcolor=sbg,text_color=[Link],text_size=[Link])
rowIdx += 1
if f_is_filtered(r4_st1, r4_st2, r4_st3, r4_st4)
[mtxt,mbg] = f_div_display(r4_mom)
[ztxt,zbg] = f_div_display(r4_zz)
[ptxt,pbg] = f_div_display(r4_piv)
[stxt,sbg] = f_div_display(r4_slope)
[Link](t,0,rowIdx,f_sym(s4),text_size=[Link])
[Link](t,1,rowIdx,f_cell_val(r4_st1),bgcolor=f_col(r4_st1),text_size=[Link])
[Link](t,2,rowIdx,f_cell_val(r4_st2),bgcolor=f_col(r4_st2),text_size=[Link])
[Link](t,3,rowIdx,f_cell_val(r4_st3),bgcolor=f_col(r4_st3),text_size=[Link])
[Link](t,4,rowIdx,f_cell_val(r4_st4),bgcolor=f_col(r4_st4),text_size=[Link])
[Link](t,5,rowIdx,mtxt,bgcolor=mbg,text_color=[Link],text_size=[Link])
[Link](t,6,rowIdx,ztxt,bgcolor=zbg,text_color=[Link],text_size=[Link])
[Link](t,7,rowIdx,ptxt,bgcolor=pbg,text_color=[Link],text_size=[Link])
[Link](t,8,rowIdx,stxt,bgcolor=sbg,text_color=[Link],text_size=[Link])
rowIdx += 1
if f_is_filtered(r5_st1, r5_st2, r5_st3, r5_st4)
[mtxt,mbg] = f_div_display(r5_mom)
[ztxt,zbg] = f_div_display(r5_zz)
[ptxt,pbg] = f_div_display(r5_piv)
[stxt,sbg] = f_div_display(r5_slope)
[Link](t,0,rowIdx,f_sym(s5),text_size=[Link])
[Link](t,1,rowIdx,f_cell_val(r5_st1),bgcolor=f_col(r5_st1),text_size=[Link])
[Link](t,2,rowIdx,f_cell_val(r5_st2),bgcolor=f_col(r5_st2),text_size=[Link])
[Link](t,3,rowIdx,f_cell_val(r5_st3),bgcolor=f_col(r5_st3),text_size=[Link])
[Link](t,4,rowIdx,f_cell_val(r5_st4),bgcolor=f_col(r5_st4),text_size=[Link])
[Link](t,5,rowIdx,mtxt,bgcolor=mbg,text_color=[Link],text_size=[Link])
[Link](t,6,rowIdx,ztxt,bgcolor=zbg,text_color=[Link],text_size=[Link])
[Link](t,7,rowIdx,ptxt,bgcolor=pbg,text_color=[Link],text_size=[Link])
[Link](t,8,rowIdx,stxt,bgcolor=sbg,text_color=[Link],text_size=[Link])