Fisher指标的JavaScript语言实现以及在FMZ上画图
交易中技术分析的时候,交易者都把股价数据作为正态分布的数据来分析、研究。不过,股价数据分布并不符合标准的正态分布。Fisher Transformation
就是一个可以把价格数据转换为类似于正态分布的方法。Fisher Transformation
将市场数据平滑,剔除一些尖锐的小周期振荡。利用当日和前一日的指标交错可以发出交易信号。
关于Fisher Transform
的资料百度、知乎很多,这里不再赘述。
指标算法:
今日中间价:
mid=(low + high) / 2
确定计算周期,可使用10日为周期。计算周期内最高价和最低价:
lowestLow = 周期内最低价
,highestHigh = 周期内最高价
。定义价变参数(其中的
ratio
为0-1之间常数,例如可取0.5或0.33):

对价变参数
x
使用Fisher
变换,得到Fisher
指标:

使用JavaScript语言实现该算法
按照该指标算法逐步实现。需要注意的是这个算法是一个迭代算法,对于preX
,preFish
开始都置为0。对于Math.log
就是求以自然常数e为底的对数。另外在上面算法中未提及对于x的修正,我在编写时也差点忽略掉这个问题:
修正x的值,大于0.99就强制设置为0.999。小于-0.99同理。
第一次看这个算法、指标,按照算法移植出来之后。该实现我也并未验证,有兴趣研究的同学可以验证下有无错误。非常感谢指出错误。
Fisher Transform
指标算法源码:
画图
在FMZ上画图就很简单了,策略广场:https://www.fmz.com/square
上面有大把的例子可以参考,也可以搜索。

所以在FMZ上研究数据、图形显示、设计策略是非常方便的。
这里抛砖引玉,欢迎各位老师、同学留言。