Breakeven code modification

Viewing 4 posts - 1 through 4 (of 4 total)
  • Author
    Posts
  • #63076 quote
    Juan Salas
    Participant
    Master

    Hi all,

    I have been playing with the standard breakeven trailing from Prorealcode, and I have been creating different levels to be more accurate and take better advantage of the positive side of the operation. I noticed that the breakeven was at 20 pips, but the operation moved to 80 pips to later close in 20pips.  It is pretty much the same than Nicolas’ MFE trailing, but just changing the names 🙂

    In any case, something is missing since I noticed that it does not work as it supposes. Probably, something is missing, so I am posting the code below an attaching a pic of an example, with the hope that anyone will identify the mistake.

    // TRAILING ////////////////////////////////////////////////////////////////////////////////////////////////////////
    //how much pips/points in gain to activate the breakeven function
    startbreakeven2 = 5
    startbreakeven3 = 10
    startbreakeven4 = 15
    startbreakeven5 = 20
    startbreakeven6 = 25
    startbreakeven7 = 30
    startbreakeven8 = 40
    startbreakeven9 = 50
    startbreakeven10 = 60
    startbreakeven11 = 80
    startbreakeven12 = 100
    
    //how much pips/points to keep in profit above of below our entry price when the breakeven is activated
    pointstokeep2 = 4
    pointstokeep3 = 8
    pointstokeep4 = 12
    pointstokeep5 = 16
    pointstokeep6 = 20
    pointstokeep7 = 24
    pointstokeep8 = 30
    pointstokeep9 = 40
    pointstokeep10 = 48
    pointstokeep11 = 60
    pointstokeep12 = 80
    
    
    //reset the breakevenLevel when no trade are on market
    IF NOT ONMARKET THEN
    breakevenlevel=0
    ENDIF
    
    // LONGs
    // test if the price have moved favourably of "startBreakeven" points already
    //IF LONGONMARKET AND close-tradeprice(1)<startbreakeven0*pipsize AND close-tradeprice(1)<startbreakeven1*pipsize THEN
    ////calculate the breakevenLevel
    //breakevenlevel = tradeprice(1)-pointstokeep0*pipsize
    //ENDIF
    
    // test if the price have moved favourably of "startBreakeven" points already
    //IF LONGONMARKET AND close-tradeprice(1)>=startbreakeven1*pipsize AND close-tradeprice(1)<startbreakeven2*pipsize THEN
    ////calculate the breakevenLevel
    //breakevenlevel = tradeprice(1)+pointstokeep1*pipsize
    //ENDIF
    // test if the price have moved favourably of "startBreakeven" points already
    IF LONGONMARKET AND close-tradeprice(1)>=startbreakeven2*pipsize AND close-tradeprice(1)<startbreakeven3*pipsize THEN
    //calculate the breakevenLevel
    breakevenlevel = tradeprice(1)+pointstokeep2*pipsize
    ENDIF
    // test if the price have moved favourably of "startBreakeven" points already
    IF LONGONMARKET AND close-tradeprice(1)>=startbreakeven3*pipsize AND close-tradeprice(1)<startbreakeven4*pipsize THEN
    //calculate the breakevenLevel
    breakevenlevel = tradeprice(1)+pointstokeep3*pipsize
    ENDIF
    // test if the price have moved favourably of "startBreakeven" points already
    IF LONGONMARKET AND close-tradeprice(1)>=startbreakeven4*pipsize AND close-tradeprice(1)<startbreakeven5*pipsize THEN
    //calculate the breakevenLevel
    breakevenlevel = tradeprice(1)+pointstokeep4*pipsize
    ENDIF
    // test if the price have moved favourably of "startBreakeven" points already
    IF LONGONMARKET AND close-tradeprice(1)>=startbreakeven5*pipsize AND close-tradeprice(1)<startbreakeven6*pipsize THEN
    //calculate the breakevenLevel
    breakevenlevel = tradeprice(1)+pointstokeep5*pipsize
    ENDIF
    // test if the price have moved favourably of "startBreakeven" points already
    IF LONGONMARKET AND close-tradeprice(1)>=startbreakeven6*pipsize AND close-tradeprice(1)<startbreakeven7*pipsize THEN
    //calculate the breakevenLevel
    breakevenlevel = tradeprice(1)+pointstokeep6*pipsize
    ENDIF
    // test if the price have moved favourably of "startBreakeven" points already
    IF LONGONMARKET AND close-tradeprice(1)>=startbreakeven7*pipsize AND close-tradeprice(1)<startbreakeven8*pipsize THEN
    //calculate the breakevenLevel
    breakevenlevel = tradeprice(1)+pointstokeep7*pipsize
    ENDIF
    // test if the price have moved favourably of "startBreakeven" points already
    IF LONGONMARKET AND close-tradeprice(1)>=startbreakeven8*pipsize AND close-tradeprice(1)<startbreakeven9*pipsize THEN
    //calculate the breakevenLevel
    breakevenlevel = tradeprice(1)+pointstokeep8*pipsize
    ENDIF
    // test if the price have moved favourably of "startBreakeven" points already
    IF LONGONMARKET AND close-tradeprice(1)>=startbreakeven9*pipsize AND close-tradeprice(1)<startbreakeven10*pipsize THEN
    //calculate the breakevenLevel
    breakevenlevel = tradeprice(1)+pointstokeep9*pipsize
    ENDIF
    // test if the price have moved favourably of "startBreakeven" points already
    IF LONGONMARKET AND close-tradeprice(1)>=startbreakeven10*pipsize AND close-tradeprice(1)<startbreakeven11*pipsize THEN
    //calculate the breakevenLevel
    breakevenlevel = tradeprice(1)+pointstokeep10*pipsize
    ENDIF
    // test if the price have moved favourably of "startBreakeven" points already
    IF LONGONMARKET AND close-tradeprice(1)>=startbreakeven11*pipsize AND close-tradeprice(1)<startbreakeven12*pipsize THEN
    //calculate the breakevenLevel
    breakevenlevel = tradeprice(1)+pointstokeep11*pipsize
    ENDIF
    // test if the price have moved favourably of "startBreakeven" points already
    IF LONGONMARKET AND close-tradeprice(1)>=startbreakeven12*pipsize THEN
    //calculate the breakevenLevel
    breakevenlevel = tradeprice(1)+pointstokeep12*pipsize
    ENDIF
    
    
    
    
    
    // SHORTs
    // test if the price have moved favourably of "startBreakeven" points already
    //IF SHORTONMARKET AND tradeprice(1)-close<startbreakeven0*pipsize AND tradeprice(1)-close<startbreakeven1*pipsize THEN
    ////calculate the breakevenLevel
    //breakevenlevel = tradeprice(1)+pointstokeep0*pipsize
    //ENDIF
    // test if the price have moved favourably of "startBreakeven" points already
    //IF SHORTONMARKET AND tradeprice(1)-close>=startbreakeven1*pipsize AND tradeprice(1)-close<startbreakeven2*pipsize THEN
    ////calculate the breakevenLevel
    //breakevenlevel = tradeprice(1)-pointstokeep1*pipsize
    //ENDIF
    // test if the price have moved favourably of "startBreakeven" points already
    IF SHORTONMARKET AND tradeprice(1)-close>=startbreakeven2*pipsize AND tradeprice(1)-close<startbreakeven3*pipsize THEN
    //calculate the breakevenLevel
    breakevenlevel = tradeprice(1)-pointstokeep2*pipsize
    ENDIF
    // test if the price have moved favourably of "startBreakeven" points already
    IF SHORTONMARKET AND tradeprice(1)-close>=startbreakeven3*pipsize AND tradeprice(1)-close<startbreakeven4*pipsize THEN
    //calculate the breakevenLevel
    breakevenlevel = tradeprice(1)-pointstokeep3*pipsize
    ENDIF
    // test if the price have moved favourably of "startBreakeven" points already
    IF SHORTONMARKET AND tradeprice(1)-close>=startbreakeven4*pipsize AND tradeprice(1)-close<startbreakeven5*pipsize THEN
    //calculate the breakevenLevel
    breakevenlevel = tradeprice(1)+pointstokeep4*pipsize
    ENDIF
    // test if the price have moved favourably of "startBreakeven" points already
    IF SHORTONMARKET AND tradeprice(1)-close>=startbreakeven5*pipsize AND tradeprice(1)-close<startbreakeven6*pipsize THEN
    //calculate the breakevenLevel
    breakevenlevel = tradeprice(1)-pointstokeep5*pipsize
    ENDIF
    // test if the price have moved favourably of "startBreakeven" points already
    IF SHORTONMARKET AND tradeprice(1)-close>=startbreakeven6*pipsize AND tradeprice(1)-close<startbreakeven7*pipsize THEN
    //calculate the breakevenLevel
    breakevenlevel = tradeprice(1)-pointstokeep6*pipsize
    ENDIF
    // test if the price have moved favourably of "startBreakeven" points already
    IF SHORTONMARKET AND tradeprice(1)-close>=startbreakeven7*pipsize AND tradeprice(1)-close<startbreakeven8*pipsize THEN
    //calculate the breakevenLevel
    breakevenlevel = tradeprice(1)-pointstokeep7*pipsize
    ENDIF
    // test if the price have moved favourably of "startBreakeven" points already
    IF SHORTONMARKET AND tradeprice(1)-close>=startbreakeven8*pipsize AND tradeprice(1)-close<startbreakeven9*pipsize THEN
    //calculate the breakevenLevel
    breakevenlevel = tradeprice(1)-pointstokeep8*pipsize
    ENDIF
    // test if the price have moved favourably of "startBreakeven" points already
    IF SHORTONMARKET AND tradeprice(1)-close>=startbreakeven9*pipsize AND tradeprice(1)-close<startbreakeven10*pipsize THEN
    //calculate the breakevenLevel
    breakevenlevel = tradeprice(1)-pointstokeep9*pipsize
    ENDIF
    // test if the price have moved favourably of "startBreakeven" points already
    IF SHORTONMARKET AND tradeprice(1)-close>=startbreakeven10*pipsize AND tradeprice(1)-close<startbreakeven11*pipsize THEN
    //calculate the breakevenLevel
    breakevenlevel = tradeprice(1)-pointstokeep10*pipsize
    ENDIF
    // test if the price have moved favourably of "startBreakeven" points already
    IF SHORTONMARKET AND tradeprice(1)-close>=startbreakeven11*pipsize AND tradeprice(1)-close<startbreakeven12*pipsize THEN
    //calculate the breakevenLevel
    breakevenlevel = tradeprice(1)-pointstokeep11*pipsize
    ENDIF
    // test if the price have moved favourably of "startBreakeven" points already
    IF SHORTONMARKET AND tradeprice(1)-close>=startbreakeven12*pipsize THEN
    //calculate the breakevenLevel
    breakevenlevel = tradeprice(1)-pointstokeep12*pipsize
    ENDIF
    
    //place the new stop orders on market at breakevenLevel
    IF breakevenlevel>0 THEN
    SELL AT breakevenlevel STOP
    EXITSHORT AT breakevenlevel STOP
    ENDIF
    

    I am also attaching a pic of an example that is driving me crazy. Short operation and the close of the candle reaches 16,8 pips, which it should activate the STOP order in tradeprice(1)-12pipsize. Something is missing and I don’t see it because it touches the SL=30.

    Thanks, good trading and profitable week,

    Juan

    Screen-Shot-2018-02-19-at-00.31.49.png Screen-Shot-2018-02-19-at-00.31.49.png
    #63078 quote
    Juan Salas
    Participant
    Master

    Correction: When I said the close of the candle reaches 16,8 pips, I meant trade price(1)-close=16,8 pips. Once the operation opens in the middle of the candle  until the close of the short candle=16,8 pips. It should activate the breakevenlevel with pointstokeep4.

    #144303 quote
    ginko
    Participant
    Average

    Long time post, and you might already know the answer as you are a master now…. At least you can confirm/infirm whether I am correct in my findings.

    Personally, I tend to use the Method B below as long as I can, and Method A as an alternate if I cannot use the B one.

    Anyway, looking into how PRT works I think that any position is taken at the close of the current bar (for EXITSTOP / SELL), and not while you are in the current candle (evaluation of IF breakevenlevel>0 THEN…).

    So what you what to do is

    A/ either add he other way is use multiple time frames (TF), a  TF  to control your entries (as you sue it on your graph), and one TF way shorter to control your exits, the difficulty being that :

    A1/ Your longest timeframe need to be multiple of your shorter one.

    A2/ The display of your graph needs to be in the shortest timeframe.

    That is probably the easiest solution for a custom trailing but cannot avoid some high volatility bars (anyway, even a STOP order would not ensure you sell at the precise exit point if there is some sudden peak in volatility).

    B/ If doable: Define a stop point before entering the next candle (that is calculating the exit point in advance for the next bar, as the current one completes, it is also know at as a reverse engineering of an indicator (for example, it is very easy to set for a normal moving average, by it can become more complicated for some indicators like exponential moving average RSI, MACD, and so on).

    #144306 quote
    ginko
    Participant
    Average

    Typo “(as you sue it on your graph)”, should be “(as you use on your graph)”,

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

Breakeven code modification


ProOrder: Automated Strategies & Backtesting

New Reply
Author
author-avatar
Juan Salas @juan-salas Participant
Summary

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

Topic Details
Forum: ProOrder: Automated Strategies & Backtesting
Language: English
Started: 02/19/2018
Status: Active
Attachments: 1 files
Logo Logo
Loading...