Bonjour à tous,
Je cherche à mettre en place un stop d’inactivité au bout de 2 pertes successives dans la journée.
j’ai essayé avec
IF POSITIONPERF(2)<0 AND POSITIONPERF(1)<0 THEN
QUIT
mais cela ne fonctionne pas.le systême s’arrête.
Si quelqu’un a une solution,merci
Salut,
QUIT semble être une commande irrévocable.
Essaye ceci :
If time = 080000 then
pause = 0
endif
IF POSITIONPERF(2)<0 AND POSITIONPERF(1)<0 THEN
pause = 0
else
pause = 1
endif
graph pause coloured (255,0,0)
IF TesConditions and Pause then
buy 1 contract at market
endif
Merci Pascal, je n’aurai pas fait mieux.
Et en effet, l’instruction QUIT met fin à l’exécution du script de trading automatique et hormis une intervention manuelle, rien ne pourra le redémarrer.
En développant ce code, je m’aperçois qu’il ne trouve pas tous les jours son objectif sur une UT < minute
Une idée ?
//reset à 07H
if time = 070000 then
reset = 1
else
reset = 0
endif
return reset coloured(100,0,100)
Si l’heure testée n’est pas affiché par le graphique pour une raison X ou Y, alors ton reset ne fonctionnera pas. Mais ton problème n’est pas là, tu supprimes ton RESET à 1 dés que l’heure testée n’est pas égal à 070000, à cause de ton ELSE reset=0.
Personnellement, je préfères réinitialiser quotidiennement en vérifiant si on se trouve sur la première barre de la journée comme ceci :
//reset à la première barre du jour
if intradaybarindex=1 then
reset = 1
endif
merci a tous.
Malheureusement cela ne fonctionne pas.il bloque aux 2 premieres pertes rencontrées dans le backtest.
++++++++++++++++++++++++++++++++++++
DEFPARAM CUMULATEORDERS = FALSE
DEFPARAM FLATBEFORE = 080000
DEFPARAM FLATAFTER = 190000
// 2 pertes successives autorisées par jour
If time = 080000 then
pause = 0
endif
IF POSITIONPERF(2)<0 AND POSITIONPERF(1)<0 THEN
pause = 0
else
pause = 1
endif
graph pause coloured (255,0,0) // non obligatoire
IF mesconditions AND pause then
etc etc etc
ENDIF
**********************
auriez-vous une autre suggestion ou je me suis trompé quelque part
merci
Ta variable ‘pause’ ne devrait elle pas être remise à 1 plutôt que 0 tous les matins?
DEFPARAM CUMULATEORDERS = FALSE
DEFPARAM FLATBEFORE = 080000
DEFPARAM FLATAFTER = 190000
// 2 pertes successives autorisées par jour
If time = 080000 then
pause = 1
endif
IF POSITIONPERF(2)<0 AND POSITIONPERF(1)<0 THEN
pause = 0
else pause = 1
endif
graph pause coloured (255,0,0) // non obligatoire
IF mesconditions AND pause then
//etc etc etc
ENDIF
Malheureusement il bloque encore au 2 premières pertes rencontrées ET en plus avec des journées différentes…
Je ne vois pas pourquoi ?
Dernière question et après je testerai moi même :
· Sur quelle unité de temps testes-tu le code ?
Je le fais tourner en 5 mn.
C’est la ligne 5 qui pose problème, peu importe le jour qu’il est les 2 derniers PositionPerf de l’historique des Trades seront toujours négatifs.
et alors comment on peut faire pour lui faire comprendre qu’il doit stopper au bout de 2 trades négatifs dans la journeé?
Bonjour,
Sachant que le dernier trade de performance positionperf(1) a eu sa sortie sur la barre tradeindex(1) et son entrée sur la barre tradeindex(2), et l’avant dernier trade positionperf(2) a eu sa sortie en tradeindex(3) son entrée en tradeindex(4), sachant aussi que barindex numérote les barres depuis le début de l’historique, et intradaybarindex les numérote depuis le début de la journée, alors pour définir 2 pertes consécutives dans la même journée, je m’y prendrais en modifiant la boucle IF dans le code comme ceci:
IF (barindex-tradeindex(1))<intradaybarindex and (barindex-tradeindex(3))<intradaybarindex and POSITIONPERF(2)<0 AND POSITIONPERF(1)<0 THEN
pause = 0
else
pause = 1
endif
bravo,
C’est une vrai métier d’être programmateur.Je n’aurai jamais pu trouver une telle formule.
Merci à toi
Je rebondis sur ton message larouedegann, car je vais sans doute m’atteler à faire des vidéos de formation à la programmation prochainement .. enfin d’ici la fin de l’année entre 2 🙂 J’imagine que cela intéressera beaucoup de personnes.