BannonMan85
New member
- Platform
-
- Thinkorswim
Can we get this one converted? It works for the 5 minute time frame and the claim by "The Mas7er is that this indicator helps identify levels with an 88% probability of showing daily bias.
<iframe width="560" height="315" src="
" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<iframe width="560" height="315" src="
Code:
rsion=5
indicator('DR/IDR V1.3', overlay=true, max_lines_count=500, max_boxes_count=500)
import PineCoders/VisibleChart/4 as PCchart
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © TheMas7er and bmistiaen
// Input options
// {
LS0='Solid', LS1='Dashed', LS2='Dotted'
BX0='DR', BX1='IDR'
// } Input options
// Inputs
// {
var GRP1 = "Time Settings"
//timings
exchangeOffset = input.int(0,"Exchange Offset (hours)", group=GRP1)
regularTime = input.session('0930-1030', 'RDR Time', group=GRP1)
regularExtend = input.session('1030-1600', 'RDR Lines Time', group=GRP1)
afterTime = input.session('1930-2030', 'ADR Time', group=GRP1)
afterExtend = input.session('2030-0200', 'ADR Lines Time', group=GRP1)
overnightTime = input.session('0300-0400', 'ODR Time', group=GRP1)
overnightExtend = input.session('0400-0830', 'ODR Lines Time', group=GRP1)
var GRP2 = "General Settings"
//lines
showRegular = input.bool(true, 'Regular', group=GRP2, inline='session', tooltip='Show Regular and/or After and/or Overnight session')
showAfter = input.bool(true, 'After', group=GRP2, inline='session')
showOvernight = input.bool(true, 'Overnight', group=GRP2, inline='session')
drlines = input.bool(true, 'Show DR Lines ?', group=GRP2)
idrlines = input.bool(true, 'Show IDR Lines ?', group=GRP2)
middledrline = input.bool(false, 'Show Middle DR Line ?', group=GRP2)
middleidrline = input.bool(true, 'Show Middle IDR Line ?', group=GRP2)
openline = input.bool(true, 'Show Opening Line ?', group=GRP2, inline='openline', tooltip='Shows the Opening line of the Defining Range.\n- Extend: Extends the drawing of the Opening line into the RDR/ODR Lines Time.')
extendopLines = input.bool(true, 'Extend', group=GRP2, inline='openline')
showBackground = input.bool(true, 'Show DR/IDR Box ?', group=GRP2)
boxType = input.string(BX1, 'Box DR or IDR ?', options=[BX0,BX1], group=GRP2)
extenddrLines = input.bool(true, 'Extend DR Lines ?', group=GRP2)
extendidrLines = input.bool(true, 'Extend IDR Lines ?', group=GRP2)
showAllHistory = input.bool(false, 'Show complete history ?', 'Might cause a slight drawing delay when panning/moving/zooming the chart.', group=GRP2)
useBoxColors = input.bool(false, 'Box color based on open and close', 'If unchecked, it will default to the selected Box Background Color', group=GRP2)
var GRP3 = "Styles"
linesWidth = input.int(1, 'Box And Lines Width ?', minval=1, maxval=4, group=GRP3)
drLineColor = input.color(color.gray, 'DR Line Color', group=GRP3, inline='drline')
drLineStyle = input.string(LS0, 'Style', options=[LS0,LS1,LS2], group=GRP3, inline='drline')
idrLineColor = input.color(color.red, 'IDR Line Color', group=GRP3, inline='idrline')
idrLineStyle = input.string(LS1, 'Style', options=[LS0,LS1,LS2], group=GRP3, inline='idrline')
middleLineColor = input.color(color.gray, 'Middle Line Color', group=GRP3, inline='midline')
middleLineStyle = input.string(LS2, 'Style', options=[LS0,LS1,LS2], group=GRP3, inline='midline')
opLineColor = input.color(color.green, 'Opening Line', group=GRP3, inline='openline', tooltip='Opening line:\n- Color\n- Style\n- Width')
opLineStyle = input.string(LS2, '', options=[LS0,LS1,LS2], group=GRP3, inline='openline')
backgroundColor = input.color(color.new(color.gray, 75), 'Box Background Color', group=GRP3)
boxBorderSize = input.int(0, title="Box border size", minval=0, group=GRP3)
upBoxColor = input.color(color.new(color.green, 85), 'Up box', group=GRP3, inline='upbox')
upBorderColor = input.color(color.green, 'border', group=GRP3, inline='upbox')
downBoxColor = input.color(color.new(color.red, 85), 'Down box', group=GRP3, inline='downbox')
downBorderColor = input.color(color.red, 'border', group=GRP3, inline='downbox')
// } Inputs
// Constants
// {
exchangeOffsetMS = exchangeOffset * 3600000
// } Constants
// Variables {
var int startTime = na
var line lowrdrl = na
var line highrdrl = na
var line lowridrl = na
var line highridrl = na
var line leftrdrl = na
var line rightrdrl = na
var line middlerdrl = na
var line middleridrl = na
var line drLineOpen = na
var box bgBox = na
var float rdrlow = na
var float rdrhigh = na
var float ridrlow = na
var float ridrhigh = na
var float rdrmiddle = na
var float ridrmiddle = na
var float sessionOpen = na
var bool use_m5 = false
// } Variables
// Functions {
f_insession(_session) =>
not na(time(timeframe.period, _session, "America/New_York"))
f_lineStyle(_inputOption) =>
switch(_inputOption)
LS0 => line.style_solid
LS1 => line.style_dashed
LS2 => line.style_dotted
=> line.style_solid
f_newline(_color, _style) => line.new(na, na, na, na, xloc=xloc.bar_time, color=_color, style=_style, width=linesWidth)
f_newdrline() => f_newline(drLineColor, f_lineStyle(drLineStyle))
f_newidrline() => f_newline(idrLineColor, f_lineStyle(idrLineStyle))
f_newmdline() => f_newline(middleLineColor, f_lineStyle(middleLineStyle))
f_newopline() => f_newline(opLineColor, f_lineStyle(opLineStyle))
f_newbox() => box.new(na, na, na, na, xloc=xloc.bar_time, bgcolor=backgroundColor, border_width=boxBorderSize)
f_moveLine(_line, _x1, _y, _x2) => line.set_xy1(_line, _x1 + exchangeOffsetMS, _y), line.set_xy2(_line, _x2 + exchangeOffsetMS, _y)
f_movebox(_box, _left, _top, _right, _bottom, _bordercolor, _bgcolor) => box.set_lefttop(_box, _left + exchangeOffsetMS, _top), box.set_rightbottom(_box, _right + exchangeOffsetMS, _bottom), box.set_border_color(_box, _bordercolor), box.set_bgcolor(_box, _bgcolor)
// } Functions
// Use the 5 minute timeframe if the chart timeframe is lower than 5m
if barstate.isfirst
use_m5 := timeframe.in_seconds() < 300
[m5_open, m5_high, m5_low, m5_close] = request.security(syminfo.tickerid, '5', [open, high, low, close], lookahead = barmerge.lookahead_on)
open_value = use_m5 ? m5_open : open
high_value = use_m5 ? m5_high : high
low_value = use_m5 ? m5_low : low
close_value = use_m5 ? m5_close : close
inRegularSession = f_insession(regularTime) and showRegular
inRegularExtend = f_insession(regularExtend) and showRegular
inAfterSession = f_insession(afterTime) and showAfter
inAfterExtend = f_insession(afterExtend) and showAfter
inOvernightSession = f_insession(overnightTime) and showOvernight
inOvernightExtend = f_insession(overnightExtend) and showOvernight
inSession = inRegularSession or inOvernightSession or inAfterSession
inExtend = inRegularExtend or inOvernightExtend or inAfterExtend
if timeframe.isintraday and (PCchart.barIsVisible() or not showAllHistory)
if inSession
// Initialize levels
if not inSession[1]
startTime := time
sessionOpen := open_value
rdrhigh := high_value
rdrlow := low_value
ridrlow := math.min(open_value, close_value)
ridrhigh := math.max(open_value, close_value)
// Initialize drawing objects
if showBackground
bgBox := f_newbox()
if drlines
highrdrl := f_newdrline()
lowrdrl := f_newdrline()
if idrlines
highridrl := f_newidrline()
lowridrl := f_newidrline()
if middledrline
middlerdrl := f_newmdline()
if middleidrline
middleridrl := f_newmdline()
if openline
drLineOpen := f_newopline()
// Calculate levels
rdrhigh := math.max(high_value, rdrhigh)
rdrlow := math.min(low_value, rdrlow)
ridrhigh := math.max(open_value, close_value, ridrhigh)
ridrlow := math.min(open_value, close_value, ridrlow)
rdrmiddle := math.avg(rdrhigh, rdrlow)
ridrmiddle := math.avg(ridrhigh, ridrlow)
// Draw objects
if showBackground and inSession
boxUp = close_value > sessionOpen
boxBorderColor = useBoxColors ? (boxUp ? upBorderColor : downBorderColor) : backgroundColor
boxBackgroundColor = useBoxColors ? (boxUp ? upBoxColor : downBoxColor) : backgroundColor
boxHigh = boxType==BX0 ? rdrhigh : ridrhigh
boxLow = boxType==BX0 ? rdrlow : ridrlow
f_movebox(bgBox, startTime, boxHigh, time, boxLow, boxBorderColor, boxBackgroundColor)
if drlines and (inSession or (extenddrLines and inExtend))
f_moveLine(highrdrl, startTime, rdrhigh, time)
f_moveLine(lowrdrl, startTime, rdrlow, time)
if middledrline
f_moveLine(middlerdrl, startTime, rdrmiddle, time)
if idrlines and (inSession or (extendidrLines and inExtend))
f_moveLine(highridrl, startTime, ridrhigh, time)
f_moveLine(lowridrl, startTime, ridrlow, time)
if middleidrline
f_moveLine(middleridrl, startTime, ridrmiddle, time)
if openline and (inSession or (extendopLines and inExtend))
f_moveLine(drLineOpen, startTime, sessionOpen, time)