NicoParticipant
Average
Bonjour
ce bout de code fonctionne bein en backtest.
Si les prix monte ou descende de 20 pts, la position est fermée s’ils revienent au prix d’entree
Lorsque je le lance avec proorder ca ne fonctionne pas.
Je précise que proorder est lancé avec prt lié à un compte démo d’igmarkets.
IF LONGONMARKET AND close-tradeprice(1) >= 20 then
newsl = tradeprice(1)*pipsize
endif
IF SHORTONMARKET AND tradeprice(1) - close >= 20 then
newsl = tradeprice(1)*pipsize
endif
sell at newsl stop
exitshort at newsl stop
Bonjour Nico,
C’est normal, tu cherches à transformer un prix en point, alors que pour placer un ordre STOP (un ordre différé) il faut le placer sur un seuil de prix.
Donc dans ton code tu dois simplement supprimer le “*pipsize”, comme ceci:
IF LONGONMARKET AND close-tradeprice(1) >= 20 then
newsl = tradeprice(1)
endif
IF SHORTONMARKET AND tradeprice(1) - close >= 20 then
newsl = tradeprice(1)
endif
sell at newsl stop
exitshort at newsl stop
N’oublie pas ensuite de réinitialiser ta variable “newsl” à 0 par exemple, quand tu n’es pas au marché, sinon elle restera en mémoire et tes futurs ordres STOP pourraient l’utiliser alors que tu n’as pas encore dépassé ton seuil de 20 points en gain.
NicoParticipant
Average
a l’origine je ne l’avais pas mis et ca ne fonctionnait pas non plus
Sur quel instrument rencontres-tu ce problème ?
NicoParticipant
Average
minidax chez ig markets compte demo et prt demo
Bon.. je ne vois pas vraiment où se situe le problème, au cas où voici le code complet à tester:
IF LONGONMARKET AND close-tradeprice(1) >= 20 then
newsl = tradeprice(1)
endif
IF SHORTONMARKET AND tradeprice(1) - close >= 20 then
newsl = tradeprice(1)
endif
if not onmarket then
newsl=0
endif
sell at newsl stop
exitshort at newsl stop
Indispensable bout de code, merci.
Est-il possible de poser plusieurs seuils (+20, +30, +40…) ?
@Victorio
J’ai écrit un article complet dans le blog à ce propos, c’est adaptable à toutes les stratégies, tu pourras utiliser la variable “trailingstep” pour cela.
http://www.prorealcode.com/blog/trading/complete-trailing-stop-code-function/
Merci beaucoup, c’est exactement ce que je recherchais.
@Nicolas > Merci beaucoup pour ton code, par contre plutôt que d’utiliser la fonction “close”, je voudrais que le code tienne compte du “high” pour une position longue, ou du “low” pour une position courte.
J’utilise ce code, qui fonctionne très bien en backtest, mais pas en réel :
X = Barindex - TradeIndex
IF Highest[X](High) - TradePrice > 20 AND LongOnMarket THEN
SELL AT TradePrice - 0.5 STOP
ENDIF
IF TradePrice - Lowest[X](Low) > 20 AND ShortOnMarket THEN
EXITSHORT AT TradePrice + 0.5 STOP
ENDIF
Aurais-tu une idée pour le faire fonctionner en réel ?
Oui c’est sur le CFD DAX30 de chez IG.
Un petit up pour ce sujet. J’ai testé ce code mais il coupe instantanément le robot sur PRT. Une solution ?
IF LongOnMarket AND Close - TradePrice(1) >= 20 THEN
NewSL = TradePrice(1)
ENDIF
IF ShortOnMarket AND TradePrice(1) - Close >= 20 THEN
NewSL = TradePrice(1)
ENDIF
IF Not OnMarket THEN
NewSL = 0
ENDIF
SELL AT NewSL STOP
EXITSHORT AT NewSL STOP
C’est normal que les trades soient fermés, car tu places un ordre STOP à 0 avec tes lignes 11 et 12. Tu dois placer ces lignes dans une condition pour vérifier que le NewSL n’est pas égal à 0.
Ok je vois, il faut cette condition alors ? Merci pour ta réponse en tout cas.
IF NewSL <> 0 THEN
SELL AT NewSL STOP
EXITSHORT AT NewSL STOP
ENDIF