Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //@version=3
- //
- // Average Daily Range (ADR) Indicator for TradingView
- // This script is based on the "Best ADR Indicator for MT4" described at https://www.fxdayjob.com/best-adr-indicator-mt4.
- // by Sherwin Daganato, 20171119
- // https://github.com/sherwind/pinescript-adr
- //
- // Inputs:
- //
- // Number of ADR Back - Set the number of calendar days back to plot historical ADR. The default value is 7.
- // Non-trading days are not taken into account.
- // A value of 7, for example, would display only 5 ADR for a 24x5 market.
- // ADR Length parameter - Set the length parameter of ADR. The default value is 1.
- //
- study(title="Average Daily Range - Daily", shorttitle="ADR FXSurf", overlay=true)
- daily_adr = input(title="Number of ADR Back", type=integer, defval=30, minval=0)
- daily_adr_length = input(title="ADR Length parameter", type=integer, defval=20, minval=0)
- new_bar(res) => change(time(res)) != 0
- new_period(condition, src) =>
- result = 0.0
- result := condition ? src : result[1]
- result
- adr(length) =>
- range = high - low
- sma(range[1], length)
- adr_high(adr_length) =>
- adr_ = adr(adr_length)
- (high - low) < adr_ ? low + adr_ : close >= open ? low + adr_ : high
- adr_low(adr_length) =>
- adr_ = adr(adr_length)
- (high - low) < adr_ ? high - adr_ : close >= open ? low : high - adr_
- //
- // Daily
- //
- day_adr_high = security(tickerid, 'D', adr_high(daily_adr_length), lookahead=barmerge.lookahead_on)
- day_adr_low = security(tickerid, 'D', adr_low(daily_adr_length), lookahead=barmerge.lookahead_on)
- one_day = 1000 * 60 * 60 * 24
- new_day = daily_adr > 0 and timenow - time < one_day * daily_adr and new_bar("D")
- day_adr_high_ = new_period(new_day, day_adr_high)
- day_adr_low_ = new_period(new_day, day_adr_low)
- plot(isintraday or isdaily ? day_adr_high_ : na, title="ADR high", color=change(day_adr_high_)!=0?na:lime, transp=0, linewidth=2)
- plot(isintraday or isdaily ? day_adr_low_ : na, title="ADR low", color=change(day_adr_low_)!=0?na:lime, transp=0, linewidth=2)
Advertisement
Add Comment
Please, Sign In to add comment