FXSurf

Tradingview ADR

Jun 22nd, 2020
474
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.05 KB | None | 0 0
  1. //@version=3
  2. //
  3. // Average Daily Range (ADR) Indicator for TradingView
  4. // This script is based on the "Best ADR Indicator for MT4" described at https://www.fxdayjob.com/best-adr-indicator-mt4.
  5. // by Sherwin Daganato, 20171119
  6. // https://github.com/sherwind/pinescript-adr
  7. //
  8. // Inputs:
  9. //
  10. // Number of ADR Back - Set the number of calendar days back to plot historical ADR. The default value is 7.
  11. // Non-trading days are not taken into account.
  12. // A value of 7, for example, would display only 5 ADR for a 24x5 market.
  13. // ADR Length parameter - Set the length parameter of ADR. The default value is 1.
  14. //
  15. study(title="Average Daily Range - Daily", shorttitle="ADR FXSurf", overlay=true)
  16.  
  17. daily_adr = input(title="Number of ADR Back", type=integer, defval=30, minval=0)
  18. daily_adr_length = input(title="ADR Length parameter", type=integer, defval=20, minval=0)
  19.  
  20. new_bar(res) => change(time(res)) != 0
  21. new_period(condition, src) =>
  22. result = 0.0
  23. result := condition ? src : result[1]
  24. result
  25. adr(length) =>
  26. range = high - low
  27. sma(range[1], length)
  28. adr_high(adr_length) =>
  29. adr_ = adr(adr_length)
  30. (high - low) < adr_ ? low + adr_ : close >= open ? low + adr_ : high
  31. adr_low(adr_length) =>
  32. adr_ = adr(adr_length)
  33. (high - low) < adr_ ? high - adr_ : close >= open ? low : high - adr_
  34.  
  35. //
  36. // Daily
  37. //
  38. day_adr_high = security(tickerid, 'D', adr_high(daily_adr_length), lookahead=barmerge.lookahead_on)
  39. day_adr_low = security(tickerid, 'D', adr_low(daily_adr_length), lookahead=barmerge.lookahead_on)
  40.  
  41. one_day = 1000 * 60 * 60 * 24
  42. new_day = daily_adr > 0 and timenow - time < one_day * daily_adr and new_bar("D")
  43. day_adr_high_ = new_period(new_day, day_adr_high)
  44. day_adr_low_ = new_period(new_day, day_adr_low)
  45.  
  46. plot(isintraday or isdaily ? day_adr_high_ : na, title="ADR high", color=change(day_adr_high_)!=0?na:lime, transp=0, linewidth=2)
  47. 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