mrkeyoor.com_
Tue 01 Sept 17:40 UTC
Dataevaluationupdated 30 Aug 2026

indicator review

Indicator is a Go library with more than 80 technical-analysis indicators, trading strategies, data repositories, and a backtesting framework. Version 2 sends data through Go channels, while companion commands can fetch Tiingo data, generate HTML reports, or expose selected strategies through a Model Context Protocol server.

+86 / 2dstars / 7d
Verdict

Our Indicator build took 26 seconds, and all 30 reported tests passed in 13 seconds. Use it for Go-based research when channel streams, AGPL-3.0, and hands-on validation fit your team. Keep the MCP server out of the buying argument unless one strategy backtest tool is enough, and do not turn its actions into live orders without separate data, execution, and calculation checks.

We ran it

Lab card: what happened when we ran indicatorScreenshot of indicator (github.com/cinar/indicator)
Install✓ · 11s1 packages
Build✓ · 26s
Tests✓ · 13s30 passed · 0 failed of 30 (go test)
Repo685 files~35,485 lines of source · 2.5 MB · 4 CI workflows · Dockerfile

Answers from our run

Does indicator build from source?

Dependencies installed in 11 seconds (1 packages), and the build succeeded in 26 seconds. We cloned commit 35bd387 into a clean Debian container with 3 CPUs and no project-specific setup.

Do indicator's tests pass?

Yes: 30 of 30 passed when we ran the project's own test command (go test). Some failures need services or credentials a bare container does not have.

Who should not use indicator?

Anyone treating library output as financial advice or a production trading signal without independent validation: the README disclaims that use, and v2.1.37 fixed several calculation and concurrency faults.

What are the alternatives to indicator?

go-talib, techan, TA-Lib. Our Indicator build took 26 seconds, and all 30 reported tests passed in 13 seconds.

Setup5/511-second install, 26-second build, and all 30 tests passed
Docs4/5Broad generated API docs, with MCP and batch gaps still visible
Community4/51,556 stars and an August 2026 maintenance release
Maturity3/5Tests pass, but v2.1.37 fixed several calculation faults

Discussed on

  1. hnShow HN: A Car Battery Level Indicator that plugs in your cigar lighter socket6 points

Who it’s for

Go developers building research tools around streamed OHLCV market data.
Teams that want indicators, strategy composition, repositories, and HTML backtests in one codebase.
Developers who will verify every calculation and strategy against their own reference data.
MCP builders who need the existing strategy backtest tool and can work within its current scope.

Who it’s NOT for

Anyone treating library output as financial advice or a production trading signal without independent validation: the README disclaims that use, and v2.1.37 fixed several calculation and concurrency faults.
Batch-analysis code that must avoid channels and goroutines: open issue 371 asks for direct slice methods because the current design routes indicator work through streams.
MCP users expecting direct access to the 80-plus indicator catalog: the server exposes one backtest tool, and issue 415 proposes a separate indicator registry and CLI.
Products that require a permissive dependency license: Indicator is AGPL-3.0.

Setup reality

Our sandbox install succeeded in 11 seconds with 1 package. The build succeeded in 26 seconds, and tests finished in 13 seconds with 30 passed and 0 failed. Commit 35bd387 contained 685 files, about 35,485 source lines, and occupied 2.5 MB checked out.

The root Go library needs no account. The supplied Docker backtest path fetches market data from Tiingo and requires an API key plus an output volume. The MCP server is a separate Go module with its own dependencies and toolchain line.

Version 2 uses channels for inputs and outputs; slice helpers bridge batch data at a cost the project has not benchmarked here. The repository has a Dockerfile and 4 CI workflows. Tests live beside Go source files, so the absence of a top-level tests directory is normal for this layout.

More than 80 indicators share a channel-first Go API

Indicator v2 covers trend, momentum, volatility, volume, and valuation calculations, then builds trading strategies over many of the same components. Inputs and outputs travel through typed Go channels. Generics allow several numeric types, and helper functions convert slices to channels and back. That model suits a service already consuming a stream of OHLCV snapshots, where each calculation can be connected to the next without inventing another event shape.

The catalog is genuinely broad. The README lists more than 80 indicators, from common moving averages and RSI to KST, Ichimoku Cloud, Ulcer Index, and volume-flow measures. Strategy packages add crossovers, compound decisions, stop-loss decoration, and buy-and-hold. Breadth raises the verification burden, though. A familiar indicator name does not prove identical warm-up periods, zero handling, or output alignment with another charting package. Compare the exact series your application relies on.

What happened when we ran it

Our sandbox installed 1 package in 11 seconds and built commit 35bd387 in 26 seconds. The test step completed in 13 seconds: Go reported 30 passed and 0 failed out of 30. The repository occupied 2.5 MB at checkout and contained 685 files with about 35,485 source lines. This was the cleanest result among the four projects in this review batch.

The scan found 4 CI workflow files and a Dockerfile. There was no separate tests directory because Go tests sit next to implementation files throughout packages such as helper, momentum, strategy, and backtest. Our passing count reports the packages exercised by the supplied lab command. It does not establish indicator accuracy against every vendor, profitable strategies, market-data quality, or trading performance, none of which we benchmarked in the sandbox.

Backtests produce reports, not evidence of a profitable system

Indicator includes file-system, memory, SQL, and Tiingo-backed asset repositories. Its sync command can pull snapshots into local storage, while the backtest command applies registered strategies and writes an HTML report. Docker packages both binaries and runs as a non-root indicator user. The documented container example requests 365 days of data, mounts an output directory, and requires a Tiingo API key.

The project itself warns that historical indicators do not guarantee future results. Its public backtest documentation describes actions, outcomes, workers, date ranges, and HTML output, but it does not document brokerage fills, commissions, slippage, spread, or corporate-action handling. If those factors matter to your decision, put them in an execution-aware layer and test them there. Treat the built-in report as research output, not a broker simulator or a reason to risk capital.

MCP exposes 1 backtest tool, not the whole catalog

The MCP module uses mark3labs/mcp-go and registers one tool named backtest. A call supplies a strategy name plus arrays for date, open, close, high, low, and volume. The result contains numeric buy, hold, and sell actions plus an outcome. The server's strategy factory includes a useful subset across trend, momentum, volume, and buy-and-hold categories, but it does not let an agent request an arbitrary named indicator.

Open issue 415 describes that limit precisely and proposes a name-based registry shared by a future indicator CLI and MCP. Issue 399 records another boundary: the MCP directory is its own Go module, was pinned to Indicator v2.1.12 at commit 35bd387, and was outside the root lint, test, and formatting tasks. The root release was v2.1.37, so an MCP user should test that module separately rather than assuming the root's 30 passing results cover it.

Channel streams cost more ceremony for batch arrays

The v2 rewrite makes channel composition the default even when all prices are already resident in memory. Slice conversion helpers make that usable, but they still introduce goroutines, scheduling, and channel handoffs. Open issue 371 asks for stateful Next and direct ComputeSlice methods for batch processing, specifically citing allocation and context-switch costs. No accepted project benchmark in our evidence quantifies that cost, so workload testing is the right way to decide.

Channels also bring cancellation and closure duties. Release v2.1.37 fixed an Aroon goroutine leak on cancellation and output channels that failed to close or dropped most values in STC, T3, and Fisher paths. The same release enabled the race detector and corrected races in reports and asset sync. Those fixes show active maintenance. They also tell reviewers to keep cancellation, short inputs, integer types, and concurrent reports in their own regression suite.

Version 2.1.37 is active, with 36 open issues

GitHub recorded the last push and v2.1.37 release on August 24, 2026. The repository had 1,556 stars, 239 forks, 36 open issues, and 2 open pull requests when fetched. Release notes cover divide-by-zero, floating-point drift, NaN and infinity persistence, concurrency, and documentation corrections. That is substantive maintenance rather than a cosmetic tag, though several of the fixed behaviors affect the numbers a trading application consumes.

AGPL-3.0 is the final fit check. Teams comfortable sharing covered modifications under its terms get a large native-Go catalog, a Docker backtest route, and an MCP starting point. Teams needing MIT or BSD dependencies should choose another library before integration. For everyone else, our 13-second passing test run earns Indicator a trial, followed by reference-series comparisons for every indicator and strategy that can influence money.

Alternatives

ProjectWhat it isPick it when
go-talibA pure-Go port of the established TA-Lib indicator set.pick this instead when familiar TA-Lib calculations and a permissive MIT license matter more than backtesting and MCP.
techanA Go technical-analysis library built around time series and trading rules.pick this instead when its time-series model fits your application better than channel-based streams.
TA-LibThe official multi-language technical-analysis core with a long-lived indicator catalog.pick this instead when cross-language consistency and the BSD-3-Clause core matter more than a native Go-only design.

What people are saying

  1. [github-trending] cinar/indicator

Sources

  1. Indicator repository
  2. Indicator README at commit 35bd387
  3. Indicator v2.1.37 release
  4. Indicator MCP server at commit 35bd387
  5. Indicator MCP registry proposal issue 415
  6. Indicator MCP CI gap issue 399
  7. Indicator slice API proposal issue 371
  8. Indicator AGPL-3.0 license

More data reviews

turso · TrackersListCollection · dash · getcontact-cli · awesome-zhuiju-free · iggy · the whole board →