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

Re: [PYTHON] Script API IG STREAM + REST

par FemtoTrader » 30 sept. 2015 10:56

ok

tu connais Git, GitHub ?

Re: [PYTHON] Script API IG STREAM + REST

par falex » 30 sept. 2015 10:59

Oui ... et non.

Je te donne ma modification et tu peux faire un update si tu veux. Je n'utiliserais pas github trop compliqué dans mon cas.

Re: [PYTHON] Script API IG STREAM + REST

par FemtoTrader » 30 sept. 2015 11:22

ça n''est pas compliqué du tout ! (enfin pas aussi compliqué qu'on ne le pense)

On peut faire ça par l'interface web
(surtout si tu n'as qu'un fichier à modifier)

Va sur le projet
https://github.com/ig-python/ig-markets-stream-api-python-library

Clique sur fork
Ta version du projet est sur
https://github.com/ton_username/ig-markets-stream-api-python-library

Reviens sur
https://github.com/ig-python/ig-markets-stream-api-python-library

Va sur le fichier à modifier

Clique sur edit ("Edit the file in your fork of this project")

Colle ton code.

ça permet du coup d'identifier rapidement la différence entre le code d'origine
et la modif (diff)

Tu valide en allant sur
"Create a new branch for this commit and start a pull request"
Donne un nom à la branche
et voilà...

Re: [PYTHON] Script API IG STREAM + REST

par FemtoTrader » 30 sept. 2015 11:40

Tu peux ensuite aller dans ton projet.
Choisir ta nouvelle branche. Editer le code, ...
ton Pull Request sur le projet upstream sera automatiquement mis à jour
avec tes nouveaux commits

Re: [PYTHON] Script API IG STREAM + REST

par FemtoTrader » 30 sept. 2015 11:59

Il ne doit pas y avoir que

self.on_update.fire(item_id, fields)

qui devient

self.on_update.fire(item_id, fields, self.item_ids)

car si je fais cette modif je n'ai plus la MAJ des ticks

Re: [PYTHON] Script API IG STREAM + REST

par falex » 30 sept. 2015 12:09

heu attend j'ai du aussi modifier l'appel je regarde (dans mon main.py)

Ah bizarre. Justement je n'ai pas modifié l'appel de la fonction.

Dans la L3 souscription à une table est la même depuis le début :

Code : #

# Binding sur les differents flux de stream et fonctions associés
        priceTable = igls.Table(client,
                                mode=igls.MODE_MERGE,
                                item_ids='MARKET:%s' % personal.epic,
                                schema="OFFER BID",
                                )

priceTable.on_update.listen(events.process_price_update)
Avec la modification je renvoi simplement item_ids comme champs supplémentaire de retour en plus du Offer et du Bid.

Si tu fais un "print" bestiale de chaque message reçu ça passe ?

---

La fonction qui est bindé avec la table reçoit 3 arguments au lieux de 2 :

Code : #

def process_price_update(item, myUpdateField, item_ids):
---

Je viens de faire un "compare" entre igls utilisé au début et la dernière mouture, y'a bien jsute le champ self.item_ids qui a bougé, tout le reste est 100% identique.

Re: [PYTHON] Script API IG STREAM + REST

par FemtoTrader » 30 sept. 2015 13:03

Hum ... il y a quand même un coac

si tu t'abonne à plusieurs flux (GBPUSD et USDJPY par exemple)

Code : #

    priceTable = igls.Table(client,
        mode=igls.MODE_MERGE,
        item_ids='L1:CS.D.GBPUSD.cfd à risque limité.IP L1:CS.D.USDJPY.cfd à risque limité.IP',
        schema='UPDATE_TIME BID OFFER CHANGE MARKET_STATE',
        item_factory=lambda row: tuple(float(v) for v in row)
    )

    priceTable.on_update.listen(process_price_update)
je m'attendais à récupérer aussi l'epic dans process_price_update.

comment faire en sorte que process_price_update reçoive les prix de plusieurs actifs
ainsi que l'epic en question?

par ce que je me retrouve avec

Code : #

(py2)pc:ig-markets-stream-api-python-library femto$ python sample.py
('New state:', 'connecting Lightstreamer session')
('New state:', 'connected Lightstreamer session')
price update for L1:CS.D.GBPUSD.cfd à risque limité.IP L1:CS.D.USDJPY.cfd à risque limité.IP= [u'11:53:33', u'120.283', u'120.291', u'0.550', u'TRADEABLE']
price update for L1:CS.D.GBPUSD.cfd à risque limité.IP L1:CS.D.USDJPY.cfd à risque limité.IP= [u'11:53:15', u'1.52037', u'1.52057', u'0.00550', u'TRADEABLE']
price update for L1:CS.D.GBPUSD.cfd à risque limité.IP L1:CS.D.USDJPY.cfd à risque limité.IP= [u'11:53:34', u'1.52041', u'1.52051', u'0.00549', u'TRADEABLE']
price update for L1:CS.D.GBPUSD.cfd à risque limité.IP L1:CS.D.USDJPY.cfd à risque limité.IP= [u'11:53:35', u'1.52042', u'1.52052', u'0.00550', u'TRADEABLE']
price update for L1:CS.D.GBPUSD.cfd à risque limité.IP L1:CS.D.USDJPY.cfd à risque limité.IP= [u'11:53:36', u'1.52037', u'1.52057', u'0.00550', u'TRADEABLE']
price update for L1:CS.D.GBPUSD.cfd à risque limité.IP L1:CS.D.USDJPY.cfd à risque limité.IP= [u'11:53:36', u'1.52041', u'1.52051', u'0.00549', u'TRADEABLE']
price update for L1:CS.D.GBPUSD.cfd à risque limité.IP L1:CS.D.USDJPY.cfd à risque limité.IP= [u'11:53:37', u'120.284', u'120.292', u'0.551', u'TRADEABLE']
price update for L1:CS.D.GBPUSD.cfd à risque limité.IP L1:CS.D.USDJPY.cfd à risque limité.IP= [u'11:53:37', u'120.285', u'120.293', u'0.552', u'TRADEABLE']
price update for L1:CS.D.GBPUSD.cfd à risque limité.IP L1:CS.D.USDJPY.cfd à risque limité.IP= [u'11:53:37', u'120.287', u'120.295', u'0.554', u'TRADEABLE']
price update for L1:CS.D.GBPUSD.cfd à risque limité.IP L1:CS.D.USDJPY.cfd à risque limité.IP= [u'11:53:37', u'120.288', u'120.296', u'0.555', u'TRADEABLE']
price update for L1:CS.D.GBPUSD.cfd à risque limité.IP L1:CS.D.USDJPY.cfd à risque limité.IP= [u'11:53:37', u'120.289', u'120.297', u'0.556', u'TRADEABLE']
price update for L1:CS.D.GBPUSD.cfd à risque limité.IP L1:CS.D.USDJPY.cfd à risque limité.IP= [u'11:53:39', u'120.290', u'120.298', u'0.557', u'TRADEABLE']
price update for L1:CS.D.GBPUSD.cfd à risque limité.IP L1:CS.D.USDJPY.cfd à risque limité.IP= [u'11:53:39', u'1.52037', u'1.52057', u'0.00550', u'TRADEABLE']
price update for L1:CS.D.GBPUSD.cfd à risque limité.IP L1:CS.D.USDJPY.cfd à risque limité.IP= [u'11:53:39', u'120.289', u'120.297', u'0.556', u'TRADEABLE']
price update for L1:CS.D.GBPUSD.cfd à risque limité.IP L1:CS.D.USDJPY.cfd à risque limité.IP= [u'11:53:41', u'120.288', u'120.296', u'0.555', u'TRADEABLE']
price update for L1:CS.D.GBPUSD.cfd à risque limité.IP L1:CS.D.USDJPY.cfd à risque limité.IP= [u'11:53:41', u'120.289', u'120.297', u'0.556', u'TRADEABLE']
quand je fais

Code : #

def process_price_update(item, myUpdateField, item_ids):
    print("price update for %s= %s" % (item_ids, myUpdateField))
je voudrais que tout arrive dans la même fonction pour ensuite utiliser un système de messaging interne (RabbitMQ par exemple) mais pour ça j'ai besoin du prix et de l'epic.

Re: [PYTHON] Script API IG STREAM + REST

par falex » 30 sept. 2015 13:10

Oulà attend, tu es sur que tu peux souscrire à deux flux de prix avec cette syntaxe ?
J'ai pas trouvé comment avoir plusieurs epic dans le mêms flux LS.

D'autre part, il ne me semble pas pertinent de sosucrire ainsi, la fréquence des ticks étant "propre" à chaque sous-jacent. Qu'est censé te renvoyer ig si tu as un tick pour GBPUSD et pas de tick au même moment pour USDJPY ???

Pour chaque epic, je lance une souscription de table, comme décrit précedement.

---

Comme je souscrit à un seul epic par Table,
J'extrait la droit de L1: pour avoir l'epic correspondant.
J'ai aussi codé le cas où le mot clef serait MARKET ou CHART

...

En étudiant ton cas d'usage, ça confirme bien ce que je pense, ce n'est pas forcément pertinent de souscrire à plusieurs epic dans le même flux, à cause des problèmes d'identifications de l'epic

Re: [PYTHON] Script API IG STREAM + REST

par FemtoTrader » 30 sept. 2015 13:32

Si tu as un tick pour GBPUSD ça lance la fonction (même si tu n'a pas de tick pour USDJPY)

Le problème c'est comment faire en sorte de récupérer dans une seule fonction les prix et l'epic ???

Re: [PYTHON] Script API IG STREAM + REST

par Nomade » 30 sept. 2015 14:15

Si je comprend ce que tu veux faire :

avec plusieurs souscriptions en ecoutant chacune, par ex dans main de L3:

Code : #

        priceTable = igls.Table(globalvar.client_ls,
                                mode=igls.MODE_MERGE,
                                item_ids='MARKET:CS.D.GBPUSD.cfd à risque limité.IP ',
                                schema="OFFER BID",
                                )
        priceTable2 = igls.Table(globalvar.client_ls,
                                mode=igls.MODE_MERGE,
                                item_ids='MARKET:CS.D.USDJPY.cfd à risque limité.IP',
                                schema="OFFER BID",
                                )
        priceTable.on_update.listen(events.process_price_update)
        priceTable2.on_update.listen(events.process_price_update)
avec dans process_price_update:

Code : #

    print(item, myUpdateField, item_ids)
tu as en output
(1, [u'1.51771', u'1.51761'], 'MARKET:CS.D.GBPUSD.cfd à risque limité.IP ')
(1, [u'1.51772', u'1.51762'], 'MARKET:CS.D.GBPUSD.cfd à risque limité.IP ')
(1, [u'120.244', u'120.236'], 'MARKET:CS.D.USDJPY.cfd à risque limité.IP')
(1, [u'1.51773', u'1.51763'], 'MARKET:CS.D.GBPUSD.cfd à risque limité.IP ')
(1, [u'120.241', u'120.233'], 'MARKET:CS.D.USDJPY.cfd à risque limité.IP')
(1, [u'1.51774', u'1.51764'], 'MARKET:CS.D.GBPUSD.cfd à risque limité.IP ')

Sujets similaires
API REST / STREAM
Fichier(s) joint(s) par FemtoTrader » 22 sept. 2014 10:35 (178 Réponses)
ig rest api - heure des ouvertures et clotures quotidiennes
par falex » 22 avr. 2015 14:50 (3 Réponses)
IG API : Augmentation du nombre de requet REST
par falex » 04 août 2016 10:31 (9 Réponses)
Récupérer les cours avec l'API IG Market et Python
par Eversa » 24 juil. 2016 12:09 (55 Réponses)
Des API pout télécharger les données en python
par hamza123 » 19 mai 2017 10:18 (2 Réponses)
API IB TWS comment stream flux future Dax
par shuraver » 28 mai 2020 22:07 (3 Réponses)
REST , maj
par brucy » 21 août 2015 18:23 (1 Réponses)
Andlil 100% sans mouchard publicitaire ou script de suivi
Fichier(s) joint(s) par frigolite » 19 avr. 2015 14:19 (6 Réponses)
Script logiciel pour automatiser des actions sur le web
par Uncharted » 17 nov. 2015 23:36 (19 Réponses)
Script / Site web indiquant les actions PEA oversold
par Deejay87 » 23 sept. 2019 14:14 (2 Réponses)