Discussion de l'article "Un Gestionnaire de Commande Virtuelle pour suivre les commandes dans l'environnement MetaTrader 5 axé sur la position" - page 2

 
phampton:

C'est exact, wackena. Ce que vous avez fait est d'aller directement sur le serveur pour passer un ordre conventionnel, donc il n'y a pas d'ordre virtuel ouvert. Vous devez utiliser le VirtualOrderManagerTester pour passer un ordre virtuel manuel.

J'aurais dû préciser dans l'article que si un EA VOM est introduit sur un symbole particulier, tous les autres EA négociant ce symbole doivent également être activés par le VOM, en raison du code SL de protection contre les désastres dans le VOM.

Paul

Merci Paul.

Le VirtualOrderManager.mqh peut-il être utilisé dans le testeur de stratégie MT-5 ? Si oui, comment l'EA doit-il être configuré avec VOM ?

 
wackena:

Merci Paul.

Le VirtualOrderManager.mqh peut-il être utilisé dans le testeur de stratégie MT-5 ? Si oui, comment l'EA doit-il être configuré avec le VOM ?

Oui, mes tests très limités dans le ST indiquent qu'il fonctionne sans aucune altération, bien que lentement parce que chaque tick doit être traité.
 

J'ai travaillé avec VOM sur un EA de type Martingale. Avec plusieurs Sell trades ouverts, du même type et de la même paire de devises, cette fonction CloseAllOrders semble ne fermer que le dernier trade, laissant les trades précédents toujours ouverts.

VOM.CloseAllOrders(_Symbol,VIRTUAL_ORDER_TYPE_SELL);

Avec plusieurs ordres virtuels (vo) ouverts, du même type et de la même paire de devises, cette fonction doit-elle initier la fermeture d'un seul ordre vo ou doit-elle fermer tous les ordres vo ouverts.

VOM.OrdersTotal() suit assez bien le nombre d'ordres virtuels ouverts.

 
wackena:

J'ai travaillé avec VOM sur un EA de type Martingale. Avec plusieurs transactions de vente ouvertes, du même type et de la même paire de devises, cette fonction CloseAllOrders semble ne fermer que la dernière transaction, laissant les transactions précédentes toujours ouvertes.

Avec plusieurs ordres virtuels (vo) ouverts, du même type et de la même paire de devises, ce code de fonction doit-il initier la fermeture d'un ordre vo ou doit-il fermer tous les ordres vo ouverts.

VOM.OrdersTotal() suit assez bien le nombre d'ordres virtuels ouverts.

Bonjour wackena,

Je viens d'ajouter un bouton Close all à VirtualOrderManagerTester, voir ci-joint. Cela fonctionne bien, même si j'admets que c'est une façon maladroite de fermer tous les ordres virtuels - une meilleure façon serait de les additionner et d'émettre un seul ordre de serveur, et j'envisagerai de le faire dans la prochaine version.

N'hésitez pas à m'envoyer une copie d'un journal LOG_VERBOSE EA pour que je puisse mieux voir ce qui se passe.

Paul

Dossiers :
 
phampton:

Bonjour wackena,

Je viens d'ajouter un bouton Close all à VirtualOrderManagerTester, voir ci-joint. Cela fonctionne bien, même si j'admets que c'est une façon maladroite de fermer tous les ordres virtuels - une meilleure façon serait de les additionner et d'émettre un seul ordre de serveur, et j'envisagerai de le faire dans la prochaine version.

N'hésitez pas à m'envoyer une copie du journal LOG_VERBOSE EA pour que je puisse mieux comprendre ce qui se passe.

Paul

Le fichier journal est joint.
Dossiers :
 
wackena:
Le fichier journal est joint.

Merci - d'après ce que je peux voir dans le journal, les seuls appels à OrderClose se produisent lorsqu'un takeprofit virtuel a été atteint, c'est-à-dire que le code que vous avez pour fermer explicitement les ordres (comme CloseAllOrders) n'est pas atteint ou est atteint alors qu'il n'y a plus d'ordres à fermer.

 

Mise à jour des annexes de l'article :

La documentation, le guide de l'utilisateur et les commentaires sur le code source de la bibliothèque Virtual Order Manager sont désormais disponibles en russe.

 

Il y a un problème majeur avec cette bibliothèque. Les transactions ouvertes avec VOM et fermées manuellement sont vues ouvertes par VOM.

De plus, lorsque dans VOM j'essaie de fermer ces transactions, VOM ouvre des transactions dans la direction opposée.

Par exemple :

- J'ouvre 5 ordres d'achat avec VirtualOrderManagerTester et tout se passe bien.

- Je ferme manuellement les 5 ordres : dans MT5 je ne vois aucun ordre et sur le graphique (VOM) 5 ordres ouverts.

- Je ferme les 5 ordres de VirtualOrderManagerTester : Je vois 5 ordres de vente dans MT5 et aucun dans VOM(VirtualOrderManagerTester)

A mon avis, il s'agit d'un problème majeur car si les ordres de mon EA sont fermés par le broker ou un autre EA, lorsque mon EA essaiera de les fermer à l'aide de VOM, il ouvrira des ordres dans la direction opposée.

Existe-t-il une solution à ce problème ?

Dossiers :
vom_test.jpg  188 kb
 
mbt22:

Il y a un problème majeur avec cette bibliothèque. Les transactions ouvertes avec VOM et fermées manuellement sont vues ouvertes par VOM.

De plus, lorsque dans VOM j'essaie de fermer ces transactions, VOM ouvre des transactions dans la direction opposée.

Par exemple :

- J'ouvre 5 ordres d'achat avec VirtualOrderManagerTester et tout se passe bien.

- Je ferme manuellement les 5 ordres : dans MT5 je ne vois aucun ordre et sur le graphique (VOM) 5 ordres ouverts.

- Je ferme les 5 ordres de VirtualOrderManagerTester : Je vois 5 ordres de vente dans MT5 et aucun dans VOM(VirtualOrderManagerTester)

A mon avis, il s'agit d'un problème majeur car si les ordres de mon EA sont fermés par le courtier ou un autre EA, lorsque mon EA essaiera de les fermer en utilisant VOM, il ouvrira des ordres dans la direction opposée.

Existe-t-il une solution à ce problème ?

Bonjour mbt22,

Ce que vous soulignez est certainement une limitation de cette bibliothèque - tous les EAs fonctionnant sur un compte doivent utiliser le VOM, et cela inclut les trades manuels.

Il faut cependant garder à l'esprit que cette limitation de la sociabilité des EAs VOM est susceptible d'être observée dans de nombreux EAs MQL5. En d'autres termes, ces EAs peuvent également échouer en cas de transactions manuelles ou d'autres EAs de n'importe quel type opérant sur le même symbole.

Voici un exemple d'échec de la sociabilité d'un EA non VOM : supposons que les transactions (manuelles et/ou générées par l'EA) externes à cet EA totalisent 1,0 lot à découvert, et que l'EA émette un ordre d'achat de 0,1 lot avec un stop de 50 pip.Je ne me souviens pas exactement de la façon dont la fonction OrderSend de l'EA fonctionnerait (si elle s'exécute ou renvoie une erreur de stop), mais ce qui est certain, c'est que le stop ne peut pas être appliqué 50 pips en dessous de la taille de la position résultante de 0,9 lot à découvert.

L'EA test est capable de gérer des transactions manuelles à l'aide du VOM, mais si la situation en arrive aux ordres de clôture du courtier, le VOM a perdu le contrôle et une évaluation minutieuse du compte est nécessaire.

L'une des principales raisons pour lesquelles le VOM n'est pas sociable avec les activités non VOM est sa gestion du stop de protection contre les désastres, qui est un élément essentiel de la gestion des risques dans tout processus de fermeture d'une transaction basé sur le client.

Paul

 
phampton:

Bonjour mbt22,

Ce que vous soulignez est certainement une limitation de cette bibliothèque - tous les EAs fonctionnant sur un compte doivent utiliser le VOM, et cela inclut les trades manuels.

Gardez à l'esprit que cette limitation de la sociabilité des EAs VOM est susceptible d'être observée dans de nombreux EAs MQL5. En d'autres termes, ces EAs peuvent également échouer en cas de transactions manuelles ou d'autres EAs de n'importe quel type opérant sur le même symbole.

Voici un exemple d'échec de la sociabilité d'un EA non VOM : supposons que les transactions (manuelles et/ou générées par l'EA) externes à cet EA totalisent 1,0 lot à découvert, et que l'EA émette un ordre d'achat de 0,1 lot avec un stop de 50 pip.Je ne me souviens pas exactement de la façon dont la fonction OrderSend de l'EA fonctionnerait (si elle s'exécute ou renvoie une erreur de stop), mais ce qui est certain, c'est que le stop ne peut pas être appliqué 50 pips en dessous de la taille de la position résultante de 0,9 lot à découvert.

L'EA de test est capable de gérer les transactions manuelles à l'aide de la VOM, mais si la situation en arrive à la fermeture des ordres du courtier, la VOM a perdu le contrôle et une évaluation minutieuse du compte est nécessaire.

L'une des principales raisons pour lesquelles le VOM n'est pas sociable avec les activités non VOM est sa gestion du stop de protection contre les désastres, qui est un élément essentiel de la gestion des risques dans tout processus de fermeture de transaction basé sur le client.

Paul


D'accord, je vous remercie pour la rapidité de votre réponse.

Merci pour votre réponse rapide.