master patter by ATS

Viewing 12 posts - 16 through 27 (of 27 total)
  • Author
    Posts
  • #244961 quote
    Kratos
    Participant
    New

    HI GUys , i would like this amazing indicator originally desibngen by ATS and then been coded on Trading view . Its an amzing tool. It draws a box and has a line protruding out of it at the 50% mark.

    This line remains in place until another box is formed . How is the box formed ? Its when market is in contraction phase and we get a HL then a LH in a consecutive time. see examples on TV. I have the code fo rit and i have attached a couple of u tube s on it ?

    https://www.tradingview.com/x/scvXjbNd/

    here is the u tube

    https://youtu.be/

    I assure you thi will realy help finding points to buy and sell….

    There is also liquidity lines

    Also I have the code in Trading view maybe someone knows how to change into Prorealtime code?

    #244962 quote
    Kratos
    Participant
    New

    I have an indicator called Master Pattern line (ATS ) coded on TV pinescript. I would like it on my PRT. Is there anyone who can convert the code please? We can share this on thie platform and there are lots of eduction of how to use it on You Tube. Its an amazing tool i assure you ?

    #244965 quote
    JC_Bywan
    Moderator
    Master

    Moderation message:

    Your 2 new topics are now merged to your same topic from a year ago on the very same subject, during which you already did not copy and paste your code to be converted, and not described the rules for coding it. Copying and pasting the source code for a code converstion request is not “optional”, screenshots and videos don’t replace it, they are only useful additions to the mandatory source code script.

    Please see this form for free code conversions: https://www.prorealcode.com/free-code-conversion/

    The choice is yours:

    – providing source code here in the next post, for someone knowledgeable in both TV and PRT  languages to assess whether it can be converted to PRT and to publish its conversion for free in the forum

    – or ask for a quote for a private paid code conversion in the “trading programming services” in the “help” section from main menu above, direct link: https://www.prorealcode.com/trading-programming-services/

    – or, should none of the above occur, taking into account last year conversation, the third option would be to be considered as not really wanting a code conversion for spamming purposes (will imply posts removal by moderation).

    #245040 quote
    Kratos
    Participant
    New

    My apologies for any confusion. Here is the code .

    #245136 quote
    robert123
    Participant
    Master

    Here’s my attempt! Others will be able to code it better I’m sure!!

    RR

     

     

    defparam drawonlastbaronly=true
    defparam calculateonlastbars=3000

    BarsBefore = max(BarsBefore,1)
    BarsAfter = max(BarsAfter,1)
    StartBack = max(0,startback)

    BarLookBack = BarsAfter + 1
    if low[BarsAfter] < lowest[BarsBefore](low)[BarLookBack] THEN
    if low[BarsAfter] = lowest[BarLookBack](low) THEN
    a = a + 1
    $supportbar[a] = barindex[barsafter]
    $supportvalue[a] = low[barsafter]
    endif
    endif
    if high[BarsAfter] > highest[BarsBefore](high)[BarLookBack] THEN
    if high[BarsAfter] = highest[BarLookBack](high) THEN
    b = b + 1
    $resistancebar[b] = barindex[barsafter]
    $resistancevalue[b] = high[barsafter]
    endif
    endif

     

    if a>10 then
    drawtext(“🔼”,$supportbar[a],$supportvalue[a],dialog,bold,20)coloured(“lime”)
    drawtext(“🔼”,$supportbar[a-1],$supportvalue[a-1],dialog,bold,20)coloured(“lime”)
    endif

    if b>10 then
    drawtext(“🔽”,$resistancebar[b],$resistancevalue[b],dialog,bold,20)coloured(“red”)
    drawtext(“🔽”,$resistancebar[b-1],$resistancevalue[b-1],dialog,bold,20)coloured(“red”)
    endif
    //////compression point
    once tradepole=0
    if b>3 and a>3 then
    if $resistancevalue[b-1]>$resistancevalue[b] and $supportvalue[a-1]<$supportvalue[a] then
    compress=1
    tradepole=tradepole+1
    $tradepoleB[tradepole]=barindex
    $tradepoleP[tradepole]=$resistancevalue[b-1]+(($supportvalue[a-1]-$resistancevalue[b-1])/2)
    else
    compress=0
    endif
    if compress=1 then
    drawsegment($tradepoleB[tradepole]-5,$tradepoleP[tradepole],barindex,$tradepoleP[tradepole])style(dottedline4,5)coloured(“white”)
    if $resistancevalue[b-1]<$supportvalue[a-1] then
    liqH=$resistancevalue[b-1]
    liqL=$tradepoleP[tradepole]-(liqh-$tradepoleP[tradepole])
    drawsegment($tradepoleB[tradepole]-5,liqH,barindex,liqH)style(dottedline4,3)coloured(“white”)
    drawsegment($tradepoleB[tradepole]-5,liqL,barindex,liqL)style(dottedline4,3)coloured(“white”)
    else
    liqL=$supportvalue[a-1]
    liqH=$tradepoleP[tradepole]+($tradepoleP[tradepole]-liql)
    drawsegment($tradepoleB[tradepole]-5,liqH,barindex,liqH)style(dottedline4,3)coloured(“white”)
    drawsegment($tradepoleB[tradepole]-5,liqL,barindex,liqL)style(dottedline4,3)coloured(“white”)
    endif
    else
    if $resistancevalue[b-1]>$resistancevalue[b] then
    drawsegment($tradepoleB[tradepole],$tradepoleP[tradepole],barindex,$tradepoleP[tradepole])style(dottedline4,5)coloured(“red”)
    drawsegment($tradepoleB[tradepole],liqH,barindex,liqH)style(dottedline4,3)coloured(“red”)
    drawsegment($tradepoleB[tradepole],liqL,barindex,liqL)style(dottedline4,3)coloured(“red”)
    liq150=$tradepoleP[tradepole]-liql
    drawsegment($tradepoleB[tradepole],liqL-liq150,barindex,liqL-liq150)style(dottedline1,5)coloured(“red”)
    elsif $supportvalue[a-1]<$supportvalue[a] then
    drawsegment($tradepoleB[tradepole],$tradepoleP[tradepole],barindex,$tradepoleP[tradepole])style(dottedline4,5)coloured(“lime”)
    drawsegment($tradepoleB[tradepole],liqH,barindex,liqH)style(dottedline4,3)coloured(“lime”)
    drawsegment($tradepoleB[tradepole],liqL,barindex,liqL)style(dottedline4,3)coloured(“lime”)
    liq150=$tradepoleP[tradepole]-liql
    drawsegment($tradepoleB[tradepole],liqh+liq150,barindex,liqh+liq150)style(dottedline1,5)coloured(“lime”)
    endif
    endif

    endif
    return

    LucasBest and Kratos thanked this post
    #245146 quote
    Kratos
    Participant
    New

    I cant thank you enough for your efforts much apprecaited. I will give it a go

    #245147 quote
    Kratos
    Participant
    New

    It didnt quite work….I think we need help on this but thanks for input again .

    #245150 quote
    LucasBest
    Participant
    Junior

    It didnt quite work….I think we need help on this but thanks for input again .

    It is coded for black background. If you are using white background, try this :

    defparam drawonlastbaronly=true
    defparam calculateonlastbars=3000
    
    BarsBefore = max(BarsBefore,1)
    BarsAfter = max(BarsAfter,1)
    StartBack = max(0,startback)
    
    BarLookBack = BarsAfter + 1
    if low[BarsAfter] < lowest[BarsBefore](low)[BarLookBack] THEN
    if low[BarsAfter] = lowest[BarLookBack](low) THEN
    a = a + 1
    $supportbar[a] = barindex[barsafter]
    $supportvalue[a] = low[barsafter]
    endif
    endif
    if high[BarsAfter] > highest[BarsBefore](high)[BarLookBack] THEN
    if high[BarsAfter] = highest[BarLookBack](high) THEN
    b = b + 1
    $resistancebar[b] = barindex[barsafter]
    $resistancevalue[b] = high[barsafter]
    endif
    endif
    
     
    
    if a>10 then
    drawtext("🔼",$supportbar[a],$supportvalue[a],dialog,bold,20)coloured("lime")
    drawtext("🔼",$supportbar[a-1],$supportvalue[a-1],dialog,bold,20)coloured("lime")
    endif
    
    if b>10 then
    drawtext("🔽",$resistancebar[b],$resistancevalue[b],dialog,bold,20)coloured("red")
    drawtext("🔽",$resistancebar[b-1],$resistancevalue[b-1],dialog,bold,20)coloured("red")
    endif
    //////compression point
    once tradepole=0
    if b>3 and a>3 then
    if $resistancevalue[b-1]>$resistancevalue[b] and $supportvalue[a-1]<$supportvalue[a] then
    compress=1
    tradepole=tradepole+1
    $tradepoleB[tradepole]=barindex
    $tradepoleP[tradepole]=$resistancevalue[b-1]+(($supportvalue[a-1]-$resistancevalue[b-1])/2)
    else
    compress=0
    endif
    if compress=1 then
    drawsegment($tradepoleB[tradepole]-5,$tradepoleP[tradepole],barindex,$tradepoleP[tradepole])style(dottedline4,5)coloured("grey")
    if $resistancevalue[b-1]<$supportvalue[a-1] then
    liqH=$resistancevalue[b-1]
    liqL=$tradepoleP[tradepole]-(liqh-$tradepoleP[tradepole])
    drawsegment($tradepoleB[tradepole]-5,liqH,barindex,liqH)style(dottedline4,3)coloured("grey")
    drawsegment($tradepoleB[tradepole]-5,liqL,barindex,liqL)style(dottedline4,3)coloured("grey")
    else
    liqL=$supportvalue[a-1]
    liqH=$tradepoleP[tradepole]+($tradepoleP[tradepole]-liql)
    drawsegment($tradepoleB[tradepole]-5,liqH,barindex,liqH)style(dottedline4,3)coloured("grey")
    drawsegment($tradepoleB[tradepole]-5,liqL,barindex,liqL)style(dottedline4,3)coloured("grey")
    endif
    else
    if $resistancevalue[b-1]>$resistancevalue[b] then
    drawsegment($tradepoleB[tradepole],$tradepoleP[tradepole],barindex,$tradepoleP[tradepole])style(dottedline4,5)coloured("red")
    drawsegment($tradepoleB[tradepole],liqH,barindex,liqH)style(dottedline4,3)coloured("red")
    drawsegment($tradepoleB[tradepole],liqL,barindex,liqL)style(dottedline4,3)coloured("red")
    liq150=$tradepoleP[tradepole]-liql
    drawsegment($tradepoleB[tradepole],liqL-liq150,barindex,liqL-liq150)style(dottedline1,5)coloured("red")
    elsif $supportvalue[a-1]<$supportvalue[a] then
    drawsegment($tradepoleB[tradepole],$tradepoleP[tradepole],barindex,$tradepoleP[tradepole])style(dottedline4,5)coloured("lime")
    drawsegment($tradepoleB[tradepole],liqH,barindex,liqH)style(dottedline4,3)coloured("lime")
    drawsegment($tradepoleB[tradepole],liqL,barindex,liqL)style(dottedline4,3)coloured("lime")
    liq150=$tradepoleP[tradepole]-liql
    drawsegment($tradepoleB[tradepole],liqh+liq150,barindex,liqh+liq150)style(dottedline1,5)coloured("lime")
    endif
    endif
    
    endif
    return
    #245151 quote
    LucasBest
    Participant
    Junior
    //@version=5
    
    indicator("Master Pattern Indicator",overlay = true,max_boxes_count = 500, max_lines_count = 500, max_bars_back = 5000)
    
    Major_Box_Color = input.color(color.rgb(81, 55, 226),"Major Box Color")
    show_minor_boxes = input.bool(false,"Show Minor Boxes")
    Minor_Box_Color = input.color(color.rgb(163, 160, 160),"Minor Box Color")
    Major_Expansion_Line_Color = input.color(color.rgb(238, 238, 238),"Major Expansion Line Color")
    Major_Expansion_Line_Style = input.string("Solid","Major Expansion Line Style",["Solid","Dotted","Dashed"])
    Major_Expansion_Line_Thickness = input.int(2,"Major Expansion Line Thickness")
    show_minor_expansion = input.bool(true,"Show Minor Expansion Lines")
    Minor_Expansion_Line_Color = input.color(color.rgb(241, 238, 239),"Minor Expansion Line Color")
    Minor_Expansion_Line_Style = input.string("Dashed","Minor Expansion Line Style",["Solid","Dotted","Dashed"])
    Minor_Expansion_Line_Thickness = input.int(1,"Minor Expansion Line Thickness")
    Sell_Line_Color = input.color(color.red,"Sell Side Liquidity Line Color")
    Sell_Line_Style = input.string("Dotted","Sell Side Liquidity Line Style",["Solid","Dotted","Dashed"])
    Sell_Line_Thickness = input.int(1,"Sell Side Liquidity Line Thickness")
    Buy_Line_Color = input.color(color.green,"Buy Side Liquidity Line Color")
    Buy_Line_Style = input.string("Dotted","Buy Side Liquidity Line Style",["Solid","Dotted","Dashed"])
    Buy_Line_Thickness = input.int(1,"Buy Side Liquidity Line Thickness")
    max_bars = input.int(500,"Max Bars Back")
    indi_type = input.int(1,"Type")
    alert_major_line_confirm = input.bool(true,"Major Line Confirmation",group = "Alerts")
    alert_major_line_cross = input.bool(true,"Major Line Crossing",group = "Alerts")
    alert_liquidity_line_touch = input.bool(true,"Liquidity Line Touching",group = "Alerts")
    //n = input.int(title="Fractals Periods", defval=2, minval=2)
    repaint = true
    
    
    // // UpFractal
    // bool upflagDownFrontier = true
    // bool upflagUpFrontier0 = true
    // bool upflagUpFrontier1 = true
    // bool upflagUpFrontier2 = true
    // bool upflagUpFrontier3 = true
    // bool upflagUpFrontier4 = true
    
    // for i = 1 to n
    //     upflagDownFrontier := upflagDownFrontier and (high[n-i] < high[n])
    //     upflagUpFrontier0 := upflagUpFrontier0 and (high[n+i] < high[n])
    //     upflagUpFrontier1 := upflagUpFrontier1 and (high[n+1] <= high[n] and high[n+i + 1] < high[n])
    //     upflagUpFrontier2 := upflagUpFrontier2 and (high[n+1] <= high[n] and high[n+2] <= high[n] and high[n+i + 2] < high[n])
    //     upflagUpFrontier3 := upflagUpFrontier3 and (high[n+1] <= high[n] and high[n+2] <= high[n] and high[n+3] <= high[n] and high[n+i + 3] < high[n])
    //     upflagUpFrontier4 := upflagUpFrontier4 and (high[n+1] <= high[n] and high[n+2] <= high[n] and high[n+3] <= high[n] and high[n+4] <= high[n] and high[n+i + 4] < high[n])
    // flagUpFrontier = upflagUpFrontier0 or upflagUpFrontier1 or upflagUpFrontier2 or upflagUpFrontier3 or upflagUpFrontier4
    
    // upFractal = (upflagDownFrontier and flagUpFrontier)
    
    
    // // downFractal
    // bool downflagDownFrontier = true
    // bool downflagUpFrontier0 = true
    // bool downflagUpFrontier1 = true
    // bool downflagUpFrontier2 = true
    // bool downflagUpFrontier3 = true
    // bool downflagUpFrontier4 = true
    
    // for i = 1 to n
    //     downflagDownFrontier := downflagDownFrontier and (low[n-i] > low[n])
    //     downflagUpFrontier0 := downflagUpFrontier0 and (low[n+i] > low[n])
    //     downflagUpFrontier1 := downflagUpFrontier1 and (low[n+1] >= low[n] and low[n+i + 1] > low[n])
    //     downflagUpFrontier2 := downflagUpFrontier2 and (low[n+1] >= low[n] and low[n+2] >= low[n] and low[n+i + 2] > low[n])
    //     downflagUpFrontier3 := downflagUpFrontier3 and (low[n+1] >= low[n] and low[n+2] >= low[n] and low[n+3] >= low[n] and low[n+i + 3] > low[n])
    //     downflagUpFrontier4 := downflagUpFrontier4 and (low[n+1] >= low[n] and low[n+2] >= low[n] and low[n+3] >= low[n] and low[n+4] >= low[n] and low[n+i + 4] > low[n])
    // flagDownFrontier = downflagUpFrontier0 or downflagUpFrontier1 or downflagUpFrontier2 or downflagUpFrontier3 or downflagUpFrontier4
    
    // downFractal = (downflagDownFrontier and flagDownFrontier)
    
    // var zz = array.new_float()
    // var yy = array.new_int()
    
    // if upFractal
    //     array.push(zz, high)
    //     array.push(yy,bar_index)
    
    // if downFractal
    //     array.push(zz, low)
    //     array.push(yy,bar_index)
    
    var Depth       = 3
    var Deviation   = 1
    var Backstep    = 1
    
    if(indi_type==2)
        Depth := 2
    
    var last_h = 1, last_h := last_h + 1
    var last_l = 1, last_l := last_l + 1
    var lw = 1, var hg = 1
    lw := lw + 1, hg := hg + 1
    p_lw = -ta.lowestbars(Depth), p_hg = -ta.highestbars(Depth)
    lowing = lw == p_lw or low - low[p_lw] > Deviation*syminfo.mintick
    highing = hg == p_hg or high[p_hg] - high > Deviation*syminfo.mintick
    lh = ta.barssince(not highing[1]), ll = ta.barssince(not lowing[1])
    down = ta.barssince(not (lh > ll)) >= Backstep, lower = low[lw] > low[p_lw], higher = high[hg] < high[p_hg]
    if lw != p_lw and (not down[1] or lower)
        lw := p_lw < hg ? p_lw : 0
    if hg != p_hg and (down[1] or higher)
        hg := p_hg < lw ? p_hg : 0
    
    var zz = array.new_float()
    var yy = array.new_int()
    x1 = down ? lw : hg
    y1 = down ? low[lw] : high[hg]
    
    if down == down[1]
        if repaint
            if(array.size(zz)>0)
                array.pop(zz)
                array.pop(yy)
        down
    if down != down[1]
        if down
            last_h := hg
        else
            last_l := lw
        if not repaint
            nx = down?last_h:last_l
            array.push(zz, (down ? low[last_l] : high[last_h]))
            array.push(yy,bar_index-(down?last_l:last_h))
        down
    if repaint
        array.push(zz, y1)
        array.push(yy,bar_index-x1)
    
    allowPlot()=>
        (last_bar_index-bar_index<=max_bars)
    
    checkTrigger()=>
        value1 = 0.0, value2 = 0.0, value3 = 0.0, value4 = 0.0, counter = 0, res = false, pos = 0
        if(array.size(zz)>=4 and array.size(yy)>=4)
            for x = array.size(zz)-1 to 0
                if(x<array.size(zz))
                    price = array.get(zz,x)
                    counter += 1
                    if(counter == 1)
                        value1 := price
                    if(counter == 2)
                        value2 := price
                        pos := array.get(yy,x)
                    if(counter == 3)
                        value3 := price
                    if(counter == 4)
                        value4 := price
                        break
            if((value1<value2 and value1>value3 and value4>value2) or
                 (value1>value2 and value1<value3 and value4<value2))
                res := true
        [res, math.max(value1,value2), math.min(value1,value2), pos]
    
    var minorBoxes = array.new_box()
    var minorBoxNames = array.new_string()
    var minorCrossedHigh = array.new_bool()
    var minorCrossedLow = array.new_bool()
    var expansionLines = array.new_line()
    var minorExpansionLines = array.new_line()
    [RES,Val1,Val2,POS] = checkTrigger()
    if(RES and allowPlot())
        array.push(minorBoxes, box.new(time[bar_index-POS],Val1,time,Val2,xloc=xloc.bar_time,border_color=(show_minor_boxes?Minor_Box_Color:na),bgcolor=(show_minor_boxes?Minor_Box_Color:na)))
        array.push(minorBoxNames, "Active Box")
        array.push(minorCrossedHigh, false), array.push(minorCrossedLow, false)
    
    updateExpansionLines(Time,Line,clear,checktimes)=>
        if(array.size(Line)>0)
            for x = 0 to array.size(Line)-1
                if(x < array.size(checktimes) and x < array.size(Line))
                    if(Time>array.get(checktimes,x))
                        line.set_x2(array.get(Line,x),Time)
                        if(clear)
                            array.remove(Line,x)
    
    var check = array.new_int()
    var checkMinor = array.new_int()
    
    updateExpansionLines(time,expansionLines,false,check)
    updateExpansionLines(time,minorExpansionLines,false,checkMinor)
    
    var majorBoxLines = array.new_line()
    var majorBoxLineType = array.new_int()
    var majorBoxLineRef = array.new_int()
    var Crossed = array.new_bool()
    
    getHighOffset(Time)=>
        x = 1, hi = high, res = 0
        while(time[x]>=Time)
            if(high[x]>hi)
                hi := high[x]
                res := x
            x += 1
        res
    
    getLowOffset(Time)=>
        x = 1, lo = low, res = 0
        while(time[x]>=Time)
            if(low[x]<lo)
                lo := low[x]
                res := x
            x += 1
        res
    
    checkCross(line_array, price)=>
        result = false
        Prices = price
        if array.size(line_array) > 0
            for x = 0 to array.size(line_array)-1
                Price = line.get_y1(array.get(line_array,x))
                if (Prices > Price and Prices[1] <= Price) or (Prices < Price and Prices[1] >= Price)
                    result := true
        result
    
    operateMinorBox(price,hi_price,lo_price,Time)=>
        var lastMinorExp = 0
        confirm = false
       
        if(array.size(minorBoxes)>0 and array.size(minorCrossedHigh)>0 and array.size(minorCrossedLow)>0 and array.size(minorBoxNames)>0)
            x = array.size(minorBoxes)-1
            if array.get(minorBoxNames,x)!="NULL"
                top = box.get_top(array.get(minorBoxes,x)), bottom = box.get_bottom(array.get(minorBoxes,x))
                time1 = box.get_left(array.get(minorBoxes,x))
                time2 = box.get_right(array.get(minorBoxes,x)), ppp = bottom+(top-bottom)/2
                origCrossedHigh = array.get(minorCrossedHigh,x)
                origCrossedLow = array.get(minorCrossedLow,x)
                if(not array.get(minorCrossedHigh,x) and not array.get(minorCrossedLow,x))
                    if(not barstate.islast or barstate.isconfirmed)
                        if(price>top)
                            array.set(minorCrossedHigh,x,true)
                        if(price<bottom)
                            array.set(minorCrossedLow,x,true)
                else
                    if(hi_price>top)
                        array.set(minorCrossedHigh,x,true)
                    if(lo_price<bottom)
                        array.set(minorCrossedLow,x,true)
                if(array.get(minorCrossedHigh,x) and array.get(minorCrossedLow,x))
                    box.set_bgcolor(array.get(minorBoxes,x),Major_Box_Color)
                    array.set(minorBoxNames,x,"NULL")
                    updateExpansionLines(time2,expansionLines,true,check)
                    confirm := true
                    if(show_minor_expansion)
                        updateExpansionLines(time2,minorExpansionLines,true,checkMinor)          
                    array.push(expansionLines,line.new(time2,ppp,time,ppp,xloc.bar_time,extend.none,Major_Expansion_Line_Color,
                     (Major_Expansion_Line_Style=="Solid"?line.style_solid:Major_Expansion_Line_Style=="Dotted"?line.style_dotted:
                     line.style_dashed),Major_Expansion_Line_Thickness))
                    array.push(check,time2)
                    hi_pos = getHighOffset(time2)
                    lo_pos = getLowOffset(time2)
                    if(not origCrossedHigh)
                        rrr = low[lo_pos]
                        array.push(majorBoxLines, line.new(time[lo_pos],rrr,Time,rrr,xloc.bar_time,extend.none,Buy_Line_Color,
                         (Buy_Line_Style=="Solid"?line.style_solid:Buy_Line_Style=="Dotted"?line.style_dotted:line.style_dashed),
                         Buy_Line_Thickness))
                        array.push(majorBoxLineType,0)
                    else if(not origCrossedLow)
                        rrr = high[hi_pos]
                        array.push(majorBoxLines, line.new(time[hi_pos],rrr,Time,rrr,xloc.bar_time,extend.none,Sell_Line_Color,
                         (Sell_Line_Style=="Solid"?line.style_solid:Sell_Line_Style=="Dotted"?line.style_dotted:line.style_dashed),
                         Sell_Line_Thickness))
                        array.push(majorBoxLineType,1)
                    array.push(majorBoxLineRef,time2)
                    array.push(Crossed,false)
                    true
                else if(not array.get(minorCrossedHigh,x) and not array.get(minorCrossedLow,x))
                    box.set_right(array.get(minorBoxes,x),Time)
                    true
                else if(show_minor_expansion and time1!=lastMinorExp)
                    updateExpansionLines(time2,minorExpansionLines,true,checkMinor)
                    array.push(minorExpansionLines, line.new(time2,ppp,time,ppp,xloc.bar_time,extend.none,Minor_Expansion_Line_Color,
                     (Minor_Expansion_Line_Style=="Solid"?line.style_solid:Minor_Expansion_Line_Style=="Dotted"?line.style_dotted:
                     line.style_dashed),Minor_Expansion_Line_Thickness))
                    array.push(checkMinor,time2)
                    lastMinorExp := time1
                    true
        confirm
    
    operateLiquidity(hi_price,lo_price,Time)=>
        result = false
        if(array.size(majorBoxLines)>0 and array.size(majorBoxLineRef)>0 and array.size(Crossed)>0)
            z = array.size(majorBoxLines)-1
            for x = 0 to z    
                line_price = line.get_y2(array.get(majorBoxLines,x))
                hi_pos = getHighOffset(array.get(majorBoxLineRef,x))
                lo_pos = getLowOffset(array.get(majorBoxLineRef,x))
                qq = 0.0
                if(array.get(majorBoxLineType,x)==0 and lo_price <= line_price)
                    if not array.get(Crossed,x)
                        result := true
                    qq := high[hi_pos]
                    if x == z
                        array.set(majorBoxLines,x,line.new(time[hi_pos],qq,Time,qq,xloc.bar_time,extend.none,Sell_Line_Color,(Sell_Line_Style=="Solid"?line.style_solid:
                         Sell_Line_Style=="Dotted"?line.style_dotted:line.style_dashed),Sell_Line_Thickness))
                        array.set(majorBoxLineType,x,1)
                    else
                        array.set(Crossed,x,true)
                else if(array.get(majorBoxLineType,x)==1 and hi_price >= line_price)
                    if not array.get(Crossed,x)
                        result := true
                    qq := low[lo_pos]
                    if x == z
                        array.set(majorBoxLines,x,line.new(time[lo_pos],qq,Time,qq,xloc.bar_time,extend.none,Buy_Line_Color,(Buy_Line_Style=="Solid"?line.style_solid:
                         Buy_Line_Style=="Dotted"?line.style_dotted:line.style_dashed),Buy_Line_Thickness))
                        array.set(majorBoxLineType,x,0)
                    else
                        array.set(Crossed,x,true)
                if not array.get(Crossed,x)
                    line.set_x2(array.get(majorBoxLines,x),Time)
        result    
    
    
    major_line_confirm = operateMinorBox(close,high,low,time)
    major_line_cross = checkCross(expansionLines,close)
    liquidity_line_touch = operateLiquidity(high,low,time)
    
    if alert_major_line_confirm and major_line_confirm
        alert("Major Line Confirmed.")
    if alert_major_line_cross and major_line_cross
        alert("Major Line Crossed.")
    if alert_liquidity_line_touch and liquidity_line_touch
        alert("Liquidity Line Touched.")
    Kratos thanked this post
    #245635 quote
    Kratos
    Participant
    New

    I am so sorry, I still cant get this to work for me. Can anyone help me please . I am an old man who is not tech savy. If it can be put into a file i will be able to import it . I know how to do that . Please help me convert this code ? best

    #245664 quote
    robert123
    Participant
    Master

    I’m unsure what you’re struggling with; it works fine.

    #249416 quote
    Kratos
    Participant
    New

    Guys , is there any chance we can include all the variables that Trading view has for this master pattern indicator. It has a big following on trading view. I think it will be really useful for the platform to have this? Would really appreciate it if we could have adjustments like TV?

Viewing 12 posts - 16 through 27 (of 27 total)
  • You must be logged in to reply to this topic.

master patter by ATS


ProBuilder: Indicators & Custom Tools

New Reply
Author
author-avatar
Kratos @kratos Participant
Summary

This topic contains 26 replies,
has 5 voices, and was last updated by Kratos
6 months ago.

Topic Details
Forum: ProBuilder: Indicators & Custom Tools
Language: English
Started: 02/26/2024
Status: Active
Attachments: 1 files
Logo Logo
Loading...