Indicator

Indicator

Go语言技术指标与回测框架

理财官网

应用介绍

写量化策略最没成就感的一段,是把 MACD、RSI、布林带、KDJ 这些指标一个个手搓出来——公式抄错一个系数,回测结果能差出天壤,而且这活儿别人已经做过一万遍了。Indicator 是个 Go 模块,把 80 多个技术指标连同策略框架和回测器一起打包好了,趋势、动量、波动率、成交量、资产估值五大类都覆盖,而且零第三方依赖

v2 是整个重写的版本,有两处改动对接活儿的人最实在:一是数据流改成了 Go channel 进出,天然适合接实时行情,嫌麻烦的话 helper.SliceToChan 和 helper.ChanToSlice 两个辅助函数随时在切片和通道之间来回;二是所有指标和策略都没有预设值,周期、系数这些参数全都得你自己填——听着啰嗦,实际是省了以后为了改一个默认周期去翻源码。项目还有一个 TypeScript 版 Indicator TS,不写 Go 也能用同一套指标和策略。

需要说在前面的是,作者在 README 里用很长的篇幅写了风险声明:这个库明确定位为研究和教育用途,不构成任何投资建议;回测是带着后见之明跑出来的,没有滑点、冲击成本和流动性约束,跑得漂亮不代表实盘能复现。

软件功能



80+ 技术指标:趋势类有 MACD、EMA、KAMA、Aroon、CCI、抛物线 SAR、移动线性回归等,动量类有 RSI、随机指标、威廉指标等,另有波动率、成交量和资产估值三类,常用的基本不用自己再写。

参数全部可配:所有指标和策略都设计成无预设值,周期、平滑系数这些都由调用方显式传入,不会被某个默认值悄悄绑死。

数据流式处理:输入输出都走 Go channel,接实时行情是顺的;习惯用切片的话有 SliceToChan / ChanToSlice 这类辅助函数在两种形态之间转换。

泛型支持:用 Go 泛型实现,float64、float32 等各种数值类型都能直接喂进去,不用为精度另写一套。

策略与回测框架:内置基础策略、趋势/动量/波动率/成交量各类策略示例,还有复合策略和装饰器策略;回测器能跑历史数据并生成可视化报告。

零依赖:整个模块不引入第三方包,加进项目不会带来一串传递依赖。

测试数据齐全:v2 重写后代码覆盖率维持在 90% 以上,每个指标和策略都配了独立的 CSV 测试数据,想验证某个指标算得对不对可以直接比对。

开箱即用的容器:官方提供 ghcr.io 镜像,一条 docker run 就能从 Tiingo 同步行情、跑回测并产出报告,还带 indicator-backtest 和 indicator-sync 两个命令行工具。

TypeScript 版本:同作者的 Indicator TS 是同一套指标和策略的 TypeScript/JavaScript 实现,前端或 Node 项目可以直接用。

协议:AGPL-3.0 开源,商用前请先确认这个协议对你的项目是否合适。

应用截图