Why is this Indicator Double Plotting ATR Lines ?

Viewing 4 posts - 1 through 4 (of 4 total)
  • Author
    Posts
  • #76052 quote
    Bard
    Participant
    Master

    I was trying to label the orange and blue indicator lines “Short Dev Stop” and “Long Dev Stop” so I could create a strategy with how the price interacts with either crossing a long (blue) or short (orange) SAR pattern. I have done all manner of relabelling but cannot get it to simply display orange Dev Stops labelled as Short Dev Stops and the blue Dev Stops as Long Dev Stops?

    Why is this indicator double plotting?

    The Original Code (which works but has no long / short labelling protocol (only Dev Stop 1.0, Dev Stop 2.2 etc) when using assisted creation)

    //Settings
    n=30
    
    p1=1.0
    p2=2.2
    p3=3.6
    p4=4.5
    p5=6.0
    
    difference=0
    Hg=highest[2](high)
    Lw=lowest[2](low)
    DTR=max(max(Hg-Lw,abs(Hg-close[2])),abs(Lw-close[2]))
    aDTR=average[n](DTR)
    for i=0 to n-1 do
    difference=difference+square(DTR[i]-aDTR) 
    next
    difference=difference/n
    sdev=sqrt(difference)
    
    dev0=close-aDTR
    dev1=close-aDTR-p1*sdev
    dev2=close-aDTR-p2*sdev
    dev3=close-aDTR-p3*sdev
    dev4=close-aDTR-p4*sdev
    dev5=close-aDTR-p5*sdev
    
    if dev0<dev0[1] and close>dev5[1] then
    dev0=dev0[1]
    endif
    if dev1<dev1[1] and close>dev5[1] then
    dev1=dev1[1]
    endif
    if dev2<dev2[1] and close>dev5[1] then
    dev2=dev2[1]
    endif
    if dev3<dev3[1] and close>dev5[1] then
    dev3=dev3[1]
    endif
    if dev4<dev4[1] and close>dev5[1] then
    dev4=dev4[1]
    endif
    if dev5<dev5[1] and close>dev5[1] then
    dev5=dev5[1]
    endif
    
    dev6=close+aDTR
    dev7=close+aDTR+p1*sdev
    dev8=close+aDTR+p2*sdev
    dev9=close+aDTR+p3*sdev
    dev10=close+aDTR+p4*sdev
    dev11=close+aDTR+p5*sdev
    
    if dev6>dev6[1] and close<dev11[1] then
    dev6=dev6[1]
    endif
    if dev7>dev7[1] and close<dev11[1] then
    dev7=dev7[1]
    endif
    if dev8>dev8[1] and close<dev11[1] then
    dev8=dev8[1]
    endif
    if dev9>dev9[1] and close<dev11[1] then
    dev9=dev9[1]
    endif
    if dev10>dev10[1] and close<dev11[1] then
    dev10=dev10[1]
    endif
    if dev11>dev11[1] and close<dev11[1] then
    dev11=dev11[1]
    endif
    
    if close>dev11[1] then
    flag=-1
    else
    if close<dev5[1] then
    flag=1
    endif
    endif
    
    if flag=-1 then
    ind0=dev0
    ind1=dev1
    ind2=dev2
    ind3=dev3
    ind4=dev4
    ind5=dev5
    //k=1
    r=0
    g=191
    b=255
    else
    ind0=dev6
    ind1=dev7
    ind2=dev8
    ind3=dev9
    ind4=dev10
    ind5=dev11
    //k=-1
    r=255
    g=128
    b=0
    endif
    
    //ORIG return ind0 COLOURED BY k,ind1 coloured by k,ind2 coloured by k,ind3 coloured by k//
    
    //ORANGE AND LIGHT BLUE
    return ind0 coloured(r,g,b) style(dottedline,2) as "Warning Line", ind1 coloured(r,g,b) style(dottedline,2) as "Dev Stop 1.0", ind2 coloured(r,g,b) style(dottedline,2) as "Dev Stop 2.2", ind3 coloured(r,g,b) style(line,2) as "Dev Stop 3.6", ind4 coloured(r,g,b) style(dottedline,2) as "Dev Stop 4.5", ind5 coloured(r,g,b) style(line,2) as "Dev Stop 6.0"
    

    And one of upteen attempts to get it to work – including taking the “else” out after the code: r=0, g=191, b=255 and relabelling dev0 etc longdev0, to creating a unique set on ind0 etc to ind5 and making it in ind6 (instead of ind0) in the second set of “ind” values.

    Double plotting code: Incorrect double plotting of Dev Stops (orange and blue lines labelled as both long and short )

    //Settings
    n=30
    
    p1=1.0
    p2=2.2
    p3=3.6
    p4=4.5
    p5=6.0
    
    difference=0
    Hg=highest[2](high)
    Lw=lowest[2](low)
    DTR=max(max(Hg-Lw,abs(Hg-close[2])),abs(Lw-close[2]))
    aDTR=average[n](DTR)
    for i=0 to n-1 do
    difference=difference+square(DTR[i]-aDTR)
    next
    difference=difference/n
    sdev=sqrt(difference)
    
    dev0=close-aDTR
    dev1=close-aDTR-p1*sdev
    dev2=close-aDTR-p2*sdev
    dev3=close-aDTR-p3*sdev
    dev4=close-aDTR-p4*sdev
    dev5=close-aDTR-p5*sdev
    
    if dev0<dev0[1] and close>dev5[1] then
    dev0=dev0[1]
    endif
    if dev1<dev1[1] and close>dev5[1] then
    dev1=dev1[1]
    endif
    if dev2<dev2[1] and close>dev5[1] then
    dev2=dev2[1]
    endif
    if dev3<dev3[1] and close>dev5[1] then
    dev3=dev3[1]
    endif
    if dev4<dev4[1] and close>dev5[1] then
    dev4=dev4[1]
    endif
    if dev5<dev5[1] and close>dev5[1] then
    dev5=dev5[1]
    endif
    
    
    
    dev6=close+aDTR
    dev7=close+aDTR+p1*sdev
    dev8=close+aDTR+p2*sdev
    dev9=close+aDTR+p3*sdev
    dev10=close+aDTR+p4*sdev
    dev11=close+aDTR+p5*sdev
    
    if dev6>dev6[1] and close<dev11[1] then
    dev6=dev6[1]
    endif
    if dev7>dev7[1] and close<dev11[1] then
    dev7=dev7[1]
    endif
    if dev8>dev8[1] and close<dev11[1] then
    dev8=dev8[1]
    endif
    if dev9>dev9[1] and close<dev11[1] then
    dev9=dev9[1]
    endif
    if dev10>dev10[1] and close<dev11[1] then
    dev10=dev10[1]
    endif
    if dev11>dev11[1] and close<dev11[1] then
    dev11=dev11[1]
    endif
    
    if close>dev11[1] then
    
    ind0=dev0
    ind1=dev1
    ind2=dev2
    ind3=dev3
    ind4=dev4
    ind5=dev5
    
    r=0
    g=191
    b=255
    endif
    
    if close<dev5[1] then
    
    ind6=dev6
    ind7=dev7
    ind8=dev8
    ind9=dev9
    ind10=dev10
    ind11=dev11
    
    r=255
    g=128
    b=0
    endif
    
    //ORANGE AND LIGHT BLUE
    return ind0 coloured(r,g,b) style(dottedline,2) as "Long Warning Line", ind1 coloured(r,g,b) style(dottedline,2) as "Long Dev Stop 1.0", ind2 coloured(r,g,b) style(dottedline,2) as "Long Dev Stop 2.2", ind3 coloured(r,g,b) style(line,2) as "Long Dev Stop 3.6", ind4 coloured(r,g,b) style(dottedline,2) as "Long Dev Stop 4.5", ind5 coloured(r,g,b) style(line,2) as "Long Dev Stop 6.0"    , ind6 coloured(r,g,b) style(dottedline,2) as "Short Warning Line", ind7 coloured(r,g,b) style(dottedline,2) as "Short Dev Stop 1.0", ind8 coloured(r,g,b) style(dottedline,2) as "Short Dev Stop 2.2", ind9 coloured(r,g,b) style(line,2) as "Short Dev Stop 3.6", ind10 coloured(r,g,b) style(dottedline,2) as "Short Dev Stop 4.5", ind11 coloured(r,g,b) style(line,2) as "Short Dev Stop 6.0"

    This is probably really, really simple for a coder…. lol…

    More about the Kase ATR Dev Stop here: https://www.prorealcode.com/prorealtime-indicators/kase-dev-stop-v3/

    Thanks in advance,
    Cheers
    Bard

    #76072 quote
    robertogozzi
    Moderator
    Master

    It does not duplicate lines, it’s you who DUPLICATED them at lines 91-96 and then returning all of them!

    The main issue is that their value is retained between bars, so there will always be 12 statuses to be displayed!

    If PRT supported alphanumeric variables it would be simple to set different TEXT to the original 6 variables (ind0-ind5) to tell SHORT from LONG data thus returning only 6 variables for 12 statuses, but this is not the case, so if you don’t want those many lines well… you have to back to the original code!

    Also, it would be great if you could use different RETURNs from within an IF…ENDIF block, but this is not the case, either!

    Only colours can help tell the difference with just the same label!

    Bard thanked this post
    #76077 quote
    Bard
    Participant
    Master

    Thanks @Robertogozzi,
    Duplication/Bars 91-96. Yes I know! You should’ve seen all the ways I tried to relabel those variables…
    Why doesn’t PRT support alphanumerics?

    Also do you know how you would optimise the Kase Dev Stop when using it in a system? It’s not like I am able to optimise values eg: between -1 and +1 by increments of 0.1 on a custom indicator like the Ehlers Supersmoother Oscillator (it’s on this forum, and -0.8 cross-overs to buy and + 0.8 cross-unders to sell are good values btw), because the Dev Stops are on the price chart and are  “fluid” in their ATR values? I know it can be done as a user on this forum did mention they’d optimised values and found that Dev Stop values of >4 and <5 worked best.

    Thanks again for you help,

    Best
    Bard

    #76079 quote
    robertogozzi
    Moderator
    Master

    Support for alphanumeric data would make the system much more difficult to manage, since they should add text support (parsing, concatenation, contraction, deletion, replacement) which would involve “garbage collection”, i.e. manage defragmentation of memory…. a difficult and time consuming process. I think these are the main reasons, but hopefully this might change in the years to come.

    As for Kase Dev Stop, sorry but I never dealt with it so I can’t be of help!

    Bard thanked this post
Viewing 4 posts - 1 through 4 (of 4 total)
  • You must be logged in to reply to this topic.

Why is this Indicator Double Plotting ATR Lines ?


ProBuilder: Indicators & Custom Tools

New Reply
Author
author-avatar
Bard @brad Participant
Summary

This topic contains 3 replies,
has 2 voices, and was last updated by robertogozzi
7 years, 7 months ago.

Topic Details
Forum: ProBuilder: Indicators & Custom Tools
Language: English
Started: 07/15/2018
Status: Active
Attachments: 1 files
Logo Logo
Loading...