One row per symbol, showing the last time its trend
flipped sides. Click any row for
that symbol's full history.
- “Today, per symbol” is one row per symbol, read off the state table
and the other panels at the last close: each system's daily side and how many sessions it has held
(GNG, Custom, and any other system in a column of its own: GNG+MQ, MenthorQ, or Legacy,
the TrendSpider alerts of 18 to 27 Aug, shown only as when it was last seen), whether the
sides current at the last close agree, the newest intraday read of each system and
whether it sits with that system's own daily side, where the scale-in clock stands, and
the mark since entry (or since the exit, after a NoGo). Everything is dated against the
last close, never "today": a flip is “at the Sep 23 close”, and a row with
nothing new since the previous close says nothing new in its last column.
The Custom side is a heartbeat: its batch fires at every close a symbol stands in Strong
Go or Strong NoGo, every symbol at once, from about a minute after the close (16:00 New
York, 13:00 on a half day), its rows landing over up to half a minute. So the side is
current only if it fired at the last close. After a close, a Custom side that was strong
at the close before reads in turn: no Custom heartbeat seen for the Sep 23 close
yet until the first batch row lands, then the batch for the Sep 23
close is still arriving for five minutes, and only then, if its own row has not come,
left strong GO at the Sep 23 close, which is a change; the first two are not. When
closes that proved nothing sit between its last row and the first close that proves its
silence, the exit is said as a span, left strong GO between the Sep 22 and Sep 24
closes, with the reason, and is a change at that first proving close.
Before the batch lands, every Custom side reads that way. Which batch row counts is
decided close by close. Where the rows name their alert (the batch script's batch
field lists the symbols each alert checked, sent from 25 Sep once its five alerts are
recreated), the proof is per batch: only a row whose alert lists the symbol counts;
while none has, the line says no heartbeat from an alert listing it seen, and the
close proves nothing about it. Where only rows naming no alert landed (rows from before the
field), the proof is per close and the reading says (per close): it assumes one
batch row from any symbol vouches for all five of the batch's alerts, and that the symbol
is on one of them; an alert that failed reads the same way there. A row delivered more
than five minutes after the close's first batch row is not routine (every batch row in the
24 Sep export landed within half a minute of the first), but if one is, the symbol reads
as having left, which is new, until the row lands and it reads as current again. A batch
row received more than 15 minutes after its close (every one in the 25 Sep export came
within 88 seconds of it) is late: it still says its own symbol's side, but it proves
nothing about any other symbol at that close, either way, so a symbol it would have
proven reads no heartbeat landed in time, and the line above the table counts such
rows. A
heartbeat the gateway refused for its token says heartbeat refused at the Sep 23
close: the gateway did not accept its token instead, but only when the refusal came
from one of TradingView's own webhook addresses (the address the gateway judged it by,
which it records on every rejected row; on rows stamped by gateway version 2026-09-25 or later
the gateway also records whose address list, in the configuration it held when it judged the
request, holds that address, and that decides, except where it could compare nothing (no
list, or its configuration could not be read), where the page checks the address against
TradingView's list as published on 23 Sep, as it does on every row stamped by an earlier
version; on a row recorded before 24 Sep it takes the last address of the stored chain, and
not on a chain so long it was cut) and arrived between the close and five minutes
after the batch's first row. Anyone can post a refused row, so any other refusal is
ignored, and the close then reads as silence, which here means left strong GO and
new: a real refusal from an address TradingView adds later reads that way until the
address is added in /admin. An intraday bar labelled 1D (an alert on a script older
than 22 Sep, left on an intraday chart) that reached the gateway at a close before 24 Sep
could take the heartbeat's place in the ledger; the page then reads the heartbeat it
displaced as the daily row, and only if that row is not loaded does the close say the
Sep 23 close is unknown, not left or quiet. It is not a change, and the fix is the
alert. Since 24 Sep the gateway keeps the two apart, so both rows are stored. The
batch reports only STRONG states,
so leaving strong GO is not the same as leaving GO. A symbol that comes back after a close
the batch ran without it has entered strong GO or NOGO again at that close, and its
sessions and mark count from there; a symbol's first Custom heartbeat on the page is said
as the first one seen. It never says buy, sell, add now or reduce: this page is a record,
not advice. Our own daily proxy studies of the add-on and trim (P-142, P-143, P-145, Aug
2026) measured our stand-ins for them and are not a verdict on GoNoGo. The one thing it
states about size is a reading of the measured scale-in schedule (P-163): a countdown to
the next add, or that an add point has been reached.
- An old date is normal. The indicator changes sides only about 5 to 10 times a
year per symbol (recent median about 7), so a three-week-old row means that trend is still running.
- Add-ons and trims show as a badge under Since flip, not as their own
row — the trend did not change sides.
- “no flip yet” means only in-trend events have arrived for that
symbol so far, never a Go or NoGo.
- Patterns, the panel of that name, lists chart-pattern events from a pattern
detector: a pattern forming (watch) or its break (breakout), the newest per symbol, frame and
pattern, with a breakout linked to the watch before it when that row is on the page. They are
display only: never a stance, never a tier and never a trade. This table, the Today panel and
every scoring panel leave them out, and the Observe gate counts them apart; a symbol's
drill-down lists them among its events, each naming its pattern, stage and detector. They
are measured after a week of rows, first against what GNG and Custom said at that close,
then by how far price followed through.
- There is no alert for Neutral, so a symbol that has gone quiet still shows its
last flip. For the indicator's reading right now, check the chart.
- Export CSV saves the rows this page loaded, in a file named for the instant the
page read the ledger, in UTC, never the time of the click: for example
candence-signals-2026-09-25T20-20-05Z.csv.
The intraday checker and agreement.py
read that instant as when the export was taken. A page left open exports what it loaded,
under that instant; press Refresh first for newer rows.
The columns:
System — which alert sent this row.
Notes — anything worth knowing about the row. What the other system
says about this symbol right now: ✓✓ both
agree, or a line naming each side when they differ; and no flip yet when the
row is an in-trend event rather than a real flip. Blank when there is nothing to add —
one system alone is not a cross-check.
Trend — the side, plus a coloured dot for the strength wording the Custom
alerts carry. Since flip — the latest in-trend event.
Pattern: the newest chart-pattern event on that symbol and frame, recent
ones only, in a dashed tag. Display only, never a stance. Tap or click it to open the Patterns panel at
that event.
Alert price — the price when the alert fired.
Move size — how hard the stock moved after the signal, measured in that
symbol's own typical daily range, so a 3% move is read as violent for GLD and unremarkable
for TSLA. Result — a Go closed by the next NoGo, or on a NoGo row the move
avoided until the next Go (negative is good there). Until the opposite signal arrives it
reads open, marked at the latest daily close.
Age — trading sessions closed since the row, counted to the last close when the
page loaded; last close for a daily row at that close, this session for an intraday
row that arrived inside the session in progress, since last close for one that arrived
after the last close, outside a session. Amber from 5 sessions (a trading week); the
drill-down's Since column uses the same words and turns amber from 21 sessions (about a
trading month).
Timeframe and the exact chart bar are on the Signal time
cell's tooltip; hover any tag, badge or heading for a fuller explanation.
What the marks mean
GO the trend is bullish ·
NOGO the trend is bearish
▲ Turned Go /
▼ Turned NoGo — the trend changed sides. The
only event the automatic indicator itself calls a signal.
● Add-on point — the trend paused, held,
then pushed on again. A point to add to something you already hold, not a new entry.
▼ Trim warning — price ran too far and is
losing steam. A bearish warning even while the trend is still GO.
⚡ Breakout — a quiet market started moving.
A separate system; never an entry on its own.
Strength dot — how strong the trend is:
Strong Go
Weak Go
Neutral
Weak No-Go
Strong No-Go.
Only Custom rows have one — the automatic indicator does not report strength,
so blank there is correct, not missing.
These marks and colours match what the indicator draws on a
chart, if you have one open.
⚠ These are two different indicators — do not average them together.
GNG is an automatic indicator: a ready-made trend model, captured exactly as it
fires. Custom is a rule built here from RSI, EMA and ADX.
They report different kinds of thing. GNG marks an event — the few times a
year a trend actually turns. Custom reports a daily condition — it fires again
every day the condition holds. Averaging a rare event together with a daily reading produces
a number that means nothing, which is why each is scored separately above.
Reading them against each other is useful, and that is what Notes does. But
both look at moving averages, so when they agree it may be for the same reason rather than
two independent confirmations.
More detail: the five strength colours
Trend is the SIDE, collapsed to two values because the side
is the signal: GO = bullish side,
NOGO = bearish side. Per the indicator's own documentation, a colour
change is not automatically a signal — only a change of side is. The exit is
therefore the FIRST NoGo (Weak No-Go), not Strong No-Go.
Strength is the full five-state colour palette, shown as the
coloured dot inside the Trend column so no information is lost:
Grade is empty on signals captured after 20 Aug 2026,
and that is correct rather than missing: TrendSpider exposes no alert condition for the
Strong/Weak colour — it is bar shading only. Rows that DO carry a grade came from the
older Custom alerts, which use a different rule (see below).
Event is which condition fired. Only a
side change is an entry or exit; the other two happen inside a trend and do
not move the Dir:
| What happened | Badge | Meaning |
Read the badge, not just Dir.
A trim badge on a GO row is a
bearish warning — TrendSpider names that condition "Go Countertrend
Correction", but the Go refers to the trend you are in, not the direction of the move.