How To Calculate Average True Range (ATR) in Ruby?

Member

by lizzie , in category: Third Party Scripts , 9 months ago

How To Calculate Average True Range (ATR) in Ruby?

Facebook Twitter LinkedIn Telegram Whatsapp

1 answer

Member

by denis , 9 months ago

@lizzie 

To calculate the Average True Range (ATR) in Ruby, you can create a method that takes in an array of price data and a period parameter. Here's a simple implementation of the ATR calculation in Ruby:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
def average_true_range(prices, period)
  tr_values = []
  
  prices.each_with_index do |price, index|
    if index == 0
      tr_values << prices[index + 1] - prices[index]
    elsif index > 0
      hl_diff = prices[index] - prices[index - 1]
      hc_diff = prices[index] - prices[index - 1]
      lc_diff = prices[index - 1] - prices[index]
      
      tr_values << [hl_diff.abs, hc_diff.abs, lc_diff.abs].max
    end
  end
  
  true_range = tr_values.inject(0, :+)
  atr = true_range / period.to_f
  
  return atr
end

# Example usage
prices = [10, 12, 15, 13, 16, 18, 20, 21, 22, 20]
period = 5

atr = average_true_range(prices, period)
puts "Average True Range is: #{atr}"


In this implementation, we first calculate the true range values for each price data point based on the high-low, high-close, and low-close differences. Then, we calculate the average of these true range values over the specified period to get the Average True Range (ATR) value. Finally, we return the calculated ATR value.