Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //@version=5
- //@AGFX
- indicator('AG FX - Pivot Points', overlay=true, scale=scale.right)
- //Inputs
- highBarNext = high
- lowBarNext = low
- highBarPrevious = high[2]
- lowBarPrevious = low[2]
- openBarPrevious = open[2]
- closeBarPrevious = close[2]
- openBarCurrent = open[1]
- closeBarCurrent = close[1]
- int offset = 2
- bar_index_ = bar_index[offset]
- showPivotboxes = input.bool(true, title='Show Pivot Boxes', group='Pivot Box')
- leftBars = input.int(2, 'Left Bars', group='Pivot Settings')
- rightBars = input.int(2, 'Right Bars', group='Pivot Settings')
- pivotHighBoxColor = input.color(defval=#978383, title='Pivot High Box', inline='customcolor', group='Pivot Box Customization')
- pivotLowBoxColor = input.color(defval=#7d8c9c, title='Pivot Low Box', inline='customcolor', group='Pivot Box Customization')
- addTransp = input.int(defval=50, title='Box Transparency', minval=1, maxval=100, group='Pivot Box Customization')
- addBoxCount = input.int(defval=100, title='Maximum Box Displayed', minval=1, maxval=200, group='Chart Customization')
- //Pivot definition
- pivotLow = ta.pivotlow(low, leftBars, rightBars)
- pivotHigh = ta.pivothigh(high, leftBars, rightBars)
- //Box array
- var box[] pivotHighBoxArray = array.new_box()
- var box[] pivotLowBoxArray = array.new_box()
- //Box Color Variables
- var color addPivotHighBoxColor = color.new(pivotHighBoxColor, addTransp)
- var color addPivotLowBoxColor = color.new(pivotLowBoxColor, addTransp)
- var color addPivotHighBorderBoxColor = color.new(pivotHighBoxColor, addTransp)
- var color addPivotLowBorderBoxColor = color.new(pivotLowBoxColor, addTransp)
- //Pivot High Box Calculation
- f_choppedoffbear(pivotHighBoxArray) =>
- if array.size(pivotHighBoxArray) > 0
- for i = array.size(pivotHighBoxArray) - 1 to 0 by 1
- cutbox = array.get(pivotHighBoxArray, i)
- boxlowzone = box.get_bottom(cutbox)
- boxhighzone = box.get_top(cutbox)
- boxrightzone = box.get_right(cutbox)
- if na or bar_index - 1 == boxrightzone and not(high > boxlowzone and low < boxlowzone or high > boxhighzone and low < boxhighzone)
- box.set_right(array.get(pivotHighBoxArray, i), bar_index)
- //Pivot High Box Plotting
- if pivotHigh and showPivotboxes
- boxhighzone = high[2] > high[1] ? high[2] : high[1]
- boxlowzone = open[2] > close[2] ? open[2] : close[2]
- pivotHighbox = box.new(bar_index_, boxhighzone, bar_index, boxlowzone, border_color=addPivotHighBorderBoxColor, border_style=line.style_dashed, bgcolor=addPivotHighBoxColor)
- if array.size(pivotHighBoxArray) > addBoxCount
- box.delete(array.shift(pivotHighBoxArray))
- array.push(pivotHighBoxArray, pivotHighbox)
- f_choppedoffbear(pivotHighBoxArray)
- //Pivot Low Box Calculation
- f_choppedoffbull(pivotLowBoxArray) =>
- if array.size(pivotLowBoxArray) > 0
- for i = array.size(pivotLowBoxArray) - 1 to 0 by 1
- cutbox = array.get(pivotLowBoxArray, i)
- boxlowzone = box.get_bottom(cutbox)
- boxhighzone = box.get_top(cutbox)
- boxrightzone = box.get_right(cutbox)
- if na or bar_index - 1 == boxrightzone and not(high > boxlowzone and low < boxlowzone or high > boxhighzone and low < boxhighzone)
- box.set_right(array.get(pivotLowBoxArray, i), bar_index)
- //Pivot Low Box Plotting
- if pivotLow and showPivotboxes
- boxlowzone = low[1] < low[2] ? low[1] : low[2]
- boxhighzone = open[2] > close[2] ? close[2] : open[2]
- pivotLowBox = box.new(bar_index_, boxhighzone, bar_index, boxlowzone, border_color=addPivotLowBorderBoxColor, border_style=line.style_dashed, bgcolor=addPivotLowBoxColor)
- if array.size(pivotLowBoxArray) > addBoxCount
- box.delete(array.shift(pivotLowBoxArray))
- array.push(pivotLowBoxArray, pivotLowBox)
- f_choppedoffbull(pivotLowBoxArray)
Advertisement
Add Comment
Please, Sign In to add comment