indicator
cinar/indicator加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下,你是一名量化交易者,想要验证「当 MACD 金叉且布林带收口时买入」这个策略是否真的有效。传统做法是花几百块买一个通达信插件,或者花几天写一堆 Python 脚本调库。但如果你只需要一行 Go 代码,在本地 CPU 上以毫秒级速度算出 80+ 种技术指标,然后直接用真实历史数据回测呢?
这就是 Indicator Go 试图解决的问题——一个用纯 Go 实现、零外部依赖、专为高性能场景设计的技术分析库。
Indicator 的作者是 George Sebastian(GitHub @cinar),他在 LinkedIn 上记录了这个项目的成长轨迹:项目最初只是一个「侧边项目」(side project),用于在 Go 中实现高性能、零依赖的技术分析库。当 star 数突破 1000 时,他在社交媒体上写了一篇真情实感的感谢信,感谢开源社区的支持。
从 2021 年到 2026 年,这个项目经历了从 v1 到 v2 的完全重写。v2 带来了革命性的架构变化:引入 Go Channel 流式处理替代传统的数组切片操作,所有指标和策略都通过 channel 接收输入、输出数据流。如果你更习惯用 slice,也有 helper.SliceToChan 和 helper.ChanToSlice 做无缝转换。
作者还在 GitHub 上明确标注了 AGPL-3.0 许可证,并附上了详细的「风险披露与法律免责」声明,强调这个库「严格用于教育、研究和信息目的,不构成任何投资建议」。这是一个成熟开源项目应有的法律边界意识。
Indicator Go 的核心价值主张非常清晰:用 Go 语言的并发优势,把技术分析的计算性能推到极致。
项目将 80+ 指标按功能分为五大类:
| 类别 | 代表指标 | 说明 |
|---|---|---|
| 趋势类 (trend) | SMA, EMA, WMA, APO, Aroon, ADX, Parabolic SAR | 识别价格中长期走势 |
| 动量类 (momentum) | MACD, RSI, ROC, Stochastic, CCI, Williams %R | 衡量价格变动速度和幅度 |
| 波动率类 (volatility) | Bollinger Bands, ATR, Keltner Channel, Acceleration Bands | 衡量价格波动幅度 |
| 成交量类 (volume) | OBV, A/D Line, CMF, VWAP, MFI | 分析资金进出 |
| 估值类 (valuation) | NPV, IRR, DCF | 折现现金流分析 |
这是 v2 版本最大的架构创新。每个指标都实现为一个函数,接收 <-chan float64 输入,输出 <-chan float64。这种设计天然支持:
prices → SMA → Bollinger → Signalv2 版本充分利用 Go 1.18+ 的泛型特性,支持 int, float32, float64 等多种数值类型,编译期类型安全,不会出现 Python 中 float64/numpy 类型混用的烦恼。
Indicator 的另一个杀手级功能是内置的 回测框架(backtest)。
项目提供两个命令行工具:
indicator-backtest:策略回测引擎,读取 CSV 历史数据,模拟买卖操作,输出详细的绩效报告(收益率、夏普比率、最大回撤等)indicator-sync:数据同步工具,从外部 API 获取最新行情数据,存入本地存储(支持 PostgreSQL、SQLite、文件等多种存储后端)从项目 README 可以看出,v2 版本的一个重要目标是「达到并维持 90% 以上的代码覆盖率」。每个指标都有对应的 _test.go 文件,且测试数据以独立的 CSV 文件存储,方便独立验证。
项目还集成了:DeepSource 静态分析、Revive 代码风格检查、markdoc 自动文档生成、Codecov 覆盖率追踪、GitHub Actions 持续集成。此外,项目还提供了 TypeScript 版本 indicatorts,如果你在用 Node.js 做量化开发,也能无缝衔接。
安装:
go get github.com/cinar/indicator/v2
基础使用(计算收盘价的 20 日均线):
prices := []float64{100.0, 101.0, 102.0, ...}
sma := trend.SMA[2](14)
result := sma.Compute(helper.SliceToChan(prices))
Docker 部署回测(无需安装 Go 环境):
docker run -v $(pwd)/data:/app/data ghcr.io/cinar/indicator indicator-backtest
尽管 Indicator Go 功能强大,但也有一些值得注意的局限:
Indicator Go 是一个定位明确、性能优先的技术分析工具库。它专注于把「计算技术指标 + 回测策略」这两件事做到极致。零依赖、多阶段 Docker 镜像、90%+ 测试覆盖率,这些工程实践让它在量化开源项目中显得格外扎实。
如果你是一名有 Go 背景的量化开发者,或者需要在一个 Go 微服务中集成实时技术指标计算,Indicator Go 几乎是不二之选。