最近一直在捣腾BTC的期货现货交易, 发现要自己写一个指标函数太难, 因为没法测试正确性.
TA-Lib 是一个金融指数函数库, 包含了常用的100多种指数函数, 比如MACD, SAR等. 采用c语言编写, 官方支持Excel, c, java, perl, python等编程语言, 但是唯独没有nodejs的binding. 所以网上出现了若干个相关的库, 比如在npmjs上关键字包含talib的包 就有好几个. 其中最热门的是node-talib, 在github上面有好几百个star, 但是这个函数异常难用:
是一个异步封装, 对于这种纯计算的指标函数来说, 异步函数完全没有存在的意义.
只有一个有效接口execute, 内部通过函数指针来实现调用, 无形中降低了性能.
对入参解释模棱两可, 比如参数有哪些? 默认值是啥等, 都没有给出文档.
于是就想自己造一个轮子, 顺便学一学写nodejs的addon.
调用比起ta-lib要简单的多了, 比如:
直接接口调用, 不走函数指针
同步操作
支持传递Record结构自动取值
typescript的interface也已自动构建好, 函数签名, 默认值一应俱全!
调用非常简单, 比如:
import * as talib from "talib-binding"
// Input double array directly:
let output = talib.SAR(
[2, 3, 4, 5], /* inHigh */
[1, 2, 3, 4], /* inLow */
0.02, /* optAcceleration_Factor, optional */
0.2, /* optAF_Maximum, optional */
0, /* startIdx, optional */
3 /* endIdx, optional */
)
console.log(output)
// 或者传入一个`Record[]`结构
output = talib.SAR([
{Time: 0, High: 2, Low: 1},
{Time: 0, High: 3, Low: 2},
// ...
])
更多细节请移步GitHub.