Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
- // INTELLECTUAL PROPERTY OF © prim3associat3s and PRIME ASSOCIATES LLC. Use under HUMANITARIAN INTENT!
- // This script is provided to the public, free to use. Welcome to the table. Dee Prime
- //@version=5
- indicator('PRIME - ShadoW ZoneZ with RSI Levels', 'ShadoW ZoneZ', true)
- // 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987
- // INPUTS {{{
- var max_array_size = 21 // [6, 3] matrix
- // TREND
- src = input.source(close, 'Source', group='Trend')
- small_period = input.int(8, 'Small Length', group='Trend')
- medium_period = input.int(21, 'Medium Length', group='Trend')
- trend_use_colors = input.bool(true, 'Use Color Coding', group='Trend')
- trend_color_default = input.color(color.white, 'Default', group='Trend')
- // sight 1
- show_sight_small = input.bool(false, 'Show Small Sight', group='Small Sight')
- sight_small_width = input.int(2, 'Line width', minval=1, group='Small Sight')
- sight_small_styleI = input.string('Solid', 'Line style', options=['Solid', 'Dashed', 'Dotted'], group='Small Sight')
- sight_small_style = sight_small_styleI == 'Solid' ? line.style_solid : sight_small_styleI == 'Dashed' ? line.style_dashed : line.style_dotted
- // sight 2
- show_sight_medium = input.bool(false, 'Show Medium Sight', group='Medium Sight')
- sight_medium_width = input.int(2, 'Line Width', minval=1, group='Medium Sight')
- sight_medium_styleI = input.string('Solid', 'Line style', options=['Solid', 'Dashed', 'Dotted'], group='Medium Sight')
- sight_medium_style = sight_medium_styleI == 'Solid' ? line.style_solid : sight_medium_styleI == 'Dashed' ? line.style_dashed : line.style_dotted
- // Trend SECTION 1 (small)
- trend_s1_line_color_up = input.color(color.new(color.blue, 10), 'Uptrend', group='Trend Section 1', inline='TColor')
- trend_s1_line_color_dn = input.color(color.new(color.orange, 10), 'Downtrend', group='Trend Section 1', inline='TColor')
- trend_s1_line_width = input.int(4, 'Lines width', minval=1, group='Trend Section 1')
- trend_s1_line_styleI = input.string('Solid', 'Line style', options=['Solid', 'Dashed', 'Dotted'], group='Trend Section 1')
- trend_s1_line_style = trend_s1_line_styleI == 'Solid' ? line.style_solid : trend_s1_line_styleI == 'Dashed' ? line.style_dashed : line.style_dotted
- trend_s1_line_extend = input.bool(true, 'Extend Lines', group='Trend Section 1')
- trend_s1_xline_width = input.int(2, 'Lines width', minval=1, group='Trend Section 1')
- trend_s1_xline_styleI = input.string('Dashed', 'Line style', options=['Solid', 'Dashed', 'Dotted'], group='Trend Section 1')
- trend_s1_xline_style = trend_s1_xline_styleI == 'Solid' ? line.style_solid : trend_s1_xline_styleI == 'Dashed' ? line.style_dashed : line.style_dotted
- // SECTION 2 (medium)
- trend_s2_line_color_up = input.color(color.new(color.green, 40), 'Uptrend', group='Trend Section 2', inline='TColor2')
- trend_s2_line_color_dn = input.color(color.new(color.red, 40), 'Downtrend', group='Trend Section 2', inline='TColor2')
- trend_s2_line_width = input.int(4, 'Lines width', minval=1, group='Trend Section 2')
- trend_s2_line_styleI = input.string('Solid', 'Line style', options=['Solid', 'Dashed', 'Dotted'], group='Trend Section 2')
- trend_s2_line_style = trend_s2_line_styleI == 'Solid' ? line.style_solid : trend_s2_line_styleI == 'Dashed' ? line.style_dashed : line.style_dotted
- trend_s2_line_extend = input.bool(true, 'Extend Lines', group='Trend Section 2')
- trend_s2_xline_width = input.int(2, 'Extend Lines width', minval=1, group='Trend Section 2')
- trend_s2_xline_styleI = input.string('Dashed', 'Extend Line style', options=['Solid', 'Dashed', 'Dotted'], group='Trend Section 2')
- trend_s2_xline_style = trend_s2_xline_styleI == 'Solid' ? line.style_solid : trend_s2_xline_styleI == 'Dashed' ? line.style_dashed : line.style_dotted
- // FIBONACCI
- fib_reverse = input.bool(false, 'Reverse Levels', group='Fibonacci')
- show_fib_src_line = input.bool(false, 'Show from / to source line', group='Fibonacci')
- show_fib_src_label = input.bool(true, 'Show from / to source labels', group='Fibonacci')
- fib_use_colors = input.bool(false, 'Use Color Coding', group='Fibonacci')
- fib_color_resistance = input.color(#e91e63, 'Resistance', group='Fibonacci', inline='Color2')
- fib_color_support = input.color(#2196f3, 'Support', group='Fibonacci', inline='Color2')
- fib_color_default = input.color(color.white, 'Default', group='Fibonacci', inline='Color2')
- fib_lvl_line_width = input.int(2, 'Levels line width', minval=1, group='Fibonacci')
- fib_lvl_line_style_activeI = input.string('Solid', 'Levels line style: active', options=['Solid', 'Dashed', 'Dotted'], group='Fibonacci')
- fib_lvl_line_style_active = fib_lvl_line_style_activeI == 'Solid' ? line.style_solid : fib_lvl_line_style_activeI == 'Dashed' ? line.style_dashed : line.style_dotted
- fib_lvl_line_style_inactiveI = input.string('Dotted', 'Levels line style: inactive', options=['Solid', 'Dashed', 'Dotted'], group='Fibonacci')
- fib_lvl_line_style_inactive = fib_lvl_line_style_inactiveI == 'Solid' ? line.style_solid : fib_lvl_line_style_inactiveI == 'Dashed' ? line.style_dashed : line.style_dotted
- fib_lvl_line_length_left = input.int(24, 'Extend line left', minval=0, group='Fibonacci')
- fib_lvl_line_length_right = input.int(18, 'Extend line right', minval=0, group='Fibonacci')
- // DATA
- show_sm_coord_labels = input.bool(false, 'Show SM Labels', group='H/L Data')
- show_md_coord_labels = input.bool(false, 'Show MD Labels', group='H/L Data')
- // show_dev = input(false, "Show DEV Labels", group="Devtools")
- // }}}
- // FUNCTIONS {{{
- // -- TIME {{{
- candle_size_ms = time - time[1] // milliseconds of a candle
- toCandles(ms) => // {{{ total x units in ms
- int res = na
- int m = timeframe.multiplier
- if timeframe.isseconds
- res := ms / 1000 / m
- res
- if timeframe.isminutes
- res := ms / 1000 / 60 / m
- res
- if timeframe.isdaily
- res := ms / 1000 / 60 / 60 / 24 / m
- res
- if timeframe.isweekly
- res := ms / 1000 / 60 / 60 / 24 / 7 / m
- res
- if timeframe.ismonthly
- res := ms / 1000 / 60 / 60 / 24 / 7 / 4 / m
- res
- res
- // }}}
- getCandleSize() => // ms of 1 candle {{{
- // get previous open x, get previous close x, substract return diff
- var int p1 = time[1]
- var int p2 = time[2]
- p1 - p2
- // }}}
- // }}}
- // -- COORDS {{{
- getHHLL(isUptrend, val1, val2) => // : string {{{
- isUptrend ? val1 > val2 ? 'HH' : 'LH' : val1 < val2 ? 'LL' : 'HL'
- // }}}
- add_to_bag(bag_id, value, barTime, barPrice) => // {{{
- array.unshift(bag_id, barPrice)
- array.unshift(bag_id, barTime)
- array.unshift(bag_id, value)
- if array.size(bag_id) > max_array_size // {{{
- array.pop(bag_id)
- array.pop(bag_id)
- array.pop(bag_id)
- // }}}
- // }}}
- update_bag(bag_id, value, barTime, barPrice, direction) => // {{{
- // if bag empty add first ball
- if array.size(bag_id) == 0 // {{{
- add_to_bag(bag_id, value, barTime, barPrice)
- else
- // }}}
- // {{{ if new is higher or lower than previous in current direction, swap ball 1
- if direction == 1 and value > array.get(bag_id, 0) or direction == -1 and value < array.get(bag_id, 0) // {{{
- array.set(bag_id, 0, value)
- array.set(bag_id, 1, barTime)
- array.set(bag_id, 2, barPrice)
- // }}}
- 0
- // }}}
- // }}}
- calcMidpoint(x1, y1, x2, y2) => // [ x, y ] {{{
- var int x = na
- var float y = na
- x := (x1 + x2) / 2
- y := (y1 + y2) / 2
- [x, y]
- // }}}
- getDirection(v1, v2) => // ( 1, 0, -1 ) {{{
- v1 < v2 ? 1 : v1 > v2 ? -1 : 0
- // }}}
- // }}}
- // -- FIBS {{{
- buildArray(v1, v2, v3, v4, v5, v6, v7) => // [array] {{{
- _arr = array.new_float(0)
- array.push(_arr, v1)
- array.push(_arr, v2)
- array.push(_arr, v3)
- array.push(_arr, v4)
- array.push(_arr, v5)
- array.push(_arr, v6)
- array.push(_arr, v7)
- _arr
- // }}}
- fibLevel(H, L, F) => // {{{
- fib_reverse ? (H - L) * F + L : H - (H - L) * F
- // }}}
- getFibRetracements(dir, L, H) => // [fib array] {{{
- // 1, 23.6%, 38.2%, 50%, 61.8%, and 78.6%, 0
- _fibs = array.new_float(0)
- array.push(_fibs, H)
- array.push(_fibs, fibLevel(H, L, 23.6 / 100))
- array.push(_fibs, fibLevel(H, L, 38.2 / 100))
- array.push(_fibs, fibLevel(H, L, 50.0 / 100))
- array.push(_fibs, fibLevel(H, L, 61.8 / 100))
- array.push(_fibs, fibLevel(H, L, 78.6 / 100))
- array.push(_fibs, L)
- _fibs
- // }}}
- getFibState(dir, prevlvl, thislvl, nextlvl) => // {{{
- // states: ----------------------------------
- // 0 = resistance actively moving up (yellow)
- // 1 = resistance far / crossed
- // 2 = resistance next
- // -- ($$PRRRIIICE$$)
- // 3 = support next
- // 4 = support far
- // 5 = support actively moving down (fuchsia)
- //-------------------------------------------
- state = dir == 1 and prevlvl == -1 ? thislvl == high ? 0 : close > thislvl ? 3 : close < nextlvl ? 1 : 2 : dir == 1 and nextlvl == -1 ? close < thislvl ? 2 : close > nextlvl ? 4 : 3 : dir == 1 ? close >= thislvl and close <= prevlvl ? 3 : close >= thislvl and close >= prevlvl ? 4 : close <= thislvl and close >= nextlvl ? 2 : close <= thislvl and close <= nextlvl ? 1 : -1 : dir == -1 and nextlvl == -1 ? close > thislvl ? 3 : close < prevlvl ? 1 : 2 : dir == -1 and prevlvl == -1 ? thislvl == low ? 5 : close < thislvl ? 2 : close > nextlvl ? 4 : 3 : dir == -1 ? close >= thislvl and close <= nextlvl ? 3 : close >= thislvl and close >= nextlvl ? 4 : close <= thislvl and close >= prevlvl ? 2 : close <= thislvl and close <= prevlvl ? 1 : -1 : -1
- state
- // source up top
- // source up bottom
- // source up non-edge ( towards next )
- // next support ( $ > T and $ < Prev ) 3
- // far support ( $ > T and $ > Prev ) 4
- // next resistance ( $ < T and $ > Next ) 2
- // far resistance ( $ < T and $ < Next ) 1
- // source down top
- // source down bottom
- // source down non-edge ( towards prev )
- // next support ( $ > T and $ < Prev ) 3
- // far support ( $ > T and $ > Prev ) 4
- // next resistance ( $ < T and $ > Next ) 2
- // far resistance ( $ < T and $ < Next ) 1
- // }}}
- drawFibLvLine(v, state) => // {{{
- // plvl, state
- tfrom = time - candle_size_ms * fib_lvl_line_length_left
- tto = time + candle_size_ms * fib_lvl_line_length_right
- // states: ----------------------------------
- // 0 = resistance actively moving up (yellow)
- // 1 = resistance far / crossed
- // 2 = resistance next
- // 3 = support next
- // 4 = support far
- // 5 = support actively moving down (fuchsia)
- //-------------------------------------------
- // fib_use_colors
- // fib_color_resistance
- // fib_color_support
- // fib_color_default
- //-------------------------------------------
- state_width = fib_lvl_line_width
- state_style = state == 2 or state == 3 or state == 0 ? fib_lvl_line_style_active : fib_lvl_line_style_inactive
- state_color = fib_use_colors == false ? fib_color_default : state == 0 ? fib_color_default : state == 1 ? fib_color_resistance : state == 2 ? fib_color_resistance : state == 3 ? fib_color_support : state == 4 ? fib_color_support : state == 5 ? fib_color_default : fib_color_default
- line.new(x1=tfrom, y1=v, x2=tto, y2=v, xloc=xloc.bar_time, style=state_style, color=state_color, width=state_width, extend=extend.none)
- // }}}
- drawFibLvLabel(dir, pos, flvl, plvl, state) => // {{{
- // id, flvl, plvl
- // fib order | fib level | price at level
- // states: ----------------------------------
- // 0 = resistance actively moving up (yellow)
- // 1 = resistance far / crossed
- // 2 = resistance next
- // 3 = support next
- // 4 = support far
- // 5 = support actively moving down (fuchsia)
- //-------------------------------------------
- state_color = fib_use_colors == false ? fib_color_default : state == 0 ? fib_color_default : state == 1 ? fib_color_resistance : state == 2 ? fib_color_resistance : state == 3 ? fib_color_support : state == 4 ? fib_color_support : state == 5 ? fib_color_default : fib_color_default
- lbltxtcol = color.white
- lbltxt = '◄ ' // + flvl
- // other = "⁌ • ⚊ ⚟ ⚬ ❮ ↤ ⥰ "
- //flvl // tostring(flvl) // + " ( " + tostring(int(plvl)) + " )"
- tx = time + candle_size_ms * (fib_lvl_line_length_right + 1)
- //
- label.new(x=tx, y=plvl, text=lbltxt, xloc=xloc.bar_time, yloc=yloc.price, color=color.new(color.white, 100), style=label.style_label_left, textcolor=state_color, size=size.normal, textalign=text.align_left, tooltip='Fib: ' + flvl + '\nPrice: ' + str.tostring(int(plvl)))
- // }}}
- drawFibSrcLine(dir, x1, y1, x2, y2) => // passing in as L/H but still checking inside {{{
- // determine H and L inside here, since we need the direction to be passed in anyways
- _H = math.max(y1, y2) == y1 ? y1 : y2
- _L = math.min(y1, y2) == y1 ? y1 : y2
- //
- xH = _H == y1 ? x1 : x2
- yH = _H == y1 ? y1 : y2
- xL = _L == y1 ? x1 : x2
- yL = _L == y1 ? y1 : y2
- //
- col = fib_use_colors ? dir == 1 ? fib_color_support : fib_color_resistance : fib_color_default
- //
- line.new(dir == 1 ? xL : xH, dir == 1 ? yL : yH, dir == 1 ? xH : xL, dir == 1 ? yH : yL, extend=extend.none, xloc=xloc.bar_time, color=col, style=line.style_dotted, width=3)
- // }}}
- drawFibSrcLabel(tf, pos, x, y) => // passing in as low high already {{{
- // show_fib_src_label
- _txtcol = fib_use_colors ? pos == 'H' ? fib_color_resistance : fib_color_support : fib_color_default
- _text = pos == 'H' ? 'H\n▼' : '▲\nL'
- _yloc = pos == 'H' ? yloc.abovebar : yloc.belowbar
- _style = pos == 'H' ? label.style_label_down : label.style_label_up
- _ttH = tf + ' Fib High \n$( ' + str.tostring(y) + ' )'
- _ttL = tf + ' Fib Low \n$( ' + str.tostring(y) + ' )'
- _tooltip = pos == 'H' ? _ttH : _ttL
- _clear = color.new(color.black, 100)
- //
- label.new(x, y, xloc=xloc.bar_time, yloc=_yloc, color=_clear, textcolor=_txtcol, style=_style, size=size.small, text=_text, tooltip=_tooltip)
- // }}}
- // }}}
- // }}}
- // ----------------------------------------------- COORDENATES {{{
- // -----> FIND COORDS - MD {{{
- // MD - Declarations {{{
- md_coord_src = src
- md_coord_period = medium_period
- var float md_high_coord = na
- var float md_low_coord = na
- var bool md_is_new_md_high_coord = false
- var bool md_is_new_md_low_coord = false
- var md_coord_direction = 0
- var md_bag = array.new_float(0)
- var bool md_b1_changed = false
- var bool md_b2_changed = false
- var bool md_b3_changed = false
- var bool md_b4_changed = false
- var bool md_b5_changed = false
- var bool md_b6_changed = false
- var bool md_b7_changed = false
- var bool md_bag_ready = false
- var float md_now_v = na
- var int md_now_x = na
- var float md_now_y = na
- var float md_b1_v = na
- var int md_b1_x = na
- var float md_b1_y = na
- var float md_b2_v = na
- var int md_b2_x = na
- var float md_b2_y = na
- var float md_b3_v = na
- var int md_b3_x = na
- var float md_b3_y = na
- var float md_b4_v = na
- var int md_b4_x = na
- var float md_b4_y = na
- var float md_b5_v = na
- var int md_b5_x = na
- var float md_b5_y = na
- var float md_b6_v = na
- var int md_b6_x = na
- var float md_b6_y = na
- var float md_b7_v = na
- var int md_b7_x = na
- var float md_b7_y = na
- // }}}
- // MD - Find new coord {{{
- md_now_v := md_coord_src
- md_now_x := time
- md_now_y := close
- md_high_coord := ta.highestbars(md_now_v, md_coord_period) == 0 ? md_now_v : na
- md_low_coord := ta.lowestbars(md_now_v, md_coord_period) == 0 ? md_now_v : na
- md_is_new_md_high_coord := md_high_coord and na(md_low_coord)
- md_is_new_md_low_coord := md_low_coord and na(md_high_coord)
- md_coord_direction := md_is_new_md_high_coord ? 1 : md_is_new_md_low_coord ? -1 : md_coord_direction
- // }}}
- // MD - Update Bag {{{
- md_coord_direction_changed = ta.change(md_coord_direction)
- if md_coord_direction_changed
- add_to_bag(md_bag, md_coord_direction == 1 ? md_high_coord : md_low_coord, time, src)
- else
- update_bag(md_bag, md_coord_direction == 1 ? md_high_coord : md_low_coord, time, src, md_coord_direction)
- // }}}
- // MD - Grab coords {{{
- md_bag_ready := array.size(md_bag) > 18 ? true : false
- md_b1_v := md_bag_ready ? math.round(array.get(md_bag, 0)) : na
- md_b1_x := md_bag_ready ? math.round(array.get(md_bag, 1)) : na
- md_b1_y := md_bag_ready ? array.get(md_bag, 2) : na
- md_b2_v := md_bag_ready ? math.round(array.get(md_bag, 3)) : na
- md_b2_x := md_bag_ready ? math.round(array.get(md_bag, 4)) : na
- md_b2_y := md_bag_ready ? array.get(md_bag, 5) : na
- md_b3_v := md_bag_ready ? math.round(array.get(md_bag, 6)) : na
- md_b3_x := md_bag_ready ? math.round(array.get(md_bag, 7)) : na
- md_b3_y := md_bag_ready ? array.get(md_bag, 8) : na
- md_b4_v := md_bag_ready ? math.round(array.get(md_bag, 9)) : na
- md_b4_x := md_bag_ready ? math.round(array.get(md_bag, 10)) : na
- md_b4_y := md_bag_ready ? array.get(md_bag, 11) : na
- md_b5_v := md_bag_ready ? math.round(array.get(md_bag, 12)) : na
- md_b5_x := md_bag_ready ? math.round(array.get(md_bag, 13)) : na
- md_b5_y := md_bag_ready ? array.get(md_bag, 14) : na
- md_b6_v := md_bag_ready ? math.round(array.get(md_bag, 15)) : na
- md_b6_x := md_bag_ready ? math.round(array.get(md_bag, 16)) : na
- md_b6_y := md_bag_ready ? array.get(md_bag, 17) : na
- md_b7_v := md_bag_ready ? math.round(array.get(md_bag, 18)) : na
- md_b7_x := md_bag_ready ? math.round(array.get(md_bag, 19)) : na
- md_b7_y := md_bag_ready ? array.get(md_bag, 20) : na
- // }}}
- // MD - Watch changes {{{
- md_b1_changed := ta.change(md_b1_y) or ta.change(md_b1_x) or ta.change(md_b1_v) ? true : false
- md_b2_changed := ta.change(md_b2_y) or ta.change(md_b2_x) or ta.change(md_b2_v) ? true : false
- md_b3_changed := ta.change(md_b3_y) or ta.change(md_b3_x) or ta.change(md_b3_v) ? true : false
- md_b4_changed := ta.change(md_b4_y) or ta.change(md_b4_x) or ta.change(md_b4_v) ? true : false
- md_b5_changed := ta.change(md_b5_y) or ta.change(md_b5_x) or ta.change(md_b5_v) ? true : false
- md_b6_changed := ta.change(md_b6_y) or ta.change(md_b6_x) or ta.change(md_b6_v) ? true : false
- md_b7_changed := ta.change(md_b7_y) or ta.change(md_b7_x) or ta.change(md_b7_v) ? true : false
- // }}}
- // }}}
- // -----> FIND COORDS - SM {{{
- // SM - Declarations {{{
- sm_coord_src = src
- sm_coord_period = small_period
- var float sm_high_ball = na
- var float sm_low_ball = na
- var bool sm_is_new_sm_high_ball = false
- var bool sm_is_new_sm_low_ball = false
- var sm_ball_direction = 0
- var sm_bag = array.new_float(0)
- var bool sm_b1_changed = false
- var bool sm_b2_changed = false
- var bool sm_b3_changed = false
- var bool sm_b4_changed = false
- var bool sm_b5_changed = false
- var bool sm_b6_changed = false
- var bool sm_b7_changed = false
- var bool sm_bag_ready = false
- var float sm_b1_v = na
- var int sm_b1_x = na
- var float sm_b1_y = na
- var float sm_b2_v = na
- var int sm_b2_x = na
- var float sm_b2_y = na
- var float sm_b3_v = na
- var int sm_b3_x = na
- var float sm_b3_y = na
- var float sm_b4_v = na
- var int sm_b4_x = na
- var float sm_b4_y = na
- var float sm_b5_v = na
- var int sm_b5_x = na
- var float sm_b5_y = na
- var float sm_b6_v = na
- var int sm_b6_x = na
- var float sm_b6_y = na
- var float sm_b7_v = na
- var int sm_b7_x = na
- var float sm_b7_y = na
- var float sm_now_v = na
- var int sm_now_x = na
- var float sm_now_y = na
- // }}}
- // SM - Find New coords {{{
- sm_now_v := sm_coord_src
- sm_now_x := time
- sm_now_y := close
- sm_high_ball := ta.highestbars(sm_now_v, sm_coord_period) == 0 ? sm_now_v : na
- sm_low_ball := ta.lowestbars(sm_now_v, sm_coord_period) == 0 ? sm_now_v : na
- sm_is_new_sm_high_ball := sm_high_ball and na(sm_low_ball)
- sm_is_new_sm_low_ball := sm_low_ball and na(sm_high_ball)
- sm_ball_direction := sm_is_new_sm_high_ball ? 1 : sm_is_new_sm_low_ball ? -1 : sm_ball_direction
- // }}}
- // SM - Update bag {{{
- sm_ball_direction_changed = ta.change(sm_ball_direction)
- if sm_ball_direction_changed
- add_to_bag(sm_bag, sm_ball_direction == 1 ? sm_high_ball : sm_low_ball, time, src)
- else
- update_bag(sm_bag, sm_ball_direction == 1 ? sm_high_ball : sm_low_ball, time, src, sm_ball_direction)
- // }}}
- // SM - Grab coords {{{
- sm_bag_ready := array.size(sm_bag) > 18 ? true : false
- sm_b1_v := sm_bag_ready ? math.round(array.get(sm_bag, 0)) : na
- sm_b1_x := sm_bag_ready ? math.round(array.get(sm_bag, 1)) : na
- sm_b1_y := sm_bag_ready ? array.get(sm_bag, 2) : na
- sm_b2_v := sm_bag_ready ? math.round(array.get(sm_bag, 3)) : na
- sm_b2_x := sm_bag_ready ? math.round(array.get(sm_bag, 4)) : na
- sm_b2_y := sm_bag_ready ? array.get(sm_bag, 5) : na
- sm_b3_v := sm_bag_ready ? math.round(array.get(sm_bag, 6)) : na
- sm_b3_x := sm_bag_ready ? math.round(array.get(sm_bag, 7)) : na
- sm_b3_y := sm_bag_ready ? array.get(sm_bag, 8) : na
- sm_b4_v := sm_bag_ready ? math.round(array.get(sm_bag, 9)) : na
- sm_b4_x := sm_bag_ready ? math.round(array.get(sm_bag, 10)) : na
- sm_b4_y := sm_bag_ready ? array.get(sm_bag, 11) : na
- sm_b5_v := sm_bag_ready ? math.round(array.get(sm_bag, 12)) : na
- sm_b5_x := sm_bag_ready ? math.round(array.get(sm_bag, 13)) : na
- sm_b5_y := sm_bag_ready ? array.get(sm_bag, 14) : na
- sm_b6_v := sm_bag_ready ? math.round(array.get(sm_bag, 15)) : na
- sm_b6_x := sm_bag_ready ? math.round(array.get(sm_bag, 16)) : na
- sm_b6_y := sm_bag_ready ? array.get(sm_bag, 17) : na
- sm_b7_v := sm_bag_ready ? math.round(array.get(sm_bag, 18)) : na
- sm_b7_x := sm_bag_ready ? math.round(array.get(sm_bag, 19)) : na
- sm_b7_y := sm_bag_ready ? array.get(sm_bag, 20) : na
- // }}}
- // SM - Watch changes {{{
- sm_b1_changed := ta.change(sm_b1_y) or ta.change(sm_b1_x) or ta.change(sm_b1_v) ? true : false
- sm_b2_changed := ta.change(sm_b2_y) or ta.change(sm_b2_x) or ta.change(sm_b2_v) ? true : false
- sm_b3_changed := ta.change(sm_b3_y) or ta.change(sm_b3_x) or ta.change(sm_b3_v) ? true : false
- sm_b4_changed := ta.change(sm_b4_y) or ta.change(sm_b4_x) or ta.change(sm_b4_v) ? true : false
- sm_b5_changed := ta.change(sm_b5_y) or ta.change(sm_b5_x) or ta.change(sm_b5_v) ? true : false
- sm_b6_changed := ta.change(sm_b6_y) or ta.change(sm_b6_x) or ta.change(sm_b6_v) ? true : false
- sm_b7_changed := ta.change(sm_b7_y) or ta.change(sm_b7_x) or ta.change(sm_b7_v) ? true : false
- // }}}
- // }}}
- // =====> DRAW Coord Labels {{{
- coordLabel(show, x, y, id, text_1, pos, type) => // {{{
- _yloc = pos == 1 ? yloc.abovebar : yloc.belowbar
- _style = type == 1 ? label.style_label_down : label.style_label_up
- _dir = pos == 1 ? '\n▼' : '▲\n'
- _id = pos == 1 ? str.tostring(id) + _dir : _dir + str.tostring(id)
- label.new(x=show ? x : na, y=show ? y : na, xloc=xloc.bar_time, yloc=_yloc, color=color.new(color.black, 100), textcolor=type > 1 ? type == 2 ? color.blue : color.yellow : color.white, style=_style, size=size.small, text=_id, tooltip='(' + text_1 + ')')
- // }}}
- // Declare {{{
- var int b_offset_main = 2
- var int b_offset_front = 3
- var label b1_label_sm = na
- var label b2_label_sm = na
- var label b3_label_sm = na
- var label b4_label_sm = na
- var label b5_label_sm = na
- var label b6_label_sm = na
- var label b7_label_sm = na
- label.delete(b1_label_sm)
- label.delete(b2_label_sm)
- label.delete(b3_label_sm)
- label.delete(b4_label_sm)
- label.delete(b5_label_sm)
- label.delete(b6_label_sm)
- label.delete(b7_label_sm)
- var label b1_label_md = na
- var label b2_label_md = na
- var label b3_label_md = na
- var label b4_label_md = na
- var label b5_label_md = na
- var label b6_label_md = na
- var label b7_label_md = na
- label.delete(b1_label_md)
- label.delete(b2_label_md)
- label.delete(b3_label_md)
- label.delete(b4_label_md)
- label.delete(b5_label_md)
- label.delete(b6_label_md)
- label.delete(b7_label_md)
- // }}}
- // Print {{{
- // SM Labels
- smb1p = sm_b1_y > sm_b2_y ? 1 : 2
- smb2p = smb1p == 1 ? 2 : 1
- smb3p = smb2p == 1 ? 2 : 1
- smb4p = smb3p == 1 ? 2 : 1
- smb5p = smb4p == 1 ? 2 : 1
- smb6p = smb5p == 1 ? 2 : 1
- smb7p = smb6p == 1 ? 2 : 1
- b1_label_sm := coordLabel(show_sm_coord_labels, sm_b1_x, sm_b1_y, 1, 'S1', smb1p, 1)
- b2_label_sm := coordLabel(show_sm_coord_labels, sm_b2_x, sm_b2_y, 2, 'S2', smb2p, 1)
- b3_label_sm := coordLabel(show_sm_coord_labels, sm_b3_x, sm_b3_y, 3, 'S3', smb3p, 1)
- b4_label_sm := coordLabel(show_sm_coord_labels, sm_b4_x, sm_b4_y, 4, 'S4', smb4p, 1)
- b5_label_sm := coordLabel(show_sm_coord_labels, sm_b5_x, sm_b5_y, 5, 'S5', smb5p, 1)
- b6_label_sm := coordLabel(show_sm_coord_labels, sm_b6_x, sm_b6_y, 6, 'S6', smb6p, 1)
- b7_label_sm := coordLabel(show_sm_coord_labels, sm_b7_x, sm_b7_y, 7, 'S7', smb7p, 1)
- // MD Labels
- mdb1p = md_b1_y > md_b2_y ? 1 : 2
- mdb2p = mdb1p == 1 ? 2 : 1
- mdb3p = mdb2p == 1 ? 2 : 1
- mdb4p = mdb3p == 1 ? 2 : 1
- mdb5p = mdb4p == 1 ? 2 : 1
- mdb6p = mdb5p == 1 ? 2 : 1
- mdb7p = mdb6p == 1 ? 2 : 1
- b1_label_md := coordLabel(show_md_coord_labels, md_b1_x, md_b1_y, 1, 'M1', mdb1p, 3)
- b2_label_md := coordLabel(show_md_coord_labels, md_b2_x, md_b2_y, 2, 'M2', mdb2p, 3)
- b3_label_md := coordLabel(show_md_coord_labels, md_b3_x, md_b3_y, 3, 'M3', mdb3p, 3)
- b4_label_md := coordLabel(show_md_coord_labels, md_b4_x, md_b4_y, 4, 'M4', mdb4p, 3)
- b5_label_md := coordLabel(show_md_coord_labels, md_b5_x, md_b5_y, 5, 'M5', mdb5p, 3)
- b6_label_md := coordLabel(show_md_coord_labels, md_b6_x, md_b6_y, 6, 'M6', mdb6p, 3)
- b7_label_md := coordLabel(show_md_coord_labels, md_b7_x, md_b7_y, 7, 'M7', mdb7p, 3)
- // }}}
- // }}}
- // =====> DRAW Trend Lines {{{
- // Declare {{{
- var line shadow_top_line = na
- var line shadow_top_line2 = na
- var line shadow_btm_line = na
- var line s1_second_line = na
- var line s1_second_line2 = na
- var line s1_first_line = na
- var line s2_first_line = na
- var line s1_first_line2 = na
- var line s2_first_line2 = na
- var line head_top_line = na
- var line head_top_line2 = na
- var line head_btm_line = na
- var line s2_second_line = na
- var line tail_bottom_line = na
- var line s2_second_line2 = na
- var line tail_bottom_line2 = na
- var float head_pointer_unit = na
- var label shadow_eye_label = na
- var label head_eye_label = na
- var label head_eye_label2 = na
- var label head_eye_label_back = na
- var line headbackline = na
- var line head_eyesight_line = na
- var line head_eyesight_line2 = na
- var line shadow_eyesight_line = na
- // }}}
- // CLEAN: Lines {{{
- line.delete(shadow_top_line)
- line.delete(shadow_btm_line)
- line.delete(s1_first_line)
- line.delete(s2_first_line)
- line.delete(s1_second_line)
- line.delete(s1_first_line2)
- line.delete(s2_first_line2)
- line.delete(s1_second_line2)
- line.delete(head_top_line)
- line.delete(head_btm_line)
- line.delete(s2_second_line)
- line.delete(tail_bottom_line)
- line.delete(s2_second_line2)
- line.delete(tail_bottom_line2)
- line.delete(shadow_top_line2)
- line.delete(head_top_line2)
- line.delete(headbackline)
- line.delete(head_eyesight_line)
- line.delete(head_eyesight_line2)
- // }}}
- // CLEAN: Labels {{{
- label.delete(head_eye_label)
- label.delete(head_eye_label2)
- // }}}
- // trend_use_colors
- // trend_color_default
- // -----------------------------------------------------> SIGHTS {{{
- // EYE 1 {{{
- [head_eye_x, head_eye_y] = calcMidpoint(sm_b3_x, sm_b3_y, sm_b4_x, sm_b4_y)
- eye_direction = getDirection(head_eye_y, sm_now_y)
- head_eye_label := label.new(x=math.round(head_eye_x), y=head_eye_y, xloc=xloc.bar_time, style=label.style_label_right, textcolor=trend_use_colors == false ? trend_color_default : eye_direction == 1 ? trend_s1_line_color_up : trend_s1_line_color_dn, color=color.new(color.white, 100), size=size.normal)
- // text="➤",
- head_eyesight_line := line.new(show_sight_small ? head_eye_x : na, show_sight_small ? head_eye_y : na, sm_now_x, sm_now_y, xloc=xloc.bar_time, extend=extend.right, color=trend_use_colors == false ? trend_color_default : eye_direction == 1 ? trend_s1_line_color_up : trend_s1_line_color_dn, style=sight_small_style, width=sight_small_width)
- // }}}
- // EYE 2 {{{
- [head_eye_x2, head_eye_y2] = calcMidpoint(md_b6_x, md_b6_y, md_b5_x, md_b5_y)
- eye_direction2 = getDirection(head_eye_y2, sm_now_y)
- head_eye_label2 := label.new(x=math.round(head_eye_x2), y=head_eye_y2, xloc=xloc.bar_time, style=label.style_label_right, textcolor=trend_use_colors == false ? trend_color_default : eye_direction2 == 1 ? trend_s2_line_color_up : trend_s2_line_color_dn, color=color.new(color.white, 100), size=size.normal)
- // text="➤",
- head_eyesight_line2 := line.new(show_sight_medium ? head_eye_x2 : na, show_sight_medium ? head_eye_y2 : na, sm_now_x, sm_now_y, xloc=xloc.bar_time, extend=extend.right, color=trend_use_colors == false ? trend_color_default : eye_direction2 == 1 ? trend_s2_line_color_up : trend_s2_line_color_dn, style=sight_medium_style, width=sight_medium_width)
- // }}}
- // }}}
- // -----------------------------------------------------> SECTION 1 {{{
- s5s6_H = math.max(sm_b5_y, sm_b6_y)
- s5s6_L = math.min(sm_b5_y, sm_b6_y)
- s3s4_H = math.max(sm_b3_y, sm_b4_y)
- s3s4_L = math.min(sm_b3_y, sm_b4_y)
- // -- s1 line 1 (MD 4) -> (SM 3/4 H)
- // -- s1 line 1 (SM 5/6 H) -> (SM 3/4 H) {{{
- s1_first_line := line.new(sm_bag_ready and md_bag_ready ? s5s6_H == sm_b5_y ? sm_b5_x : sm_b6_x : na, sm_bag_ready and md_bag_ready ? s5s6_H == sm_b5_y ? sm_b5_y : sm_b6_y : na, sm_bag_ready and md_bag_ready ? s3s4_H == sm_b4_y ? sm_b4_x : sm_b3_x : na, sm_bag_ready and md_bag_ready ? s3s4_H == sm_b4_y ? sm_b4_y : sm_b3_y : na, extend=extend.none, xloc=xloc.bar_time, color=trend_use_colors == false ? trend_color_default : md_b4_y < s3s4_H ? trend_s1_line_color_up : trend_s1_line_color_dn, style=trend_s1_line_style, width=trend_s1_line_width)
- s1_first_line2 := trend_s1_line_extend ? line.new(sm_bag_ready and md_bag_ready ? s5s6_H == sm_b5_y ? sm_b5_x : sm_b6_x : na, sm_bag_ready and md_bag_ready ? s5s6_H == sm_b5_y ? sm_b5_y : sm_b6_y : na, sm_bag_ready and md_bag_ready ? s3s4_H == sm_b4_y ? sm_b4_x : sm_b3_x : na, sm_bag_ready and md_bag_ready ? s3s4_H == sm_b4_y ? sm_b4_y : sm_b3_y : na, extend=extend.right, xloc=xloc.bar_time, color=trend_use_colors == false ? trend_color_default : md_b4_y < s3s4_H ? trend_s1_line_color_up : trend_s1_line_color_dn, style=trend_s1_xline_style, width=trend_s1_xline_width) : na
- // }}}
- // -- s1 line 2 (BIG 5) -> (SM 3) {{{
- s1_second_line := line.new(md_bag_ready and md_bag_ready ? s5s6_L == sm_b5_y ? sm_b5_x : sm_b6_x : na, md_bag_ready and md_bag_ready ? s5s6_L == sm_b5_y ? sm_b5_y : sm_b6_y : na, sm_bag_ready and md_bag_ready ? s3s4_L == sm_b4_y ? sm_b4_x : sm_b3_x : na, sm_bag_ready and md_bag_ready ? s3s4_L == sm_b4_y ? sm_b4_y : sm_b3_y : na, extend=extend.none, xloc=xloc.bar_time, color=trend_use_colors == false ? trend_color_default : md_b4_y < s3s4_L ? trend_s1_line_color_up : trend_s1_line_color_dn, style=trend_s1_line_style, width=trend_s1_line_width)
- s1_second_line2 := trend_s1_line_extend ? line.new(md_bag_ready and md_bag_ready ? s5s6_L == sm_b5_y ? sm_b5_x : sm_b6_x : na, md_bag_ready and md_bag_ready ? s5s6_L == sm_b5_y ? sm_b5_y : sm_b6_y : na, sm_bag_ready and md_bag_ready ? s3s4_L == sm_b4_y ? sm_b4_x : sm_b3_x : na, sm_bag_ready and md_bag_ready ? s3s4_L == sm_b4_y ? sm_b4_y : sm_b3_y : na, extend=extend.right, xloc=xloc.bar_time, color=trend_use_colors == false ? trend_color_default : md_b4_y < s3s4_L ? trend_s1_line_color_up : trend_s1_line_color_dn, style=trend_s1_xline_style, width=trend_s1_xline_width) : na
- // }}}
- // }}}
- // -----------------------------------------------------> SECTION 2 {{{
- // -- s2 line 1 (M 6) -> (M 4) {{{
- s2_first_line := line.new(sm_bag_ready and md_bag_ready ? md_b6_x : na, sm_bag_ready and md_bag_ready ? md_b6_y : na, sm_bag_ready and md_bag_ready ? md_b4_x : na, sm_bag_ready and md_bag_ready ? md_b4_y : na, extend=extend.none, xloc=xloc.bar_time, color=trend_use_colors == false ? trend_color_default : md_b6_y < md_b4_y ? trend_s2_line_color_up : trend_s2_line_color_dn, style=trend_s2_line_style, width=trend_s2_line_width)
- // line extension
- s2_first_line2 := trend_s2_line_extend ? line.new(md_bag_ready ? md_b6_x : na, md_bag_ready ? md_b6_y : na, md_bag_ready ? md_b4_x : na, md_bag_ready ? md_b4_y : na, extend=extend.right, xloc=xloc.bar_time, color=trend_use_colors == false ? trend_color_default : md_b6_y < md_b4_y ? trend_s2_line_color_up : trend_s2_line_color_dn, style=trend_s2_xline_style, width=trend_s2_xline_width) : na
- // }}}
- // -- s2 line 1 (M 7) -> (M 5) {{{
- s2_second_line := line.new(md_bag_ready ? md_b7_x : na, md_bag_ready ? md_b7_y : na, md_bag_ready ? md_b5_x : na, md_bag_ready ? md_b5_y : na, extend=extend.none, xloc=xloc.bar_time, color=trend_use_colors == false ? trend_color_default : md_b7_y < md_b5_y ? trend_s2_line_color_up : trend_s2_line_color_dn, style=trend_s2_line_style, width=trend_s2_line_width)
- // extension
- s2_second_line2 := trend_s2_line_extend ? line.new(md_bag_ready ? md_b7_x : na, md_bag_ready ? md_b7_y : na, md_bag_ready ? md_b5_x : na, md_bag_ready ? md_b5_y : na, extend=extend.right, xloc=xloc.bar_time, color=trend_use_colors == false ? trend_color_default : md_b7_y < md_b5_y ? trend_s2_line_color_up : trend_s2_line_color_dn, style=trend_s2_xline_style, width=trend_s2_xline_width) : na
- i_osc = ta.rsi(input.source(close, 'Source', inline='RSI', group='RSI Settings'), input.int(14, ' Length', minval=1, inline='RSI', group='RSI Settings'))
- i_obThreshold = input.int(70, 'Overboght', minval=50, maxval=100, inline='Thresh1', group='Threshold Settings')
- i_bullZone = input.int(60, 'Bull Zone', minval=50, maxval=65, inline='Thresh1', group='Threshold Settings')
- i_bearZone = input.int(40, 'Bear Zone', minval=35, maxval=50, inline='Thresh2', group='Threshold Settings')
- i_osThreshold = input.int(30, 'Oversold', minval=1, maxval=50, inline='Thresh2', group='Threshold Settings')
- i_owcb = input.bool(true, 'RSI Weighted Colored Bars', group='Optional')
- i_obos = input.bool(false, 'RSI Overbought/Oversold Marks', group='Optional')
- i_fill = input.bool(true, 'Backgroud of Bull/Bear Zones', group='Optional')
- // Functions ════════════════════════════════════════════════════════════════════════════════════ //
- f_getPrice(_osc, _thresh, _cross) =>
- avgHigh = math.avg(high, close)
- avgLow = math.avg(low, close)
- var return_1 = 0.
- if _cross == 'over' or _cross == 'both'
- if ta.crossover(i_osc, _thresh)
- return_1 := avgHigh
- return_1
- if _cross == 'under' or _cross == 'both'
- if ta.crossunder(i_osc, _thresh)
- return_1 := avgLow
- return_1
- return_1
- // -Calculations ════════════════════════════════════════════════════════════════════════════════ //
- crossover_overbought = f_getPrice(i_osc, i_obThreshold, 'over')
- crossunder_overbought = f_getPrice(i_osc, i_obThreshold, 'under')
- bullZone = f_getPrice(i_osc, i_bullZone, 'both')
- bearZone = f_getPrice(i_osc, i_bearZone, 'both')
- crossover_oversold = f_getPrice(i_osc, i_osThreshold, 'over')
- crossunder_oversold = f_getPrice(i_osc, i_osThreshold, 'under')
- // -Plotting ════════════════════════════════════════════════════════════════════════════════════ //
- plot_crossover_overbought = plot(crossover_overbought > 0 ? crossover_overbought : na, 'Crossover Overbought', crossover_overbought == crossover_overbought[1] ? color.green : na, 2)
- plot_crossunder_overbought = plot(crossunder_overbought > 0 ? crossunder_overbought : na, 'Crossunder Overbought', crossunder_overbought == crossunder_overbought[1] ? color.green : na, 1, plot.style_cross)
- plot_bullZone = plot(bullZone > 0 ? bullZone : na, 'Cross Bull Zone', bullZone == bullZone[1] ? color.green : na, 1)
- fill(plot_crossover_overbought, plot_bullZone, i_fill ? color.green : na, transp=90)
- plotshape(i_obos and i_osc > i_obThreshold, 'Price Bars in Overbought Zone', shape.triangledown, location.abovebar, color.new(color.red, 0), size=size.tiny)
- plot_bearZone = plot(bearZone > 0 ? bearZone : na, 'Cross Bear Zone', bearZone == bearZone[1] ? color.red : na, 1)
- plot_crossover_oversold = plot(crossover_oversold > 0 ? crossover_oversold : na, 'Crossover Oversold', crossover_oversold == crossover_oversold[1] ? color.red : na, 1, plot.style_cross)
- plot_crossunder_oversold = plot(crossunder_oversold > 0 ? crossunder_oversold : na, 'Crossunder Oversold', crossunder_oversold == crossunder_oversold[1] ? color.red : na, 2)
- fill(plot_crossunder_oversold, plot_bearZone, i_fill ? color.red : na, transp=90)
- plotshape(i_obos and i_osc < i_osThreshold, 'Price Bars in Oversold Zone', shape.triangleup, location.belowbar, color.new(color.green, 0), size=size.tiny)
- barcolor(i_owcb ? i_osc > i_obThreshold or i_osc < i_osThreshold ? close < open ? #910000 : #006400 : i_osc > i_bearZone and i_osc < i_bullZone ? close < open ? color.orange : #7FFFD4 : na : na, title='RSI Weighted Colored Bars')
- // -Alerts ════════════════════════════════════════════════════════════════════════════════════ //
- alertcondition(ta.crossover(close, crossover_overbought), title='Crossover Previous Overbought', message='Crossover Previous Overbought\n{{exchange}}:{{ticker}}->\nPrice = {{close}},\nTime = {{time}}')
- alertcondition(ta.crossunder(close, crossunder_oversold), title='Crossunder Previous Oversold', message='Crossunder Previous Oversold\n{{exchange}}:{{ticker}}->\nPrice = {{close}},\nTime = {{time}}')
- _1 = input(false, '══════ general setting ══════════════════════════════')
- i_lineCount = input(10, 'Line count')
- i_extendLines = input(true, 'Extend lines')
- _2 = input(false, '══════ pivot setting 1 ══════════════════════════════')
- i_showFirst = input(true, 'Show first')
- i_firstLeft = input(20, 'Left')
- i_firstRight = input(10, 'Right')
- i_firstColor = input(color.red, 'Color')
- _3 = input(false, '══════ pivot setting 2 ══════════════════════════════')
- i_showSecond = input(true, 'Show second')
- i_secondLeft = input(10, 'Left')
- i_secondRight = input(5, 'Right')
- i_secondColor = input(color.orange, 'Color')
- _4 = input(false, '══════ pivot setting 3 ══════════════════════════════')
- i_showThird = input(false, 'Show third')
- i_thirdLeft = input(2, 'Left')
- i_thirdRight = input(5, 'Right')
- i_thirdColor = input(color.lime, 'Color')
- // array declarations
- var pivotArray = array.new_line()
- var pivotabelArray = array.new_label()
- f_drawLine(_x1, _x2, _yValue, _lineColor) =>
- line.new(x1=_x1, y1=_yValue, x2=_x2, y2=_yValue, color=_lineColor, style=line.style_dotted, width=2)
- f_drawLabel(_x, _y, _textColor) =>
- label.new(_x, _y, ' ' + str.tostring(_y), xloc.bar_index, yloc.price, #00000000, label.style_none, _textColor)
- f_extendArray(_lineArray, _extendLines) =>
- if array.size(_lineArray) > 0
- for _i = array.size(_lineArray) - 1 to 0 by 1
- x2 = line.get_x2(array.get(_lineArray, _i))
- yValue = line.get_y1(array.get(_lineArray, _i))
- if _extendLines or bar_index - 1 == x2 and not(high > yValue and low < yValue)
- line.set_x2(array.get(_lineArray, _i), bar_index)
- f_drawPivotLineAndLabel(_x1, _x2, _yValue, _colorLine) =>
- line l = f_drawLine(_x1, _x2, _yValue, _colorLine)
- label lab = f_drawLabel(_x1, _yValue, _colorLine)
- if array.size(pivotArray) == i_lineCount
- line.delete(array.shift(pivotArray))
- label.delete(array.shift(pivotabelArray))
- array.push(pivotArray, l)
- array.push(pivotabelArray, lab)
- f_addLine(_left, _right, _colorLine) =>
- pivotHigh = ta.pivothigh(high, _left, _right)
- pivotLow = ta.pivotlow(low, _left, _right)
- if pivotHigh or pivotLow
- float yValue = na
- int x1 = na
- int x2 = na
- if not na(pivotHigh)
- yValue := high[_right]
- x1 := bar_index[_right]
- x2 := bar_index
- f_drawPivotLineAndLabel(x1, x2, yValue, _colorLine)
- if not na(pivotLow)
- yValue := low[_right]
- x1 := bar_index[_right]
- x2 := bar_index
- f_drawPivotLineAndLabel(x1, x2, yValue, _colorLine)
- if i_showFirst
- f_addLine(i_firstLeft, i_firstRight, i_firstColor)
- if i_showSecond
- f_addLine(i_secondLeft, i_secondRight, i_secondColor)
- if i_showThird
- f_addLine(i_thirdLeft, i_thirdRight, i_thirdColor)
- f_extendArray(pivotArray, i_extendLines)
Advertisement
Add Comment
Please, Sign In to add comment