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

Trading Automatique

Coder plus... pour gagner plus!

Forum Trading Auto

by nvitale
Mar.15.10 12:48:02
by madjes
Mar.14.10 21:16:57
by pensera
Mar.14.10 10:33:33
by nvitale
Mar.11.10 21:08:44
by nvitale
Mar.10.10 17:08:38
by nvitale
Mar.08.10 23:27:41
Animé par JoomlaMe
Base de Code
Récupération des données Web sous MetaTrader Envoyer

 

Tous les brokers CFD et Forex utilisent leurs propres cours lors de leurs transactions avec leurs client. C'est ce que l'on appellent des market makers. Par conséquent une différence de quelques points peut avoir lieu entre le cours réel de l’actif sous-jacent et le cours du CFD lorsque la volatilité est trop élevée où lorsque la côte de l’actif sous-jacent est fermé. Un exemple connu de tous est le CAC Cash (France 40) d’IGMarkets qui côte de nuit alors que les sous-jacents sont fermés. Le cours est alors estimé approximativement en fonction des marchés Asiatiques et des quelques contrats américains qui côtent 24h/24.

C’est dans une optique proche qu’un client nous a demandé de pouvoir récupérer les cours historiques officiels du S&P 500 afin de calculer ses indicateurs dessus et non sur les données CFD ou Futures. Ceux-ci diffèrent d’une part du cours du contrat future qui est côté, mais aussi entre le contrat future et le CFD présent sur MetaTrader où les différences peuvent être d'ailleurs importantes.

Nous avons donc réalisé un nouvel indicateur qui permet de récupérer les cours historiques officiels sur Yahoo Finance et le dernier cours sur Google Finance. La procédure de récupération de telles données nécessite des appels externes a des fonctions de la dll standard windows Wininet.dll. Voici le schéma des appels systèmes :

 

 

Et voici le schéma global du système que nous avons réalisé :

 

Les parsers retrouvent le cours au milieu du code HTML (ou csv) de la page téléchargée. Le seul inconvénient étant que si Google ou Yahoo décident de changer complètement celui-ci, le parser ne fonctionnera plus et devra être refait. Les paramètres de l'indicateur sont donc en plus des paramètres standards de l'indicateur initial (ici le RSI), le nom du sous-jacent sur Google et sur Yahoo :

 

 

On peut voir sur le schéma ci-dessous la différence entre les données CFD (RSI Bleu) et live (RSI Vert) :

 

En utilisant la possibilité d'appeler des dll externes, Trading Automatique vous permet donc de repousser les limites de la plateforme Meta-Trader et d'utiliser des techniques de trading encore plus perfectionnées.

Simon Depiets pour Trading Automatique

 
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.

 
Téléchargement programme visualisation 3D des backtests Envoyer

Voici le programme permettant de visualiser en 3D le résultat des optimisations de Metatrader: cf article

Télécharger le code : Programme de visualisation 3D des backtests

 
Comment cacher ses stops et take profits à son broker sous Metatrader 4 Envoyer

 

On reproche quelquefois aux brokers utilisant la plateforme Metatrader leur manque d'honnêteté en faisant volontairement sauter les stops dont ils ont la connaissance avec des mouvement rapides et douteux du marché ("spike").

En effet, quand vous passez un ordre sur Metatrader 4, vous pouvez y associer un stop et un take profit précis qui sont en quelques sorte des pending orders. Ces ordres sont communiqués à votre broker qui les déclenchera lorsque le cours les atteindra. Toutefois, le Forex n'étant pas un marché centralisé, et vos brokers étant presque à coup sûr des market makers, ils ont plus ou moins le droit de quoter ce qui les arrange.

Tout le monde a vécu des mouvement de très forte amplitude se produisant en moins d'une seconde lorsque le cours s'approche de votre stop, le déclenchant tout juste et ensuite repartant dans la direction opposée. C'est assez rageant quand cela arrive et le réflexe naturel et de mettre cela sur le dos de son broker.

Paranoïa ou vérité? Ce n'est pas vraiment le sujet de cet article. A la place de cela, je vous propose une solution pour vous libérer de ce problème éventuel car broker malhonnête ou pas, passer un ordre stop ou de take profit c'est comme un joueur de poker qui dévoile son jeu.

Une solution existe donc... ne pas communiquer vos stops à votre broker. En trading manuel c'est ce que l'on apelle placer un "stop mental". L'inconvénient de ces stops mentaux est que l'homme restant psychologiquement "faible", ils ont tendance à être élastiques. Allez... encore quelques pips, je suis certain que le cours va repartir dans la bonne direction! Et ce type de comportement aboutit souvent à la catastrophe.

L'avantage de la machine est qu'elle ne déroge jamais aux règles que vous lui fixez. Vous voyez, où je veux en venir, n'est ce pas? Il suffit donc de programmer la gestion de vos stops et de vos take profits à un programme ("Expert Advisor") intégré à votre plateforme Metatrader. Cet EA tournera sur votre machine et sera le seul à connaître vos stops et take profits. A chaque nouveau tick, il va comparer le cours actuel par rapport à votre valeur de stop et take profit, et estimera ensuite s'il faut lancer un ordre ou pas pour cloturer votre position.

L'EA que j'ai mis au point va passer dans un premier temps l'ordre au prix du marché que vous souhaitez, et suivra ensuite votre position jusqu'à ce que vous la coupez vous même manuellement ou bien que ce soit lui qui la coupe car le stop loss ou le take profit est touché.

Paramètres disponibles :

EA stop cachés au broker

 

Ordre passé et surveillé (cliquez pour aggrandir):

EA stop cachés au broker

 

Les niveaux de stop loss et de take profit sont mis en valeur par des lignes pointillés comme lors de l'utilisation classique des stop loss et take profit.

Une autre utilité de ce programme et de vous permettre de continuer à utiliser des stop loss et des take profits préprogrammés alors que la NFA semble souhaiter interdire les pending orders aux USA.

Si vous souhaitez vous aussi cacher vos stops et take profits à votre broker avec ce programme, contactez Trading Automatique.

Attention cependant, si votre EA ne fonctionne plus pour quelque raison que ce soit (plantage, coupure internet, etc), votre stop ne s'activera pas. Mais pour cela, il y a la solution des VPS.

 
Utilitaire pour fermer tous ses trades automatiquement sur Metatrader Envoyer

 

Si comme moi, au cours de tests, il vous arrive de vous retrouver avec une dizaine de trades ouverts en même temps sur votre plateforme Metatrader 4 et que les fermer manuellement un à un vous irrite au plus haut point, voici un petit utilitaire que je viens de programmer et qui devrait vous rendre service.

C'est en fait un script tout simple qui va clore un par un tous vos trades (y compris les pending orders) jusqu'à ce qu'il n'en reste aucun.

A noter qu'une version en EA est disponible. L'EA a un avantage sur le script qui ne s'exécute qu'une fois. Si il y a un problème lors de la première itération, l'EA s'exécutera tant qu'il y a un trade encore existant. Il suffit d'attacher l'EA "CloseAllTrades" à n'importe laquelle de vos fenêtres.

N'oubliez pas d'activer l'exécution des EAs dans Metatrader, puis d'enlever l'EA du graphique une fois tous vos trades supprimés ou cloturés.

Télécharger le script ou l'EA (connexion nécessaire).

 
<< Début < Précédent 1 2 Suivant > Fin >>

Page 1 sur 2

Articles en rapport :

 
Joomla 1.5 Templates by Joomlashack