Sha256: 55c10b2ddf099dadf79e4394fcbc1e91662fca1661a21f76565a25486a89cd62

Contents?: true

Size: 864 Bytes

Versions: 7

Compression:

Stored size: 864 Bytes

Contents

# 一定期間の移動平均を得る
class MovingAverage
  def initialize( range=25 )
    @rates = [] # レートを記録するバッファ
    @range = range
  end

  def next_rate( rate )
    # バッファのデータを更新
    @rates.push rate
    @rates.shift if @rates.length > @range
    
    # バッファサイズが十分でなければ、nilを返す。
    return nil if @rates.length != @range
    
    # 移動平均を算出
    return MovingAverage.get_moving_average(@rates)
  end

  # 前の結果(引数で指定した件数だけ記録。)
  attr :prev, true
  
private
  # 移動平均値を計算する。 
  def self.get_moving_average( rates )
    total = 0
    rates.each {|s|
      total += s.end
      total += s.max
      total += s.min
    }
    return total / ( rates.length * 3 )
  end  
end

Version data entries

7 entries across 7 versions & 2 rubygems

Version Path
unageanu-jiji-1.2.1 base/shared_lib/moving_average.rb
unageanu-jiji-1.2.3 base/shared_lib/moving_average.rb
unageanu-jiji-1.2.4 base/shared_lib/moving_average.rb
jiji-1.2.8 base/shared_lib/moving_average.rb
jiji-1.2.7 base/shared_lib/moving_average.rb
jiji-1.2.6 base/shared_lib/moving_average.rb
jiji-1.2.5 base/shared_lib/moving_average.rb