Sha256: 512805d0af88ab0cc90c365a80f583b185b3dc6c901df2d1d61f03266d6d487e

Contents?: true

Size: 616 Bytes

Versions: 21

Compression:

Stored size: 616 Bytes

Contents

class SQA::Indicator; class << self

  def peaks_and_valleys(
        prices,   # Array of prices
        delta     # Integer distance delta (# of higher or lower prices to either side)
      )
    peaks   = []
    valleys = []
    period  = 2 * delta + 1

    prices.each_cons(period) do |window|
      price    = window[delta]

      next if window.count(price) == period

      peaks   << price if window.max == price
      valleys << price if window.min == price
    end

    {
      period:   period,
      peaks:    peaks,
      valleys:  valleys
    }
  end
  alias_method :pav, :peaks_and_valleys

end; end

Version data entries

21 entries across 21 versions & 1 rubygems

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