Indicateur “Breakout Probability” TV à Traduire

Forums ProRealTime forum Français Support ProBuilder Indicateur “Breakout Probability” TV à Traduire

  • This topic has 1 reply, 2 voices, and was last updated 2 days ago by avatarIván.
Viewing 2 posts - 1 through 2 (of 2 total)
  • #250495

    Bonjour,

    Voici un indicateur que j’ai récupéré sur Trading View et que je souhaiterai faire traduire en ProBuilder.

    Il s’appelle “Breakout Probability” et a été créé par Zeiierman.

    Il a l’air de plutôt bien fonctionné.

    En vous souhaitant une très bonne journée !

     

    // © Zeiierman
    //@version=5
    indicator(“Breakout Probability (Expo)”,overlay=true,max_bars_back=5000)
    // ~~ Tooltips {
    t1 = “The space between the levels can be adjusted with a percentage step. 1% means that each level is located 1% above/under the previous one.”
    t2 = “Set the number of levels you want to display.”
    t3 = “If a level got 0 % likelihood of being hit, the level is not displayed as default. Enable the option if you want to see all levels regardless of their values.”
    t4 = “Enable this option if you want to display the backtest statistics for that a new high or low is made.”
    string [] tbl_tips = array.from(“Number of times price has reached the first highest percentage level”,
     “Number of times price failed to reach the first highest percentage level”,
     “Win/Loss ratio”)
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
    // ~~ Inputs {
    perc                    = input.float(1.0,title=”Percentage Step”,step=.1,minval=0,group=”Settings”,tooltip=t1)
    nbr                     = input.int(5, title=”Number of Lines”,maxval=5,minval=1,group=”Settings”,tooltip=t2)
    upCol                   = input.color(color.new(color.green,0),title=””,inline=”col”),dnCol=input.color(color.new(color.red,0),title=””,inline=”col”),fill=input.bool(true,title=”BG Color”,inline=”col”)
    var bool [] bools       = array.from(input.bool(true,title=”Disable 0.00%”,group=”Settings”,tooltip=t3),input.bool(true, title=”Show Statistic Panel”,group=”Settings”,tooltip=t4))
    var bool [] alert_bool  = array.from(
     input.bool(true,title=”Ticker ID”,group=”Any alert() function call”),
     input.bool(true,title=”High/Low Price”,group=”Any alert() function call”),
     input.bool(true,title=”Bullish/Bearish Bias”,group=”Any alert() function call”),
     input.bool(true,title=”Bullish/Bearish Percentage”,group=”Any alert() function call”))
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
    // ~~ Variables {
    b = bar_index
    o = open
    h = high
    l = low
    c = close
    step = c*(perc/100)
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
    // ~~ Save Values In Matrix {
    var total  = matrix.new<int>(7,4,0)
    var vals   = matrix.new<float>(5,4,0.0)
    var lines  = matrix.new<line>(1,10,line(na))
    var labels = matrix.new<label>(1,10,label(na))
    var tbl    = matrix.new<table>(1,1,table.new(position.top_right,2,3,
     frame_color=color.new(color.gray,50),frame_width=3,
     border_color=chart.bg_color,border_width=-2))
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
    // ~~ Save Number Of Green & Red Candles {
    green = c[1]>o[1]
    red   = c[1]<o[1]
    if green
        prev = matrix.get(total,5,0)
        matrix.set(total,5,0,prev+1)
    if red
        prev = matrix.get(total,5,1)
        matrix.set(total,5,1,prev+1)
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
    // ~~ Functions {
    //Lines
    CreateLine(p,i,c)=>
        prevLine = matrix.get(lines,0,i)
        line.delete(prevLine)
        li = line.new(b[1],p,b,p,color=c,width=2)
        matrix.set(lines,0,i,li)
    //Labels
    CreateLabel(p,i,c,r,v)=>
        prevLabel = matrix.get(labels,0,i)
        label.delete(prevLabel)
        la = label.new(b+1,p,text=str.tostring(matrix.get(vals,r,v),format.percent),
         style=label.style_label_left,color=color.new(color.black,100),textcolor=c)
        matrix.set(labels,0,i,la)
    //Score Calculation
    Score(x,i)=>
        ghh = matrix.get(total,i,0)
        gll = matrix.get(total,i,1)
        rhh = matrix.get(total,i,2)
        rll = matrix.get(total,i,3)
        gtotal = matrix.get(total,5,0)
        rtotal = matrix.get(total,5,1)
        hh = h>=h[1] + x
        ll = l<=l[1] – x
        if green and hh
            matrix.set(total,i,0,ghh+1)
            matrix.set(vals,i,0,math.round(((ghh+1)/gtotal)*100,2))
        if green and ll
            matrix.set(total,i,1,gll+1)
            matrix.set(vals,i,1,math.round(((gll+1)/gtotal)*100,2))
        if red and hh
            matrix.set(total,i,2,rhh+1)
            matrix.set(vals,i,2,math.round(((rhh+1)/rtotal)*100,2))
        if red and ll
            matrix.set(total,i,3,rll+1)
            matrix.set(vals,i,3,math.round(((rll+1)/rtotal)*100,2))
    //Backtest
    Backtest(v)=>
        p1 = matrix.get(total,6,0)
        p2 = matrix.get(total,6,1)
        if v==h[1]
            if h>=v
                matrix.set(total,6,0,p1+1)
            else
                matrix.set(total,6,1,p2+1)
        else
            if l<=v
                matrix.set(total,6,0,p1+1)
            else
                matrix.set(total,6,1,p2+1)
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
    // ~~ Code {
    //Run Score Function
    Score(0,0)
    Score(step,1)
    Score(step*2,2)
    Score(step*3,3)
    Score(step*4,4)
    //Fetch Score Values
    a1 = matrix.get(vals,0,0)
    b1 = matrix.get(vals,0,1)
    a2 = matrix.get(vals,0,2)
    b2 = matrix.get(vals,0,3)
    //Lines & Labels & Alerts
    for i=0 to nbr-1
        hide = array.get(bools,0)
        if not hide or (hide and (green?math.min(matrix.get(vals,i,0),
         matrix.get(vals,i,1))>0:
         math.min(matrix.get(vals,i,2),
         matrix.get(vals,i,3))>0))
            hi = h[1]+(step*i)
            lo = l[1]-(step*i)
            //Plot Lines
            CreateLine(hi,i,upCol)
            CreateLine(lo,5+i,dnCol)
            //Plot Labels
            if green
                CreateLabel(hi,i,upCol,i,0)
                CreateLabel(lo,5+i,dnCol,i,1)
            else
                CreateLabel(hi,i,upCol,i,2)
                CreateLabel(lo,5+i,dnCol,i,3)
            //Create Alert
            if array.includes(alert_bool, true)
                s1 = str.tostring(syminfo.ticker)
                s2 = “High Price: “+str.tostring(math.round_to_mintick(h[1]))+
                 ” | Low Price: “+str.tostring(math.round_to_mintick(l[1]))
                s3 = green?(math.max(a1,b1)==a1?”BULLISH”:”BEARISH”):
                 (math.max(a2,b2)==a2?”BULLISH”:”BEARISH”)
                s4 = green?(math.max(a1,b1)==a1?a1:b1):(math.min(a2,b2)==a2?a2:b2)
                s5 = red  ?(math.max(a2,b2)==a2?a2:b2):(math.min(a1,b1)==a1?a1:b1)
                string [] str_vals = array.from(s1,s2,”BIAS: “+s3,
                 “Percentage: High: “+str.tostring(s4,format.percent)
                 +” | Low: “+str.tostring(s5,format.percent))
                output = array.new_string()
                for x=0 to array.size(alert_bool)-1
                    if array.get(alert_bool,x)
                        array.push(output,array.get(str_vals,x))
                //Alert Is Triggered On Every Bar Open With Bias And Percentage Ratio
                alert(array.join(output,’\n’),alert.freq_once_per_bar)
        else
            //Delete Old Lines & Labels
            line.delete(matrix.get(lines,0,i))
            line.delete(matrix.get(lines,0,5+i))
            label.delete(matrix.get(labels,0,i))
            label.delete(matrix.get(labels,0,5+i))
    //Run Backtest Function
    Backtest(green?(math.max(a1,b1)==a1?h[1]:l[1]):(math.max(a2,b2)==a2?h[1]:l[1]))
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
    // ~~ Linefill {
    if fill
        var filler = linefill(na)
        for i=0 to 8
            get = matrix.get(lines,0,i)
            get1= matrix.get(lines,0,i+1)
            col = i>4?color.new(dnCol,80) : i==4?color.new(color.gray,100) : color.new(upCol,80)
            filler := linefill.new(get,get1,color=col)
            linefill.delete(filler[1])
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
    // ~~ Table {
    if barstate.islast and array.get(bools,1)
        //Calulate WinRatio
        W  = matrix.get(total,6,0)
        L  = matrix.get(total,6,1)
        WR = math.round(W/(W+L)*100,2)
        string [] tbl_vals = array.from(“WIN: “+str.tostring(W),
         “LOSS: “+str.tostring(L),
         “Profitability: “+str.tostring(WR,format.percent))
        color [] tbl_col = array.from(color.green,color.red,chart.fg_color)
        for i=0 to 2
            table.cell(matrix.get(tbl,0,0),0,i,array.get(tbl_vals,i),
             text_halign=text.align_center,bgcolor=chart.bg_color,
             text_color=array.get(tbl_col,i),text_size=size.auto,
             tooltip=array.get(tbl_tips,i))
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}

     

    #250505

    voici

Viewing 2 posts - 1 through 2 (of 2 total)

Create your free account now and post your request to benefit from the help of the community
Register or Login