Please – Translation of Order Blocks from TV

Viewing 7 posts - 16 through 22 (of 22 total)
  • Author
    Posts
  • #200347 quote
    Khaled
    Participant
    Veteran

    Thanks a million Nicols. I hope it will be helpful for a max of people here.

    #200353 quote
    Nicolas
    Keymaster
    Master

    Would be great to post the final code with both sides! 😉

    #200355 quote
    Khaled
    Participant
    Veteran

    Absolutely. I’ll do hopefully this weekend. And again thank you Nicolas!

    #200472 quote
    Khaled
    Participant
    Veteran

    Dear Nicols,

    Thanks to you, we are very close to the original version of TradingView. I made the following modifications:

    1. added the bullish part
    2. Line 6 OBXXXMitigation changed from close to close[1] as per original code
    3. Line 50 cleanup, I changed “j = 0 to plot1″ with “plot-1 downto 0”
    4. Line 54 changed “2” with “1”
    5. Line 64 drawing, I changed “j = 0 to plot1 ” with “plot-1 downto 0”

    The new code as follows:

    // 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
    
    sens = 28
    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 //2
    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[j]) coloured("red",30)bordercolor("red",30) //bordercolor("green",85) //coloured(80,108,211,50) bordercolor(80,108,211,50)
    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",30)bordercolor("green",30)//bordercolor("red",85) //coloured(100,196,172,50) bordercolor(100,196,172,50)
    //drawrectangle(barindex, $bottombull[jbull],$leftbull[jbull],$topbull[jbull]) coloured("red",85)//bordercolor("red",85) //coloured(100,196,172,50) bordercolor(100,196,172,50)
    endif
    next
    endif
    endif
    
    return

    Below the test on PRT (IB) and TV  on S&P500 Cash Daily and S&P500 Futures 09 H4. We have the same recent order blocks, but some of them have not been deleted on PRT.

    Thank you very much for your valuable help.

    Do you want to publish it in the library or do you want me to do it?

    denmar, fifi743 and PLermite thanked this post
    #200598 quote
    Nicolas
    Keymaster
    Master

    Thanks for your effort completing the code. Yes, you can push it into the scripts library, many thanks. Let me do once you have done so please 🙂

    Some zones are not erased because price has not breached them right? In the original code there was a switch to check Highs/Lows or just Closes, the differences might be located in this particular condition?

    Khaled thanked this post
    #200625 quote
    Khaled
    Participant
    Veteran

    Thank you Nicolas. I posted it on the Liberary. However, I couldn’t add the itf file. The “Add Attachments” button doesn’t work.

    For the Block Orders which are not deleted, I think they are minimal in number and don’t prevent the user to see the big picture: Zones where he needs to pay attention. I’m personnaly happy with the end result.

    I hope we will have time and energy to convert the Polynomial Regression code that I shared in a seperate post https://www.prorealcode.com/topic/polynomial-regression-indicator/#post-199892 with multiple loops and Arrays, which by the way I’m using on TradingView as my main entry filter. This would really be a plus for the PRC/PRT Community and avoid the back and forth PRT – TradingView.

    A Big Thank you Nicolas.

    #202991 quote
    foxxcrypto
    Participant
    Junior

    Hi Nicolas,

    i tried to run the code but it does not draw anything, do you have any ideas, i have version v11.1 – 1.8.0_202

    thank you

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

Please – Translation of Order Blocks from TV


ProBuilder: Indicators & Custom Tools

New Reply
Author
author-avatar
Khaled @khaled Participant
Summary

This topic contains 21 replies,
has 5 voices, and was last updated by foxxcrypto
3 years, 3 months ago.

Topic Details
Forum: ProBuilder: Indicators & Custom Tools
Language: English
Started: 08/22/2022
Status: Active
Attachments: 6 files
Logo Logo
Loading...