Comprendre : Stop suiveur ProRealTime code
- This topic has 2 replies, 2 voices, and was last updated 7 years ago by .
Viewing 3 posts - 1 through 3 (of 3 total)
Viewing 3 posts - 1 through 3 (of 3 total)
Similar topics:
Forums › ProRealTime forum Français › Support ProOrder › Comprendre : Stop suiveur ProRealTime code
Bonjour,
Je recherche à comprendre le stop suiveur sur la plateforme ProRealTime en automatique.
Suite à un précédent message, j’ai bien été orienté (et en remercie encore) vers :
http://www.prorealcode.com/blog/trading/complete-trailing-stop-code-function/
Ayant beaucoup de lagunes en anglais et meme avec un traducteur, j’essaie de comprendre ce code (que je reproduis ici)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
defparam cumulateorders = false //order launch (example) would be set to any other entry conditions //c1 = close>close[1] c2 = close<close[1] //if c1 then //BUY 1 LOT AT MARKET //SET STOP PLOSS 50 //endif if c2 then SELLSHORT 1 LOT AT MARKET SET STOP PLOSS 50 endif //************************************************************************ //trailing stop function trailingstart = 20 //trailing will start @trailinstart points profit trailingstep = 5 //trailing step to move the "stoploss" //reset the stoploss value IF NOT ONMARKET THEN newSL=0 ENDIF //manage long positions IF LONGONMARKET THEN //first move (breakeven) IF newSL=0 AND close-tradeprice(1)>=trailingstart*pipsize THEN newSL = tradeprice(1)+trailingstep*pipsize ENDIF //next moves IF newSL>0 AND close-newSL>=trailingstep*pipsize THEN newSL = newSL+trailingstep*pipsize ENDIF ENDIF //manage short positions IF SHORTONMARKET THEN //first move (breakeven) IF newSL=0 AND tradeprice(1)-close>=trailingstart*pipsize THEN newSL = tradeprice(1)-trailingstep*pipsize ENDIF //next moves IF newSL>0 AND newSL-close>=trailingstep*pipsize THEN newSL = newSL-trailingstep*pipsize ENDIF ENDIF //stop order to exit the positions IF newSL>0 THEN SELL AT newSL STOP EXITSHORT AT newSL STOP ENDIF |
J’ai bien compris la variable “trailingstart”, le “trailingstep”
Mais je ne comprends pas ce à partir des lignes 27 à 37, et surtout où placer les conditions, par exemple :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
// Conditions pour ouvrir une position acheteuse indicator1 = MACDline[12,26,9](close) indicator2 = ExponentialAverage[9](MACDline[12,26,9](close)) c1 = (indicator1 CROSSES OVER indicator2) IF c1 THEN BUY 1 CONTRACT AT MARKET ENDIF // Conditions pour ouvrir une position en vente à découvert indicator1 = MACDline[12,26,9](close) indicator2 = ExponentialAverage[9](MACDline[12,26,9](close)) c1 = (indicator1 CROSSES under indicator2) IF c1 THEN SELLSHORT 1 CONTRACT AT MARKET ENDIF |
La meilleure façon pour apprendre, est de comprendre ce que l’on fait.
Merci, si il en a qui peuvent me ‘traduire’ le code en langage parlé.
La fonction de trailing stop que j’ai posté dans le blog est “plug and play”, c’est à dire que dans la majorité des cas, un simple copier/coller de l’ensemble de cette fonction, à la fin du code d’une stratégie, suffit à la rendre opérationnelle.
Dans ce code, tout tourne autour de la variable “newSL” (soit “nouveau stoploss” pour les réfractaires à l’anglais). Le code de décompose selon s’il s’agit d’une ordre d’achat ou de vente (mais je pense que tu l’aurais compris), puisque le stoploss (newSL) ne se placera pas, bien entendu, au même niveau de prix, dans un sens ou dans l’autre. Si tu regardes attentivement ligne par ligne, comment on “joue” avec cette variable (les valeurs qu’on lui donne et les tests que l’on fait avec), je pense que tu devrais arriver à comprendre 🙂 Sinon, appel le 18 (Nicolas le pompier).
Je vous remercie pour ces explications.
Je comprends mieux comment positionner les conditions en Haut, puis ce code en copier/coller en fin de stratégie.
Je comprends maintenant le fonctionnement du code et de la variable NewSL
Ce code sert aussi bien en position Long que en position Courte
Je pense qu’on peut traduire la derniere partie par un ” si NewSL est supérieur à 0 alors vendre à newSL, sortir de position short à newSL”
1 2 3 4 5 |
//stop order to exit the positions IF newSL>0 THEN SELL AT newSL STOP EXITSHORT AT newSL STOP ENDIF |
Find exclusive trading pro-tools on