2013-12-16 2 views
0

Я использую жемчужину simple_statistics, но я хочу вычислить EMA на последних х-страницах. Например (при расчете WMA)Экспоненциальная скользящая средняя - Ruby

@stockticker.ema10 = s.stocktickers.last(10).map(&:current_price).map{|f| f.to_f}.wma 

мне было интересно, если кто-нибудь может дать рекомендации, как я получил о расчете EMA в рельсах?

ответ

3

Похоже, что драгоценный камень 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 
+0

Прекрасное спасибо, я видел этот драгоценный камень раньше, но не читал мимо примера, который показывал только SMA :) –

2

Я разработчик Statsample-timeseries драгоценный камень, который является продолжением Statsample, авансовый статистический люкс в Ruby. Он имеет довольно много статистических методов (включая EMA), которые вы можете выполнять на своих данных.

Если вам нужна помощь, я буду очень рад помочь. :)

+0

Привет, Спасибо за это, отличный камень, но немного сложнее, чем я. находясь в поиске :) –

Смежные вопросы