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