以平均K线图(Heikin-Ashi)算法为例教你写FMZ扩展指标库
编写趋势策略的开发者经常和作者探讨一些指标算法,常用的指标都在talib等指标库中可以找到。但是对于一些比较冷门且实用的算法、指标就很难找到现成的。想自己动手实现又没有设计思路、设计经验,感觉无从下手。
那么本篇作者就带你通过编写设计一个简单的算法:平均K线图(Heikin-Ashi)来学习如何“手搓”算法函数。
平均K线图(Heikin-Ashi)算法
在这里我们将所要计算的平均K线图的开盘价、最高价、最低价、收盘价简称为:avgOpen、avgHigh、avgLow、avgClose。作为参数的K线数据中的开盘价、最高价、最低价、收盘价简称为:Open、High、Low、Close。
作者拿到这个算法计算资料时详细看了一遍,发现这个计算其实并不复杂(真的很简单),计算主要分两个部分的处理。
初始Bar算法:
因为这个算法是一个迭代算法,计算当前Bar的数据时需要引用到前一个Bar的数据(很多经典指标、算法都是这种迭代计算),所以第一根Bar的计算必然是与其后的迭代计算是不同的。
根据这个指标的计算资料的描述,第一根平均K线Bar的计算方式如下:
后续Bar迭代算法:
除了第一根平均K线Bar之外,后续的平均K线Bar需要迭代计算,算法如下:
设计实现
在FMZ.CN上以「模板类库」形式编写、收纳这个算法,编写一个「JavaScript扩展指标库」。如果还希望“手搓”一些其它指标算法,也可以直接加入到这个模板代码中。
在策略库创建一个策略,选择策略语言为JavaScript
,选择策略类型为「模板类库」,命名为:JavaScript扩展指标库。
编写并详细注释:
回测测试
运行这个模板类库,执行main
函数中的获取数据、画图等操作,计算出了平均K线数据并画图。

该代码用于教学,可以根据具体需求随意扩展、修改。