This code snippet is a Tradingview Indicator intended for use with equities. It simply plots the current 52 week high and low values on the chart in an unobtrusive manner. At the time of writing, I was surprised to see that there were not already a plethora of such indicators in the public repository. In fact, there was only one other indicator that tracks both the 52-week high and low values.
As such, it seemed like a nice gap to fill in the indicator space. Afterall, there are a lot of people who closely watch the relationship of equities to their 52 week high and low values. My intention for this indicator was to create a simple, unobtrusive indicator that can be used on any timeframe to display the 52 week high/low values.
52 Week High/Low Code
A copy of the code can be found on the Tradingview website here: https://www.tradingview.com/script/kSeWecuE-52-Week-High-Low/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
//@version=3 study("52 Week High/Low",shorttitle="52W",overlay=true) high_low_close = input(defval="Highs/Lows", title="Base 52 week values on candle:", options=["Highs/Lows", "Close"] ) weekly_hh = security(tickerid,"W", highest(high,52), lookahead=barmerge.lookahead_on) weekly_ll = security(tickerid,"W", lowest(low,52), lookahead=barmerge.lookahead_on) weekly_hc = security(tickerid,"W", highest(close,52), lookahead=barmerge.lookahead_on) weekly_lc = security(tickerid,"W", lowest(close,52), lookahead=barmerge.lookahead_on) high_plot = high_low_close == "Highs/Lows" ? weekly_hh : weekly_hc low_plot = high_low_close == "Highs/Lows" ? weekly_ll : weekly_lc plot(high_plot, title='52 Week High', trackprice=true, color=orange, offset=-9999) plot(low_plot, title='52 Week Low', trackprice=true, color=orange, offset=-9999) |
On the Chart
When the code is applied to a chart, this is what you can expect to see:
Commentary
As touched upon in the introduction, the code has the following features:
- Works on any timeframe.
- Unobtrusive: Simple horizontal lines showing only the current 52-week values.
- Allows the user to select whether to calculate the 52-week values from candle close values or the respective highs/lows.
And that is it. Overall it is fairly simple. Having said that, there are a few things that are worth digging deeper into.
Working on any timeframe
Since Pine-Script is a series based scripting language, we need to be careful when indexing values. For example, if you are viewing daily data, then import weekly close data as weekly_close
and referenceweekly_close[52]
it will not reference the close 52 weeks ago. It will reference the weekly close from 52 days ago which is only about 7 weeks ago. This is a problem the other 52-week high/low indicator suffers from.
Code Credit: https://www.tradingview.com/u/Shizaru/
1 2 3 4 5 6 7 8 9 10 11 12 |
//@version=2 study("JD 52 weeks HighLow",shorttitle="52wHL_SH",overlay=true) tf = input("W",type=resolution) a = security(tickerid,tf,close) len = input(52,title="Length") h = highest(a,len) l = lowest(a,len) p1 = plot(h) p2= plot(l) fill(p1,p2) |
If you plot the two together on a lower time frame and the difference will become more clear:
The solution to this is problem is to move the highest()
and lowest()
calls into the symbol()
call. This will then pull the correct 52-week data for each bar at the bars own moment in time.
Line Offset
Usingtrackprice=true
andoffset=-9999
inside the plot()
call allows us to draw a nice horizontal dotted line across the top of the screen. This is a matter of personal preference but I find that it is less cluttered than tracking all the historical levels.
That is it. I believe the rest of the code is quite straightforward. If not or you are new to pine script, there are a series of introductory posts that may provide additional guidance and help. Please see here: Getting Started. If there is anything specific you would like to see, feel free to get in touch!