
Description
The least rewarding part of writing a quant strategy is hand-rolling MACD, RSI, Bollinger Bands and the rest — one mistyped coefficient and the backtest tells you a completely different story, and ten thousand people have already written the same code. Indicator is a Go module packaging more than 80 technical indicators with a strategy framework and a backtester, covering trend, momentum, volatility, volume and asset valuation, with zero third-party dependencies.
v2 is a full rewrite, and two of its changes matter most in practice. Data flows in and out over Go channels, which suits live market feeds naturally, and helper.SliceToChan and helper.ChanToSlice move between slices and channels when you would rather not think about it. And every indicator and strategy is built with no preset values, so periods and coefficients must be passed explicitly — wordier up front, but it saves digging through source later to find where a default period came from. There is also a TypeScript port, Indicator TS, carrying the same indicators and strategies.
Worth stating plainly: the author devotes a long section of the README to risk disclosure. The library is positioned for research and education and is not investment advice, and backtests are run with hindsight, without slippage, market impact or liquidity constraints — a good curve is not a promise that live trading reproduces it.
80+ indicators: trend indicators including MACD, EMA, KAMA, Aroon, CCI, Parabolic SAR and moving linear regression; momentum indicators including RSI, Stochastic and Williams %R; plus volatility, volume and asset valuation families.
Fully configurable: indicators and strategies ship with no preset values, so periods and smoothing factors are supplied by the caller rather than inherited silently from a default.
Stream-oriented: inputs and outputs are Go channels, which fits a live feed directly, with SliceToChan and ChanToSlice helpers for code that prefers slices.
Generics: built on Go generics, so float64, float32 and other numeric types feed in without a separate implementation per precision.
Strategies and backtesting: base strategies plus trend, momentum, volatility and volume examples, along with compound and decorator strategies, and a backtester that runs historical data and produces visual reports.
No dependencies: the module pulls in no third-party packages, so adding it does not drag a dependency tree along.
Test data included: the v2 rewrite holds code coverage above 90%, and each indicator and strategy has its own CSV test data to validate a calculation against.
Ready-made container: an official ghcr.io image syncs market data from Tiingo, runs the backtest and emits a report in one docker run, alongside the indicator-backtest and indicator-sync command-line tools.
TypeScript version: the same author's Indicator TS implements the same indicators and strategies in TypeScript/JavaScript for front-end and Node projects.
License: AGPL-3.0, so check that it fits your project before commercial use.
v2 is a full rewrite, and two of its changes matter most in practice. Data flows in and out over Go channels, which suits live market feeds naturally, and helper.SliceToChan and helper.ChanToSlice move between slices and channels when you would rather not think about it. And every indicator and strategy is built with no preset values, so periods and coefficients must be passed explicitly — wordier up front, but it saves digging through source later to find where a default period came from. There is also a TypeScript port, Indicator TS, carrying the same indicators and strategies.
Worth stating plainly: the author devotes a long section of the README to risk disclosure. The library is positioned for research and education and is not investment advice, and backtests are run with hindsight, without slippage, market impact or liquidity constraints — a good curve is not a promise that live trading reproduces it.
Features
80+ indicators: trend indicators including MACD, EMA, KAMA, Aroon, CCI, Parabolic SAR and moving linear regression; momentum indicators including RSI, Stochastic and Williams %R; plus volatility, volume and asset valuation families.
Fully configurable: indicators and strategies ship with no preset values, so periods and smoothing factors are supplied by the caller rather than inherited silently from a default.
Stream-oriented: inputs and outputs are Go channels, which fits a live feed directly, with SliceToChan and ChanToSlice helpers for code that prefers slices.
Generics: built on Go generics, so float64, float32 and other numeric types feed in without a separate implementation per precision.
Strategies and backtesting: base strategies plus trend, momentum, volatility and volume examples, along with compound and decorator strategies, and a backtester that runs historical data and produces visual reports.
No dependencies: the module pulls in no third-party packages, so adding it does not drag a dependency tree along.
Test data included: the v2 rewrite holds code coverage above 90%, and each indicator and strategy has its own CSV test data to validate a calculation against.
Ready-made container: an official ghcr.io image syncs market data from Tiingo, runs the backtest and emits a report in one docker run, alongside the indicator-backtest and indicator-sync command-line tools.
TypeScript version: the same author's Indicator TS implements the same indicators and strategies in TypeScript/JavaScript for front-end and Node projects.
License: AGPL-3.0, so check that it fits your project before commercial use.
