% Change since 52-week high

I’m trying to create a script for a watch list to show the % change since the 52-week closing high. I haven’t been able to find this in my searches of the forum or videos.

Hi Brad,

There are a few functions you need to use for this. HighestHigh(), PriceAtSignal and then manually calculate the Rate of Change.

//Find Highest High Cross
V1 = High() CrossesAbove HIGHESTHIGH(BARS=52, BACKTYPE=Weeks);
//Find Price Value of new 52 Week High
//Current closing Price
V3 = CLOSE() ;
//Manual ROC calculation
((V3 - V2) / V2)

This is what it looks like on a chart / watchlist:


The grey shaded section is the point at which the manually calculated ROC begins calculating. It resets each time a new high is made.

Adjust the columns properties to use Percentage as the column type.

See also this blog article on calculating drawdowns from 52 week highs:


Thank you Matthew. I’m wondering about the accuracy of the calculation of the losses I’m seeing. For example, LBrands (LB) shows a loss of 90.15% as of yesterday. However, I don’t calculate the same.

Hi Brad,

It’s working based on my interpretation of your original request, which i took as the high closing above the previous 52 week high. On LB that took place back in 2015 and the change in price from that point to now has been -89.38% (as of today).


If you’re simply wanting to measure the current price in comparison to the latest 52 week high value, than you’d use the Range From Extremes function.


This shows the current close is 62.99% from the 52 Week High Levels.