Création d’un screener ob block

Viewing 2 posts - 1 through 2 (of 2 total)
  • Author
    Posts
  • #233686 quote
    SofitechSofitech
    Participant
    Master

    Bonjour,
    Sur la base de l’indicateur suivant modifié par @ivan qui se place dans une fenêtre sous le prix, j’aimerais avoir le code d’un screener détectant les instruments dont la valeur de l’indicateur est +1 et -1.
    Merci d’avance pour votre aide.

    // Sonarlabs - Order Block Finder
    // converted from TradingView
    // Lower the sensitivity to show more order blocks. A higher sensitivity will show less order blocks
    
    defparam drawonlastbaronly=true
    
    Transparency = 80
    
    sens = 0
    
    once obcreatedbear = 0
    once obcreatedbull = 0
    once crossindexbear = 0
    once crossindexbull = 0
    
    
    // Custom Rate of Change (ROC) calculation. This is to calculate high momentum moves in the market.
    pc = ((open - open[4]) / open[4]) * 100
    
    
    // -----------------
    sens = sens/100 //ExponentialAverage[8](pc) //sens/100
    OBBullMitigation = close[1]
    OBBearMitigation = close[1]
    
    
    // If the ROC crossover our Sensitivty input - Then create a Bearish Order Block
    // Sensitivty is negative as this is a Bearish OB
    if pc crosses under -sens then
    obcreatedbear = 1
    crossindexbear = barindex
    endif
    
    
    // If the ROC crossover our Sensitivty input - Then create a Bullish Order Block
    if pc crosses over sens then
    obcreatedbull = 1
    crossindexbull = barindex
    endif
    
    
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //      Calculation
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    
    // -------------------------------
    // Bearish OB Creation
    // -------------------------------
    // Check if we should create a OB. Also check if we haven't created an OB in the last 5 candles.
    if obcreatedbear and (crossindexbear - crossindexbear[1]) > 5 then
    lastgreen = 0
    hhighest = 0
    // Loop through the most recent candles and find the first GREEN (Bullish) candle. We will place our OB here.
    for i = 4 to 15
    if close[i] > open[i] then
    lastgreen = i
    //populate the arrays of order block to draw them later
    $left[plot]= barindex[lastgreen]
    $top[plot]=high[lastgreen]
    $bottom[plot]=low[lastgreen]
    $right[plot]=barindex[lastgreen]
    plot=plot+1 //increase the array column for next data
    break
    endif
    next
    endif
    
    
    // -------------------------------
    // Bullish OB Creation
    // -------------------------------
    // Check if we should create a OB, Also check if we haven't created an OB in the last 5 candles.
    if obcreatedbull and (crossindexbull - crossindexbull[1]) > 5 then
    lastred = 0
    hhighest = 0
    // Loop through the most recent candles and find the first RED (Beaarish) candle. We will place our OB here.
    for ibull = 4 to 15
    if close[ibull] < open[ibull] then
    lastred = ibull
    //populate the arrays of order block to draw them later
    $leftbull[plotbull]= barindex[lastred]
    $topbull[plotbull]=high[lastred]
    $bottombull[plotbull]=low[lastred]
    $rightbull[plotbull]=barindex[lastred]
    plotbull=plotbull+1 //increase the array column for next data
    break
    endif
    next
    endif
    
    
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //      Cleanup
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    
    //Clean up Bearish OB boxes
    if plot>0 then
    for j = plot-1 downto 0 //0 to plot-1
    // If the two last closes are above the high of the bearish OB - Remove the OB
    if $left[j]>0 then //check if the zone still exist
    itop = $top[j]
    breakout = summation[max(1,barindex-$left[j])](OBBearMitigation>itop)>=1 //2
    if breakout then
    $left[j]=0
    endif
    endif
    next
    endif
    //Clean up Bullish OB boxes
    if plotbull>0 then
    for jbull = plotbull-1 downto 0 //0 to plotbull-1
    // If the two last closes are below the low of the bullish OB - Remove the OB
    if $leftbull[jbull]>0 then //check if the zone still exist
    ibot = $bottombull[jbull]
    breakoutbull = summation[max(1,barindex-$leftbull[jbull])](OBBullMitigation<ibot)>=1
    if breakoutbull then
    $leftbull[jbull]=0
    endif
    endif
    next
    endif
    
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //     Drawing
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    if islastbarupdate then
    //plot the Bearish boxes
    if  plot>0 then //islastbarupdate and
    for j = plot-1 downto 0 //0 to plot-1
    if $left[j]>0 then
    //drawrectangle($left[j],$top[j],barindex,$bottom[max(0,j)]) coloured("red",Transparency)bordercolor("red",Transparency)
    for k=0 to barindex do
    if barindex[k]>$left[max(0,j)] and high[k] > $bottom[max(0,j)] and high[k]<$top[max(0,j)] then
    drawrectangle(barindex[k],0,barindex[k],-1)coloured("red")
    endif
    next
    endif
    next
    endif
    //plot the Bullish boxes
    if  plotbull>0 then //islastbarupdate and
    for jbull = plotbull-1 downto 0 //0 to plotbull-1
    if $leftbull[jbull]>0 then
    //drawrectangle($leftbull[jbull],$bottombull[jbull],barindex,$topbull[jbull]) coloured("green",Transparency)bordercolor("green",Transparency)
    for i=0 to barindex do
    if barindex[i]>$leftbull[max(0,jbull)] and low[i] < $topbull[max(0,jbull)] and low[i]>$bottombull[max(0,jbull)] then
    drawrectangle(barindex[i],0,barindex[i],1)coloured("green")
    endif
    next
    endif
    next
    endif
    endif
    
    return 
    #233698 quote
    Iván GonzálezIván González
    Moderator
    Legend

    salut. Vous avez contesté dans le fil antérieur. Voici le code :

    sens = 0
    once obcreatedbear = 0
    once obcreatedbull = 0
    once crossindexbear = 0
    once crossindexbull = 0
    // Custom Rate of Change (ROC) calculation. This is to calculate high momentum moves in the market.
    pc = ((open - open[4]) / open[4]) * 100
    // -----------------
    sens = sens/100 //ExponentialAverage[8](pc) //sens/100
    OBBullMitigation = close[1]
    OBBearMitigation = close[1]
    // If the ROC crossover our Sensitivty input - Then create a Bearish Order Block
    // Sensitivty is negative as this is a Bearish OB
    if pc crosses under -sens then
    obcreatedbear = 1
    crossindexbear = barindex
    endif
    // If the ROC crossover our Sensitivty input - Then create a Bullish Order Block
    if pc crosses over sens then
    obcreatedbull = 1
    crossindexbull = barindex
    endif
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //      Calculation
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // -------------------------------
    // Bearish OB Creation
    // -------------------------------
    // Check if we should create a OB. Also check if we haven't created an OB in the last 5 candles.
    if obcreatedbear and (crossindexbear - crossindexbear[1]) > 5 then
    lastgreen = 0
    // Loop through the most recent candles and find the first GREEN (Bullish) candle. We will place our OB here.
    for i = 4 to 15
    if close[i] > open[i] then
    lastgreen = i
    //populate the arrays of order block to draw them later
    $left[plot]= barindex[lastgreen]
    $top[plot]=high[lastgreen]
    $bottom[plot]=low[lastgreen]
    $right[plot]=barindex[lastgreen]
    plot=plot+1 //increase the array column for next data
    break
    endif
    next
    endif
    // -------------------------------
    // Bullish OB Creation
    // -------------------------------
    // Check if we should create a OB, Also check if we haven't created an OB in the last 5 candles.
    if obcreatedbull and (crossindexbull - crossindexbull[1]) > 5 then
    lastred = 0
    // Loop through the most recent candles and find the first RED (Beaarish) candle. We will place our OB here.
    for ibull = 4 to 15
    if close[ibull] < open[ibull] then
    lastred = ibull
    //populate the arrays of order block to draw them later
    $leftbull[plotbull]= barindex[lastred]
    $topbull[plotbull]=high[lastred]
    $bottombull[plotbull]=low[lastred]
    $rightbull[plotbull]=barindex[lastred]
    plotbull=plotbull+1 //increase the array column for next data
    break
    endif
    next
    endif
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //      Cleanup
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //Clean up Bearish OB boxes
    if plot>0 then
    for j = plot-1 downto 0 //0 to plot-1
    // If the two last closes are above the high of the bearish OB - Remove the OB
    if $left[j]>0 then //check if the zone still exist
    itop = $top[j]
    breakout = summation[max(1,barindex-$left[j])](OBBearMitigation>itop)>=1 //2
    if breakout then
    $left[j]=0
    endif
    endif
    next
    endif
    //Clean up Bullish OB boxes
    if plotbull>0 then
    for jbull = plotbull-1 downto 0 //0 to plotbull-1
    // If the two last closes are below the low of the bullish OB - Remove the OB
    if $leftbull[jbull]>0 then //check if the zone still exist
    ibot = $bottombull[jbull]
    breakoutbull = summation[max(1,barindex-$leftbull[jbull])](OBBullMitigation<ibot)>=1
    if breakoutbull then
    $leftbull[jbull]=0
    endif
    endif
    next
    endif
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //     Drawing
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    if islastbarupdate then
    //plot the Bearish boxes
    if  plot>0 then //islastbarupdate and
    for j = plot-1 downto 0 //0 to plot-1
    if $left[j]>0 then
    //drawrectangle($left[j],$top[j],barindex,$bottom[max(0,j)]) coloured("red",Transparency)bordercolor("red",Transparency)
    if barindex>$left[max(0,j)] and high > $bottom[max(0,j)] and high<$top[max(0,j)] then
    signal=-1
    else
    signal=0
    endif
    endif
    next
    endif
    //plot the Bullish boxes
    if  plotbull>0 then //islastbarupdate and
    for jbull = plotbull-1 downto 0 //0 to plotbull-1
    if $leftbull[jbull]>0 then
    if barindex>$leftbull[max(0,jbull)] and low < $topbull[max(0,jbull)] and low>$bottombull[max(0,jbull)] then
    signalbull=1
    else
    signalbull=0
    endif
    endif
    next
    endif
    endif
    
    screener[signal or signalbull](signal as "SignalBear",signalbull as "SignalBull")
Viewing 2 posts - 1 through 2 (of 2 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

Création d’un screener ob block


ProScreener : Scanners de Marché & Détection

New Reply
Author
author-avatar
Sofitech @sofitech Participant
Summary

This topic contains 1 reply,
has 2 voices, and was last updated by Iván GonzálezIván González
2 years, 3 months ago.

Topic Details
Forum: ProScreener : Scanners de Marché & Détection
Language: French
Started: 06/10/2024
Status: Active
Attachments: No files
ProRealCode ProRealCode
Loading...