tu connais Git, GitHub ?
ok
tu connais Git, GitHub ?
tu connais Git, GitHub ?
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.
Je te donne ma modification et tu peux faire un update si tu veux. Je n'utiliserais pas github trop compliqué dans mon cas.
ç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à...
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à...
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
Choisir ta nouvelle branche. Editer le code, ...
ton Pull Request sur le projet upstream sera automatiquement mis à jour
avec tes nouveaux commits
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
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
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 :
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 :
---
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.
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)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.
Hum ... il y a quand même un coac
si tu t'abonne à plusieurs flux (GBPUSD et USDJPY par exemple)
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
quand je fais
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.
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)
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']Code : #
def process_price_update(item, myUpdateField, item_ids):
print("price update for %s= %s" % (item_ids, myUpdateField))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
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
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 ???
Le problème c'est comment faire en sorte de récupérer dans une seule fonction les prix et l'epic ???
Si je comprend ce que tu veux faire :
avec plusieurs souscriptions en ecoutant chacune, par ex dans main de L3:
avec dans process_price_update:
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 ')
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)
Code : #
print(item, myUpdateField, item_ids)
(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 ')
C'est ainsi que fonctionne L3 à l'heure actuel (la souscription se faisant à la volée en fonction de ce que l'on a en portif et des changements de sous-jacent)
Ok donc
ce qui est quand même étrange c'est le "s" à la fin de item_ids
Savez-vous où récupérer une liste des "epic" ?
La question m'a été posée (elle est intéressante je trouve)
https://github.com/ig-python/ig-markets-stream-api-python-library/issues/6
mais je n'en sais rien !
Je vois 2 solutions:
utiliser les watchlists ou faire une recherche par terme
Code : #
for item_id in ['L1:CS.D.GBPUSD.cfd à risque limité.IP', 'L1:CS.D.USDJPY.cfd à risque limité.IP']:
priceTable = igls.Table(client,
mode=igls.MODE_MERGE,
item_ids=item_id,
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)Savez-vous où récupérer une liste des "epic" ?
La question m'a été posée (elle est intéressante je trouve)
https://github.com/ig-python/ig-markets-stream-api-python-library/issues/6
mais je n'en sais rien !
Je vois 2 solutions:
utiliser les watchlists ou faire une recherche par terme
DAns le forum on a déjà répondu à cette question.
Tu peux appeler la variable toto si tu veux
Tu peux appeler la variable toto si tu veux
Tu es trop bon béni
on lu doit bien ça 
Merci beni si je comprend bien la réponse
qui permet d'obtenir la liste
https://www.andlil.com/api/Epics/log_epics.txt
est dans le code C#
https://www.andlil.com/api/Epics/Source ... Program.cs
en scrappant une page web c'est bien ça ?
c'est pas en utilisant l'API
qui permet d'obtenir la liste
https://www.andlil.com/api/Epics/log_epics.txt
est dans le code C#
https://www.andlil.com/api/Epics/Source ... Program.cs
en scrappant une page web c'est bien ça ?
c'est pas en utilisant l'API
Ah tu voulais la méthode !
A vrai dire je ne me suis jamais intéressé au code posté par brucy, mais apparement t'as besoin d'un token donc d'une clé API.
--
En parcourant vite fait le code et le sujet effectivement ça ne passe pas par des requêtes get et tout et tout...
Je crois que jized utilise /marketnavigation/ et /marketnavigation/{nodeId} et donc l'API, avec une tempo entre les requêtes pour éviter de ce faire kicker par ig.
A vrai dire je ne me suis jamais intéressé au code posté par brucy, mais apparement t'as besoin d'un token donc d'une clé API.
--
En parcourant vite fait le code et le sujet effectivement ça ne passe pas par des requêtes get et tout et tout...
Je crois que jized utilise /marketnavigation/ et /marketnavigation/{nodeId} et donc l'API, avec une tempo entre les requêtes pour éviter de ce faire kicker par ig.
J'ai fait le même exercice, et j'en ai fait la même conclusion, il faut mettre ses identifiants de comptes et ensuite ça récupère via l'aPI.
Seul limite tu ne vois que les cfd à risque limité accessible dans ton pays,
Seul limite tu ne vois que les cfd à risque limité accessible dans ton pays,
ok merci.
ça vaut peut-être le coup que je teste ça en Python (pour le fun
)
parce que le seul code que j'ai vu c'est du C#, il y a quelqu'un qui a ça en Python ?
ça vaut peut-être le coup que je teste ça en Python (pour le fun
parce que le seul code que j'ai vu c'est du C#, il y a quelqu'un qui a ça en Python ?
Fusion du projet REST avec le projet STREAM, organisation GitHub ig-python créée
ça se passe ici
https://github.com/ig-python/ig-markets-api-python-library
ça se passe ici
https://github.com/ig-python/ig-markets-api-python-library
Sujets similaires
ig rest api - heure des ouvertures et clotures quotidiennes
par falex » 22 avr. 2015 14:50 (3 Réponses)
par falex » 22 avr. 2015 14:50 (3 Réponses)
Récupérer les cours avec l'API IG Market et Python
par Amarantine » 24 juil. 2016 12:09 (55 Réponses)
par Amarantine » 24 juil. 2016 12:09 (55 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)
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)
par Uncharted » 17 nov. 2015 23:36 (19 Réponses)
