ProRealTime
Pour partager sur le trading automatique, nos algorithmes, nos backtests

Re: Deep Learning Trading robot

par takapoto » 02 Jan 2018 14:57

"Je voulais mettre en pièce jointe le fichier source pour ceux que ça intéresse, mais apparemment, le forum refuse les fichiers .java ou .txt.
Je ne sais pas comment faire."


Une suggestion :
Stocke les fichiers que tu veux partager sur un cloud (Dropbox, Mega, GoogleDrive, OneDrive, etc...) et mets un lien sur ce fichier dans ton post. Exemple :
https://drive.google.com/open?id=0ByoULb6ZPevbOEU4N2NIaW84d2c
Ou, plus simple, tu mets simplement un lien pointant sur le répertoire qui contient tous les fichiers que tu veux partager.

Re: Deep Learning Trading robot

par Dernière Chance » 02 Jan 2018 15:08

Merci pour ton idée Takapoto.
Mais finalement, le code ne prend pas trop de place sur la page, même s'il est très long.
Quand mon projet commencera à devenir trop complexe (ça arrivera très vite), j'envisagerai ta suggestion.

Le problème avec les partages de fichiers, c'est qu'on a vite fait de se tromper de fichier, et d'en mettre un qui contient des données confidentielles. J'ai par exemple un programme java qui contient en dur mes identifiants et mots de passe. Il faudra que je fasse très attention.

Re: Deep Learning Trading robot

par Dernière Chance » 02 Jan 2018 15:12

Un premier bilan

Je viens de passer 3h hier et 3h aujourd’hui sur mon projet, soit déjà 6h en 2018 sur les 500h dont je dispose. Je n’ai pas beaucoup avancé, mais au moins, je me suis replongé au cœur du projet après 3 mois d’arrêt complet, j’ai remis des choses au propre et j’ai retrouvé de la motivation. Espérons que ça durera !

Avancement du projet :

Capture des cours : 10%
1- Connexion IG 0%
2- Abonnement streaming 0%
3- Gestion des exceptions 0%
4- Fichier log 0%
5- Démarrage automatique 100%
6- Ecriture des données 0%
7- Flush périodique des fichiers 0%
8- Interface graphique 0%
9- Portabilité 0%
10- Raffinements 0%

Projet global : 1%
1- Capture des cours 10%
2- Données 0%
3- Visualisation 0%
4- Indicateurs techniques 0%
5- Analyse des cours 0%
6- Systèmes de trading 0%
7- Passage d’ordres 0%
8- Gestion des positions 0%
9- Robot de trading 0%
10- Bonus 0%

Déjà 1% de fait donc, mais en fait ce travail avait déjà été fait avant. Ca devrait monter assez vite au début jusqu’à 10%, puis de moins en moins vite.

Re: Deep Learning Trading robot

par Dernière Chance » 03 Jan 2018 10:54

L’API IG

Avant d’entamer la partie 1-1 du projet sur la connexion IG, un petit mot sur l’API IG, pour ceux qui ne connaissent pas.

L’API IG permet l’accès direct au passage d’ordres et au flux des données boursières, sans passer par l’interface web d’IG.

Ceci procure plusieurs avantages :
• Un passage d’ordres un peu plus rapide (à confirmer).
• La possibilité d’importer la valeur des cours en temps réel.
• La possibilité de passer des ordres automatiquement, notamment sur des signaux calculés par un programme personnalisé qui tourne dans un langage rapide, par exemple Java.
• Le programme peut ainsi scruter les cours pour attendre la bonne occasion au bon moment.
• Il peut passer d’une valeur (indice, devise, …) à une autre instantanément.

Bref, cela donne toute la liberté possible, on peut personnaliser les choses exactement comme on le veut, mais au prix d’un effort considérable de programmation et de prise en main de toute l’API IG.

Il faut le dire aussi, ce n’est pas sans risque. On a en effet la possibilité de passer plusieurs ordres par seconde, et une boucle for mal conçue peut vite conduire à la catastrophe et réduire le capital à néant (par exemple une rafale d’ordres d’achat/clôture qui ferait perdre le spread une multitude de fois).

On dispose heureusement de plusieurs outils précieux :
• Le compte DEMO, qui permet de faire des tests grandeur nature avec un compte fictif.
• Les « compagnons » API, qui permettent de décortiquer pas à pas le fonctionnement des deux API et de faire des petits tests.

Il existe aussi un forum qui permet de régler de nombreux problèmes.

L’API IG est constituée de deux parties :
L'API REST pour le trading : c’est par son intermédiaire que l’on passe les ordres, qu’on les annule, qu’on peut consulter les positions ouvertes, la valeur du compte, etc...
L’API Streaming : elle permet l’accès aux cours en temps réel, et fournit aussi les notifications de passages d’ordres ou les problèmes éventuels d’ordre rejetés.

Plus d’infos ici : https://labs.ig.com/

Re: Deep Learning Trading robot

par Dernière Chance » 03 Jan 2018 11:38

1-1 Connexion IG – Les constantes de connexion

Aujourd’hui, on reprend à la base de la base : la connexion à l’API IG.

J’ai créé plusieurs classes Java (ça ne date pas d’aujourd’hui) :

Une classe abstraite ConstantesDeConnexion :

Code: Tout sélectionner
/** Les informations (identifiants, mot de passe,...) nécessaires pour se connecter à la plateforme.
 *  Il faudra parfois modifier certaines de ces constantes.
 *  Chaque compte possède son propre jeu de constantes. */

public abstract class ConstantesDeConnexion {
   /** Nom d'utilisateur */
   public String USERNAME; 
   /** Mot de passe */
   public String PASSWORD;
   /** Numéro d'identifiant du compte */
   public String ACCOUNT_ID;
   /** API key (normalement une par application) */
   public String API_KEY;
   /** URL de connexion à l'API REST Trading (pour le passage d'ordre et l'état du compte et des positions) */
   public String URL_DEAL;   
   /** URL de connexion à l'API streaming (pour récupérer les cours en temps réel en streaming) */
   public String URL_MARKETDATA;
   /** URL pour l'ouverture d'une position */
   public String URL_OPENPOSITION;
   /** URL pour la clôture d'une position */
   public String URL_CLOSEPOSITION;
   /** URL pour accéder à l'état des positions ouvertes */
   public String URL_OPENPOSITIONS;   
}


Deux classes concrètes ConstantesDeConnexionRéel et ConstantesDeConnexionDémo qui implémentent la classe abstraite ConstantesDeconnexion, et qui contiennent « en dur » les informations (le mot de passe notamment) :
Code: Tout sélectionner
/** <p> Les constantes de connexion du compte REEL </p>
 *  <p> <strong>Remarque : </strong> Il serait peut-être prudent d'afficher une fenêtre Popup pour avertir qu'on vient d'ouvrir le compte réel </p>
 */

public class ConstantesDeConnexionRéel extends ConstantesDeConnexion{   
   
   public ConstantesDeConnexionRéel(){
      USERNAME="frankenstein";  // mettre votre vrai nom d’utilisateur (réel) ici
      PASSWORD="abcdef";        // mettre votre vrai mot de passe (réel) ici
      ACCOUNT_ID="F7841";       // mettre votre vrai numéro de compte (réel) ici   
      API_KEY="fe547a8c8b347";  // mettre votre vraie API KEY (réel) ici
      URL_DEAL="https://api.ig.com/gateway/deal/session";   
      URL_MARKETDATA="https://apd.marketdatasystems.com";
      URL_OPENPOSITION="https://api.ig.com/gateway/deal/positions/otc";   
      URL_OPENPOSITIONS="https://api.ig.com/gateway/deal/positions";
   }   
}


Code: Tout sélectionner
/** Les constantes de connexion du compte DEMO */
public class ConstantesDeConnexionDémo extends ConstantesDeConnexion{   
   
   public ConstantesDeConnexionDémo(){
      USERNAME="Trader";
      PASSWORD="azerty";
      ACCOUNT_ID="TGUILM";      
      API_KEY="53ea874fb687c";
      URL_DEAL="https://demo-api.ig.com/gateway/deal/session";   
      URL_MARKETDATA="https://demo-apd.marketdatasystems.com";
      URL_OPENPOSITION="https://demo-api.ig.com/gateway/deal/positions/otc";
      URL_OPENPOSITIONS="https://demo-api.ig.com/gateway/deal/positions";
      URL_CLOSEPOSITION=URL_OPENPOSITION;      
   }   
}


Remarque : L’API Key est une clé que l’on peut se procurer sur l’interface web d’IG, lorsqu’on est connecté avec le compte réel ou le compte démo. La clé est différente selon qu’on est en réel ou en démo.

Re: Deep Learning Trading robot

par BearIsDead » 03 Jan 2018 14:44

Bonjour Dernière Chance. Sympa de partager du code aussi. :mercichinois:

Par contre pour les paramètres de configuration, pourquoi n'utilises-tu pas les enum plutôt que des classes abstraites ? Je trouve que c'est pratique pour gérer les configurations de façon plus lisible.

J'ai converti ton code en enum :
Code: Tout sélectionner
package com.company;

public enum ConstantesDeConnexion {
    CONNEXION_DEMO("username_demo", "password_demo"),
    CONNEXION_REELLE("username_reel", "password_reel");

    private String username;
    private String password;

    private ConstantesDeConnexion(String myUsername, String myPassword) {
        username = myUsername;
        password = myPassword;
    }

    public String getUsername() {
        return username;
    }

    public String getPassword() {
        return password;
    }
}


Et maintenant tu peux l'utiliser comme ça :
Code: Tout sélectionner
package com.company;

public class Main {

    public static void main(String[] args) {
        System.out.println(ConstantesDeConnexion.CONNEXION_DEMO.getUsername());
    }
}


Bon après peut-être n'est-ce qu'une question de préférence ;)

Re: Deep Learning Trading robot

par Dernière Chance » 03 Jan 2018 15:22

Merci beaucoup pour ta remarque BearIsDead!
J'étais en train de me demander s'il était vraiment utile que je poste du code, mais apparemment oui! Il y a des connaisseurs de Java ici, donc je vais continuer à montrer mon code.

J'utilise beaucoup les enum dans le reste du programme (pour les indices, les devises, etc), et c'est vrai que j'aurais dû en utiliser ici. Ca éviterait d'avoir le bout de code peu élégant ci-dessous (un extrait de ce que je posterai ce soir) :
Code: Tout sélectionner
public Login(TypeDeCompte typeDeCompte){
      if (typeDeCompte==TypeDeCompte.REEL)
         constantesDeConnexion=new ConstantesDeConnexionRéel();
      else
         constantesDeConnexion=new ConstantesDeConnexionDémo();

Re: Deep Learning Trading robot

par BearIsDead » 03 Jan 2018 16:47

Effectivement ça sera sans doute un peu plus lisible avec une enum.

Sinon pour le REST tu utilises Spring ?

Re: Deep Learning Trading robot

par BearIsDead » 03 Jan 2018 17:48

Bon tu me diras utiliser le framework Spring juste pour la fonctionnalité REST c'est un peu se compliquer la vie. Il y a des librairies toutes simples pour ça je crois.

Par contre si tu attaques une base de données, ça vaut peut-être le coup d'introduire Spring. :top: Cependant, si tu ne connais pas ce framework, il y a un petit temps d'apprentissage.

Re: Deep Learning Trading robot

par Euraed » 04 Jan 2018 00:49

Bonjour,

C'est à partir du chapitre 4 où les choses deviendront également pour moi plus excitantes.
Bon courage pour ces phases préparatoires de l'environnement

Articles en relation
[Recherche développeur] Création algo + deep learning
par Epitaf » 25 Fév 2017 22:33 (97 Réponses)
Machine Learning for Trading chez udacity.com
par ladefense92800 » 25 Déc 2015 20:05 (0 Réponses)
mon robot, votre avis
par nememoris » 21 Aoû 2015 16:09 (4 Réponses)
Comprendre le fonctionnement d un robot
Fichier(s) joint(s) par nememoris » 02 Sep 2015 22:26 (7 Réponses)
Geronimo, mon robot scalper...
Fichier(s) joint(s) par Renaud-C » 11 Sep 2015 08:23 (27 Réponses)
Création d’un robot parfait
par Stochastic » 20 Oct 2015 23:11 (67 Réponses)
Futur robot à l'imparfait
Fichier(s) joint(s) par Euraed » 22 Mar 2017 15:57 (315 Réponses)
Trading Automatique : 20% par an
par Benoist Rousseau » 27 Jan 2015 10:08 (0 Réponses)
Social Trading
par Benoist Rousseau » 12 Sep 2017 22:00 (1 Réponses)
Suivi de mon algorithme de trading cac 40
Fichier(s) joint(s) par Benoist Rousseau » 22 Nov 2015 20:43 (93 Réponses)

ProRealTime

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