我一直在使用simple_statistics的宝石,但即时通讯寻找在最后x记录计算EMA。例如(计算WMA时)指数移动平均数 - 红色
@stockticker.ema10 = s.stocktickers.last(10).map(&:current_price).map{|f| f.to_f}.wma
我想知道是否有人可以提供有关如何计算EMA在rails中的建议吗?
我一直在使用simple_statistics的宝石,但即时通讯寻找在最后x记录计算EMA。例如(计算WMA时)指数移动平均数 - 红色
@stockticker.ema10 = s.stocktickers.last(10).map(&:current_price).map{|f| f.to_f}.wma
我想知道是否有人可以提供有关如何计算EMA在rails中的建议吗?
它看起来像Moving Averages宝石可能是你要找的。以下是他们的exponential_moving_average
方法的副本供参考。
class Array
def exponential_moving_average(idx=nil, tail=nil)
idx, tail = idx_and_tail_or_defaults(idx, tail)
valid_for_ma(idx, tail)
alpha = 2.0/(tail + 1)
n = (1..tail).to_a.map{|tidx| (1 - alpha) ** (tidx - 1) * self[idx - tidx + 1]}.sum
d = (1..tail).to_a.map{|tidx| (1 - alpha) ** (tidx - 1)}.sum
n/d
end
alias_method :ema, :exponential_moving_average
end
我Statsample-timeseries
宝石这是Statsample的延伸,提前统计套件的Ruby开发者。它有很多统计方法(包括EMA),您可以在数据上执行这些统计方法。
如果您需要任何帮助,我将非常乐意为您提供帮助。 :)
嗨,那里,谢谢你,这是一个伟大的宝石,但有点过于复杂,我是什么寻找 :) –
完美的谢谢你,我以前看过这个宝石,但没有阅读过去只显示SMA的例子:) –