CONVERTION CLUSTER DE TRADINGVIEW

Viewing 1 post (of 1 total)
  • Author
    Posts
  • #185569 quote
    SOUBESOUBE
    Participant
    Junior

    // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
    // © pmk07
    //
    // Acknowledgements/Reference:
    //
    // @rumpypumpydumpy – Higher Order Pivots
    // https://www.tradingview.com/v/x2LlRvBe/
    //
    // @MarkMiddleton2020 – Order Blocks
    // https://www.tradingview.com/v/GecN34Qq/
    //
    //@version=5

    indicator(title=’Order Blocks’, overlay=true)

    bool pv2_sv = input.bool (true, title=’Plot 2nd order pivots’)
    bool msb_sv = input.bool (true, title=’Plot MSB lines’)
    bool box_sv = input.bool (true, title=’Plot Orderblocks’)
    bool m_sv = input.bool (true, title=’Plot Breakerblocks’)
    bool range_sv = input.bool (true, title=’Plot Range’)
    bool range_eq_sv = input.bool (true, title=’Plot Range 0.5 Line’)
    bool range_q_sv = input.bool (true, title=’Plot Range 0.25 and 0.75 Lines’)
    bool log_sv = input.bool (true, title=’Use Log Scale’)
    bool msb_a_sv = input.bool (true, title=’Alert MSB’)
    bool ob_a_sv = input.bool (true, title=’Alert Orderblock test’)
    bool bb_a_sv = input.bool (true, title=’Alert Breakerblock test’)
    bool r_a_sv = input.bool (true, title=’Alert New Range’)
    bool rt_a_sv = input.bool (true, title=’Alert Range test’)
    color u_s = input.color (color.rgb(192, 192, 192, 80), title=’Untested Supply Color’)
    color t_s = input.color (color.rgb(255, 0, 0, 80), title=’Tested Supply Color’)
    color u_d = input.color (color.rgb(192, 192, 192, 80), title=’Untested Demand Color’)
    color t_d = input.color (color.rgb(0, 255, 0, 80), title=’Tested Demand Color’)
    color u_b = input.color (color.rgb(192, 192, 192, 80), title=’Untested Breaker Color’)
    color t_b = input.color (color.new(color.blue, 80), title=’Tested Breaker Color’)

    var float[] pvh1_price = array.new_float (30, na) // high
    var int[] pvh1_time = array.new_int (30, na)
    var float[] pvl1_price = array.new_float (30, na) // low
    var int[] pvl1_time = array.new_int (30, na)
    var float[] pvh2_price = array.new_float (10, na) // higher high
    var int[] pvh2_time = array.new_int (10, na)
    var float[] pvl2_price = array.new_float (10, na) // lower low
    var int[] pvl2_time = array.new_int (10, na)
    var float htcmrll_price = na // high that created most recent ll
    var int htcmrll_time = na
    var float ltcmrhh_price = na // low that created most recent hh
    var int ltcmrhh_time = na
    var box[] long_boxes = array.new_box() // orderblocks
    var box[] short_boxes = array.new_box()
    var box[] m_long_boxes = array.new_box() // breakerblocks
    var box[] m_short_boxes = array.new_box()
    var line[] bull_bos_lines = array.new_line() // MSB lines
    var line[] bear_bos_lines = array.new_line()
    var line[] range_h_lines = array.new_line() // Range lines
    var line[] range_25_lines = array.new_line()
    var line[] range_m_lines = array.new_line()
    var line[] range_75_lines = array.new_line()
    var line[] range_l_lines = array.new_line()
    var label[] la_ph2 = array.new_label() // 2nd order pivots
    var label[] la_pl2 = array.new_label()
    var float temp_pv_0 = na
    var float temp_pv_1 = na
    var float temp_pv_2 = na
    var int temp_time = na
    var float last_range_h = na
    var float last_range_l = na
    var line range_m = na
    var line range_25 = na
    var line range_75 = na
    var float box_top = na
    var float box_bottom = na
    var int h_a_time = 0
    var int l_a_time = 0
    var int mh_a_time = 0
    var int ml_a_time = 0
    var int rh_a_time = 0
    var int rl_a_time = 0
    bool pvh = high high[2]
    bool pvl = low > low[1] and low[1] 2
    temp_pv_0 := array.get(pvh1_price, 0)
    temp_pv_1 := array.get(pvh1_price, 1)
    temp_pv_2 := array.get(pvh1_price, 2)
    if temp_pv_0 temp_pv_2
    array.pop(pvh2_price)
    array.pop(pvh2_time)
    array.unshift(pvh2_price, temp_pv_1)
    array.unshift(pvh2_time, array.get(pvh1_time, 1))
    new_ph_2nd := true
    if temp_pv_1 > array.get(pvh2_price, 1)
    for i = 0 to array.size(pvl2_time) – 1 by 1
    temp_ltcmrhh_time = array.get(pvl2_time, i)
    if temp_ltcmrhh_time < array.get(pvh2_time, 0)
    ltcmrhh_price := array.get(pvl2_price, i)
    ltcmrhh_time := temp_ltcmrhh_time
    break
    if temp_pv_0 2
    temp_pv_0 := array.get(pvl1_price, 0)
    temp_pv_1 := array.get(pvl1_price, 1)
    temp_pv_2 := array.get(pvl1_price, 2)
    if temp_pv_0 > temp_pv_1 and temp_pv_1 < temp_pv_2
    array.pop(pvl2_price)
    array.pop(pvl2_time)
    array.unshift(pvl2_price, temp_pv_1)
    array.unshift(pvl2_time, array.get(pvl1_time, 1))
    new_pl_2nd := true
    if temp_pv_1 < array.get(pvl2_price, 1)
    for i = 0 to array.size(pvh2_time) – 1 by 1
    temp_htcmrll_time = array.get(pvh2_time, i)
    if temp_htcmrll_time htcmrll_price
    if msb_sv
    array.push(bull_bos_lines, line.new(x1=htcmrll_time, y1=htcmrll_price, x2=bar_index, y2=htcmrll_price, color=color.red, width=2))
    box_top := math.min(high[bar_index – array.get(pvl2_time, 0)], high[bar_index – array.get(pvl2_time, 0) + 1])
    box_bottom := array.get(pvl2_price, 0)
    array.push(long_boxes, box.new(left=array.get(pvl2_time, 0), top=box_top, right=bar_index, bottom=box_bottom, bgcolor= box_sv ? u_d : na, border_color=na, extend=extend.right))
    if msb_a_sv
    alert := alert + ‘Bullish MSB @ ‘ + str.tostring(htcmrll_price) + ‘\n’ + ‘New Demand Zone : ‘+ str.tostring(box_bottom) + ‘ – ‘ + str.tostring(box_top) + ‘\n’
    htcmrll_price := na
    if array.size(short_boxes) > 0
    for i = array.size(short_boxes) – 1 to 0 by 1
    tbox = array.get(short_boxes, i)
    top = box.get_top(tbox)
    bottom = box.get_bottom(tbox)
    ago = box.get_left(tbox)
    if array.get(pvh1_price, 0) > bottom
    if box_sv
    box.set_bgcolor(tbox, t_s)
    if ob_a_sv and close top
    if m_sv
    box.set_bgcolor(tbox, u_b)
    array.push(m_long_boxes, tbox)
    else
    box.delete(tbox)
    array.remove(short_boxes, i)
    if msb_sv
    line.delete(array.get(bear_bos_lines, i))
    array.remove(bear_bos_lines, i)
    if array.size(long_boxes) > 0
    for i = array.size(long_boxes) – 1 to 0 by 1
    lbox = array.get(long_boxes, i)
    top = box.get_top(lbox)
    bottom = box.get_bottom(lbox)
    ago = box.get_left(lbox)
    if array.get(pvl1_price, 0) top
    if array.get(pvl1_time, 0) != l_a_time
    l_a_time := array.get(pvl1_time, 0)
    alert := alert + ‘Demand Zone Test @ ‘ + str.tostring(array.get(pvl1_price, 0)) + ‘ (age = ‘ + str.tostring(bar_index-ago) + ‘ bars) \n’
    if array.get(pvh1_price, 0) 0
    for i = array.size(m_short_boxes) – 1 to 0 by 1
    tbox = array.get(m_short_boxes, i)
    top = box.get_top(tbox)
    bottom = box.get_bottom(tbox)
    ago = box.get_left(tbox)
    if array.get(pvh1_price, 0) > bottom
    box.set_bgcolor(tbox, t_b)
    if bb_a_sv and close top
    box.delete(tbox)
    array.remove(m_short_boxes, i)
    if array.size(m_long_boxes) > 0
    for i = array.size(m_long_boxes) – 1 to 0 by 1
    lbox = array.get(m_long_boxes, i)
    top = box.get_top(lbox)
    bottom = box.get_bottom(lbox)
    ago = box.get_left(lbox)
    if array.get(pvl1_price, 0) top
    if array.get(pvl1_time, 0) != ml_a_time
    ml_a_time := array.get(pvl1_time, 0)
    alert := alert + ‘Breakerblock Test Down @ ‘ + str.tostring(array.get(pvl1_price, 0)) + ‘ (age = ‘ + str.tostring(bar_index-ago) + ‘ bars) \n’
    if array.get(pvh1_price, 0) < bottom
    box.delete(lbox)
    array.remove(m_long_boxes, i)
    if range_sv and (new_ph_2nd or new_pl_2nd) and (array.get(pvh2_price, 0) array.get(pvl2_price, 1) and array.get(pvh2_price, 0) > array.get(pvl2_price, 1) and array.get(pvl2_price, 0) nz(last_range_h) or na(last_range_l)? true : (array.get(pvh2_price, 1) 0
    for i = array.size(range_h_lines) – 1 to 0 by 1
    range_h = array.get(range_h_lines, i)
    top = line.get_y1(range_h)
    range_l = array.get(range_l_lines, i)
    bottom = line.get_y1(range_l)
    temp_time := line.get_x1(range_h)
    if array.get(pvh1_price, 0) > top
    if rt_a_sv and close < top
    if array.get(pvh1_time, 0) != rh_a_time
    rh_a_time := array.get(pvh1_time, 0)
    alert := alert + 'Range High Test @ ' + str.tostring(array.get(pvh1_price, 0)) + ' \n'
    if array.get(pvl1_price, 0) bottom
    if array.get(pvl1_time, 0) != rl_a_time
    rl_a_time := array.get(pvl1_time, 0)
    alert := alert + ‘Range Low Test @ ‘ + str.tostring(array.get(pvl1_price, 0)) + ‘ \n’
    if range_eq_sv
    range_m := array.get(range_m_lines, i)
    if range_q_sv
    range_25 := array.get(range_25_lines, i)
    range_75 := array.get(range_75_lines, i)
    if array.get(pvh1_price, 0) top
    line.delete(range_h)
    array.remove(range_h_lines, i)
    line.delete(range_l)
    array.remove(range_l_lines, i)
    if range_eq_sv
    line.delete(range_m)
    array.remove(range_m_lines, i)
    if range_q_sv
    line.delete(range_25)
    array.remove(range_25_lines, i)
    line.delete(range_75)
    array.remove(range_75_lines, i)
    last_range_h := na
    last_range_l := na
    if pv2_sv
    if new_ph_2nd
    array.push(la_ph2, label.new(x = array.get(pvh2_time, 0), y = array.get(pvh2_price, 0), xloc = xloc.bar_index, style = label.style_label_down, color = #770000FF, size = size.tiny))
    if new_pl_2nd
    array.push(la_pl2, label.new(x = array.get(pvl2_time, 0), y = array.get(pvl2_price, 0), xloc = xloc.bar_index, style = label.style_label_up, color = #007700FF, size = size.tiny))

    alert := not na(alert) ? (alert + ‘Current price = ‘ + str.tostring(close) + ‘\n’) : na
    exec = not na(alert) ? true : false
    if exec==true
    alert(alert, alert.freq_once_per_bar_close)

    bVpMvUJL.png bVpMvUJL.png
Viewing 1 post (of 1 total)
  • You must be logged in to reply to this topic.
ProRealAI ProRealAI New

Stuck on this ProBuilder code?

Describe what this topic is trying to build, in plain English, and ProRealAI writes the ProRealTime™ indicator, screener or system for you.

Available in 7 languages
Try ProRealAI

CONVERTION CLUSTER DE TRADINGVIEW


ProBuilder : Indicateurs & Outils Personnalisés

New Reply
Author
author-avatar
SOUBE @soube Participant
Summary

This topic contains 1 voice and has 0 replies.

Topic Details
Forum: ProBuilder : Indicateurs & Outils Personnalisés
Language: French
Started: 01/15/2022
Status: Active
Attachments: 1 files
ProRealCode ProRealCode
Loading...