Optimising the Period on a Standard Deviation Indicator

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

    I have an Average Filter Regression indicator (using #43 “Reference Fast Trend Line” from the list of 66 filters) that is part of the rules for entry of an auto system I’m testing. The price must cross over the 30 period filter for a buy/sell signal.

    https://www.prorealcode.com/prorealtime-indicators/average-filter-regression/

    When I optimised the period (30) and changed it to “a” and added it as a variable I get the same results? (Pls see screenshot).
    This reminds me of the initial problems optimising the Kase Dev Stop but for the life of me I can’t figure out what the reason is in this case.
    For example if I optimise the period for the std deviation indicator (also a condition of entry, in that the std dev must be > the 30 period exponential mov average applied to the std dev indicator), there is no problem and lots of different profits produced.

    indicator1 = CALL "Average Filter Regression"[43, a](close)

    Any ideas what I’m doing wrong? (I always assume “user error” with PRT because it’s far more versatile than I am!)

    Filter-43-Period-Opt.png Filter-43-Period-Opt.png OPT-fail.png OPT-fail.png
    #94528 quote
    Bard
    Participant
    Master

    Ps/ The indicators’ Period setting is already striked out: Pls see screenshot.

    Ave-Filter-Regression-Variables.png Ave-Filter-Regression-Variables.png
    #94542 quote
    GraHal
    Participant
    Master

    You shared the code in a screen shot, if you post the .itf file also then I would run it on my Platform to see if I replicate your Issue and maybe spot a reason / fix?

    And / or post the code on the screen (to enable copy, paste, run ) then others may spot the Issue by checking the code (easier than a screen shot of the code)?

    Bard thanked this post
    #94679 quote
    Bard
    Participant
    Master

    Cheers @GraHal, Here it is:

    // Definition of code parameters
    DEFPARAM CumulateOrders = False // Cumulating positions deactivated
    
    // Conditions to enter long positions
    indicator1 = CALL "Average Filter Regression"[43, a](close)
    c1 = (close CROSSES OVER indicator1)
    indicator2 = 25*BollingerBandWidth[21](close)
    indicator3 = CALL "Average Filter Regression"[9, 30](25*BollingerBandWidth[21](close))
    c2 = (indicator2 > indicator3) 
    
    IF c1 AND c2 THEN
    BUY 10 PERPOINT AT MARKET
    ENDIF
    
    // Conditions to exit long positions
    ignored, indicator4, ignored, ignored, ignored, ignored = CALL "Kase Dev Stop Lisse+SAR+4.5/6"
    c3 = (close CROSSES UNDER indicator4)
    
    IF c3 THEN
    SELL AT MARKET
    ENDIF
    
    // Conditions to enter short positions
    indicator5 = CALL "Average Filter Regression"[43, a](close)
    c4 = (close CROSSES UNDER indicator5)
    indicator6 = 25*BollingerBandWidth[21](close)
    indicator7 = CALL "Average Filter Regression"[9, 30](25*BollingerBandWidth[21](close))
    c5 = (indicator6 > indicator7)
    
    IF c4 AND c5 THEN
    SELLSHORT 10 PERPOINT AT MARKET
    ENDIF
    
    // Conditions to exit short positions
    ignored, indicator8, ignored, ignored, ignored, ignored = CALL "Kase Dev Stop Lisse+SAR+4.5/6"
    c6 = (close CROSSES OVER indicator8)
    
    IF c6 THEN
    EXITSHORT AT MARKET
    ENDIF
    
    //Voici le code en version SAR : plus WITH DEV STOP 4.5 + 6.0
    
    //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 Blue
    r=0
    g=191
    b=255
    else
    ind0=dev6
    ind1=dev7
    ind2=dev8
    ind3=dev9
    ind4=dev10
    ind5=dev11
    //k=-1 Orange
    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"
    
    
    //NO CHANGE OF COLOUR FOR TREND CHANGE return ind0 coloured(2, 118, 253) style(dottedline,2) as "Warning Line" ,ind1 coloured(2, 118, 253) style(dottedline,2) as "Dev Stop 1.0", ind2 coloured(2, 118, 253) style(dottedline,2) as "Dev Stop 2.2", ind3 coloured(2, 118, 253) style(line,2) as "Dev Stop 3.6", ind4 coloured(2, 118, 253) style(dottedline,2) as "Dev Stop 4.5", ind5 coloured(2, 118, 253) style(line,2) as "Dev Stop 6.0"
    

    I was using filter #43 from here: https://www.prorealcode.com/prorealtime-indicators/average-filter-regression/

    for first part of the Buy signal rules. The other part is the std deviation condition:
    Indicator 2 is a 21 period Std Dev indicator. Buy signal if the std dev is > than a 30 period average (#9 from the list of 66 filters) to avoid flat markets.

    Ps/ You should check out how the Kase Dev Stop rides some of those trends without stopping you out (regardless of entry type). 👌

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

Optimising the Period on a Standard Deviation Indicator


ProOrder: Automated Strategies & Backtesting

New Reply
Author
author-avatar
Bard @brad Participant
Summary

This topic contains 3 replies,
has 2 voices, and was last updated by Bard
6 years, 11 months ago.

Topic Details
Forum: ProOrder: Automated Strategies & Backtesting
Language: English
Started: 03/23/2019
Status: Active
Attachments: 3 files
Logo Logo
Loading...