Metatrader – Historiques de données financières

En matière de prédiction, rien n’est plus important que de disposer de données de qualité, et en quantité suffisante. Pour réaliser un robot robuste, c’est à dire adapté au plus grand nombre de situations de marché différentes, un test réalisé sur 1 ou 2 ans sera loin d’être suffisant.

Si vous avez opté pour une stratégie dont le principe est volontairement de générer des trades de manière quasi aléatoire, en espérant une balance plutôt positive in fine, ce point aura peut-être moins d’importance, mais vous devriez tout de même être curieux de savoir si vos réglages fonctionnent de manière générale, ou si ils sont adaptés juste sur ces derniers mois, avec par exemple un contexte de croissance forte et régulière.


Si votre robot est basé sur des signaux d’achat/vente clairement identifiés par une stratégie donnée, l’analyse des tendances aux différentes échelles de temps va alors permettre d’identifier les configurations de marché favorables à notre stratégie, de celles qui le sont beaucoup moins, et bien entendu, d’agir en conséquence.

Pour cela, il est important de regarder les tendances hebdomadaires et mensuelles qui ont un impact très important (que vous vous en soyez rendu compte ou pas encore…), et qui ne peuvent s’étudier que sur plusieurs années.

Restreindre son analyse à 1 ou 2 années comme beaucoup le font fait perdre une quantité d’informations pourtant très utile.

La récupération d’historiques suffisants est donc l’une des premières préoccupations à avoir, mais malheureusement, c’est un sujet rarement évoqué sur les forums.

Voyons donc tout cela en détail.

Tout d’abord, il est important de comprendre que par défaut, les historiques disponibles sur Metatrader sont largement incomplets. Si par exemple en mensuel vous allez pouvoir remonter 20 années au-delà, en hebdomadaire vous n’aurez peut-être plus que 10 années, puis au fur et à mesure que vous allez baisser dans les échelles de temps, la taille de l’historique va diminuer. Ces valeurs vont en outre varier d’un actif à un autre, et d’un broker à l’autre.
Sur l’échelle à 1 minute, vous n’aurez plus que quelques mois.
Et si vous descendez jusqu’aux ticks, il faut savoir que Metatrader inclut un système de simulation de ticks. Vous n’aurez donc probablement pas des ticks réels mais des ticks simulés.

Voyons maintenant comment améliorer le fonctionnement de base de Metatrader concernant les historiques de données.

Tick Data Suite et Tick Story sont 2 fournisseurs d’historiques de données financières parmi les plus cités. Tick Data Suite est un service payant (mais accessible), avec une version d’essai gratuite de 15 jours qui vous permet déjà de télécharger pas mal de données. Tick Story est un service gratuit, mais avec une version payante permettant notamment d’accélérer grandement les téléchargements qui sinon peuvent prendre facilement plusieurs heures.

Je vais par la suite utiliser Tick Story pour les explications, mais la procédure est quasiment la même pour Tick Data Suite, seule change l’interface de téléchargement.

Dans les 2 cas, il est possible de récupérer des historiques de 10 à 20 ans selon les actifs. Est-ce suffisant? Pas évident, nous verrons dans un autre comment y remédier en réalisant des optimisations sur plusieurs actifs.

Après avoir installer l’interface Tick Story proposée depuis leur site, vous avez rapidement accès à l’ensemble des actifs disponibles, forex, indices, crypto, commodities, etc… si vous ne trouvez pas votre bonheur, vous pouvez toujours essayer auprès d’un autre fournisseur de datas.

L’étape suivante consiste, avec un clic droit, à sélectionner votre actif, puis choisissez “Exporter vers MT5”, puis l’option “Bar” ou “Tick”. Les fichiers Ticks sont bien évidemment beaucoup plus volumineux que les simples Bars. Nous verrons dans un prochain article que les simulations sur Ticks sont également beaucoup plus lentes que sur les Bars. Vous pouvez dans un premier temps prendre l’option “Bar”, et si vous avez besoin plus tard de confirmer votre stratégie de manière plus précise en utilisant les Ticks, vous saurez où les trouver.

Une fois l’option “Bar” choisie, l’utilitaire de téléchargement apparaît. La période proposée par défaut est la période totale disponible. Ici, pour le DAX40, on a accès aux données depuis 2011, ce qui fait un peu plus de 10 années de données. Est-ce suffisant? Probablement pas, mais c’est tout ce qu’il est possible d’avoir pour commencer en gratuit.

Dans la ligne “Calendrier”, vous pouvez choisir le timeframe à télécharger. Je vous conseille le 1 minute ou le 5 minutes mais il vaut mieux ne pas aller au-delà.

La ligne “Régler le fuseau horaire” a une importance capitale que je n’ai comprise que tardivement malheureusement. Si vous laissez la valeur par défaut, sans chercher à vous aligner avec le fuseau horaire du serveur de votre broker, vous risquez d’avoir des décalages entre les courbes “temps réel” et les courbes issues de vos historiques. Cela peut avoir plusieurs incidences. Par exemple si votre stratégie doit respecter à des heures précises, vous n’allez tout simplement pas tester sur les bonnes tranches d’heures. Une autre incidence sur laquelle on peut facilement passer à côté pendant des années, est qu’un décalage d’une heure seulement entre les heures de votre historiques et les heures de votre broker peut provoquer l’apparition d’une bougie le dimanche (absente sur les courbes temps réel), ce qui va venir chambouler tous vos calculs d’indicateurs, positionnement dans votre stratégie, optimisation, etc… Autant dire que vous n’aurez qu’à tout reprendre depuis le début.

Pour ne pas vous tromper, il est préférable de télécharger seulement les derniers jours, de charger sur metatrader (nous allons voir maintenant comment faire), puis de comparer avec vos courbes réelles. Si vos bougies sont décalées, c’est que vous n’avez pas le bon fuseau horaire. Une fois que vous êtes certain du bon fuseau horaire à télécharger, vous n’avez plus qu’à lancer le téléchargement et à patienter!

Chargement des données dans Metatrader

La procédure est assez simple, quand on sait comment s’y prendre.

L’idée consiste à créer un nouveau symbole que l’on va venir alimenter avec nos historiques. Ce symbole sera ensuite utilisable directement depuis le testeur de stratégie comme si il s’agissait d’un symbole fourni par votre broker.

Depuis la barre d’outils, en haut à gauche, ou depuis l’onglet “Voir / Symboles”, vous lancez la fenêtre “Symboles”. Vous choisissez l’actif désiré, ici le DAX, en cliquant dessus, les informations relatives à cet actif apparaissent en bas. Puis vous cliquez sur “Créer un symbole”. Le fait de pré-sélectionner votre actif va permettre de récupérer toutes les informations qui lui sont relatives, et donc d’éviter de les saisir par la suite.

La fenêtre “Symbole personnalisé” apparaît alors. Il est préférable d’ajouter une extension “_ts” par exemple pour “tickstory” au nom de votre symbole afin de tracer l’origine des données et ne pas risquer de le confondre avec un symbole “réel”.

Une fois créé, votre symbole apparaîtra dans la rubrique “Custom”.

La dernière étape consiste à uploader votre historique. Pour cela, il vous suffit de cliquer sur le bouton “Barres” en haut de cette même fenêtre, puis sur le bouton “Importer des Barres”.

Une fois arrivé là, vous avez presque fini, mais une dernière vérification très importante s’impose: le montant des spreads. Les historiques contiennent en effet en dernière colonne le montant du spread applicable, mais il peut arriver un que cette valeur, qui dépend notamment du tickvalue configuré sur votre symbole, ne corresponde pas du tout aux spreads réels appliqués par votre broker. J’ai constaté des écarts équivalents à un facteur de 10, ce qui bien sût n’est pas acceptable. Pour s’assurer qu’il n’y a pas de soucis à ce niveau, le mieux est de lancer un robot dans le testeur de stratégie qui va afficher l’écart entre votre ASK et votre BID. Vous faîtes la même chose sur votre symbole réel. Si vous avez effectivement un facteur 10 de différence, vous devez alors ouvrir votre fichier d’historique sur un bon vieux excel et modifier la valeur de la dernière colonne en conséquence.

Il va de soi que sur un historique de 10 ans, le montant du spread a forcément évolué dans le temps, en même temps que la valeur de l’actif en question. C’est donc à vous de faire le choix d’utiliser une valeur fixe, un pourcentage, ou autre. Toutefois si vous avez des stratégies en daily, avec des trades sur plusieurs journées, une valeur approximative du spread de quelques points n’aura que peu d’influence sur l’évaluation de la performance générale. Si vous faîtes du scalping, ce n’est bien évidemment pas la même histoire!

Une fois le fichier modifié, vous pouvez le téléverser à nouveau par la même procédure.

Trading algorithmique: quel langage/plateforme choisir?

Le choix de l’environnement que vous souhaitez utiliser pour le développement de vos robots de trading est le premier choix particulièrement déterminant pour la suite et ne doit pas être pris à la légère.

La prise en main de cet environnement va demander par la suite beaucoup d’efforts et de temps, voici donc quelques conseils pour vous aider à y voir plus clair.

TradingView et ProRealTime sont des plateformes particulièrement appréciées, agréables à prendre en main, et très adaptées aux non-développeurs. Attention, ce sont des plateformes payantes. TradingView propose une version gratuite, mais les fonctionnalités sont alors limitées, comme par exemple le nombre d’indicateurs que l’on peut associer simultanément sur un même graphe. Les prix vont de 12.95$/mois à 49.95$/mois, ce qui n’est pas négligeable.
Chacune de ces plateformes propose son propre langage de programmation, relativement accessible pour un non-développeur (c’est l’objectif affiché).
Vous allez pouvoir coder vos stratégies ou indicateurs assez rapidement.

Cela fait de TradingView et ProRealTime les choix à privilégier si vous n’avez pas de compétence en programmation.

Mais si vous avez des compétences en programmation, vous allez très rapidement vous sentir très à l’étroit, et c’est normal. Ces plateformes sont avant tout dédiées au grand public.

Les points bloquants sont les suivants:

  • historique de données restreint, fonction de l’abonnement choisi et du timeframe. Au mieux, vous aurez 20.000 barres d’historiques sur TradingView par exemple.
  • environnement de travail délocalisé. vous avez la possibilité de ne pas partager votre script, mais il sera forcément accessible par toute l’équipe technique. si vous avez eu le bonheur de trouver la perle rare et que vous générer de gros profits, dîtes-vous que cela se saura et que votre code n’aura jamais la garantie d’être parfaitement protégé.
  • environnement inadapté aux gros scripts (un robot particulièrement travaillé peut rapidement prendre plusieurs milliers de lignes)
  • à ma connaissance, impossibilité de générer des fichiers de statistiques relatifs aux trades émis et aux conditions de marché qui sont indispensables pour aller plus loin dans l’optimisation d’un robot
  • vous n’êtes pas libre de travailler avec le broker de votre choix

Vous l’aurez compris, en tant que développeur, habituée aux environnements libres, et gratuits, je préfère de loin Metatrader et/ou Python, qui nous allons le voir sont particulièrement adaptés à de situations différentes, et qui en font des outils assez complémentaires.

Metatrader

Metatrader 4 ou 5 est une plateforme totalement libre et gratuite.
Vous pouvez la connecter au broker de votre choix, et avoir accès à une gamme particulièrement riche d’indicateurs et de robots qu’ils soient gratuits ou payants. La communauté Metatrader est particulièrement active. Le design est certes moins attractif que TradingView, mais on s’y habitue très vite.

Le MetaEditor qui vous permet de créer vos indicateurs et trading bots est une interface de développement classique, en local bien en sécurité sur votre pc, rien ne viendra limiter votre ardeur à la tâche. Vous pourrez entre autre générer des fichiers de statistiques, utiliser de la programmation orientée objet, bref, faire un vrai travail de développement.

Le langage se prend en main assez rapidement, même si cela est plus compliqué que pour les plateformes payantes vues précédemment.

Les historiques par défaut sont assez limités, mais nous verrons dans un prochain article que ce n’est pas un frein, car il est possible d’ajouter des historiques gratuitement sur bon nombre d’actifs.

Pour ces raisons, Metatrader est un candidat très sérieux pour débuter dans le développement de robot de trading.

Les limites que l’on pourrait poser à son utilisation sont les suivantes:

  • non adapté pour la mise en œuvre d’un robot qui devrait scruter des centaines ou milliers d’actions à la recherche des meilleures opportunités
  • on ne peut réaliser que des systèmes “experts” par opposition aux systèmes plus avancés que l’on connaît aujourd’hui sous les termes de machine learning ou deep learning

Python

Python est un langage open source, parmi les plus appréciés actuellement. Il offre de nombreuses bibliothèques spécialement adaptées au Machine Mearning et au Deep Learning, ainsi que des bibliothèques dédiées à la finance, comme la bibliothèque talib qui permet de calculer des indicateurs techniques.

Le choix de python doit être mûrement réfléchi, relativement à notre niveau en programmation, et surtout à l’objectif que l’on souhaite atteindre. Foncer tête baissée sur Python, sans avoir au préalable d’expérience en développement de robot de trading, nécessaire pour en comprendre les spécificités, serait à mon sens une erreur.

“Think big, start small, move fast”.

Si vous avez déjà une bonne expérience en développement de robot de trading, Python sera par contre particulièrement adapté dans les situations suivantes:

  • réalisation d’un robot sur actions, devant scanner des centaines, voire des milliers d’actifs pour lister les meilleures opportunités
  • mise en application d’algorithmes de machine learning/deep learning

En espérant que cela vous aura été utile!