API REST / STREAM

LabZone, l'atelier de développement du forum Andlil : API, logiciels et utilitaires de trading créés par les membres, versions, bugs et idées.
Avatar du membre
leroidessables
Chevalier Émérite Jedi
Messages : 3517
Enregistré le : 30 août 2014 21:13

Re: API REST

Message non lu par leroidessables »

Avez-vous du nouveaux messieurs les experts informatiques?

Je voudrais pouvoir trader via excel, ne serait-ce que pour avoir des tickets pré-remplis et maintenus. Mais mes connaissances inexistantes en programmation me laisse les bras ballants devant le première erreur qui remonte à la connexion de l'API.

Merci d'avance :mercichinois:
Avatar du membre
takapoto
Membre du Conseil Jedi
Messages : 7801
Enregistré le : 16 déc. 2013 15:56

Re: API REST

Message non lu par takapoto »

- a écrit :pour tous ceux qui voudraient faire de l'auto (prenant en compte des infos d'indicateurs d'AT), il y a une super librairie AT qui s'appelle TA-LIB (c'est de l'open source)
- :merci:
Avatar du membre
Mister Hyde
Compagnon Jedi
Messages : 1343
Enregistré le : 26 mai 2014 11:49

Re: API REST

Message non lu par Mister Hyde »

- a écrit : Interface C++
Pour ceux que ça intéresse, il y a un gars qui a posté son exemple de client "LightStreamer" implémenté en C++ à l'url suivante :
https://github.com/digination/cpp-lsclient
et qui précise ceci :
"PS: comming soon, a C++ connector to the IG Api for use with your ATS."
pourvu que le "soon" ne soit pas "too late" pour ceux qui attendent une interface C++
Merci -, ça m'intéresse fortement mais

Code : #

This is a Quick'n'Dirty C++ implementation of LightStreamer Client
Copyright(c) 2015 Clément Gamé.

Unit Tests: 0% (Code Coverage: 0%)
Je vais m'en inspirer.
- a écrit : Pour le client lightstreamer en C++, malheureusement l'auteur ne s'est pas basé sur des librairies classiques type BOOST mais a un biais Linux, sur windows il faut donc installer Cygwin ou installer les portages des thread posix et libcurl.
Justement, l'auteur à choisis des libs portables :
libcurl is highly portable, it builds and works identically on numerous platforms, including Solaris, NetBSD, FreeBSD, OpenBSD, Darwin, HPUX, IRIX, AIX, Tru64, Linux, UnixWare, HURD, Windows, Amiga, OS/2, BeOs, Mac OS X, Ultrix, QNX, OpenVMS, RISC OS, Novell NetWare, DOS and more...
On peut seulement regretter qu'il n'ait pas utilisé le support des threads ajouté dans C++11

Pour développer une app en C# .Net, tout est déjà dans le framework .Net (threading, socket, http) et il existe une lib client-lightstreamer qui évite de devoir implémenter le protocole, pas besoin de libcurl ou équivalent.
beni
Compagnon Jedi
Messages : 1395
Enregistré le : 11 juil. 2012 18:31

Re: API REST

Message non lu par beni »

Bonsoir,

Pour les développeurs python il y une librairie qui marche plutôt bien
https://github.com/femtotrader/ig-markets-rest-api-python-library

une deuxième mais celle là je n'ai pas testé.
https://github.com/Weswit/Lightstreamer-example-StockList-client-python

a+
ladefense92800
Maître Jedi
Messages : 4289
Enregistré le : 18 déc. 2011 18:21

Re: API REST

Message non lu par ladefense92800 »

je decouvre la file ..... abonné
Avatar du membre
falex
Le Gladiateur
Messages : 34267
Enregistré le : 12 févr. 2013 15:41

Re: API REST

Message non lu par falex »

Ah cool car en tant que fan de Python j'avais la flemme de devoir tout écrire
Avatar du membre
koub
Stormtrooper
Messages : 229
Enregistré le : 13 déc. 2014 19:02

Re: API REST

Message non lu par koub »

Plop, je viens de tomber par hasard sur ce fil, je le place directement dans mes favoris...

A la revoyure, koub. :)
Avatar du membre
koub
Stormtrooper
Messages : 229
Enregistré le : 13 déc. 2014 19:02

Re: API REST

Message non lu par koub »

- a écrit :Le message d'erreur est le suivant au login (une fois positionné le user, password et API key) :
"Impossible de lire la propriété RTD de la classe WorksheetFunction".
HoulaHup, barbatruc:
https://labs.ig.com/node/132

+, koub. :mercichinois:
Avatar du membre
falex
Le Gladiateur
Messages : 34267
Enregistré le : 12 févr. 2013 15:41

Re: API REST

Message non lu par falex »

MDR

C'est comme l'appliction iphone : c'edst exacement le même pb.

Dès que que tu veux modifier un niveau tu es obligé d'effacer jusqu'u point et de taper une "," ...

ça fait déjà 4 fois que je remonte le pb ...

---

D'un autre côté Excel est relativement "Ch.ant" avec cette hsitoire de "." et "," ...
Avatar du membre
falex
Le Gladiateur
Messages : 34267
Enregistré le : 12 févr. 2013 15:41

Re: API REST

Message non lu par falex »

Tiens Voici une carte des pays qui utilise le "point" et la "virgule" comme séparateur de décimal.

http://fr.wikipedia.org/wiki/S%C3%A9parateur_d%C3%A9cimal#mediaviewer/File:DecimalSeparator.svg

En nombre les Virgule sont majoritaire ... mais comme l'informatique est plutot "anglo-saxonne" on est obligé de subir ce genre de pb :-( desespérant
Avatar du membre
falex
Le Gladiateur
Messages : 34267
Enregistré le : 12 févr. 2013 15:41

Re: API REST

Message non lu par falex »

Pour ceux qui on t déjà codé leur appli IG / API petite question et correction si possible :

1) il faut se loger via les API REST pour avoir un token CST et X-SECURITY-TOKEN.
De là deux choix possible :
1.1) Rester en "REST" avec pour action "gestion ducompte", dealing, "info de marché ou historique de prix", les listes utilisateurs.
De là impossible d'avoir les cours en réel (Vrai ou faux ?)

1.2) Passer en mode Stream (login obligatoire avec les clefs CST et X-SECURITY-TOKEN)
Accès aux flux tick by tick
mais un truc que je ne pige pas bien en lisant les Référence des commande API : est-il possible d'ouvrir une position en Stream ? ou bien cela se fait uniquement en REST ?

Que me faut-il pour avoir :
1) la liste des positions ouvertes
2) Ouvrir/fermer une position
3) flux temps réel du prix

Je dirai et pouvez-vous me corriger :
1) REST oui Stream Oui
2) REST oui STREAM ?
3) Stream uniquement
lr35
Ewok
Messages : 35
Enregistré le : 05 déc. 2014 20:11

Re: API REST / STREAM

Message non lu par lr35 »

falex: Les ouvertures de position sauf erreur, c'est via REST, le stream, c'est juste pour l'affichage.

Pas seulement l'affichage des cours, cela peut aussi afficher en temps réel les positions prises, peut être même les fluctuation du compte (d'une position?) lorsqu'une position est ouverte
lr35
Ewok
Messages : 35
Enregistré le : 05 déc. 2014 20:11

Re: API REST / STREAM

Message non lu par lr35 »

Je ne comprend pas trop les push/pull.

Pour le stream, t'as une connexion ouverte et tu écoutes.
Le stream à un truc de controle pour lui dire ce que tu veux écouter, les cours du dax par exemple.

L'API IG REST, tu lui demandes quelque chose, il te répond tout de suite en effectuant une action si besoin.
Avatar du membre
Melmoth
Padawan
Messages : 299
Enregistré le : 12 janv. 2015 12:40

Re: API REST

Message non lu par Melmoth »

falex a écrit :Pour ceux qui on t déjà codé leur appli IG / API petite question et correction si possible :

1) il faut se loger via les API REST pour avoir un token CST et X-SECURITY-TOKEN.
De là deux choix possible :
1.1) Rester en "REST" avec pour action "gestion ducompte", dealing, "info de marché ou historique de prix", les listes utilisateurs.
De là impossible d'avoir les cours en réel (Vrai ou faux ?)

1.2) Passer en mode Stream (login obligatoire avec les clefs CST et X-SECURITY-TOKEN)
Accès aux flux tick by tick
mais un truc que je ne pige pas bien en lisant les Référence des commande API : est-il possible d'ouvrir une position en Stream ? ou bien cela se fait uniquement en REST ?

Que me faut-il pour avoir :
1) la liste des positions ouvertes
2) Ouvrir/fermer une position
3) flux temps réel du prix

Je dirai et pouvez-vous me corriger :
1) REST oui Stream Oui
2) REST oui STREAM ?
3) Stream uniquement

Salut,

Les deux API sont complémentaires et ne s'opposent pas.
1) REST
2) REST ou STREAM (tout comme on peut ouvrir une position dans PRT et la fermer dans l'interface Web)
3) STREAM (via REST cela est possible mais techniquement moins performant et tu atteindras rapidement le quota des 40 requêtes/minute)
Avatar du membre
Melmoth
Padawan
Messages : 299
Enregistré le : 12 janv. 2015 12:40

Re: API REST / STREAM

Message non lu par Melmoth »

lr35 a écrit :Je ne comprend pas trop les push/pull.

Pour le stream, t'as une connexion ouverte et tu écoutes.
Le stream à un truc de controle pour lui dire ce que tu veux écouter, les cours du dax par exemple.

L'API IG REST, tu lui demandes quelque chose, il te répond tout de suite en effectuant une action si besoin.
Oui c'est bien cela : push/pull sont juste des termes techniques qui indiquent le sens du flux des données entre ton ordinateur et les serveurs d'IG : push veut dire du serveur IG à chez toi (synchrone : j'ai les mises-à-jour dès qu'elles arrivent chez moi), pull de ton ordinateur vers le serveur (asynchrone).
Avatar du membre
Melmoth
Padawan
Messages : 299
Enregistré le : 12 janv. 2015 12:40

Re: API REST

Message non lu par Melmoth »

Mister Hyde a écrit :
- a écrit :
- a écrit : Pour le client lightstreamer en C++, malheureusement l'auteur ne s'est pas basé sur des librairies classiques type BOOST mais a un biais Linux, sur windows il faut donc installer Cygwin ou installer les portages des thread posix et libcurl.

Pour développer une app en C# .Net, tout est déjà dans le framework .Net (threading, socket, http) et il existe une lib client-lightstreamer qui évite de devoir implémenter le protocole, pas besoin de libcurl ou équivalent.
Heu...Il y a surtout la librairie Pcl fournie par IG pour développer en C# un client manipulant les deux API Rest et Stream. ;-)

Beaucoup plus simple, on manipule directement des objets et tout est encapsulé. C'est beaucoup plus rapide à développer et la gestion de l'asynchronisme est parfaitement géré par .NET 5 (tokens async/await).
Avatar du membre
falex
Le Gladiateur
Messages : 34267
Enregistré le : 12 févr. 2013 15:41

Re: API REST / STREAM

Message non lu par falex »

A h oui bien vue le côté Push/pull, c'est hyper important pour bien écrire ton code car là tu ne le fais pas réagir de la même manière.
Avatar du membre
Mister Hyde
Compagnon Jedi
Messages : 1343
Enregistré le : 26 mai 2014 11:49

Re: API REST / STREAM

Message non lu par Mister Hyde »

Pas mieux,

REST pour effectuer des actions ponctuelles, passage d'ordre, récupérer les infos du compte, les positions ouvertes / en attente.
Stream, pour recevoir l'information en continue sur les cours, les positions ouvertes / en attente.

Ne pas utiliser REST pour récupérer les infos en continue pour savoir si vos positions en attente ont été ouverte par exemple.
Aux mieux vous allez atteindre le quota de l'API, au pire vous allez vous faire suspendre.

Rappel des limites :

What are the default REST Trading API limits?

Per-app non-trading requests per minute: 60
Per-account trading requests per minute: 100
Per-account non-trading requests per minute: 30
Historical price data points per week: 10,000


What are the default Streaming API limits?
40 concurrent subscriptions
Avatar du membre
Mister Hyde
Compagnon Jedi
Messages : 1343
Enregistré le : 26 mai 2014 11:49

Re: API REST

Message non lu par Mister Hyde »

Melmoth a écrit :
falex a écrit : Que me faut-il pour avoir :
1) la liste des positions ouvertes
2) Ouvrir/fermer une position
3) flux temps réel du prix

Je dirai et pouvez-vous me corriger :
1) REST oui Stream Oui
2) REST oui STREAM ?
3) Stream uniquement

Salut,

Les deux API sont complémentaires et ne s'opposent pas.
1) REST
2) REST ou STREAM (tout comme on peut ouvrir une position dans PRT et la fermer dans l'interface Web)
3) STREAM (via REST cela est possible mais techniquement moins performant et tu atteindras rapidement le quota des 40 requêtes/minute)
Dans l'API Stream on ne peut pas ouvrir/fermer de position, c'est simplement pour recevoir en temps réel les mise à jour des positions.
Avatar du membre
koub
Stormtrooper
Messages : 229
Enregistré le : 13 déc. 2014 19:02

Re: API REST / STREAM

Message non lu par koub »

Replop la team
- a écrit :Je vais enfin pouvoir me servir de cet exemple Excel (avant de développer mon appli .NET, qui elle devrait prendre plus de temps à travailler).
You are welcome, je voulais aussi bosser en VBA pour l'API, je trouve cela plus simple même si j'aime bien le python ou C#... Autant faire profiter la communauté et les gens qui veulent s'y frotter around the world chez IG. :)

Benoist pourra être fier de ses disciples, j'ai fait de la com pour ANDLIL et il pourra faire ses tests sur EXCEL... :D

Pour ma part, une fois l'exemple VBA bien dépouillé du surplus de codes "multi-indices", j'ai bon espoir de pouvoir descendre sous la barre des 500ms sans faire chauffer mon I5 watercoolé :musique:
Falex a écrit :ça fait déjà 4 fois que je remonte le pb ...
LoL, tu n'y as pas été avec le dos de la cuillère en tout cas sur le forum IG-Labs, ils ont pris cher les mecs... Pour leur défense, la librairie/classe de conversion HTTP "JSON" est libre et disponible pour la plupart des langages, ils l'ont implanté, n'importe qui aurait fait pareil, moi le premier... Et déboguer un problème qu'on n'arrive pas à reproduire est franchement compliqué, j'ai encore les stigmates de ce genre de déboires par le passé...

L'important étant d'avancer et si possible en communauté, le nombre fait la force, j'en suis intimement persuadé... :)
Falex a écrit :D'un autre côté Excel est relativement "Ch.ant" avec cette hsitoire de "." et "," ...
Oui problème récurrent, j'ai actuellement des difficultés avec FireBird au boulot (injections SQL), faire des MAJ sur des tables avec des nombres à virgule, ouarf... pirouettes powaa...


J'ai vu que Benoist avait créé le forum trading auto (ou semi-auto? ;)), excellent!!! cela serait bien vu de déplacer ce fil dans cette section, enfin c'est mon avis...

+, koub. ;)
Spoiler:
En tout cas, j'apprécie fortement la dynamique qui se crée autour de ce sujet d'API, ne changez rien, nous arriverons forcement à sortir quelque chose de cet élan communautaire...