bin/Custom/Indicators/SentinelStochasticTripleFilter_v1_0_0.cs
| Family | Indicators |
| Version | 1.0.0 |
| Size | 534 lines |
| Scope | public — ships in sentinel-suite |
| Class | SentinelStochasticTripleFilter_v1_0_0 |
| Namespace | NinjaTrader.NinjaScript.Indicators.Sentinel.Sensors |
| Publishes seams | StfState |
| Documented by | no doc tracks this artifact |
| Depends on this | Council_v1_11_0.cs |
Rendered from the published copy in
sentinel-suite/src/, not the author’s private tree — so this page describes the file you actually have.
SentinelStochasticTripleFilter — the Sentinel STOCHASTIC-TRIPLE-FILTER sensor | Version v1.0.0 (DEV)
File: SentinelStochasticTripleFilter_v1_0_0.cs | namespace …Indicators.Sentinel.Sensors | display "Sentinel Stochastic Triple Filter v1.0.0 (DEV)"
⚠ NAME FIDELITY (naming law, 2026-07-10): the Sentinel port keeps the FULL original name
("Stochastic Triple Filter") so the derivation from the standard StochasticTripleFilter is never lost.
⚠ NO ORDERS — read-only advisory indicator. Safe to run anywhere.
LICENSE / PROVENANCE (MPL-2.0): ported from "Stochastic Triple Filter [ATP]" © AlgoTrade_Pro (Pine v6, MPL-2.0);
Gaussian Channel math © DonovanWall; Choppiness Index (Dreiss) + Stochastic (Lane) are public-domain formulas.
A port is a DERIVATIVE WORK — this file KEEPS MPL-2.0. Attribution recorded in the repo NOTICE.
📁 TIER-③ SENSOR — lives in Indicators.Sentinel.Sensors (picker "Sentinel ▸ Sensors"). This is the FIRST tool
into the Sensors subfolder — the folder-split pathfinder (Docs/SENTINEL_BOUNDARY_INVENTORY.md §1a).
WHAT THIS IS — the Sentinel-plumbed port of "Stochastic Triple Filter [ATP]". The raw indicator fires a
Stochastic %K/%D crossover only when a DonovanWall multi-pole Gaussian midline agrees on direction AND a
Choppiness Index says the market is TRENDING. Two of those three are exactly the seams the Council was missing:
• the GAUSSIAN-CHANNEL SLOPE is an independent TREND voice (a smoothed-price regime, not another CCI/ADX echo)
• the CHOPPINESS INDEX is a genuine REGIME veto — "don't trade a ranging tape" — which the Council had no
dedicated sensor for (only the VolEnvelope squeeze damp).
THE STATE (SentinelCore.StfState, SentinelCore ≥ v1.22.0):
• Bias -1/0/+1 the Gaussian-Channel midline slope (the TREND vote: rising=+1 / falling=-1) — RAW, always published
• Trending bool Choppiness Index below threshold (regime OK; false ⇒ choppy = the Council's chop veto) — RAW, always published
• Chop double the Choppiness Index value (0..100)
• Zone -1/0/+1 Stochastic zone (oversold=-1 / mid=0 / overbought=+1)
• Signal -1/0/+1 the FULLY-FILTERED discrete signal this bar (long=+1 / short=-1) — also a hidden plot
⚠ UseGC / UseChop gate only THIS sensor's own Signal + on-chart marks — Bias and Trending are published RAW so the
Council's own STF voter / VetoOnChop stay in charge of how the regime is used (turning a filter off here never
silently disarms the Council).
SENTINEL WIRING (Docs/SENTINEL_DESIGN_SYSTEM.md §6/§9):
• PUBLISH: SetStfState(...) each update (default ON). Wired into the Council as a TREND VOTER ("STF",
enters at weight 0 — the exploration primitive; promote via F6 "Weight — STF" or Roster.conf) plus a
CHOP VETO (VetoOnChop, default ON — active the moment this sensor is loaded).
• A hidden ±1 "Signal" plot (transparent) so Deck SIGNAL ARM / generic consumers read it (CompressionBase pattern).
• A SentinelSkin.Painter glass card + Sentinel palette + label remover. cyan = live; green/red = direction.
Faithfulness: the Pine true-range band path (trdata/filttr/mult) is DEAD CODE there (computed, never used)
and is omitted with zero behavioral change. Gaussian pole coefficients use C(i,j) (identical values; also
fixes the harmless _f7 guard typo in the original f_pole).
CHANGELOG
v1.0.0 (2026-07-12) — Sentinel port: Stochastic + DonovanWall Gaussian slope + Choppiness Index, published as
SentinelCore.StfState (Core v1.22.0) and wired into the Council (trend voter "STF" at w=0 exploration
+ chop veto). Glass card, hidden Signal plot, label remover, versioned Name, scope-keyed publish + heartbeat.
Carries UseGC/UseChop for full parity with the source (and logic parity with the plain StochasticTripleFilter
baseline). Landed in Indicators.Sentinel.Sensors — the Tier-③ folder pathfinder. Supersedes an earlier
broken cut (dropped the toggles, sat in Indicators.Sentinel) → archived. DEV until live-validated.