module SignalTools::Technicals::Common

Public Instance Methods

collection_for_array(points, period, method) click to toggle source

Returns a collection of values by iterating over an array, slicing it period

elements at a time and calling method for each slice.
# File lib/signal_tools/technicals/common.rb, line 32
def collection_for_array(points, period, method)
  raise unless points.size >= period
  collection = []
  index = 0
  while((index + period - 1) < points.size)
    collection << get_for_period(points, index, (index + period - 1), method)
    index += 1
  end
  collection
end
default_simple_average(data, period) click to toggle source

Gets the first 0…period of numbers from data and returns a simple average.

# File lib/signal_tools/technicals/common.rb, line 16
def default_simple_average(data, period)
  SignalTools.average(data.slice(0...period))
end
get_for_period(points, start, finish, method) click to toggle source

Runs method for the given slice of the array.

# File lib/signal_tools/technicals/common.rb, line 21
def get_for_period(points, start, finish, method)
  case method
    when :average
      SignalTools.average(points.slice(start..finish))
    else
      (points.slice(start..finish)).send(method)
    end
end
trim_data_to_range(data, size) click to toggle source
# File lib/signal_tools/technicals/common.rb, line 6
def trim_data_to_range(data, size)
  if data.is_a?(Array)
    data.last(size)
  elsif data.is_a?(Hash)
    data.keys.each { |key| data[key] = data[key].first(size) }
    data
  end
end