我一直在使用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的例子:) –