indicators-ta
Technical analysis indicators and market regime detection for algorithmic trading, written in Rust.
Features
- Batch functions —
ema(),sma(),atr(),rsi(),macd()over price slices - Incremental structs — O(1) per-tick
EMAandATRwith SMA warm-up - 11-layer signal engine — VWAP, EMA, ML SuperTrend, Trend Speed, Liquidity Profile, Confluence, Market Structure, CVD, Awesome Oscillator, Hurst exponent, Price Acceleration
- Market regime detection — indicator-based, Hidden Markov Model (HMM), and ensemble methods
- Strategy router — maps detected regime to a recommended trading strategy
Quick Start — Batch Indicators
use ;
let closes = vec!;
let ema9 = ema?;
let highs = vec!;
let lows = vec!;
let atr14 = atr?;
Quick Start — Signal Engine
use ;
let mut ind = new;
let mut liq = new;
let mut conf = new;
let mut ms = new;
let mut cvd = new;
let mut vol = new;
let mut streak = new;
// Per-candle update loop
// for candle in candles {
// ind.update(&candle);
// liq.update(&candle);
// conf.update(&candle);
// ms.update(&candle);
// cvd.update(&candle);
// vol.update(ind.atr);
// let (raw, _) = compute_signal(candle.close, &ind, &liq, &conf, &ms, &s, Some(&cvd), Some(&vol));
// if streak.update(raw) { /* confirmed signal — act */ }
// }
Quick Start — Regime Detection
use EnsembleRegimeDetector;
let mut det = default_config;
// for (high, low, close) in bars {
// det.update(high, low, close);
// if det.is_ready() {
// println!("{}", det.regime());
// }
// }
Regime Types
| Regime | Recommended Strategy |
|---|---|
Trending |
Trend Following |
MeanReverting |
Mean Reversion |
Volatile |
Reduced Exposure |
Uncertain |
Stay Cash |
Signal Modes
The signal engine supports three aggregation modes via BotSettings::signal_mode:
"majority"— Core layers must agree; at least 2 extended layers confirm (default)"strict"— All core and extended layers must align"any"— Core layers only, no extended confirmation required
License
MIT — see LICENSE.