class SignalTools::Technicals::AverageTrueRange

Constants

DEFAULT_PERIOD

Attributes

period[R]
stock_data[R]

Public Class Methods

new(stock_data, period) click to toggle source
# File lib/signal_tools/technicals/average_true_range.rb, line 13
def initialize(stock_data, period)
  @period = period
  @stock_data = stock_data
end

Public Instance Methods

average_true_ranges() click to toggle source

Takes a smoothing period and historical data and calculates the average true ranges.

# File lib/signal_tools/technicals/average_true_range.rb, line 24
def average_true_ranges
  trs = true_ranges(stock_data)
  atrs = [default_simple_average(trs.slice!(0...DEFAULT_PERIOD), DEFAULT_PERIOD)]
  trs.each { |tr| atrs << calculate_average_true_range(atrs.last, tr, period) }
  atrs
end
calculate() click to toggle source
# File lib/signal_tools/technicals/average_true_range.rb, line 18
def calculate
  average_true_ranges
end
calculate_average_true_range(yesterday_atr, today_tr, period) click to toggle source

Takes yesterday’s average true range, today’s true range, and the smoothing period and calculates the day’s average true range.

# File lib/signal_tools/technicals/average_true_range.rb, line 33
def calculate_average_true_range(yesterday_atr, today_tr, period)
  (yesterday_atr * (period - 1) + today_tr) / period
end