Select Page

# ATR% of Close Price

Optuma Forums Optuma Scripting ATR% of Close Price

• This topic has 4 replies, 3 voices, and was last updated 1 year ago by Brad.
Viewing 5 posts - 1 through 5 (of 5 total)
• Author
Posts
• #57899
• Topics: 9
• Replies: 16
• Posts: 25

Hi,

I have created 2 “ATR% of Close Price” Scripts, I don’t think they are working correctly?

ATR20  of current day is less than 15% of Closing Price –

• ATR(BARS=30)/CLOSE() < 15/100

ATR20 of 1 day ago is less than 15% of Closing Price –

• ATR(BARS=30)/CLOSE() [1] < 15/100

What changes if any are required to make them work correctly?

#57903
Trevor R
• Topics: 109
• Replies: 319
• Posts: 428

I suspect your premise will nearly always be achieved.

You are calculating the Average True Range of the movement of the Close price of a group of bars, which is always significantly smaller than the Close prices, and looking for that value to be less than 15% of a Close price.

As a couple of  examples:

• Sugar (SBVolSpot) at the present ATR(30) = 0.393, while the Close price in 10.37, 15% of which is 1.55.
• SPI 200 Index (APCVolSpot) at present ATR(30) = 224.186, while the Close price in 5,539.00, 15% of which is 830.85.

The only exception I could find was the recent extreme movement in Crude Oil which came up with this result on 30 Apr 2020: ATR(30) = 3.867, while the Close price in 18.84, 15% of which is 2.826.

I’d also recommend bracketing your formula to ensure the correct comparison sequence of calculation:

(ATR(BARS=10)/CLOSE()) < (15/100)

I’d also simplify your formula to save an unnecessary calculation::

(ATR(BARS=10)/CLOSE()) < 0.15

Cheers

Trevor

• This reply was modified 1 year ago by Trevor R.
#57915
• Topics: 9
• Replies: 16
• Posts: 25

Hi Trevor,

I thought I had a couple of exceptions but haven’t been able to find them again.

Did you think the below Script was correctly written?

ATR20 of 1 day ago is less than 15% of Closing Price –

• ATR(BARS=30)/CLOSE() [1] < 15/100

#57931
Mathew
• Topics: 40
• Replies: 2,010
• Posts: 2,050

Just remember to add parenthesis. It’s not always needed but my OCD programming brain always wants to remove all doubt.

One way your script could be processed is

ATR(Bars=30) divided by (Close()[1] < 15/100)

Close()[1] < 15/100 will evaluate to either 1 (true) to 0 (false).

Precedence of operators should make sure that never happens but I still like to be explicit on these things. Perhaps early tesing of scripting has scared me!

(ATR(BARS=30)/CLOSE() [1]) < 15/100

All the best

Mathew

#57963
• Topics: 9
• Replies: 16
• Posts: 25

Hi Matthew,