Native Indicator Runtime

Every indicator is an independent V2 shared library (.dll on Windows, .so on Linux). ttTrader loads only the indicator types referenced by your candle-series configuration, caches their function tables, instantiates them per series, warms them up from historical candles, and updates them exactly once per finalized candle.

From Market Data to Indicator Value

Trades or BBO events build candles in candleSeries_c. Each finalized candle is dispatched to the attached indicators before your algo's onFinalizedCandle() callback fires — output offset 0 always matches the candle you just received.

Property Guarantee
Financial math All calculations in decimal_t — no float rounding
Hot path Zero dynamic allocation on finalized-candle updates
History Bounded output history sized by the candle series
Warm-up Historical candles initialize indicators chronologically
Consistency Duplicate/out-of-order candles cannot advance state
Trades / BBO → [candleSeries] → Finalized candle
→ [indicator list] → Cached V2 plugin function tables
→ [opaque instances] → Typed bounded output history
Algo enum-output lookup

onCandleClose() — once per finalized candle,
before the candle event reaches your algo
ABI-Safe Plugin Contract
Every indicator plugin publishes a versioned function table through ttGetIndicatorApiV2. The host validates API version, type enum, descriptor schema, and an ABI fingerprint derived from the shared financial and candle value layouts — a plugin from a different build is rejected at startup.

Built-in Indicators

Forty-seven native indicators ship with the framework — each as its own certified shared-library plugin.

Trend & Moving Averages

Smooth price action to reveal direction, strength, and dynamic support/resistance.

5
SMAsma

Equal-weighted average of the last N candles.

Baseline trend direction, long-term regime filters.

EMAema

Exponentially weighted average that reacts faster to recent price.

Trend filters, fast/slow crossovers, dynamic S/R.

WMAwma

Linearly weighted average emphasizing the newest candles.

Quicker trend reads than SMA with controlled noise.

HMAhma

Hull moving average — minimal lag while staying smooth.

Fast turn detection, low-latency trend flips.

VWMAvwma

Volume-weighted moving average over N candles.

Volume-backed trend filters, divergence vs. simple MAs.

Momentum & Oscillators

Measure speed and magnitude of price moves to spot exhaustion and divergence.

14
MACDmacd

Difference of two EMAs with signal line and histogram.

Momentum shifts, signal-line crossovers, divergence.

RSIrsi

Wilder-smoothed 0–100 overbought/oversold oscillator.

Mean-reversion extremes, divergence in ranges.

Stochasticstochastic

Close position within the recent high/low range (%K/%D).

Reversal timing, range-bound entries.

ROCroc

Percentage price change over a configurable lookback.

Momentum strength, acceleration/deceleration.

CCIcci

Deviation of price from its statistical mean.

Cyclical turns, extremes beyond ±100.

Stochastic RSIstochRsi

Stochastic applied to RSI — amplified %K/%D sensitivity.

Fine-tuned timing inside RSI extremes.

Williams %RwilliamsR

Inverse stochastic on the high/low range, scaled −100 to 0.

Fast overbought/oversold reads.

Momentummomentum

Raw price difference over N candles.

Pure velocity signals, zero-line crosses.

TRIXtrix

Triple-smoothed EMA rate of change.

Noise-filtered momentum, signal-line crosses.

KSTkst

Know Sure Thing — summed smoothed ROCs across four periods, with signal line.

Longer-cycle momentum turns.

PPOppo

Percentage Price Oscillator — EMA difference in percent with signal and histogram.

MACD-style momentum comparable across price levels.

Ultimate OscillatorultimateOscillator

Weighted blend of buying pressure across three timeframes.

Multi-timeframe divergence, fewer false extremes.

Vortexvortex

Positive/negative trend movement (VI+ / VI−) normalized by true range.

Trend-start crossovers.

Elder RayelderRay

Bull and bear power — high/low distance from an EMA.

Entry timing within an established trend.

Volatility & Bands

Quantify price dispersion and envelope markets in adaptive channels.

9
Bollinger Bandsbollinger

SMA ± k·σ bands with middle, upper, lower, and normalized width.

Squeezes, mean reversion, volatility breakouts.

ATRatr

Wilder-smoothed average true range.

Stop distance, position sizing, volatility filters.

Keltner Channelskeltner

EMA envelope at ± k·ATR around the midline.

Trend pullbacks, breakout confirmation.

Donchian Channelsdonchian

Highest-high / lowest-low channel over N candles.

Breakout entries, trailing stops.

Standard Deviationstddev

Statistical dispersion of price around its mean.

Volatility regime detection, strategy filters.

ATR ChannelsatrChannels

ATR-based envelope around a midline — upper, middle, lower.

Volatility-adaptive bands, breakout zones.

Z-Scorezscore

Distance of price from its mean, measured in standard deviations.

Statistical extremes, mean-reversion triggers.

Choppiness Indexchop

0–100 index separating trending from choppy markets.

Regime filter — gate trend strategies on trendiness.

Linear Regression Channellinreg

Best-fit regression line with upper/lower deviation bands.

Fair value, channel-extreme fades.

Volume & Money Flow

Confirm moves, detect accumulation/distribution, and locate high-interest price levels.

12
OBVobv

Cumulative volume signed by close direction.

Confirmation and divergence vs. price.

MFImfi

Volume-weighted RSI measuring money flow pressure.

Flow-based overbought/oversold extremes.

VWAPvwap

Volume-weighted average price of the session.

Execution benchmark, intraday directional bias.

CMFcmf

Chaikin Money Flow — buying/selling pressure over N candles.

Accumulation/distribution pressure.

Volume ProfilevolumeProfile

Volume traded per price level — POC, VAH, VAL outputs.

Support/resistance zones, value-area trading.

A/Dad

Accumulation/Distribution line from close location × volume.

Money-flow trend, divergence signals.

Chaikin OscillatorchaikinOscillator

Fast/slow EMA difference of the A/D line.

Money-flow momentum shifts, A/D divergence.

Force IndexforceIndex

Price change multiplied by volume, EMA-smoothed.

Conviction behind moves, exhaustion detection.

Ease of Movementeom

Price progress per unit of volume.

Low-resistance moves, breakout quality.

Relative Volumervol

Current volume against its historical average.

Breakout confirmation, unusual-activity alerts.

TRIN / Arms Indextrin

Advancing/declining ratio weighted by volume.

Short-term breadth extremes, contrarian reads.

NVI / PVIvolumeIndex

Negative/Positive Volume Index — updates only on down/up-volume candles.

Smart-money (NVI) vs. crowd (PVI) tracking.

Trend & Structure Systems

Multi-line systems and level tools that map trend state, strength, stops, and projected zones.

7
Parabolic SARpsar

Trailing stop-and-reverse dots with accelerating factor.

Trailing stops, trend-flip signals.

Ichimoku Cloudichimoku

Five-line system: tenkan, kijun, senkou A/B, future cloud.

Complete trend state, forward S/R zones.

ADX / DMIadx

Average Directional Index with +DI / −DI directional lines.

Trend-strength filters, DI crossovers.

Supertrendsupertrend

ATR-based trailing band that flips with the trend — value plus direction.

Trend-following entries, trailing stops.

Williams Alligatoralligator

Three smoothed moving averages: jaw, teeth, lips.

Trend awakening, breakout direction.

Fibonacci Retracementfibonacci

Auto-computed retracement levels from the swing range.

Pullback targets, S/R confluence.

Pivot PointspivotPoints

Classic, Camarilla, or Woodie pivots with R1–R3 / S1–S3.

Session S/R grids, mean-reversion levels.

Multi-Output Indicators

Output Enum
Bollinger middle / upper / lower / width EIO_BOLLINGER_*
MACD line / signal / histogram EIO_MACD*
Stochastic %K / %D EIO_STOCHASTIC_K/D
Ichimoku tenkan / kijun / senkou A / senkou B EIO_ICHIMOKU_*
Keltner middle / upper / lower EIO_KELTNER_*
Donchian upper / middle / lower EIO_DONCHIAN_*
Volume Profile POC / VAH / VAL EIO_VOLUMEPROFILE_POC/VAH/VAL
Linear Regression line / upper / lower EIO_LINEARREG_*
Stochastic RSI %K / %D EIO_STOCHRSI_*
ADX / +DI / −DI EIO_ADX, EIO_DMI_*
Supertrend line / direction EIO_SUPERTREND*
Alligator jaw / teeth / lips EIO_ALLIGATOR_*
Elder Ray bull / bear power EIO_ELDER_*
Fibonacci levels EIO_FIB_*
Pivot / R1–R3 / S1–S3 EIO_PIVOT*
KST line / signal EIO_KST, EIO_KST_SIGNAL
Vortex VI+ / VI− EIO_VORTEX_PLUS/MINUS
PPO line / signal / histogram EIO_PPO*
ATR Channels middle / upper / lower EIO_ATRCHANNEL_*
NVI / PVI EIO_NVI, EIO_PVI

Configuration-Driven

Indicators are declared in the instrument's OHLC config — unique ID, type, and parameters. Periods validate at load time; invalid types, bounds, or inputs reject the whole series configuration transactionally. Nothing is parsed at runtime: lookups use cached enums and function pointers only.

Candle Inputs & Value Status

Configurable Candle Inputs

Input Value
open / high / low / close Single candle price (close = default)
hl2 (high + low) / 2
hlc3 (high + low + close) / 3
ohlc4 (open + high + low + close) / 4
vwap Candle VWAP when the metric is enabled

Supported by EMA, SMA, WMA, HMA, Bollinger Bands, RSI, MACD, ROC, Standard Deviation, and OBV's comparison price. All remaining indicators — ATR, Stochastic, Parabolic SAR, Ichimoku, ADX/DMI, Supertrend, and the rest — are full-candle calculations.

Explicit Value Status

Status Meaning
EIVS_VALID Ready for trading logic
EIVS_WARMUP Not enough valid candles yet
EIVS_NOT_FOUND Indicator, output, or offset unavailable
EIVS_INVALID No meaningful result produced

Every lookup returns a typed indicatorValue_s. Invalid or missing input produces an explicit non-valid status — never an implicit zero signal.

Accessing Indicators from Algos

Read outputs by configured indicator ID and output enum — from the finalized-candle callback or through the framework helper. Publication-order offsets keep history semantics correct even on sparse series.

Typed Enum Lookup

getIndicatorValue(id, output, offset)
From the OHLC series — offset 0 is the newest finalized output
Framework helper
Resolve by instrument + OHLC + indicator ID from anywhere in your algo
Sequence-relative reads
getValueAtSequence() for queued catch-up batches — no stale-candle replays
Always check isValid()
Guard warm-up and invalid states before touching decValue
void algoCore_c::onFinalizedCandle( instrumentInfo_s* instr, ohlcInfo_s* ohlc, const candle_s& candle) { const indicatorValue_s fast = ohlc->getIndicatorValue(m_fastEmaId, EIO_VALUE, 0); const indicatorValue_s slow = ohlc->getIndicatorValue(m_slowEmaId, EIO_VALUE, 0); if (!fast.isValid() || !slow.isValid()) return; if (fast.decValue > slow.decValue) { // strategy-specific signal handling } }

Custom Indicators — On Request

Need an indicator we don't ship? The V2 runtime is built for extension — and we develop custom native indicators on request, delivered as certified shared-library plugins (.dll on Windows, .so on Linux) against the documented SDK.

1
Define output schema & descriptor
2
Derive from nativeIndicatorBase_c
3
Allocate all state in configure(); keep onCandleClose() allocation-free
4
Export the V2 plugin API & register the type
5
Certify with deterministic formula & lifecycle tests
We Build It For You
Higher-order VWAP variants, ADX/DMI trend strength, multi-timeframe composites, order-flow signals, or your own proprietary formula — we implement it as a native V2 indicator with full decimal_t precision, HFT-safe update paths, and deterministic certification coverage. Delivered against the documented plugin SDK so it drops straight into your configuration. Get in touch with your requirements.