Répondre

Problème de suppression des commandes en cours

8 réponses

mikeyc

Client, bbp_participant, communauté, 877 réponses.

Visiter le profil

Il y a 7 ans #115445

Bonjour,

 

J'ai une stratégie qui remplace les ordres en attente. Cependant, il y a un problème avec le MQ4 que SQ génère, en ce sens que pendant une petite fenêtre de temps où l'ECN n'accepte pas d'ordres, si l'EA généré par SQ tente de supprimer un ordre en attente, il échouera et ne supprimera pas l'ordre :

 

2016.08.14 22:00:25.027 '946624' : suppression de l'ordre en attente #9901877 sell stop 0.01 EURUSD à 1.11528 sl : 1.14488 tp : 1.11008 failed [Le marché est fermé].

2016.08.11 22:00:04.839 '946624' : suppression de l'ordre en attente #9877449 buy stop 0.01 EURUSD at 1.11581 sl : 1.08621 tp : 1.12101 failed [Market is closed] (Le marché est fermé)

 

Il faut prévoir un mécanisme de réessai pour la suppression de l'ordre en attente.

 

Merci,

 

Mike

0

mabi

Client, bbp_participant, communauté, 261 réponses.

Visiter le profil

Il y a 7 ans #138831

 Dans Ninjatrader, la stratégie s'arrête d'elle-même lorsque cela se produit. Il s'agit donc d'un problème pour cette plateforme également.

0

Seuil

Client, bbp_participant, communauté, 723 réponses.

Visiter le profil

Il y a 7 ans #138835

De même, "sortir le vendredi" semble sortir à l'ouverture du lundi. Je ne l'ai jamais mentionné auparavant parce que cela a tendance à fonctionner en ma faveur (les écarts ont tendance à être dans la direction de l'élan du vendredi).

0

clonex / Ivan Hudec

Client, bbp_participant, communauté, sq-ultimate, contributeur, auteur, éditeur, 271 réponses.

Visiter le profil

Il y a 7 ans #138836

Mon problème aussi. La sortie le vendredi est la sortie le jeudi à 22h00 ; j'ai dû désactiver cette option. Mikeyc même problème.

0

tomas262

Administrateur, sq-ultimate, 2 réponses.

Visiter le profil

Il y a 7 ans #138838

Bonjour,

La sortie du vendredi devrait fonctionner correctement. Quelle est l'heure de votre EA ?

0

FILIPE BONALDO ACERBI

Client, bbp_participant, communauté, 27 réponses.

Visiter le profil

il y a 6 ans #201039

Bonjour,

J'ai le même problème une fois par jour à 22:00 heure du broker. J'obtiens l'erreur "Le marché est fermé" :

2017.11.08 22:02:12.599
USDJPY D1 23.46 USDJPY.m,Journalier : 2017.11.09 00:02:19 Ordre modifié, StopLoss : 0, Profit Target : 0
2017.11.08 22:02:12.599
USDJPY D1 23.46 USDJPY.m,Daily : modifier #175062574 sell stop 0.86 USDJPY.m à 111.617 sl : 112.141 tp : 108.668 ok
2017.11.08 22:02:12.162
USDJPY D1 23.46 USDJPY.m,Journalier : 2017.11.09 00:02:19 Réglage SL/PT, SL : 112.141, PT : 108.668
2017.11.08 22:02:12.162
USDJPY D1 23.46 USDJPY.m,Quotidien : 2017.11.09 00:02:19 Ordre ouvert : 175062574 au prix de 111.617
2017.11.08 22:02:12.162
USDJPY D1 23.46 USDJPY.m,Daily : open #175062574 sell stop 0.86 USDJPY.m à 111.617 ok
2017.11.08 22:02:11.677
USDJPY D1 23.46 USDJPY.m,Journalier : 2017.11.09 00:02:19 Ordre d'ouverture, direction : 5, prix : 111.617, Ask : 113.893, Bid : 113.864
2017.11.08 22:01:37.521
USDJPY D1 23.46 USDJPY.m,Daily : 2017.11.09 00:01:44 Erreur d'ordre d'ouverture : 132 : le marché est fermé
2017.11.08 22:01:37.396
USDJPY D1 23.46 USDJPY.m,Journalier : 2017.11.09 00:01:44 Ordre d'ouverture, direction : 5, prix : 111.617, Ask : 113.893, Bid : 113.864
2017.11.08 22:01:03.677
USDJPY D1 23.46 USDJPY.m,Daily : 2017.11.09 00:01:12 Erreur d'ordre d'ouverture : 132 : le marché est fermé
2017.11.08 22:01:03.521
USDJPY D1 23.46 USDJPY.m,Journalier : 2017.11.09 00:01:11 Ordre d'ouverture, direction : 5, prix : 111.617, Ask : 113.893, Bid : 113.864
2017.11.08 22:00:29.568
USDJPY D1 23.46 USDJPY.m,Daily : 2017.11.09 00:00:35 Erreur d'ordre d'ouverture : 132 : le marché est fermé
2017.11.08 22:00:29.365
USDJPY D1 23.46 USDJPY.m,Journalier : 2017.11.09 00:00:35 Ordre d'ouverture, direction : 5, prix : 111.617, Ask : 113.893, Bid : 113.864
2017.11.08 21:59:55.349
USDJPY D1 23.46 USDJPY.m,Daily : 2017.11.09 00:00:03 Erreur d'ordre d'ouverture : 132 : le marché est fermé
2017.11.08 21:59:55.052
USDJPY D1 23.46 USDJPY.m,Journalier : 2017.11.09 00:00:02 Ordre d'ouverture, direction : 5, prix : 111.617, Ask : 113.893, Bid : 113.864
2017.11.08 21:59:55.052
USDJPY D1 23.46 USDJPY.m,Daily : 2017.11.09 00:00:02 Impossible de clôturer un ordre en attente existant avec ticket : 174815678, raison : 132

Si nous regardons l'historique ci-dessus, l'EA a fait 4 tentatives avant d'ouvrir avec succès l'ordre 175062574. Mais le problème réside dans les tentatives infructueuses de modification ou de clôture de l'ordre précédent. Dans l'exemple ci-dessus, l'EA a essayé de fermer sans succès l'ordre 174815678. Il a essayé une fois et a échoué, donc j'ai un ordre ouvert qui aurait dû être fermé, mais à cause de cette erreur, il est toujours ouvert.

Je dois fermer l'ordre 174815678 manuellement et redémarrer l'EA. Lorsque j'ai fait cela, l'EA a ouvert le bon ordre (voir la pièce jointe).

J'ai essayé de résoudre ce problème en plaçant la fonction if(sqIsTradeAllowed() == 1) avant le OrderDelete, mais rien ne s'est passé :

bool closePendingOrder() {

int ticket = OrderTicket() ;

if(sqIsTradeAllowed() == 1)  

if(OrderDelete(ticket)) {

lastDeletedOrderTicket = ticket ; return(true) ; }

return(false);}

Je pense que la solution consiste à multiplier les tentatives de fermeture ou de modification d'une commande en cas d'échec.

Que puis-je faire pour résoudre ce problème ?

0

FILIPE BONALDO ACERBI

Client, bbp_participant, communauté, 27 réponses.

Visiter le profil

il y a 6 ans #201067

J'ai cherché dans le code de l'EA toutes les fonctions qui modifient, suppriment et clôturent les ordres. Pour ces fonctions, j'ai ajouté la même logique qui fait des tentatives d'ouverture d'ordres en cas d'échec, ce qui est décrit par la fonction openPosition(). Aujourd'hui je reçois l'erreur "market closed" mais l'EA a essayé de modifier/supprimer/fermer les ordres avec succès. Si quelqu'un a un problème avec l'erreur "marché fermé", j'ai joint les fonctions modifiées pour faire des tentatives de fermeture, de modification ou de suppression des ordres. Il suffit de remplacer les fonctions dans le code de l'EA.

Pièces jointes :
Vous devez être connecté pour visualiser les fichiers joints.

0

afhampton

Client, bbp_participant, communauté, 26 réponses.

Visiter le profil

il y a 6 ans #201276

Bonjour Filipe :

J'ai un problème similaire et je me demandais si vos modifications résoudraient le problème. Sur un compte ECN, la transaction en attente est définie par l'EA, puis avant que l'ordre de modification de la transaction en attente pour définir le SL et le TP puisse être traité, la transaction est activée. L'ordre de modification de l'opération en attente a donc échoué parce qu'elle n'est plus en attente, mais activée. Dans ce cas, si la modification de l'ordre en attente échoue, j'ai besoin que l'EA vérifie si l'ordre a été ouvert et, si c'est le cas, si le TP et le SL sont correctement définis. Si ce n'est pas le cas, définissez le TP et le SL pour l'ordre ouvert. Si les tentatives de définition du TP/SL échouent plusieurs fois, fermez l'ordre ouvert.

Est-ce que c'est quelque chose que vos modifications peuvent faire et, si ce n'est pas le cas, pouvez-vous m'aider à trouver un code pour le faire ? Je serais heureux de vous dédommager pour votre temps.

0

FILIPE BONALDO ACERBI

Client, bbp_participant, communauté, 27 réponses.

Visiter le profil

il y a 6 ans #201294

Bonjour Afhampton,

Je pense que si l'EA fait quelques tentatives pour changer le ST/TP pour l'ordre ouvert, cela fonctionnera. Pour les ordres stop/limite ouverts, je pense que l'EA doit tester si l'ordre en attente est ouvert avant d'essayer de le fermer ou de le modifier. Si l'ordre est ouvert, l'EA appellera la fonction start() pour gérer les ordres nouvellement ouverts. Cela pourrait être une solution. J'ai joint les fonctions modifiées et vous pouvez essayer si cela fonctionne avec ces fonctions modifiées qui font des tentatives et testent si l'ordre en attente est ouvert. Suivez les étapes suivantes :

1- Faire une sauvegarde de "MT4Functions.inc" dans C:\NStrategyQuant\code\NMql_MT4.

2 - Télécharger le fichier joint renommer et remplacer "MT4Functions.inc" dans C:\NStrategyQuant\code\NMql_MT4.

3 - Exporter à nouveau le fichier EA mql4 dans SQ.

4 - Testez sur un compte de démonstration.

Si l'EA ne parvient pas à modifier/supprimer les ordres, il effectuera 60 tentatives dans un délai de 30 secondes chacune jusqu'à ce qu'il parvienne à modifier/supprimer l'ordre. Si cela ne fonctionne pas, il faut restaurer la sauvegarde.

 

Pièces jointes :
Vous devez être connecté pour visualiser les fichiers joints.

0

Affichage de 8 réponses de 1 à 8 (sur un total de 8)