A naked POC is the highest-volume price of a past session that price has not visited again since. Many traders treat these levels as magnets that “usually get filled”. The Naked POC Magnetism indicator by Market_Logic_India replaces that rule of thumb with a measurement taken from the chart itself.
Every past naked level becomes an observation: how many sessions it survived before being touched, or how long it was followed without being touched. From that history the indicator estimates, for every naked level still alive, the probability that it is filled within the next N sessions, a conservative lower bound for that probability and the median number of sessions it should take.
Session POC. During each session, the typical price of every bar and its volume are collected. At the close of the session they are binned into 24 price rows between the session’s lowest and highest typical price, and the row with the most volume gives the POC. That price becomes a naked level.
Filled or censored. A level is filled the first time the range of a later bar touches it. Its age in sessions at that moment is one observation. Only the 15 most recent unfilled levels are kept; when a new one pushes the oldest out, that level is recorded as censored: it survived that long and its fate is unknown. Censored levels count as “still alive at that age”, never as fills.
Life table. For every age from 1 to 20 sessions the indicator counts the levels at risk (still naked at that age) and the levels filled at that age. The hazard at an age is fills divided by levels at risk. Ages with fewer than 5 levels at risk are ignored because their estimate is not reliable.
Fill probability. For a level that is already a sessions old, the chance of surviving the next sessions is the product of (1 – hazard) over those ages, the Kaplan-Meier estimate. The fill probability within the horizon is 1 minus that product. The median wait is the number of sessions until the estimated survival falls to 50 %.
Lower bound. A probability measured on a small sample can be far from the truth. The indicator computes a 95 % interval with Greenwood’s formula, the standard variance of the Kaplan-Meier estimate, and uses its lower bound to grade the levels. A level only looks strong when even its weakest plausible reading is strong.
Until at least 20 levels have been resolved, no probability is shown and the indicator reports BUILDING.
The probabilities describe where price has been drawn on this instrument and timeframe, not when to enter. They change with the market regime and the sample.
//---------------------------------------------------------------
// PRC_Naked POC Magnetism
// version = 0
// 06.11.2026
// Iván González @ www.prorealcode.com
// Author: Market_Logic_India
// Sharing ProRealTime knowledge
//--------------------------------------------------------------------//
// Naked-level magnetism engine: every session's POC becomes a naked
// level until a later bar touches it. Each resolved level (filled at
// age a, or censored when the history cap removes it) feeds a life
// table, and a Kaplan-Meier product gives, for every live level, the
// probability of being filled within the horizon, its Greenwood 95%
// lower bound and the median wait in sessions.
// Research and education only: empirical frequencies of this chart.
//--------------------------------------------------------------------//
defparam drawonlastbaronly = true
// ===================== INPUTS =====================
// --- Profile and levels ---
nRows = 24 // price rows per session profile (8..60)
keepMax = 15 // max naked levels kept; the oldest beyond it is censored (3..30)
maxAge = 20 // max age tracked in sessions, cap of the life table (5..60)
// --- Magnetism statistics ---
horizon = 5 // fill horizon in sessions (1..20)
minSample = 20 // resolved levels needed before probabilities are shown
minRisk = 5 // min at-risk levels for a hazard to be trusted
// --- Output ---
showLabels = 1 // 1 = per-level magnetism labels
gradeCol = 1 // 1 = colour levels by magnetism
showFills = 1 // 1 = mark where naked levels were filled (last 50)
labelShift = 15 // bars to the right of the last bar where the labels are centred
// --- Dashboard ---
showDash = 1 // 1 = show the dashboard
compactTbl = 0 // 1 = compact dashboard (3 rows)
dashPos = 2 // 1 = top left, 2 = top right, 3 = bottom left, 4 = bottom right
themeDark = 0 // 0 = light chart background, 1 = dark chart background
// ===================== THEME =====================
IF themeDark = 1 THEN
tlR = 154
tlG = 163
tlB = 178
tvR = 242
tvG = 244
tvB = 248
cbR = 45
cbG = 212
cbB = 191
cwR = 255
cwG = 169
cwB = 77
cmR = 107
cmG = 116
cmB = 128
zaR = 20
zaG = 26
zaB = 38
zbR = 14
zbG = 19
zbB = 29
bdR = 58
bdG = 66
bdB = 80
ELSE
tlR = 81
tlG = 90
tlB = 103
tvR = 16
tvG = 21
tvB = 29
cbR = 14
cbG = 158
cbB = 118
cwR = 181
cwG = 106
cwB = 0
cmR = 152
cmG = 160
cmB = 171
zaR = 238
zaG = 241
zaB = 246
zbR = 248
zbG = 250
zbB = 252
bdR = 194
bdG = 200
bdB = 208
ENDIF
// ===================== ENGINE (closed bars only) =====================
// Every bar stores its typical price and volume (pure assignment: same value on every tick)
$hlcA[barindex] = (high + low + close) / 3
$volA[barindex] = volume
// $gS[0] = last processed bar, [1] = sessions seen, [2] = first bar of the current session,
// [3] = live naked levels, [4] = resolved levels, [5] = fill marks recorded
IF barindex = 0 THEN
$gS[0] = 0 - 1
$gS[1] = 0
$gS[2] = 0
$gS[3] = 0
$gS[4] = 0
$gS[5] = 0
FOR j = 0 TO 60 DO
$ltF[j] = 0
$ltR[j] = 0
NEXT
ENDIF
// Two passes: the previous bar if it was the live one and has just closed, then the current bar if
// it is a historical (closed) bar. All the state lives in arrays, so ticks never process a bar twice.
FOR pss = 1 DOWNTO 0 DO
ofs = pss
doIt = 0
IF ofs = 1 AND barindex >= 1 AND $gS[0] < barindex - 1 THEN
doIt = 1
ENDIF
IF ofs = 0 AND NOT islastbarupdate AND $gS[0] < barindex THEN
doIt = 1
ENDIF
IF doIt = 1 THEN
bi = barindex - ofs
$gS[0] = bi
newS = 0
IF bi > 0 THEN
IF opendate[ofs] <> opendate[ofs + 1] THEN
newS = 1
ENDIF
ENDIF
// ---- Session close: the previous session's POC becomes a naked level ----
IF newS = 1 THEN
sS = $gS[2]
nS = bi - sS
pocOk = 0
IF nS > 5 THEN
loP = $hlcA[sS]
hiP = $hlcA[sS]
FOR q = sS + 1 TO bi - 1 DO
loP = min(loP, $hlcA[q])
hiP = max(hiP, $hlcA[q])
NEXT
IF hiP > loP THEN
FOR b = 0 TO nRows - 1 DO
$binV[b] = 0
NEXT
FOR q = sS TO bi - 1 DO
bq = floor(($hlcA[q] - loP) / (hiP - loP) * (nRows - 1))
bq = max(0, min(nRows - 1, bq))
$binV[bq] = $binV[bq] + $volA[q]
NEXT
bBest = 0
vBest = 0 - 1
FOR b = 0 TO nRows - 1 DO
IF $binV[b] > vBest THEN
vBest = $binV[b]
bBest = b
ENDIF
NEXT
pocV = loP + (bBest + 0.5) / nRows * (hiP - loP)
pocOk = 1
ENDIF
ENDIF
IF pocOk = 1 THEN
nL = $gS[3]
$lvP[nL] = pocV
$lvB[nL] = $gS[1]
$lvX[nL] = bi
nL = nL + 1
$gS[3] = nL
// cap: the oldest unfilled level is removed and counted as censored (survived, not filled)
IF nL > keepMax THEN
ageC = $gS[1] - $lvB[0]
aa = min(max(ageC, 1), maxAge)
FOR j = 1 TO aa DO
$ltR[j] = $ltR[j] + 1
NEXT
$gS[4] = $gS[4] + 1
FOR m = 0 TO nL - 2 DO
$lvP[m] = $lvP[m + 1]
$lvB[m] = $lvB[m + 1]
$lvX[m] = $lvX[m + 1]
NEXT
$gS[3] = nL - 1
ENDIF
ENDIF
$gS[1] = $gS[1] + 1
$gS[2] = bi
ENDIF
// ---- Fill detection: a level is filled the first time a later bar's range touches it ----
nL = $gS[3]
IF nL > 0 THEN
hiB = high[ofs]
loB = low[ofs]
FOR i = nL - 1 DOWNTO 0 DO
pLv = $lvP[i]
bornS = $lvB[i]
IF $gS[1] > bornS AND loB <= pLv AND pLv <= hiB THEN
ageF = max(1, $gS[1] - bornS)
aa = min(max(ageF, 1), maxAge)
FOR j = 1 TO aa DO
$ltR[j] = $ltR[j] + 1
NEXT
$ltF[aa] = $ltF[aa] + 1
$gS[4] = $gS[4] + 1
nLast = $gS[3] - 1
IF i < nLast THEN
FOR m = i TO nLast - 1 DO
$lvP[m] = $lvP[m + 1]
$lvB[m] = $lvB[m + 1]
$lvX[m] = $lvX[m + 1]
NEXT
ENDIF
$gS[3] = nLast
// fill mark, ring of the last 50
kF = $gS[5] MOD 50
$fmX[kF] = bi
$fmY[kF] = pLv
$gS[5] = $gS[5] + 1
ENDIF
NEXT
ENDIF
ENDIF
NEXT
// ===================== LEVELS, LABELS AND DASHBOARD (last bar) =====================
IF islastbarupdate THEN
sessN = $gS[1]
nLvD = $gS[3]
resN = $gS[4]
statsReady = 0
IF resN >= minSample THEN
statsReady = 1
ENDIF
nearOk = 0
nearProbOk = 0
nearMed = 0 - 1
bestOk = 0
bestMed = 0 - 1
nearDist = 0
nearPx = 0
nearPr = 0
nearLo = 0
bestPx = 0
bestPr = 0
bestLo = 0
// Fill marks: where naked levels were filled (the resolved history behind the statistics)
IF showFills = 1 THEN
nFm = min($gS[5], 50)
IF nFm > 0 THEN
FOR k = 0 TO nFm - 1 DO
DRAWTEXT("◈", $fmX[k], $fmY[k], sansserif, standard, 10) COLOURED(61, 108, 240, 191)
NEXT
ENDIF
ENDIF
IF nLvD > 0 THEN
FOR i = 0 TO nLvD - 1 DO
pLv = $lvP[i]
ageL = max(1, sessN - $lvB[i])
// P(fill within the horizon | survived to this age) = 1 - product of (1 - hazard), with its
// Greenwood 95% lower bound: Var(S) = S^2 * sum of d / (n * (n - d))
prOk = 0
prV = 0
prLo = 0
jEnd = min(ageL + horizon, maxAge)
IF ageL + 1 <= jEnd THEN
surv = 1
accG = 0
anyH = 0
FOR j = ageL + 1 TO jEnd DO
rk = $ltR[j]
fk = $ltF[j]
IF rk >= minRisk THEN
hz = min(0.99, fk / rk)
surv = surv * (1 - hz)
IF rk - fk > 0 THEN
accG = accG + fk / (rk * (rk - fk))
ENDIF
anyH = 1
ENDIF
NEXT
IF anyH = 1 THEN
prV = 1 - surv
seG = surv * sqrt(max(accG, 0))
sHi = min(1, surv + 1.96 * seG)
prLo = max(0, 1 - sHi)
prOk = 1
ENDIF
ENDIF
// Median wait: smallest number of sessions with a cumulative fill probability of 50 %
medV = 0 - 1
IF ageL + 1 <= maxAge THEN
surv2 = 1
FOR j = ageL + 1 TO maxAge DO
rk = $ltR[j]
IF rk >= minRisk THEN
hz = min(0.99, $ltF[j] / rk)
surv2 = surv2 * (1 - hz)
IF medV < 0 AND surv2 <= 0.5 THEN
medV = j - ageL
ENDIF
ENDIF
NEXT
ENDIF
IF statsReady = 0 THEN
prOk = 0
medV = 0 - 1
ENDIF
// Rails graded by the LOWER bound; width encodes confidence (tight interval = thick)
lw = 1
IF prOk = 1 THEN
bandW = prV - prLo
IF bandW <= 0.10 THEN
lw = 3
ELSIF bandW <= 0.20 THEN
lw = 2
ENDIF
ENDIF
IF gradeCol = 0 OR prOk = 0 THEN
lnR = 247
lnG = 201
lnB = 72
lnA = 140
ELSIF prLo >= 0.66 THEN
lnR = 246
lnG = 70
lnB = 93
lnA = 217
ELSIF prLo >= 0.4 THEN
lnR = 247
lnG = 201
lnB = 72
lnA = 191
ELSE
lnR = 61
lnG = 108
lnB = 240
lnA = 140
ENDIF
xB = $lvX[i]
IF lw = 3 THEN
DRAWRAY(xB, pLv, xB + 1, pLv) COLOURED(lnR, lnG, lnB, lnA) STYLE(line, 3)
ELSIF lw = 2 THEN
DRAWRAY(xB, pLv, xB + 1, pLv) COLOURED(lnR, lnG, lnB, lnA) STYLE(line, 2)
ELSE
DRAWRAY(xB, pLv, xB + 1, pLv) COLOURED(lnR, lnG, lnB, lnA) STYLE(line, 1)
ENDIF
IF showLabels = 1 THEN
pxR = round(pLv / ticksize) * ticksize
pctR = round(prV * 100)
xLb = barindex + labelShift
IF prOk = 1 AND medV > 0 THEN
DRAWTEXT("NPOC #pxR# · #pctR#% /#horizon#s · med #medV#s", xLb, pLv, sansserif, standard, 10) COLOURED(tvR, tvG, tvB, 255)
ELSIF prOk = 1 THEN
DRAWTEXT("NPOC #pxR# · #pctR#% /#horizon#s", xLb, pLv, sansserif, standard, 10) COLOURED(tvR, tvG, tvB, 255)
ELSE
DRAWTEXT("NPOC #pxR# · building", xLb, pLv, sansserif, standard, 10) COLOURED(tvR, tvG, tvB, 255)
ENDIF
ENDIF
// Nearest level to the close, and strongest level by lower bound
dL = abs(close - pLv)
IF nearOk = 0 OR dL < nearDist THEN
nearOk = 1
nearDist = dL
nearPx = pLv
nearProbOk = prOk
nearPr = prV
nearLo = prLo
nearMed = medV
ENDIF
IF prOk = 1 THEN
IF bestOk = 0 OR prLo > bestLo THEN
bestOk = 1
bestLo = prLo
bestPr = prV
bestPx = pLv
bestMed = medV
ENDIF
ENDIF
NEXT
ENDIF
IF showDash = 1 THEN
// Values shown in the dashboard
nearPxR = round(nearPx / ticksize) * ticksize
nLoR = round(nearLo * 100)
nPrR = round(nearPr * 100)
bestPxR = round(bestPx / ticksize) * ticksize
bPrR = round(bestPr * 100)
// Value colours
v2R = tvR
v2G = tvG
v2B = tvB
IF nearProbOk = 1 AND nearLo >= 0.66 THEN
v2R = cwR
v2G = cwG
v2B = cwB
ENDIF
IF bestOk = 0 THEN
v3R = cmR
v3G = cmG
v3B = cmB
ELSIF bestLo >= 0.66 THEN
v3R = cwR
v3G = cwG
v3B = cwB
ELSE
v3R = tvR
v3G = tvG
v3B = tvB
ENDIF
IF statsReady = 1 THEN
v5R = cbR
v5G = cbG
v5B = cbB
hdR = 61
hdG = 108
hdB = 240
ELSE
v5R = cwR
v5G = cwG
v5B = cwB
hdR = cmR
hdG = cmG
hdB = cmB
ENDIF
// Geometry: monospaced fonts, labels in tiny (8 px), values in small (10 px)
pzT = 8
pzS = 10
chT = pzT * 0.62
chS = pzS * 0.62
rowH = pzS + 8
padX = 6
padY = 3
wL = 21 * chT
wV = 28 * chS
pW = 2 * padX + wL + 10 + wV
IF compactTbl = 1 THEN
nDr = 3
ELSE
nDr = 9
ENDIF
pH = nDr * rowH + 2 * padY
IF dashPos = 1 THEN
pL = 10
pT = 0 - 40
ELSIF dashPos = 3 THEN
pL = 10
pT = 40 + pH
ELSIF dashPos = 4 THEN
pL = 0 - 85 - pW
pT = 12 + pH
ELSE
pL = 0 - 85 - pW
pT = 0 - 12
ENDIF
pRt = pL + pW
xVc = pL + padX + wL + 10 + wV / 2
xSt = pRt - padX - 8 * chS / 2
yT0 = pT - padY
yT1 = yT0 - rowH
yT2 = yT0 - rowH * 2
yT3 = yT0 - rowH * 3
yT4 = yT0 - rowH * 4
yT5 = yT0 - rowH * 5
yT6 = yT0 - rowH * 6
yT7 = yT0 - rowH * 7
yT8 = yT0 - rowH * 8
yT9 = yT0 - rowH * 9
yR0 = yT0 - rowH / 2
yR1 = yT1 - rowH / 2
yR2 = yT2 - rowH / 2
yR3 = yT3 - rowH / 2
yR4 = yT4 - rowH / 2
yR5 = yT5 - rowH / 2
yR6 = yT6 - rowH / 2
yR7 = yT7 - rowH / 2
yR8 = yT8 - rowH / 2
// Names aligned left: each one centred on half its own length
xH0 = pL + padX + 15 * chS / 2
xN1 = pL + padX + 12 * chT / 2
xN2 = pL + padX + 7 * chT / 2
xN3 = pL + padX + 9 * chT / 2
xN4 = pL + padX + 21 * chT / 2
xN5 = pL + padX + 17 * chT / 2
xN6 = pL + padX + 7 * chT / 2
xN7 = pL + padX + 13 * chT / 2
xN8 = pL + padX + 4 * chT / 2
IF dashPos = 1 THEN
DRAWRECTANGLE(pL, pT, pRt, pT - pH) ANCHOR(TOPLEFT, XSHIFT, YSHIFT) COLOURED(bdR, bdG, bdB, 255) FILLCOLOR(zbR, zbG, zbB, 255)
DRAWRECTANGLE(pL, yT0, pRt, yT1) ANCHOR(TOPLEFT, XSHIFT, YSHIFT) COLOURED(bdR, bdG, bdB, 255) FILLCOLOR(hdR, hdG, hdB, 255)
DRAWRECTANGLE(pL, yT1, pRt, yT2) ANCHOR(TOPLEFT, XSHIFT, YSHIFT) COLOURED(bdR, bdG, bdB, 255) FILLCOLOR(zaR, zaG, zaB, 255)
DRAWTEXT("NPOC MAGNETISM", xH0, yR0, monospaced, bold, pzS) ANCHOR(TOPLEFT, XSHIFT, YSHIFT) COLOURED(255, 255, 255, 255)
IF statsReady = 1 THEN
DRAWTEXT("MEASURED", xSt, yR0, monospaced, bold, pzS) ANCHOR(TOPLEFT, XSHIFT, YSHIFT) COLOURED(255, 255, 255, 255)
ELSE
DRAWTEXT("BUILDING", xSt, yR0, monospaced, bold, pzS) ANCHOR(TOPLEFT, XSHIFT, YSHIFT) COLOURED(255, 255, 255, 255)
ENDIF
DRAWTEXT("NAKED LEVELS", xN1, yR1, monospaced, standard, pzT) ANCHOR(TOPLEFT, XSHIFT, YSHIFT) COLOURED(tlR, tlG, tlB, 255)
DRAWTEXT("#nLvD#", xVc, yR1, monospaced, standard, pzS) ANCHOR(TOPLEFT, XSHIFT, YSHIFT) COLOURED(tvR, tvG, tvB, 255)
DRAWTEXT("NEAREST", xN2, yR2, monospaced, standard, pzT) ANCHOR(TOPLEFT, XSHIFT, YSHIFT) COLOURED(tlR, tlG, tlB, 255)
IF nearOk = 0 THEN
DRAWTEXT("-", xVc, yR2, monospaced, standard, pzS) ANCHOR(TOPLEFT, XSHIFT, YSHIFT) COLOURED(v2R, v2G, v2B, 255)
ELSIF nearProbOk = 1 THEN
DRAWTEXT("#nearPxR# LB #nLoR#% · #nPrR#%/#horizon#s", xVc, yR2, monospaced, standard, pzS) ANCHOR(TOPLEFT, XSHIFT, YSHIFT) COLOURED(v2R, v2G, v2B, 255)
ELSE
DRAWTEXT("#nearPxR#", xVc, yR2, monospaced, standard, pzS) ANCHOR(TOPLEFT, XSHIFT, YSHIFT) COLOURED(v2R, v2G, v2B, 255)
ENDIF
IF compactTbl = 0 THEN
DRAWRECTANGLE(pL, yT3, pRt, yT4) ANCHOR(TOPLEFT, XSHIFT, YSHIFT) COLOURED(bdR, bdG, bdB, 255) FILLCOLOR(zaR, zaG, zaB, 255)
DRAWRECTANGLE(pL, yT5, pRt, yT6) ANCHOR(TOPLEFT, XSHIFT, YSHIFT) COLOURED(bdR, bdG, bdB, 255) FILLCOLOR(zaR, zaG, zaB, 255)
DRAWRECTANGLE(pL, yT7, pRt, yT8) ANCHOR(TOPLEFT, XSHIFT, YSHIFT) COLOURED(bdR, bdG, bdB, 255) FILLCOLOR(zaR, zaG, zaB, 255)
DRAWTEXT("STRONGEST", xN3, yR3, monospaced, standard, pzT) ANCHOR(TOPLEFT, XSHIFT, YSHIFT) COLOURED(tlR, tlG, tlB, 255)
IF bestOk = 0 THEN
DRAWTEXT("-", xVc, yR3, monospaced, standard, pzS) ANCHOR(TOPLEFT, XSHIFT, YSHIFT) COLOURED(v3R, v3G, v3B, 255)
ELSIF bestMed > 0 THEN
DRAWTEXT("#bestPxR# · #bPrR#%/#horizon#s · med #bestMed#s", xVc, yR3, monospaced, standard, pzS) ANCHOR(TOPLEFT, XSHIFT, YSHIFT) COLOURED(v3R, v3G, v3B, 255)
ELSE
DRAWTEXT("#bestPxR# · #bPrR#%/#horizon#s", xVc, yR3, monospaced, standard, pzS) ANCHOR(TOPLEFT, XSHIFT, YSHIFT) COLOURED(v3R, v3G, v3B, 255)
ENDIF
DRAWTEXT("MEDIAN WAIT (nearest)", xN4, yR4, monospaced, standard, pzT) ANCHOR(TOPLEFT, XSHIFT, YSHIFT) COLOURED(tlR, tlG, tlB, 255)
IF nearMed > 0 THEN
DRAWTEXT("#nearMed# sessions", xVc, yR4, monospaced, standard, pzS) ANCHOR(TOPLEFT, XSHIFT, YSHIFT) COLOURED(tvR, tvG, tvB, 255)
ELSE
DRAWTEXT("-", xVc, yR4, monospaced, standard, pzS) ANCHOR(TOPLEFT, XSHIFT, YSHIFT) COLOURED(tvR, tvG, tvB, 255)
ENDIF
DRAWTEXT("SAMPLE (resolved)", xN5, yR5, monospaced, standard, pzT) ANCHOR(TOPLEFT, XSHIFT, YSHIFT) COLOURED(tlR, tlG, tlB, 255)
DRAWTEXT("#resN# / #minSample# min", xVc, yR5, monospaced, standard, pzS) ANCHOR(TOPLEFT, XSHIFT, YSHIFT) COLOURED(v5R, v5G, v5B, 255)
DRAWTEXT("HORIZON", xN6, yR6, monospaced, standard, pzT) ANCHOR(TOPLEFT, XSHIFT, YSHIFT) COLOURED(tlR, tlG, tlB, 255)
DRAWTEXT("#horizon# sessions", xVc, yR6, monospaced, standard, pzS) ANCHOR(TOPLEFT, XSHIFT, YSHIFT) COLOURED(tvR, tvG, tvB, 255)
DRAWTEXT("SESSIONS SEEN", xN7, yR7, monospaced, standard, pzT) ANCHOR(TOPLEFT, XSHIFT, YSHIFT) COLOURED(tlR, tlG, tlB, 255)
DRAWTEXT("#sessN#", xVc, yR7, monospaced, standard, pzS) ANCHOR(TOPLEFT, XSHIFT, YSHIFT) COLOURED(tvR, tvG, tvB, 255)
DRAWTEXT("NOTE", xN8, yR8, monospaced, standard, pzT) ANCHOR(TOPLEFT, XSHIFT, YSHIFT) COLOURED(tlR, tlG, tlB, 255)
IF statsReady = 1 THEN
DRAWTEXT("empirical, this chart only", xVc, yR8, monospaced, standard, pzS) ANCHOR(TOPLEFT, XSHIFT, YSHIFT) COLOURED(cmR, cmG, cmB, 255)
ELSE
DRAWTEXT("need more history / lower TF", xVc, yR8, monospaced, standard, pzS) ANCHOR(TOPLEFT, XSHIFT, YSHIFT) COLOURED(cmR, cmG, cmB, 255)
ENDIF
ENDIF
ENDIF
IF dashPos = 2 THEN
DRAWRECTANGLE(pL, pT, pRt, pT - pH) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(bdR, bdG, bdB, 255) FILLCOLOR(zbR, zbG, zbB, 255)
DRAWRECTANGLE(pL, yT0, pRt, yT1) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(bdR, bdG, bdB, 255) FILLCOLOR(hdR, hdG, hdB, 255)
DRAWRECTANGLE(pL, yT1, pRt, yT2) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(bdR, bdG, bdB, 255) FILLCOLOR(zaR, zaG, zaB, 255)
DRAWTEXT("NPOC MAGNETISM", xH0, yR0, monospaced, bold, pzS) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(255, 255, 255, 255)
IF statsReady = 1 THEN
DRAWTEXT("MEASURED", xSt, yR0, monospaced, bold, pzS) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(255, 255, 255, 255)
ELSE
DRAWTEXT("BUILDING", xSt, yR0, monospaced, bold, pzS) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(255, 255, 255, 255)
ENDIF
DRAWTEXT("NAKED LEVELS", xN1, yR1, monospaced, standard, pzT) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(tlR, tlG, tlB, 255)
DRAWTEXT("#nLvD#", xVc, yR1, monospaced, standard, pzS) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(tvR, tvG, tvB, 255)
DRAWTEXT("NEAREST", xN2, yR2, monospaced, standard, pzT) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(tlR, tlG, tlB, 255)
IF nearOk = 0 THEN
DRAWTEXT("-", xVc, yR2, monospaced, standard, pzS) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(v2R, v2G, v2B, 255)
ELSIF nearProbOk = 1 THEN
DRAWTEXT("#nearPxR# LB #nLoR#% · #nPrR#%/#horizon#s", xVc, yR2, monospaced, standard, pzS) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(v2R, v2G, v2B, 255)
ELSE
DRAWTEXT("#nearPxR#", xVc, yR2, monospaced, standard, pzS) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(v2R, v2G, v2B, 255)
ENDIF
IF compactTbl = 0 THEN
DRAWRECTANGLE(pL, yT3, pRt, yT4) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(bdR, bdG, bdB, 255) FILLCOLOR(zaR, zaG, zaB, 255)
DRAWRECTANGLE(pL, yT5, pRt, yT6) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(bdR, bdG, bdB, 255) FILLCOLOR(zaR, zaG, zaB, 255)
DRAWRECTANGLE(pL, yT7, pRt, yT8) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(bdR, bdG, bdB, 255) FILLCOLOR(zaR, zaG, zaB, 255)
DRAWTEXT("STRONGEST", xN3, yR3, monospaced, standard, pzT) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(tlR, tlG, tlB, 255)
IF bestOk = 0 THEN
DRAWTEXT("-", xVc, yR3, monospaced, standard, pzS) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(v3R, v3G, v3B, 255)
ELSIF bestMed > 0 THEN
DRAWTEXT("#bestPxR# · #bPrR#%/#horizon#s · med #bestMed#s", xVc, yR3, monospaced, standard, pzS) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(v3R, v3G, v3B, 255)
ELSE
DRAWTEXT("#bestPxR# · #bPrR#%/#horizon#s", xVc, yR3, monospaced, standard, pzS) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(v3R, v3G, v3B, 255)
ENDIF
DRAWTEXT("MEDIAN WAIT (nearest)", xN4, yR4, monospaced, standard, pzT) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(tlR, tlG, tlB, 255)
IF nearMed > 0 THEN
DRAWTEXT("#nearMed# sessions", xVc, yR4, monospaced, standard, pzS) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(tvR, tvG, tvB, 255)
ELSE
DRAWTEXT("-", xVc, yR4, monospaced, standard, pzS) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(tvR, tvG, tvB, 255)
ENDIF
DRAWTEXT("SAMPLE (resolved)", xN5, yR5, monospaced, standard, pzT) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(tlR, tlG, tlB, 255)
DRAWTEXT("#resN# / #minSample# min", xVc, yR5, monospaced, standard, pzS) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(v5R, v5G, v5B, 255)
DRAWTEXT("HORIZON", xN6, yR6, monospaced, standard, pzT) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(tlR, tlG, tlB, 255)
DRAWTEXT("#horizon# sessions", xVc, yR6, monospaced, standard, pzS) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(tvR, tvG, tvB, 255)
DRAWTEXT("SESSIONS SEEN", xN7, yR7, monospaced, standard, pzT) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(tlR, tlG, tlB, 255)
DRAWTEXT("#sessN#", xVc, yR7, monospaced, standard, pzS) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(tvR, tvG, tvB, 255)
DRAWTEXT("NOTE", xN8, yR8, monospaced, standard, pzT) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(tlR, tlG, tlB, 255)
IF statsReady = 1 THEN
DRAWTEXT("empirical, this chart only", xVc, yR8, monospaced, standard, pzS) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(cmR, cmG, cmB, 255)
ELSE
DRAWTEXT("need more history / lower TF", xVc, yR8, monospaced, standard, pzS) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(cmR, cmG, cmB, 255)
ENDIF
ENDIF
ENDIF
IF dashPos = 3 THEN
DRAWRECTANGLE(pL, pT, pRt, pT - pH) ANCHOR(BOTTOMLEFT, XSHIFT, YSHIFT) COLOURED(bdR, bdG, bdB, 255) FILLCOLOR(zbR, zbG, zbB, 255)
DRAWRECTANGLE(pL, yT0, pRt, yT1) ANCHOR(BOTTOMLEFT, XSHIFT, YSHIFT) COLOURED(bdR, bdG, bdB, 255) FILLCOLOR(hdR, hdG, hdB, 255)
DRAWRECTANGLE(pL, yT1, pRt, yT2) ANCHOR(BOTTOMLEFT, XSHIFT, YSHIFT) COLOURED(bdR, bdG, bdB, 255) FILLCOLOR(zaR, zaG, zaB, 255)
DRAWTEXT("NPOC MAGNETISM", xH0, yR0, monospaced, bold, pzS) ANCHOR(BOTTOMLEFT, XSHIFT, YSHIFT) COLOURED(255, 255, 255, 255)
IF statsReady = 1 THEN
DRAWTEXT("MEASURED", xSt, yR0, monospaced, bold, pzS) ANCHOR(BOTTOMLEFT, XSHIFT, YSHIFT) COLOURED(255, 255, 255, 255)
ELSE
DRAWTEXT("BUILDING", xSt, yR0, monospaced, bold, pzS) ANCHOR(BOTTOMLEFT, XSHIFT, YSHIFT) COLOURED(255, 255, 255, 255)
ENDIF
DRAWTEXT("NAKED LEVELS", xN1, yR1, monospaced, standard, pzT) ANCHOR(BOTTOMLEFT, XSHIFT, YSHIFT) COLOURED(tlR, tlG, tlB, 255)
DRAWTEXT("#nLvD#", xVc, yR1, monospaced, standard, pzS) ANCHOR(BOTTOMLEFT, XSHIFT, YSHIFT) COLOURED(tvR, tvG, tvB, 255)
DRAWTEXT("NEAREST", xN2, yR2, monospaced, standard, pzT) ANCHOR(BOTTOMLEFT, XSHIFT, YSHIFT) COLOURED(tlR, tlG, tlB, 255)
IF nearOk = 0 THEN
DRAWTEXT("-", xVc, yR2, monospaced, standard, pzS) ANCHOR(BOTTOMLEFT, XSHIFT, YSHIFT) COLOURED(v2R, v2G, v2B, 255)
ELSIF nearProbOk = 1 THEN
DRAWTEXT("#nearPxR# LB #nLoR#% · #nPrR#%/#horizon#s", xVc, yR2, monospaced, standard, pzS) ANCHOR(BOTTOMLEFT, XSHIFT, YSHIFT) COLOURED(v2R, v2G, v2B, 255)
ELSE
DRAWTEXT("#nearPxR#", xVc, yR2, monospaced, standard, pzS) ANCHOR(BOTTOMLEFT, XSHIFT, YSHIFT) COLOURED(v2R, v2G, v2B, 255)
ENDIF
IF compactTbl = 0 THEN
DRAWRECTANGLE(pL, yT3, pRt, yT4) ANCHOR(BOTTOMLEFT, XSHIFT, YSHIFT) COLOURED(bdR, bdG, bdB, 255) FILLCOLOR(zaR, zaG, zaB, 255)
DRAWRECTANGLE(pL, yT5, pRt, yT6) ANCHOR(BOTTOMLEFT, XSHIFT, YSHIFT) COLOURED(bdR, bdG, bdB, 255) FILLCOLOR(zaR, zaG, zaB, 255)
DRAWRECTANGLE(pL, yT7, pRt, yT8) ANCHOR(BOTTOMLEFT, XSHIFT, YSHIFT) COLOURED(bdR, bdG, bdB, 255) FILLCOLOR(zaR, zaG, zaB, 255)
DRAWTEXT("STRONGEST", xN3, yR3, monospaced, standard, pzT) ANCHOR(BOTTOMLEFT, XSHIFT, YSHIFT) COLOURED(tlR, tlG, tlB, 255)
IF bestOk = 0 THEN
DRAWTEXT("-", xVc, yR3, monospaced, standard, pzS) ANCHOR(BOTTOMLEFT, XSHIFT, YSHIFT) COLOURED(v3R, v3G, v3B, 255)
ELSIF bestMed > 0 THEN
DRAWTEXT("#bestPxR# · #bPrR#%/#horizon#s · med #bestMed#s", xVc, yR3, monospaced, standard, pzS) ANCHOR(BOTTOMLEFT, XSHIFT, YSHIFT) COLOURED(v3R, v3G, v3B, 255)
ELSE
DRAWTEXT("#bestPxR# · #bPrR#%/#horizon#s", xVc, yR3, monospaced, standard, pzS) ANCHOR(BOTTOMLEFT, XSHIFT, YSHIFT) COLOURED(v3R, v3G, v3B, 255)
ENDIF
DRAWTEXT("MEDIAN WAIT (nearest)", xN4, yR4, monospaced, standard, pzT) ANCHOR(BOTTOMLEFT, XSHIFT, YSHIFT) COLOURED(tlR, tlG, tlB, 255)
IF nearMed > 0 THEN
DRAWTEXT("#nearMed# sessions", xVc, yR4, monospaced, standard, pzS) ANCHOR(BOTTOMLEFT, XSHIFT, YSHIFT) COLOURED(tvR, tvG, tvB, 255)
ELSE
DRAWTEXT("-", xVc, yR4, monospaced, standard, pzS) ANCHOR(BOTTOMLEFT, XSHIFT, YSHIFT) COLOURED(tvR, tvG, tvB, 255)
ENDIF
DRAWTEXT("SAMPLE (resolved)", xN5, yR5, monospaced, standard, pzT) ANCHOR(BOTTOMLEFT, XSHIFT, YSHIFT) COLOURED(tlR, tlG, tlB, 255)
DRAWTEXT("#resN# / #minSample# min", xVc, yR5, monospaced, standard, pzS) ANCHOR(BOTTOMLEFT, XSHIFT, YSHIFT) COLOURED(v5R, v5G, v5B, 255)
DRAWTEXT("HORIZON", xN6, yR6, monospaced, standard, pzT) ANCHOR(BOTTOMLEFT, XSHIFT, YSHIFT) COLOURED(tlR, tlG, tlB, 255)
DRAWTEXT("#horizon# sessions", xVc, yR6, monospaced, standard, pzS) ANCHOR(BOTTOMLEFT, XSHIFT, YSHIFT) COLOURED(tvR, tvG, tvB, 255)
DRAWTEXT("SESSIONS SEEN", xN7, yR7, monospaced, standard, pzT) ANCHOR(BOTTOMLEFT, XSHIFT, YSHIFT) COLOURED(tlR, tlG, tlB, 255)
DRAWTEXT("#sessN#", xVc, yR7, monospaced, standard, pzS) ANCHOR(BOTTOMLEFT, XSHIFT, YSHIFT) COLOURED(tvR, tvG, tvB, 255)
DRAWTEXT("NOTE", xN8, yR8, monospaced, standard, pzT) ANCHOR(BOTTOMLEFT, XSHIFT, YSHIFT) COLOURED(tlR, tlG, tlB, 255)
IF statsReady = 1 THEN
DRAWTEXT("empirical, this chart only", xVc, yR8, monospaced, standard, pzS) ANCHOR(BOTTOMLEFT, XSHIFT, YSHIFT) COLOURED(cmR, cmG, cmB, 255)
ELSE
DRAWTEXT("need more history / lower TF", xVc, yR8, monospaced, standard, pzS) ANCHOR(BOTTOMLEFT, XSHIFT, YSHIFT) COLOURED(cmR, cmG, cmB, 255)
ENDIF
ENDIF
ENDIF
IF dashPos = 4 THEN
DRAWRECTANGLE(pL, pT, pRt, pT - pH) ANCHOR(BOTTOMRIGHT, XSHIFT, YSHIFT) COLOURED(bdR, bdG, bdB, 255) FILLCOLOR(zbR, zbG, zbB, 255)
DRAWRECTANGLE(pL, yT0, pRt, yT1) ANCHOR(BOTTOMRIGHT, XSHIFT, YSHIFT) COLOURED(bdR, bdG, bdB, 255) FILLCOLOR(hdR, hdG, hdB, 255)
DRAWRECTANGLE(pL, yT1, pRt, yT2) ANCHOR(BOTTOMRIGHT, XSHIFT, YSHIFT) COLOURED(bdR, bdG, bdB, 255) FILLCOLOR(zaR, zaG, zaB, 255)
DRAWTEXT("NPOC MAGNETISM", xH0, yR0, monospaced, bold, pzS) ANCHOR(BOTTOMRIGHT, XSHIFT, YSHIFT) COLOURED(255, 255, 255, 255)
IF statsReady = 1 THEN
DRAWTEXT("MEASURED", xSt, yR0, monospaced, bold, pzS) ANCHOR(BOTTOMRIGHT, XSHIFT, YSHIFT) COLOURED(255, 255, 255, 255)
ELSE
DRAWTEXT("BUILDING", xSt, yR0, monospaced, bold, pzS) ANCHOR(BOTTOMRIGHT, XSHIFT, YSHIFT) COLOURED(255, 255, 255, 255)
ENDIF
DRAWTEXT("NAKED LEVELS", xN1, yR1, monospaced, standard, pzT) ANCHOR(BOTTOMRIGHT, XSHIFT, YSHIFT) COLOURED(tlR, tlG, tlB, 255)
DRAWTEXT("#nLvD#", xVc, yR1, monospaced, standard, pzS) ANCHOR(BOTTOMRIGHT, XSHIFT, YSHIFT) COLOURED(tvR, tvG, tvB, 255)
DRAWTEXT("NEAREST", xN2, yR2, monospaced, standard, pzT) ANCHOR(BOTTOMRIGHT, XSHIFT, YSHIFT) COLOURED(tlR, tlG, tlB, 255)
IF nearOk = 0 THEN
DRAWTEXT("-", xVc, yR2, monospaced, standard, pzS) ANCHOR(BOTTOMRIGHT, XSHIFT, YSHIFT) COLOURED(v2R, v2G, v2B, 255)
ELSIF nearProbOk = 1 THEN
DRAWTEXT("#nearPxR# LB #nLoR#% · #nPrR#%/#horizon#s", xVc, yR2, monospaced, standard, pzS) ANCHOR(BOTTOMRIGHT, XSHIFT, YSHIFT) COLOURED(v2R, v2G, v2B, 255)
ELSE
DRAWTEXT("#nearPxR#", xVc, yR2, monospaced, standard, pzS) ANCHOR(BOTTOMRIGHT, XSHIFT, YSHIFT) COLOURED(v2R, v2G, v2B, 255)
ENDIF
IF compactTbl = 0 THEN
DRAWRECTANGLE(pL, yT3, pRt, yT4) ANCHOR(BOTTOMRIGHT, XSHIFT, YSHIFT) COLOURED(bdR, bdG, bdB, 255) FILLCOLOR(zaR, zaG, zaB, 255)
DRAWRECTANGLE(pL, yT5, pRt, yT6) ANCHOR(BOTTOMRIGHT, XSHIFT, YSHIFT) COLOURED(bdR, bdG, bdB, 255) FILLCOLOR(zaR, zaG, zaB, 255)
DRAWRECTANGLE(pL, yT7, pRt, yT8) ANCHOR(BOTTOMRIGHT, XSHIFT, YSHIFT) COLOURED(bdR, bdG, bdB, 255) FILLCOLOR(zaR, zaG, zaB, 255)
DRAWTEXT("STRONGEST", xN3, yR3, monospaced, standard, pzT) ANCHOR(BOTTOMRIGHT, XSHIFT, YSHIFT) COLOURED(tlR, tlG, tlB, 255)
IF bestOk = 0 THEN
DRAWTEXT("-", xVc, yR3, monospaced, standard, pzS) ANCHOR(BOTTOMRIGHT, XSHIFT, YSHIFT) COLOURED(v3R, v3G, v3B, 255)
ELSIF bestMed > 0 THEN
DRAWTEXT("#bestPxR# · #bPrR#%/#horizon#s · med #bestMed#s", xVc, yR3, monospaced, standard, pzS) ANCHOR(BOTTOMRIGHT, XSHIFT, YSHIFT) COLOURED(v3R, v3G, v3B, 255)
ELSE
DRAWTEXT("#bestPxR# · #bPrR#%/#horizon#s", xVc, yR3, monospaced, standard, pzS) ANCHOR(BOTTOMRIGHT, XSHIFT, YSHIFT) COLOURED(v3R, v3G, v3B, 255)
ENDIF
DRAWTEXT("MEDIAN WAIT (nearest)", xN4, yR4, monospaced, standard, pzT) ANCHOR(BOTTOMRIGHT, XSHIFT, YSHIFT) COLOURED(tlR, tlG, tlB, 255)
IF nearMed > 0 THEN
DRAWTEXT("#nearMed# sessions", xVc, yR4, monospaced, standard, pzS) ANCHOR(BOTTOMRIGHT, XSHIFT, YSHIFT) COLOURED(tvR, tvG, tvB, 255)
ELSE
DRAWTEXT("-", xVc, yR4, monospaced, standard, pzS) ANCHOR(BOTTOMRIGHT, XSHIFT, YSHIFT) COLOURED(tvR, tvG, tvB, 255)
ENDIF
DRAWTEXT("SAMPLE (resolved)", xN5, yR5, monospaced, standard, pzT) ANCHOR(BOTTOMRIGHT, XSHIFT, YSHIFT) COLOURED(tlR, tlG, tlB, 255)
DRAWTEXT("#resN# / #minSample# min", xVc, yR5, monospaced, standard, pzS) ANCHOR(BOTTOMRIGHT, XSHIFT, YSHIFT) COLOURED(v5R, v5G, v5B, 255)
DRAWTEXT("HORIZON", xN6, yR6, monospaced, standard, pzT) ANCHOR(BOTTOMRIGHT, XSHIFT, YSHIFT) COLOURED(tlR, tlG, tlB, 255)
DRAWTEXT("#horizon# sessions", xVc, yR6, monospaced, standard, pzS) ANCHOR(BOTTOMRIGHT, XSHIFT, YSHIFT) COLOURED(tvR, tvG, tvB, 255)
DRAWTEXT("SESSIONS SEEN", xN7, yR7, monospaced, standard, pzT) ANCHOR(BOTTOMRIGHT, XSHIFT, YSHIFT) COLOURED(tlR, tlG, tlB, 255)
DRAWTEXT("#sessN#", xVc, yR7, monospaced, standard, pzS) ANCHOR(BOTTOMRIGHT, XSHIFT, YSHIFT) COLOURED(tvR, tvG, tvB, 255)
DRAWTEXT("NOTE", xN8, yR8, monospaced, standard, pzT) ANCHOR(BOTTOMRIGHT, XSHIFT, YSHIFT) COLOURED(tlR, tlG, tlB, 255)
IF statsReady = 1 THEN
DRAWTEXT("empirical, this chart only", xVc, yR8, monospaced, standard, pzS) ANCHOR(BOTTOMRIGHT, XSHIFT, YSHIFT) COLOURED(cmR, cmG, cmB, 255)
ELSE
DRAWTEXT("need more history / lower TF", xVc, yR8, monospaced, standard, pzS) ANCHOR(BOTTOMRIGHT, XSHIFT, YSHIFT) COLOURED(cmR, cmG, cmB, 255)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
RETURN