Nicolas, je sais que tu as déjà répondu à plusieurs fois à cette dernière question sur l’annulation des ordres, notamment ici https://www.prorealcode.com/topic/cancel-a-buy-stop-order/ et ici https://www.prorealcode.com/topic/code-help-cancel-order/ où tu avais dit que “Pending orders are always CANCELLED when each bar closes, if not triggered”. En pratique, mes ordres non exécutés ne sont annulés qu’à la fin de la journée et du coup bloquent l’émission de nouveaux ordres en raison de la commande “DEFPARAM CumulateOrders = false”.
Peux-tu s’il te plait m’indiquer quel est le code pour annuler un ordre émis mais non exécuté après X minutes ou 1 barre de 15 minutes par exemple?
Merci encore
Tu as bien compris, les ordres conditionnels expirent logiquement à fin de barre, puisque on doit les repositionner en permanence, donc si non repositionné, ils n’existent plus.
Donc tu n’as pas besoin de l’annuler en pratique, mais plutôt de ne pas le remettre !
Pour mesure le temps comme tu le souhaites, je te conseille d’utiliser une différence de BARINDEX, si tu es en UT 15-minutes alors c’est simple, tu ne remets pas l’ordre si BARINDEX moins le barindex de l’ordre est supérieur à 1.
Merci Nicolas.
Je te fais juste un retour d’expérience.
Dans mon cas, les ordres envoyés avec ProOrder à IG CFD (risque limité) en UT M15 et qui ne sont pas exécutés (si par exemple le marché varie trop vite par rapport au signal) ne sont pas annulés après la fin de la bougie en cours (de 15 min), ni après la fin de la bougie suivante de (15 minutes). Donc, si on est en CUMUL d’ordres “FALSE”, alors cet ordre en attente bloque l’arrivée de nouveaux ordres du même Algo. Si on est en mode CUMUL d’ordres “TRUE” alors d’autres ordres arrivent mais l’ordre initial non exécuté reste en attente jusqu’au soir. Si j’annule cet ordre à partir de mon espace IG, alors l’Algo est arrêté par PRT par sécurité . S’agit-il d’un bug ou c’est moi? y a t il un paramétrage dans le système PRT que je n’ai pas fait? (j’ai bien coché la case “Maintenir ouvertes” les ordres et positions après l’arrêt du système.
Je vais regarder ta suggestion de BARINDEX.
Merci encore!
ça n’est pas un bug, ton code remet l’ordre conditionnel à chaque bougie sans aucune autre condition que ne pas avoir été au marché dans le même sens (entre 8h00 et 22h00).
Bonjour Nicolas,
je vais ajouter l’un des deux codes suivants et voir ce que ça donne en réel. lequel te paraît plus approprié pour ne pas renouveler un ordre non exécuté à la prochaine bougie?
Merci
IF LongOnMarket THEN
LONG = 1
ENDIF
IF ShortOnMarket THEN
SHORT = 1
ENDIF
IF OnMarket AND (BarIndex - TradeIndex) > 1 THEN
LONG = 0
SHORT = 0
ENDIF
_____________________________________ OR _____________________________________
IF LongOnMarket THEN
LONG = 1
ENDIF
IF ShortOnMarket THEN
SHORT = 1
ENDIF
ONCE NbBarLimit = 1
MyIndex = Barindex
IF ONMARKET AND BarIndex >= MyIndex + NbBarLimit THEN
LONG = 0
SHORT = 0
ENDIF