New Members: Be sure to confirm your email address by clicking on the link that was sent to your email inbox. You will not be able to post messages until you click that link.

How to Scan for Average Daily Range % - Better than ATR

I think this ADR% scan is better than the standard ATR scan (explanation below). First, the scan:

[SMA(nPeriods,Range) > Close/x] where x=ADR%

For example, if I want to scan for stocks with an average daily range greater than 2% of the price of the stock over the last 20 days, I would calculate that 100/2=50, and then scan as follows:

[SMA(20,Range) > Close/50]

Here is the default ATR scan: [ATR(nPeriods) > x] where x is an absolute value. For example, I could enter '2' and see stocks with an average true range greater than 2. If Blackberry is trading at $15, Apple at $150, and Alphabet at $1,500, how is that helpful to me? I'd have to scan within a price range to get meaningful results, and even then the results would be heavily weighted toward stocks that are priced in the upper end of my range.

Second, average true range includes inter-day data (gaps) in its calculation. I imagine that a stock that has been gapping significantly could continue to do so, but I don't see a strategy there. It's hugely risky to take a position ahead of a catalyst such as earnings, guidance, or data/clinical trials release. I'd rather pick up stocks that are in the act of breaking out. This is where Average Daily Range comes in. I want to select for stocks that have a habit of moving intraday, because this is the foundation upon which momentum is built.

Still unconvinced? Please tell me why. And use this scan code for ATR% if you if you prefer:

[SMA(nPeriods,ATR) > close/x] where x=100/ATR%


  • Oh wait, these formulas could be much easier:

    ADR% Scan: [SMA(nPeriods,Range)/Close > ADR%]

    i.e. to scan for stocks with an average daily range over 2% for the last 20 days, I would write: [SMA(20,Range)/Close > 2]

    ATR% Scan: [ATR(nPeriods)/Close > ATR%]

    i.e. to scan for stocks with an average true range over 2% for the last 20 days, I would write: [ATR(20/Close >2]
  • actually, those 'easier' formulas don't work, and I'm not sure why. use the original ones if this is interesting to you
  • lmkwinlmkwin ✭✭
    edited March 2021
    Move your decimal. The ATR, or ADR, is a much smaller number (usually) than the price.

    Much smaller number divided by larger number can rarely be >2
  • yup. 2% would be .02 - thanks
  • It might be worth investigating a scan that looks for ROC making new highs (e.g. max in 10 days, or whatever) and price breaking an upper price channel (close > 1 day ago Upper Price Channel) that has been flat for a while (e.g. 1 day ago upper price channel = 20 days ago upper price channel).

    It's likely range would be expanding, if that's what you want, but you wouldn't have to test for it if ROC shows the momentum is there.
Sign In or Register to comment.