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

Re: Utilisation Excel avec API IG

par clodreb » 14 Déc 2015 09:42

Salut Swingwin,

je viens de télécharger l'exemple de sheet excell sur le site IG et j'ai quelques soucis : les boutons et cases ne réagissent pas du tout ou grandissent quand on clique dessus.

il ne prenait d'ailleurs même pas mes identifiants pour me logguer : j'ai dû les mettre en dur dans le code correspondant au bouton "login".
Aurais-tu une idée de l'origine de ce problème ?

Dans cet exemple, c'est uniquement du trading "live" et non pas des encodages d'ordres prévisionnels. y-a-t-il un exemple ailleurs pour faire ce genre de chose via excell ?
(mon but serait par exemple de voir ce que ça donne de créer d'un seul clic , 12 ordres tous les matins ;-))

Re: Utilisation Excel avec API IG

par swingwin » 15 Déc 2015 22:55

Salut Clodreb,

Il est possible que tu sois en mode édition de code VBA dans Excel, ce qui justifierait que tu aies accès aux objets VBA.
Je pense qu'il faut que tu passes en mode exécution. Mais je ne sais plus comment il faut faire (je n'ai pas Excel 2010 installé sur mon poste).

Re: Utilisation Excel avec API IG

par clodreb » 16 Déc 2015 10:02

oui, je me suis mis en mode édition par la suite pour voir le code vba et le modifier pour qu'il prenne mes identifiants.
Mais avant de passer en mode édition, j'ai simplement testé la sheet et elle ne réagit pas du tout comme il le faudrait...

pas grave, je vais reprendre le code vba et l'associer à ma propre feuille excell dans laquelle je mettrai mes propres boutons.

il fau juste que je trouve les commandes exactes pour faire des ordres OTC ...

Re: Utilisation Excel avec API IG

par clodreb » 17 Déc 2015 10:39

un truc que je ne comprends pas bien dans leur macro c'est que la fonction qui crée leur position ne tient pas du tout compte de la valeur introduite dans "ordertype"

dans leur code, il y a :
dealReference = restClient.createPosition(epic, expiry, direction, size, crncy, limit)

or, si je teste via le Companion API de leur site pour créer une position OTC, voici les champs que j'aimerais bien remplir :
Code: Tout sélectionner
    epic = "IX.D.CAC.IMF.IP"
    expiry = "-"
    direction = "BUY"
    size = "3"
    orderType = "LIMIT"
    timeInForce = Null
    level = "4720"
    guaranteedStop = "false"
    stopLevel = Null
    stopDistance = "15"
    trailingStop = Null
    trailingStopIncrement = Null
    forceOpen = "true"
    limitLevel = Null
    limitDistance = "2"
    quoteId = Null
    currencyCode = "EUR"


cette notion de type d'ordre devrait quand même apparaître dans leur vba, non ?

edit : ok, je n'ai rien dit : c'est bien défini de manière implicite dans IGApiRestClient
Code: Tout sélectionner
    If Trim(limit) = "" Or limit = "N/A" Then
        Call requestBodyDictionary.Add("orderType", "MARKET")
    Else
        Call requestBodyDictionary.Add("orderType", "LIMIT")
        Call requestBodyDictionary.Add("level", limit)
    End If


par contre, ça n'explique toujours pas pourquoi je n'arrive pas à envoyer des ordres OTC via cette sheet excell ....grrrrr

bon...on continue : je mets "en dur" les valeurs que je veux lors de la création de la request :
Code: Tout sélectionner
    Call requestBodyDictionary.Add("epic", "IX.D.CAC.IMF.IP")
    Call requestBodyDictionary.Add("expiry", "-")
    Call requestBodyDictionary.Add("direction", "SELL")
    Call requestBodyDictionary.Add("size", "3")
    Call requestBodyDictionary.Add("orderType", "LIMIT")
    Call requestBodyDictionary.Add("timeInForce", Null)
    Call requestBodyDictionary.Add("level", "4780")
    Call requestBodyDictionary.Add("guaranteedStop", "FALSE")
    Call requestBodyDictionary.Add("stopLevel", Null)
    Call requestBodyDictionary.Add("stopDistance", "15")
    Call requestBodyDictionary.Add("trailingStop", Null)
    Call requestBodyDictionary.Add("trailingStopIncrement", Null)
    Call requestBodyDictionary.Add("forceOpen", "TRUE")
    Call requestBodyDictionary.Add("limitLevel", Null)
    Call requestBodyDictionary.Add("limitDistance", "2")
    Call requestBodyDictionary.Add("quoteId", Null)
    Call requestBodyDictionary.Add("currencyCode", "EUR")



et la sheet excell me renvoit ....ceci ....super explicit comme message à débugger



visiblement, ce n'est pas un champs obligatoire qui pose problème car si je mets en commentaire les champs un par un, j'ai chaque fois un message qui me dit que le champ untel ou untel ne convient pas ...par contre, le message ci-dessus....impossible de savoir que quel champs il s'agit.....allez ...on continue le débug :musique: .....

re-edit : bon, je crois que je me suis trompé de type d'ordre, il faut que je teste les "working order" pour mettre des ordres OTC par contre, via l'API conpanion , impossible d'encoder des valeurs que le système admette.

j'ai encodé ceci mais j'ai à chaque fois le message ""errorCode": "invalid.input""


si quelqu'un voit directement mon erreur , qu'il n'hésites pas à me le dire ;-)

Re: Utilisation Excel avec API IG

par clodreb » 18 Déc 2015 13:37

Bon alors, voici les valeurs que j'ai encodées et qui fonctionnent pour working-orders :
Code: Tout sélectionner
    Call requestBodyDictionary.Add("epic", "IX.D.CAC.IMF.IP")
    Call requestBodyDictionary.Add("expiry", "-")
    Call requestBodyDictionary.Add("direction", "BUY")
    Call requestBodyDictionary.Add("size", "3")
    Call requestBodyDictionary.Add("level", "4000")
    Call requestBodyDictionary.Add("forceOpen", "true")
    Call requestBodyDictionary.Add("type", "LIMIT")
    Call requestBodyDictionary.Add("currencyCode", "EUR")
    Call requestBodyDictionary.Add("timeInForce", "GOOD_TILL_CANCELLED")
    Call requestBodyDictionary.Add("goodTillDate", Null)
    Call requestBodyDictionary.Add("guaranteedStop", "false")
    Call requestBodyDictionary.Add("limitDistance", "2")
     Call requestBodyDictionary.Add("stopDistance", "15")




En ce qui concerne la feuille excell, j'ai forcé les mêmes valeurs et ça n'a pas fonctionné tout de suite....il manquait une ligne dans leur définition du header : il faut ajouter la version pour que ça colle parfaitement à ce qu'il y a moyen de tester via API companion :

Code: Tout sélectionner
Call oXMLHTTP.SetRequestHeader("version", "2")


attention également qu'il faut modifier l'adresse d'ouverture des envois pour les working-order :

Code: Tout sélectionner
Call oXMLHTTP.Open("POST", IG_API_HOST + "/workingorders/otc", False)


rem : si vous voulez mettre une date de validité , attention qu'il y a un décalage d'une heure.

Code: Tout sélectionner
   
"timeInForce": "GOOD_TILL_DATE",
"goodTillDate": "2016/01/11 22:25:00",

ça donnera dans votre station de trading un validité jusqu'au 11/01/2016 à 23h25
attention également de ne pas mettre d'espace à la fin du champs spécifiant l'heure

Re: Utilisation Excel avec API IG

par clodreb » 08 Jan 2016 17:02

Bon et bien les ordres de clôture partielles n'ont pas l'air de bien fonctionner via excell....grrrr...

même en mettant des valeurs en " dur" dans l'appel, il me met une erreur sur l'url utilisée ....bizarre,....je prends pourtant bien celle qui est utilisée via l'API companion et ça ne fonctionne pas .....

Si quelqu'un voit directement mon erreur, merci du renseignement :mrgreen:

Code: Tout sélectionner
'
' Clôture partiel d'un ordre actif
'
Public Function closePartialPosition(dealId As String, direction As String, size As String) As String
   
    Call oXMLHTTP.Open("DELETE", IG_API_HOST + "/positions/otc", False)
   
    Dim requestBodyDictionary As Dictionary
    Set requestBodyDictionary = New Dictionary
   
    '''''  valeurs d'origine de l'envoi d'ordre "en live" '''''''''''''
    Call requestBodyDictionary.Add("epic", Null)
    Call requestBodyDictionary.Add("expiry", Null)
    Call requestBodyDictionary.Add("level", Null)
    Call requestBodyDictionary.Add("direction", "SELL")
    Call requestBodyDictionary.Add("size", "0.1")
    Call requestBodyDictionary.Add("orderType", "MARKET")
    Call requestBodyDictionary.Add("dealId", "DIAAAAAQQ848RA2")
    Call requestBodyDictionary.Add("timeInForce", Null)
    Call requestBodyDictionary.Add("quoteId", Null)
 
    Dim requestBodyString As Variant
    requestBodyString = JSON.toString(requestBodyDictionary)
MsgBox requestBodyString
    Call oXMLHTTP.SetRequestHeader("X-SECURITY-TOKEN", m_accountToken)
    Call oXMLHTTP.SetRequestHeader("CST", m_clientToken)
    Call oXMLHTTP.SetRequestHeader("X-IG-API-KEY", m_apiKey)
    Call oXMLHTTP.SetRequestHeader("Content-Type", "application/json; charset=utf-8")
    Call oXMLHTTP.SetRequestHeader("Accept", "application/json; charset=utf-8")
    Call oXMLHTTP.SetRequestHeader("version", "2")
    Call oXMLHTTP.SetRequestHeader("_method", "DELETE")
    Call oXMLHTTP.Send(requestBodyString)
'MsgBox requestBodyString
    Dim responseData As Dictionary
    Set responseData = JSON.parse(oXMLHTTP.responseText)
   
    If oXMLHTTP.Status = 200 Then
        closePartialPosition = responseData.Item("dealReference")
    Else
        MsgBox oXMLHTTP.responseText
        closePartialPosition = ""
    End If
       
End Function


Re: Utilisation Excel avec API IG

par raiden500 » 24 Jan 2016 15:02

Dites, quelqu'un peut il m'aider je suis vraiment vraiment debutant et pige rien :D
Bon je suis pas developpeur, dejà c'est fait.
Donc j'ai telechargé sur le site iglabs dans samples apps le fichier excel
Dezzipé et installé

Bon par contre j'ai oppenoffice
et j'ai lancé et bah rien, j'ai l'interface qu'on peut modifier sous excel
Mais et apres ?
Faut faire quoi :D ?

Peut etre faut il que j'abandonne :x

Re: Utilisation Excel avec API IG

par Benoist Rousseau » 24 Jan 2016 23:17

Ça a peu de chance de marcher avec open office

Re: Utilisation Excel avec API IG

par clodreb » 26 Jan 2016 07:54

déjà que ça ne fonctionne pas super bien avec excell et l'exemple d'IG ;-)
(il faut chipoter dans leur macro pour que ça fonctionne sur excell)

Re: Utilisation Excel avec API IG

par Benoist Rousseau » 26 Jan 2016 09:04

Ça dépend des versions d'excel :)

Articles en relation
Utilisation des API IG avec C#
Fichier(s) joint(s) par swingwin » 04 Juin 2015 08:36 (27 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)
Récupérer les cours des marchés IG sous Excel
par LPhilippe » 22 Aoû 2015 16:25 (10 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)

ProRealTime

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