Finance:Récupération de données financières/Manuel utilisateur API

De Ensiwiki
Aller à : navigation, rechercher

Windows.png  Windows 

Fichier-LogoEtire.png XDataFi

Développeurs Wilfried KOUASSI, Olivier MOLLANDIN, Adrien THAI

Cette page correspond au manuel utilisateur de l'API réalisée dans le cadre de leur projet de spécialité par Wilfried KOUASSI, Olivier MOLLANDIN et Adrien THAI, du 21 mai au 15 juin 2012. Pour retourner à la page principale du projet, veuillez suivre le lien ci-dessous :
Récupération de données financières


La classe API/ApiXDataFi contient de nombreuses méthodes publiques réutilisables pour tester l'API.
Un exemple de test est disponible dans TestUtilisationAPI/Program.cs.
Nous présentons ici les méthodes utiles pour tester l'API.


Initialisation de l'API

Il faut dans un premier temps instancier l'API.
La classe ApiXDataFi possède un constructeur qui prend en argument une liste de string.

        public ApiXDataFi(List<string> sources)

Celle-ci représente la liste des choix de sources d'extraction.
Elle contient donc potentiellement les strings "yahoo", "yahoo_yql", "google", "euronext" ou "defaut".

Téléchargement de données en mémoire

L'étape suivante consiste à télécharger les données via les sources spécifiées précédemment. Il faut pour cela faire appel à la méthode "telecharger":

        public void telecharger(List<string> symbols, MesColonnes mesCol, DateTime start,
   DateTime end, bool thread = false)

où:

  • symbols est une List<string> contenant les symboles des actifs souhaités
    ( ex : symbols=new List<string>(){"GOOG","YHOO"}; ).
  • mesCol est un API.MesColonnes dans lequel on met à true les attributs des colonnes souhaitées
    (ex : mesCol=new MesColonnes(); mesCol.Open=true;mesCol.Close=true; pour télécharger les cours "Open " et "Close" des actifs indiqués).
  • start et end sont deux objets DateTime pour la date de début et la date de fin
    (ex : start=new DatTime(2011,06,18); ).
  • thread permet de lancer le téléchargement dans un thread séparé (utile surtout pour les interfaces pour ne pas figer le programme lors du téléchargement).

Dans ce cas le booléen monAPI.endDownload (attribut de la classe ApiYahfi) vaut false durant le téléchargement, et true à la fin.

Récupération des données historiques dans une matrice

Maintenant que les données sont téléchargées, nous pouvons les exporter dans une matrice, grâce à la méthode:

      public double[,] getMatrice(List<string> symbols,
   MesColonnes.ChoixColonne choix)

où:

  • symbols est une List<string> contenant les symboles des actifs souhaités (ex : "GOOG" pour Google Inc., "XOM" pour Exxon Mobile Corporation, ...).
  • choix est un choix de l'énumération MesColonnes.ChoixColonne : High, Low, Open, Close, Volume, qui correspond au cours que l'on veut extraire dans la matrice.

Dans le test, on affiche cette matrice pour vérifier que le téléchargement des cours s'est bien déroulé.


Les méthodes suivantes ne figurent pas dans le test, mais l'utilisateur peut s'en servir pour tester les autres fonctionnalités de l'API.

Fonctions d'exportation de données

L'exportation de données dans un fichier n'est possible que si les données ont déjà été extraites (à l'aide de telecharger ou AcquisitionTempsReel). Le fichier d'export peut être de format csv, json, mdf ou xml.
Nous disposons alors de quatre méthodes d'export pour l'exportation des données historiques, et de quatre méthodes d'exportation pour les données acquises en temps réel.

          public void exportCSV(string exportPath) 
          public void exportJSON(string exportPath)
          public void exportMDF(string exportPath)
          public void exportXML(string exportPath)
          public void exportRealTimeCSV(string exportPath)
          public void exportRealTimeJSON(string exportPath)
          public void exportRealTimeMDF(string exportPath)
          public void exportRealTimeXML(string exportPath)

exportPath est le chemin d'export où l'on souhaite sauvegarder les données

Affichage de messages

  • La classe APIXDataFi contient une variable globale permettant d'afficher des messages:
       public static string mes

Cette variable est typiquement appelée dans une MessageBox et s'avère utile pour prévenir l'utilisateur quand les données obtenues sont inhabituelles (par exemple, dans le cas où le volume correspondant à une certaine date est nul). Pour ajouter un message, il suffit de procéder de la façon suivante :

       mes += "votre message";

La variable mes est souvent utilisée dans le code relatif à l'interface, pour lancer des MessageBox contenant des warnings ou des messages d'erreurs, suite à l'extraction.

La méthode (de MainWindow) chargée de mettre ce message dans une MessageBox est :

       private void message()


Dans Program.cs, il est impossible d'afficher un message de cette manière car nous n'avons pas accès à la méthode message. L'utilisateur peut tout de même utiliser la variable mes et créer une MessageBox dans laquelle il affiche mes.


  • Un exemple d'affichage de message est implémenté dans Program.cs :
       List<string> leMess = new List<string>();
       leMess = api.Data.getMessage(); 
       string mess = "";
       foreach (string var in leMess)
       {
           mess += var + "\r\n";
       }
       if (!mess.Equals(""))
       {
           Console.WriteLine(String.Format(mess));
       }

api est une instance de la classe APIXDataFi.

Tous les messages destinés à l'utilisateur et générés suite à l'extraction sont contenus dans l'attribut Data (de type GestionDataSet). Nous utilisons dans cet exemple la méthode getMessage de la classe GestionDataSet, qui retourne la liste des messages contenus dans Data, puis nous les concaténons via le string mess. Enfin, nous affichons ces messages.

Nous pouvons alors voir en console les warnings et autres levées d'exception.

Exemple d'utilisation de l'API

Voici le code de Program.cs, qui donne un exemple d'utilisation de l'API:

        class Program
        {
            static void Main(string[] args)
            {
                /* Initialisation des parametres utiles */
                List<string> choix = new List<string>();
                choix.Add("yahoo");
                API.APIXDataFi api = new API.APIXDataFi(choix); //Classe principale de l'API
                MesColonnes mesCol = new MesColonnes(); //Classe des colonnes à afficher
                mesCol.Volume = true;
                mesCol.Open = true;
                //
                /* Liste des actifs */            
                List<string> symboles = new List<string>() { "GOOG", "AAPL", "TOT" };
                //
                /* Téléchargement des données et extraction de la matrice */
                api.telecharger(symboles, mesCol, new DateTime(2008, 11, 10), new DateTime(2010, 12, 10), false);
                double[,] maMatrice = api.getMatrice(symboles, MesColonnes.ChoixColonne.Open);
                //
                /* Affichage de la matrice */
                string affichage = "";
                affichage += symboles[0] + " ;" + symboles[1] + "; " + symboles[2];
                affichage += "\n";
                for (int i = 0; i < maMatrice.Length / symboles.Count; i++)
                {
                    for (int j = 0; j < symboles.Count; j++)
                    {
                       affichage += maMatrice[i, j] + " ";
                    }
                    affichage += "\n";
                }
                Console.WriteLine(affichage);
                System.Threading.Thread.Sleep(5000);
            }
        }


Nous procédons au téléchargement des données relatives aux symboles "GOOG", "AAPL", "TOT". Les cours demandés dans cet exemple sont l'open et le volume. Après avoir téléchargé les données, nous les exportons dans une matrice (méthode getMatrice) que nous affichons.