Overview
The true range is defined as the maximum of the follwoing:- High - Low
- Absolute Value of (High - Previous Close)
- Absolute Value of (Low - Previous Close)
The average is a rolling average for a given number of periods (or window). For example, you could define the average true range of a period of 10 days, which would be a rolling average over the last 10 days.
The average true range is an indicator of how much an asset moves on a daily basis. In some ways, it is heuristic substitute for volatility,
The average true range is often used to set trading exits. That is, a stop losses or profit targets is often times set as given multiples of the average true range.
The true range is generally expected to move within a range. Viewed then as an osciallor, a low value is sometimes viewed as a signal to a large breakout.
Calculation
You can do a straighforward calculation of the true range without any additional libraries, as in the following.
let ans = [];
for(let i=1;i<data.length;i++){
ans.push(Math.max(data[i].high - data[i].close, Math.abs(data[i].high - data[i-1].close), Math.abs(data[i].low - data[i-1].close)));
}
API
The davinci library hosts a technical analysis module that can be used to calculate the true range.
let tr = await import('/lib/finance/technical/v1.0.0/technical.mjs');
let price1 = {close:100, high:102, low:99};
let price2 = {close:100, high:102, Low:99};
let trueRange = tr.trueRange(price2, price1);