Identifiant   Mot de passe       Oublie mot de passe?  Oublie login?  Creer un compte

Trading Automatique

Coder plus... pour gagner plus!

Forum Trading Auto

 

alphabilite

Abonnez-Vous

flux rss trading automatique Flux RSS

Sondage

Quelle est la section du site qui vous intéresse le plus?
 
Hedger sous MT5 avec le Virtual Order Manager Envoyer

 

Cet article repose sur le travail de de Paul du blog Paul's Forex Random Walk et de ses articles "Writing a Virtual Order Manager to enbale Hedging in MT5" et "Testing the Virtual Order Manager with hedging orders from two EAs".

Il est certain que l'un des plus gros ainsi que polémique changement apporté par le passage de la plateforme MetaTrader 4 à Metatrader 5 est la gestion des ordres ouverts comme des positions (cf l'article parlant du management des positions sous Metatrader 5). A un moment donné, il ne peut y avoir qu'une seule position ouverte pour chaque sous jacent tradé, et la taille de cette position s'ajuste à chaque fois que les ordres sont traités par le broker. Cela permets entre autre de respecter les nouvelles règles FIFO et anti hedging instaurées par la NFA aux US.

Pour travailler dans cet environnement centré sur la position, chaque EA écrit en MQL5 nécessite des développements supplémentaires pour garder en mémoire quels trades a-t-il ouvert car il n'y a pas de manières simples d'obtenir ces informations via le broker. L'exemple le plus frappant serait l'utilisation de deux EAs tournant sur la même paire, l'un suiveur de tendance et un autre scalpeur. Ils peuvent générer au même moment des trades dans des directions opposées. Sous MT4, le résultat serait l'ouverture d'une position short et long sans utilisation de marge. En MT5, aucune position ne sera ouverte.

Un exemple quand à lui d'un challenge au niveau de la programmation est la fonction suivante utilisée très largement dans les EAs de MT4. Cette fonction permet de s'assurer si un ordre est ouvert et d'en retourner le nombre. Une fonction similaire est bien entendue inutilisable en MQL5.

int OpenOrders(int magic)
{

int OrderCount = 0;

for (int i = OpenOrdersTotal()-1 ; i >= 0 ; i--)
{
OrderSelect(i,SELECT_BY_POS, MODE_TRADES);
if (OrderMagicNumber() == magic
&& (OrderType() == OP_BUY || OrderType() == OP_SELL)
&& OrderSymbol() == Symbol())
{
OrderCount++;
}
}
return(OrderCount);

}

 

Et c'est ici que l'on arrive au Virtual Order Manager


Afin de travailler dans cet nouvel environnement de gestion des ordres, il est possible de mettre en place un utilitaire appelé Virtrual Order Manager, VOM, qui maintiens un enregistrement local des ordres ouverts par chaque EA.

Voici les caractéristiques du VOM :

Comportement


  • Les ordres rĂ©els au niveau du broker reflètent la positions totale pour cette paire, mais le VOM maintiens Ă©galement un ensemble virtuel d'ordres au niveau du terminal MT5. Par exemple, un EA pourrait ĂŞtre virtuellement long sur EURUSD de 0.2 lot et un autre pourrait ĂŞtre virtuellement short de 0.3 lot, le tout avec une position globale et rĂ©elle affichĂ©e par MT5 de 0.1 lot short.
  • Les stoploss virtuels, takeprofits, magic numbers et les commentaires doivent ĂŞtre supprotĂ©s. Les stoploss et takeprofits virtuels doivent pouvoir ĂŞtre modifiĂ©s.
  • Les stop loss rĂ©els du broker doivent ĂŞtre maintenus Ă  une distance configurable des stop loss virtuels afin de conserver une protection de sĂ©curitĂ© en cas de problèmes au niveau de l'ordinateur ou de la perte de connexion.
  • Les prix d'entrĂ©e virtuels, ainsi que les stop loss et les take profits peuvent ĂŞtre optionnellement affichĂ©s en lignes horizontales sur le graphique.
  • [pour des dĂ©veloppements Ă©ventuels] Un rapport virtuel virtual_statement.htm peut ĂŞtre produit de manière similaire au rapport usuel statement.htm qui listera l'ensemble les ordres virtuels ouverts et fermĂ©s dans un ordre historique.

 

Mise en oeuvre/Implémentation

 

  • La fonctionnalitĂ© du VOM est ajoutĂ© par un #include dans chaque EA.
  • L'API du VOM est modelĂ© sur les fonctions de trading de MT4. Ce sont des fonctions familières et qui ont dĂ©jĂ  fait leur preuve, ce qui facilitera la migration des EAs de MT4. Par consĂ©quent, au lieu d'Ă©crire OrderSend(...), il faudra Ă©crire VirtualOrderManager.OrderSend(....). Quelques fonctions ont Ă©tĂ© simplifiĂ©es donc elles ne sont nĂ©cessairement des plug-in de remplacement, mais on peux envisage de mettre au point la version complète de ces fonctions pour faciliter la migration.
  • La liste des ordres ouverts par tous les EAs utilisant le VOM est maintenue dans un fichier auquel peuvent accĂ©der ces-dits EAs. Un tableau listant tous les ordres ouverts sera visible en utilisant l'indicateur OpenVirtualOrderViewer.mq5.

 

Challenges


Quelques uns des plus gros challenges de l'écriture du VOM sont listés ci dessous :

  • Le VOM doit ĂŞtre capable de tracker l'activation d'un pending orders. On peut utiliser l'Ă©vènement OnTrade() dans MT5 pour cela.
  • Puisque plusieurs EAs lisent et Ă©crivent le mĂŞme fichier unique, il faut utiliser les variables globale comme mĂ©canisme de blocage (cf les poblĂ©mes classiques d'accès multiples).
  • La valeur du stoploss de protection de catastrophe n'est pas aisĂ© Ă  dĂ©terminer parce qu'il est obtenu Ă  partir d'un nombre d'ordres virtuels.

 

Premiers Résultats


Voici la documentation générée par Doxygen pour le Virtual Order Manager. Notez bien que vous devrez enregistrer localement le fichier (clic droit et sauver) pour le lire. Voici pour résumer 3 images.


Le premier diagramme montre comment le Virtual Order Manager s'interface avec l'EA.

Le second diagramme représente les modules du Virtual Order Manager :


... et enfin voici une copie d'écran de l'EA permettant de tester le VOM :



Vous trouverez ici la dernière version du Virtual Order Manager Beta V0.5 et la documentation.

 

Ajouter un Commentaire


Code de sécurité
Rafraîchir

 
Joomla 1.5 Templates by Joomlashack