Breakeven code modification
Forums › ProRealTime English forum › ProOrder support › Breakeven code modification
- This topic has 3 replies, 2 voices, and was last updated 3 years ago by ginko.
-
-
02/19/2018 at 12:45 AM #63076
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.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177// TRAILING //////////////////////////////////////////////////////////////////////////////////////////////////////////how much pips/points in gain to activate the breakeven functionstartbreakeven2 = 5startbreakeven3 = 10startbreakeven4 = 15startbreakeven5 = 20startbreakeven6 = 25startbreakeven7 = 30startbreakeven8 = 40startbreakeven9 = 50startbreakeven10 = 60startbreakeven11 = 80startbreakeven12 = 100//how much pips/points to keep in profit above of below our entry price when the breakeven is activatedpointstokeep2 = 4pointstokeep3 = 8pointstokeep4 = 12pointstokeep5 = 16pointstokeep6 = 20pointstokeep7 = 24pointstokeep8 = 30pointstokeep9 = 40pointstokeep10 = 48pointstokeep11 = 60pointstokeep12 = 80//reset the breakevenLevel when no trade are on marketIF NOT ONMARKET THENbreakevenlevel=0ENDIF// 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 alreadyIF LONGONMARKET AND close-tradeprice(1)>=startbreakeven2*pipsize AND close-tradeprice(1)<startbreakeven3*pipsize THEN//calculate the breakevenLevelbreakevenlevel = tradeprice(1)+pointstokeep2*pipsizeENDIF// test if the price have moved favourably of "startBreakeven" points alreadyIF LONGONMARKET AND close-tradeprice(1)>=startbreakeven3*pipsize AND close-tradeprice(1)<startbreakeven4*pipsize THEN//calculate the breakevenLevelbreakevenlevel = tradeprice(1)+pointstokeep3*pipsizeENDIF// test if the price have moved favourably of "startBreakeven" points alreadyIF LONGONMARKET AND close-tradeprice(1)>=startbreakeven4*pipsize AND close-tradeprice(1)<startbreakeven5*pipsize THEN//calculate the breakevenLevelbreakevenlevel = tradeprice(1)+pointstokeep4*pipsizeENDIF// test if the price have moved favourably of "startBreakeven" points alreadyIF LONGONMARKET AND close-tradeprice(1)>=startbreakeven5*pipsize AND close-tradeprice(1)<startbreakeven6*pipsize THEN//calculate the breakevenLevelbreakevenlevel = tradeprice(1)+pointstokeep5*pipsizeENDIF// test if the price have moved favourably of "startBreakeven" points alreadyIF LONGONMARKET AND close-tradeprice(1)>=startbreakeven6*pipsize AND close-tradeprice(1)<startbreakeven7*pipsize THEN//calculate the breakevenLevelbreakevenlevel = tradeprice(1)+pointstokeep6*pipsizeENDIF// test if the price have moved favourably of "startBreakeven" points alreadyIF LONGONMARKET AND close-tradeprice(1)>=startbreakeven7*pipsize AND close-tradeprice(1)<startbreakeven8*pipsize THEN//calculate the breakevenLevelbreakevenlevel = tradeprice(1)+pointstokeep7*pipsizeENDIF// test if the price have moved favourably of "startBreakeven" points alreadyIF LONGONMARKET AND close-tradeprice(1)>=startbreakeven8*pipsize AND close-tradeprice(1)<startbreakeven9*pipsize THEN//calculate the breakevenLevelbreakevenlevel = tradeprice(1)+pointstokeep8*pipsizeENDIF// test if the price have moved favourably of "startBreakeven" points alreadyIF LONGONMARKET AND close-tradeprice(1)>=startbreakeven9*pipsize AND close-tradeprice(1)<startbreakeven10*pipsize THEN//calculate the breakevenLevelbreakevenlevel = tradeprice(1)+pointstokeep9*pipsizeENDIF// test if the price have moved favourably of "startBreakeven" points alreadyIF LONGONMARKET AND close-tradeprice(1)>=startbreakeven10*pipsize AND close-tradeprice(1)<startbreakeven11*pipsize THEN//calculate the breakevenLevelbreakevenlevel = tradeprice(1)+pointstokeep10*pipsizeENDIF// test if the price have moved favourably of "startBreakeven" points alreadyIF LONGONMARKET AND close-tradeprice(1)>=startbreakeven11*pipsize AND close-tradeprice(1)<startbreakeven12*pipsize THEN//calculate the breakevenLevelbreakevenlevel = tradeprice(1)+pointstokeep11*pipsizeENDIF// test if the price have moved favourably of "startBreakeven" points alreadyIF LONGONMARKET AND close-tradeprice(1)>=startbreakeven12*pipsize THEN//calculate the breakevenLevelbreakevenlevel = tradeprice(1)+pointstokeep12*pipsizeENDIF// 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 alreadyIF SHORTONMARKET AND tradeprice(1)-close>=startbreakeven2*pipsize AND tradeprice(1)-close<startbreakeven3*pipsize THEN//calculate the breakevenLevelbreakevenlevel = tradeprice(1)-pointstokeep2*pipsizeENDIF// test if the price have moved favourably of "startBreakeven" points alreadyIF SHORTONMARKET AND tradeprice(1)-close>=startbreakeven3*pipsize AND tradeprice(1)-close<startbreakeven4*pipsize THEN//calculate the breakevenLevelbreakevenlevel = tradeprice(1)-pointstokeep3*pipsizeENDIF// test if the price have moved favourably of "startBreakeven" points alreadyIF SHORTONMARKET AND tradeprice(1)-close>=startbreakeven4*pipsize AND tradeprice(1)-close<startbreakeven5*pipsize THEN//calculate the breakevenLevelbreakevenlevel = tradeprice(1)+pointstokeep4*pipsizeENDIF// test if the price have moved favourably of "startBreakeven" points alreadyIF SHORTONMARKET AND tradeprice(1)-close>=startbreakeven5*pipsize AND tradeprice(1)-close<startbreakeven6*pipsize THEN//calculate the breakevenLevelbreakevenlevel = tradeprice(1)-pointstokeep5*pipsizeENDIF// test if the price have moved favourably of "startBreakeven" points alreadyIF SHORTONMARKET AND tradeprice(1)-close>=startbreakeven6*pipsize AND tradeprice(1)-close<startbreakeven7*pipsize THEN//calculate the breakevenLevelbreakevenlevel = tradeprice(1)-pointstokeep6*pipsizeENDIF// test if the price have moved favourably of "startBreakeven" points alreadyIF SHORTONMARKET AND tradeprice(1)-close>=startbreakeven7*pipsize AND tradeprice(1)-close<startbreakeven8*pipsize THEN//calculate the breakevenLevelbreakevenlevel = tradeprice(1)-pointstokeep7*pipsizeENDIF// test if the price have moved favourably of "startBreakeven" points alreadyIF SHORTONMARKET AND tradeprice(1)-close>=startbreakeven8*pipsize AND tradeprice(1)-close<startbreakeven9*pipsize THEN//calculate the breakevenLevelbreakevenlevel = tradeprice(1)-pointstokeep8*pipsizeENDIF// test if the price have moved favourably of "startBreakeven" points alreadyIF SHORTONMARKET AND tradeprice(1)-close>=startbreakeven9*pipsize AND tradeprice(1)-close<startbreakeven10*pipsize THEN//calculate the breakevenLevelbreakevenlevel = tradeprice(1)-pointstokeep9*pipsizeENDIF// test if the price have moved favourably of "startBreakeven" points alreadyIF SHORTONMARKET AND tradeprice(1)-close>=startbreakeven10*pipsize AND tradeprice(1)-close<startbreakeven11*pipsize THEN//calculate the breakevenLevelbreakevenlevel = tradeprice(1)-pointstokeep10*pipsizeENDIF// test if the price have moved favourably of "startBreakeven" points alreadyIF SHORTONMARKET AND tradeprice(1)-close>=startbreakeven11*pipsize AND tradeprice(1)-close<startbreakeven12*pipsize THEN//calculate the breakevenLevelbreakevenlevel = tradeprice(1)-pointstokeep11*pipsizeENDIF// test if the price have moved favourably of "startBreakeven" points alreadyIF SHORTONMARKET AND tradeprice(1)-close>=startbreakeven12*pipsize THEN//calculate the breakevenLevelbreakevenlevel = tradeprice(1)-pointstokeep12*pipsizeENDIF//place the new stop orders on market at breakevenLevelIF breakevenlevel>0 THENSELL AT breakevenlevel STOPEXITSHORT AT breakevenlevel STOPENDIFI 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
02/19/2018 at 12:48 AM #63078Correction: 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.
09/15/2020 at 9:39 AM #144303Long 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).
09/15/2020 at 9:49 AM #144306 -
AuthorPosts