ProRealTime
Zone de développement des applications API, des logiciels et utilitaires développés par les membres du forum

Utilisation des API IG avec C#

par takapoto » 04 Juin 2015 08:36

On a commencé à en parler dans le sujet http://www.andlil.com/forum/utilisation-excel-avec-api-ig-t8749.html#p245562 mais comme il est consacré à Excel, je poursuis la discussion dans ce nouveau sujet.

Re: Utilisation des API IG avec C#

par takapoto » 04 Juin 2015 08:36

Les messages précédents consacrés à C# sont les suivants :
http://www.andlil.com/forum/utilisation-excel-avec-api-ig-t8749-20.html#p253722

swingwin a écrit:Bonjour,

Bon ça y est, non sans mal j'ai enfin réussi à générer les exemples d'applications en C# .NET fournis avec les API IG sur la page :
http://labs.ig.com/sample-apps

Les prérequis sont les suivants :
- Windows 7 SP1 minimum (32 ou 64 bits)
- Framework .NET 4.5 installé
- Visual Studio 2012
- Les packages NuGet

Et là ça marche, la génération des applications fonctionne nickel. Les exemples donnés sont déjà pas mal. Ils exploitent les 2 interfaces : REST et stream de l'API IG.
Donc maintenant j'attends Lundi que le marché se mette à bouger toutes les données. Et j'ai hâte de voir les temps de réponse et la rapidité.
Donc au final je ne suis plus très loin de faire mon interface personnalisé. Une vrai station de trading.
Donc à partir de Lundi je me mets à définir un cahier des charges de station de trading adaptée à mon style et à mes besoins. Pour ceux qui sont intéressés, il y aura une interface des données vers Excel (au moins).

A+
JF

Pour information les écrans proposés par les 2 applications exemples fournis par IG. Ce n'est pas très sexy comme présentation (c'est plus pour un informaticien), mais par contre toutes les données fonctionnelles sont là. Donc il n'y a plus qu'à faire une station de trading sexy.

Application Winforms :
Appli Winforms (1).JPG

Application WPF
Appli WPF (1).JPG

swingwin a écrit:Comme prévu, j'ai testé les exemples d'applications C# .NET en temps réel.
Les temps de réaction sont excellents (au visuel, c'est à l'identique de la L3).
Rien d'étonnant puisque ça exploite la même interface API IG (requêtes HTTP).
Les abonnements aux flux Stream ont l'air tout aussi rapides que pour la L3.

Donc maintenant, il n'y a pas photo, je me lance dans le développement de ma station de trading en utilisant les composants .NET de l'API IG.
Je suis en plein maquettage de l'écran de trading.
Pour infos ci-dessous les écrans saisis en temps réel correspondant aux exemples fournis par IG.
A+
JF

Application type Winforms :
Spoiler:
API NET Winforms (watchlist).JPG

Application type WPF.
Spoiler:
API NET WPF (watchlist).JPG
API NET WPF (select).JPG

takapoto a écrit:Bonjour swingwin,

De mon coté, j'ai également commencé l'écriture de mon outil en C#.

J'ai un peu débroussaillé la manière d'appeler les API d'IG et j'ai regroupé sous un même projet plusieurs classes permettant d'y accéder.

Si ça t'intéresse, pour gagner du temps, c'est ici :
https://www.dropbox.com/short/vhyrd4xliy49g1d/AADh3VoyRN6VWUqo4pDgsj_ga?dl=0

Ce n'est pas encore complet, mais ça permet déjà de se connecter et de streamer les cours.

Edit :
Le mode d'emploi est dans TakaIGGlobales.cs

swingwin a écrit:Merci Takapoto.
Je regarde tout ça demain.
Il ne me reste plus que 4 jours vraiment libre pour avancer sur le sujet.
Mais avant de commencer le dév., je vais me faire une petite maquette sur une feuille. J'ai besoin que l'appli soit ergonomique, adaptée à mon besoin, etc... (et surtout qu'elle soit sexy et rapide, car une appli pourrie et lente avec un 'look and feel' de daube, ça ne donne pas envie de trader)
A+
JF

Re: Utilisation des API IG avec C#

par takapoto » 04 Juin 2015 08:50

J'ai continué à explorer le SDK IG pour C# et j'ai trouvé qu'il n'était pas complet.

Il manque :
- La possibilité de se connecter avec un compte réel (l'url "demo-api" est codée en dur dans IGRestService.cs)
- La possibilité d'utiliser un proxy
- Des exemples pour le passage d'ordres

Ceci dit, il est à préciser que je découvre le C# ainsi que ces techniques HTTP et mes conclusions sont peut-être erronées..

En tout état de cause, comme on n'est jamais si bien servi que par soi-même, je vais réécrire ces fonctions de base : ça sera plus long, mais formateur.

Re: Utilisation des API IG avec C#

par falex » 04 Juin 2015 08:55

Tous les exemples d'ig ont "hardcode" l'URL de demo...

Re: Utilisation des API IG avec C#

par takapoto » 04 Juin 2015 09:06

Oui, c'est normal qu'on utilise l'URL de démo par défaut.
Donc que ce soit proposé dans les exemples ne me gène pas.
Mais j'aurai bien aimé que ce ne soit pas le cas dans l'API.
(sauf s'il y a une subtilité du C# que j'ignore, on ne peut pas modifier l'exemple pour accéder à un compte réel. Pour y arriver, j'ai du modifier le source de L'API, ce qui est gênant en cas d'évolution de celle-ci)

Re: Utilisation des API IG avec C#

par falex » 04 Juin 2015 09:41

Qu'entends tu par l'API ? l'API ce n'est pas du code sur nos machines, l'API c'est une interface rien d'autre.

l'API est un service disponible et publié côté serveur IG, et il nous mettent la doc à dispo pour y acceder, je ne vois pas ce que tu veux dire ?

Re: Utilisation des API IG avec C#

par takapoto » 04 Juin 2015 10:32

Pour moi, API, c'est "Application Programming Interface", c'est à dire une bibliothèque logicielle comportant un ensemble des fonctions mises à disposition par IG pour servir d'interface à leur service.

Si tu préfère utiliser ce terme pour la partie du code qui est du coté serveur, je parlerai alors de SDK (Software Development Kit).

Dans le cas précis du C#, cette bibliothèque, mise à disposition par IG, s'appelle IGPublicPcl.

Elle propose des fonctions d'accès aux services REST et STREAM.

Je la distingue des exemples proposés, qui eux, se contentent d'illustrer la manière d'utiliser cette bibliothèque.

Les fonctions du SDK sont des fonctions de haut niveau qui encapsulent les appels aux services de IG.

Par exemple, pour établir une connexion, le SDK C# de IG, propose la fonction :
Authenticate(AuthenticationRequest ar, string apiKey)
qui évite de connaître le protocole détaillé de connexion REST.

Pour se connecter en C#, on peut simplement écrire :
var request = new AuthenticationRequest();
request.identifier = identifier;
request.password = password;
var authenticationResponse = await igRestApiClient.Authenticate(request, apiKey);


Contrairement à ce qui est fait dans L3 où vous avez dû coder les requêtes HTTP en détail et donc connaître le protocole exact (quoi mettre dans le HEADER, quoi mettre dans le BODY, etc...) :
headers = {'content-type': 'application/json; charset=UTF-8', 'Accept': 'application/json; charset=UTF-8', 'version':1, 'X-IG-API-KEY': personal.api_key}
body = {"currencyCode": globalvar.currencyCode, "epic": personal.epic, "expiry": expiry, "direction": direction, "size": reqDealSize, "forceOpen": isForceOpen, "guaranteedStop": False, "orderType": "MARKET", "limitDistance": TPpoint, "stopDistance": SLpoint, "guaranteedStop": isStopGuaranteed}
r = requests.post(urls.neworderurl, data=json.dumps(body), headers=urls.fullheaders, proxies=personal.proxies)
if r.status_code == 200:


Bref, j'aurais voulu éviter cela et aller plus vite en utilisant le SDK proposé par IG, mais comme il n'est pas complet, c'est loupé !

Re: Utilisation des API IG avec C#

par falex » 04 Juin 2015 10:54

Oui ok pour la sémantique. Effectivement ce que met à dispo IG est plus un SDK, je te rejoins.

Arf tu sais la partie url est en fait très simple.
Le headers utilisé est toujours le même sauf dans deux cas :
A l'authent : c'est normal on a pas encore la clef de session :-)
Pour la fonction HTTP DELETE : Y'a un bug chez IG donc tu dois faire un POST avec dans le header le mot clef _delete.

Aprsè l'appel de chaque url a besoin d'un certains nombre de paramètre que tu devras regarder pour écrire ton programme de toute façon (où passer en paramètre de ta biblio de fonction IGPublicPcl.

Je comprends ta deception par rapport à cette biblio ...

La doc D'IG est relativement clair et une fois que tu auras intégrer les deux trois mécanisme tu auras vite oublié cet épisode :-)

Re: Utilisation des API IG avec C#

par takapoto » 04 Juin 2015 11:13

Ce n'est évidemment pas pour toi que j'ai un peu développé la sémantique, mais pour des éventuels lecteurs moins avertis pour qu'ils comprennent de quoi on parle.

Merci de tes tuyaux.

Je ne suis pas vraiment déçu par le SDK (j'ai l'habitude des boîtes noires incomplètes et en plus, là, on le source), c'est juste que je n'ai jamais travaillé avec le WEB, donc je ne connais pas le protocole HTTP et je ne voulais pas passer trop de temps à l'étudier en détail.

Mais je vais le faire en m'inspirant de L3 pour écrire mes fonctions de base en C# (que je mettrais bien sûr à disposition si qq est intéressé).

Re: Utilisation des API IG avec C#

par falex » 04 Juin 2015 12:47

HTTP c'est 4 directives :
GET
PUT
POST
DELETE

pour toutes requetess faut envoyer un header (c'est là que se trouve un certain nombre d'info comme ta clef de session)
et pour les paramètre de la "requêtes" c'est :
- soit dans l'url pour un GET
- soit dans le body pour les 4 autres.

Voilà avec ça tu sais causer avec un serveur web ...

Articles en relation
Utilisation Excel avec API IG
Fichier(s) joint(s) par VK_Trader » 14 Mai 2015 23:16 (79 Réponses)
L3 : Votre utilisation ?
par falex » 09 Sep 2015 17:38 (37 Réponses)
API IG : Utilisation de CURL
par swingwin » 14 Sep 2016 16:35 (13 Réponses)
trading sur options ig avec api ?
par Benoist Rousseau » 28 Mar 2017 17:24 (4 Réponses)
API IG : problème avec les working order ?
par clodreb » 01 Fév 2016 10:09 (11 Réponses)
ordres passés en double avec la L3
par falex » 08 Avr 2016 19:43 (5 Réponses)
Monotrade : encore une application de trading avec les API
Fichier(s) joint(s) par Benoist Rousseau » 14 Aoû 2015 05:28 (70 Réponses)
Cours en temps réel sur le forum avec API iG ?
Fichier(s) joint(s) par jized » 26 Aoû 2015 16:56 (98 Réponses)
Statistiques en temps réel sur le forum avec API iG
Fichier(s) joint(s) par Benoist Rousseau » 27 Aoû 2015 10:55 (14 Réponses)
Récupérer les cours avec l'API IG Market et Python
par layzard » 24 Juil 2016 12:09 (54 Réponses)

ProRealTime

Alors partagez-le 5 fois c'est bon pour la santé