Sha256: 07fec135745d6e5b14321601fc6356e2f7be9dade2b6a409da68c139e285ce79

Contents?: true

Size: 1.11 KB

Versions: 21

Compression:

Stored size: 1.11 KB

Contents

# lib/sqa/indicator/relative_strength_index.rb

class SQA::Indicator; class << self

  def relative_strength_index(
        prices,             # Array of prices
        period,             # Integer how many to consider at a time
        over_sold   = 30.0, # Float break over point in trend
        over_bought = 70.0  # Float break over point in trend
      )
    gains   = []
    losses  = []

    prices.each_cons(2) do |pair|
      change = pair[1] - pair[0]

      if change > 0
        gains   << change
        losses  << 0
      else
        gains   << 0
        losses  << change.abs
      end
    end

    avg_gain  = gains.last(period).sum  / period.to_f
    avg_loss  = losses.last(period).sum / period.to_f
    rs        = avg_gain / avg_loss
    rsi       = 100 - (100 / (1 + rs))

    trend = if rsi >= over_bought
              :over_bought
            elsif rsi <= over_sold
              :over_sold
            else
              :normal
            end

    {
      rsi:    rsi,  # Float
      trend:  trend # Symbol :normal, :over_bought, :over+sold
    }
  end
  alias_method :rsi, :relative_strength_index

end; end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
sqa-0.0.24 lib/sqa/indicator/relative_strength_index.rb
sqa-0.0.22 lib/sqa/indicator/relative_strength_index.rb
sqa-0.0.21 lib/sqa/indicator/relative_strength_index.rb
sqa-0.0.20 lib/sqa/indicator/relative_strength_index.rb
sqa-0.0.19 lib/sqa/indicator/relative_strength_index.rb
sqa-0.0.18 lib/sqa/indicator/relative_strength_index.rb
sqa-0.0.17 lib/sqa/indicator/relative_strength_index.rb
sqa-0.0.15 lib/sqa/indicator/relative_strength_index.rb
sqa-0.0.14 lib/sqa/indicator/relative_strength_index.rb
sqa-0.0.13 lib/sqa/indicator/relative_strength_index.rb
sqa-0.0.12 lib/sqa/indicator/relative_strength_index.rb
sqa-0.0.11 lib/sqa/indicator/relative_strength_index.rb
sqa-0.0.10 lib/sqa/indicator/relative_strength_index.rb
sqa-0.0.9 lib/sqa/indicator/relative_strength_index.rb
sqa-0.0.8 lib/sqa/indicator/relative_strength_index.rb
sqa-0.0.7 lib/sqa/indicator/relative_strength_index.rb
sqa-0.0.6 lib/sqa/indicator/relative_strength_index.rb
sqa-0.0.5 lib/sqa/indicator/relative_strength_index.rb
sqa-0.0.4 lib/sqa/indicator/relative_strength_index.rb
sqa-0.0.3 lib/sqa/indicator/relative_strength_index.rb