ProRealTime
Zone de développement des applications API, des logiciels et utilitaires développés par les membres du forum
Répondre • Page 1 sur 1

Prise en main rapide de l'API IG en Java

par PtitFab » 07 juin 2018 20:49

Ce post est destiné à ceux qui souhaitent débuter dans le trading automatique avec un compte ig Market.
ig Market met à disposition une API (Application Programming Interface) pour récupérer les cours et passer des ordres.
Il fournit également des programmes d'exemple en Excel, C#, Java, Clojure et Node.js.
Je débute le trading automatique et j'ai choisi Java car c'est un langage que je connais et ça m'assure d'avoir un programme pouvant tourner sur un grand nombre d'OS (Windows, Linux, Mac OS).
Si vous connaissez un langage comme le C, vous n'aurez pas de mal à modifier le programme d'exemple d'ig pour l'adapter à vos besoins.

Il faut tout d'abord créer une clé API (en mode démo, dans un premier temps).
Pour cela, il faut se connecter sur son compte ig, aller dans le compte démo (le créer si nécessaire), puis dans "paramètres - clés API" du compte démo, cliquer sur "Générer une nouvelle clé".
Pour la suite, il est nécessaire de copier-coller cette clé API dans un fichier texte et de conserver le login et le mot de passe du compte. Ils seront utilisés par vos programmes de trading pour se connecter à la plateforme ig.

Récupérez les programmes d'exemples en Java sur le site labs.ig.com dans la section "Client libs et Programmes d'exemple" et décompressez les archives dans un répertoire dont le chemin ne comporte pas d'espaces (ex. sous Windows: "C:\trading\ig").

Pour le développement, il faut JDK-8 (Java Development Kit version 8), disponible gratuitement sur le net.
Il faut aussi télécharger Maven et décompresser l'archive dans un répertoire dont le chemin ne comporte pas d'espaces (ex. sous Windows: "C:\Maven"). Ensuite il faut rajouter dans votre PATH les chemins des programmes Java et du programme Maven (ils sont dans un sous-répertoire "bin").
Sous Windows, la modification de la variable PATH se fait dans Panneau de configuration - Système - Paramètres système avancées - Variables d'environnement.

Pour lancer le programme d'exemple "console", ouvrez une invite de commande. Puis placez vous dans le répertoire contenant les exemples (ex: "cd C:\trading\ig"). Puis tapez les commandes suivantes pour compiler :
mvn clean
mvn clean install
La première commande va télécharger un composant appelé "LightStreamer". Elle est nécessaire que lors de la première compilation.
La seconde commande va compiler les programmes.

Pour exécuter le programme "console":
cd ig-webapi-java-sample-console
java -jar target\ig-webapi-java-sample-console-<project version>.jar <username> <password> <api key>
Je vous conseille de créer un script pour faciliter le lancement du programme par la suite.

Vous verrez alors les cours en temps réel pendant 15 secondes des contrats que vous avez dans votre Watchlist sur votre compte ig. Un ordre d'achat sera aussi passé si l'un des contrats est ouverts aux transactions. Donc, n'oubliez de clôturer cette position dans votre compte demo après l'exécution de l'exemple.

Dans d'autres posts, je montrerai comment modifier le programme pour l'adapter à vos besoins.

Re: Prise en main rapide de l'API IG en Java

par Katana » 08 juin 2018 08:19

Merci

Re: Prise en main rapide de l'API IG en Java

par BearIsDead » 08 juin 2018 08:24

Salut. :merci: Ptit . Et vive Java :D

Re: Prise en main rapide de l'API IG en Java

par ouf2finance » 29 juin 2018 13:56

Merci pour ce partage. C'est très parlant quand on connaît le monde du Java. Je commence à songer au développement d'un robot et pense très sérieusement à utiliser le Java comme techno.

Re: Prise en main rapide de l'API IG en Java

par PtitFab » 29 juin 2018 21:15

Merci pour vos messages.
Je n'ai pas eu le temps de continuer cette file car je suis en plein développement de mon automate de trading.
Juste une mise en garde concernant l'Api IG en Java :
il faut modifier la méthode de connexion de la classe StreamingAPI pour gérer les pertes de connexion. Plus précisément, il faut ajouter un ConnectionListenerAdapter dont on surveille à l'aide de flags le déclenchement des évènements "onDataError" et "onFailure".
Dans ces cas, je conseille de désabonner tous les streams, de déconnecter/reconnecter et se ré-abonner aux streams.

Re: Prise en main rapide de l'API IG en Java

par PtitFab » 29 juin 2018 23:05

Il y a le stream "HeartBeat" qui envoie le temps UNIX (nombre de secondes depuis le 01/01/1970) toutes les secondes.

Re: Prise en main rapide de l'API IG en Java

par takapoto » 29 juin 2018 23:19

En pratique, je n'ai jamais pu l'exploiter...

Re: Prise en main rapide de l'API IG en Java

par takapoto » 29 juin 2018 23:28

C'est un flux LigthStreamer :
https://labs.ig.com/node/461

Re: Prise en main rapide de l'API IG en Java

par takapoto » 29 juin 2018 23:40

J'ai renoncé à l'utiliser et je trouve plus efficace de tester les codes retours.

Re: Prise en main rapide de l'API IG en Java

par ouf2finance » 02 juil. 2018 13:25

Ces retours d'expérience sont très précieux et m'intéressent. Merci pour ces partages ;) !!!
Connaît-on la cause de ces pertes de connexion ? Les Api IG elles mêmes, la qualité de la connexion internet, problème du wrapper proposé pour Java, autre...
Je suppose que c'est une donnée à prendre en compte.
Comment gérez-vous les ticks non reçus pendant ces pertes de connexion ?

Re: Prise en main rapide de l'API IG en Java

par takapoto » 02 juil. 2018 14:43

Pour ma part, j'ai détecté 16 déconnexions (de type "Stream Server Failure" dans les 10 derniers jours.
Mon programme (en C#) tourne sur un serveur AWS donc je ne pense pas que ce soit la machine ou la connexion internet qui soit en cause.
C'est LigthStreamer.
Il n'est pas possible de gérer les ticks non reçus : il faut simplement que l'automate soit assez évolué pour s'en affranchir..

Re: Prise en main rapide de l'API IG en Java

par ouf2finance » 02 juil. 2018 15:48

Merci pour ce précieux retour d'expérience. J'avais sous estimé cet aspect. Je pense que cela doit nativement faire partie de la stratégie.

Re: Prise en main rapide de l'API IG en Java

par takapoto » 02 juil. 2018 16:25

Dès que possible j’indiquerais le temps moyen de déconnexion

Re: Prise en main rapide de l'API IG en Java

par ouf2finance » 02 juil. 2018 17:10

C'est hyper intéressant. Ça permet de savoir pendant combien de temps on risque de manquer un événement et si ce risque est négligeable ou pas.

Sujets similaires
api ig java , app d'exemple ne compile pas
Fichier(s) joint(s) par ticktack » 21 avr. 2017 19:20 (6 Réponses)
Besoin d'un petit coup de main
par Chouini l'ourson » 29 févr. 2012 09:16 (6 Réponses)
Rendement par main
par Richard » 08 mars 2017 23:07 (3 Réponses)
Flat Tax AV Macron socialiste ou main basse de l'Europe ?
par Icarius » 24 sept. 2017 00:46 (1 Réponses)
Besoin d'un coup de main pour un devoir
par Benoist Rousseau » 14 févr. 2018 12:09 (2 Réponses)
Prise en main trackball logitech m570
par Matthieu L » 03 janv. 2019 10:25 (6 Réponses)
Prise en main de PRT
par Miju » 19 juin 2019 15:48 (3 Réponses)