HCParticipant
Average
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)
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 :
// 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).
HCParticipant
Average
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”
//stop order to exit the positions
IF newSL>0 THEN
SELL AT newSL STOP
EXITSHORT AT newSL STOP
ENDIF