| Crates.io | tesser-indicators |
| lib.rs | tesser-indicators |
| version | 0.9.3 |
| created_at | 2025-11-19 04:27:56.07678+00 |
| updated_at | 2025-12-04 04:49:27.380679+00 |
| description | Technical indicators and signal helpers for Tesser strategies |
| homepage | |
| repository | https://github.com/tesserspace/tesser |
| max_upload_size | |
| id | 1939405 |
| size | 59,165 |
tesser-indicators is the high-precision analytics engine that powers the Tesser strategy stack. Every indicator runs on rust_decimal::Decimal to eliminate floating-point drift, updates in O(1) time, and can be chained together through a lightweight pipe() API.
Decimal, keeping indicator output stable even across millions of updates.Input trait (f64, Decimal, tesser_core::Candle, etc.) can be fed into an indicator.Indicator trait exposes a pipe() helper that connects two indicators without runtime allocation.use rust_decimal::Decimal;
use tesser_indicators::indicators::{Rsi, Sma};
use tesser_indicators::Indicator;
// Smoothing a momentum signal with a moving average
let mut rsi = Rsi::new(14).unwrap();
let mut smoothed = rsi.pipe(Sma::new(5).unwrap());
for price in [101.5, 102.0, 101.2, 103.3, 104.8] {
if let Some(value) = smoothed.next(price) {
println!("Smoothed RSI = {value}");
}
}
Sma – Simple moving average backed by a rolling accumulator.Ema – Wilder-style exponential moving average with constant-time updates.Rsi – Relative Strength Index that mirrors the default TradingView behaviour.BollingerBands – SMA + population standard deviation with configurable multipliers.New indicators should live in the src/indicators module directory, implement the shared Indicator trait, and include exhaustive tests.
O(1) by using incremental statistics instead of rescanning history.Decimal internals. Convert from f64 only at the ingestion boundary using the provided Input trait.reset() semantics.