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

Deep Learning Trading robot

par Dernière Chance » 01 janv. 2018 15:19

Bonjour et bonne année à tous !

Cette nouvelle année 2018 est l’occasion de prendre des bonnes résolutions : j’ai décidé de présenter ici au jour le jour les avancées de mon travail sur mon projet de trading automatique.

Les commentaires, remarques, critiques et encouragements sont évidemment les bienvenus.

Re: Deep Learning Trading robot

par plataxis » 01 janv. 2018 15:23

Intéressant mais... as-tu les ressources matérielles pour faire du deep learning ? Je ne suis pas connaisseur mais j'ai cru comprendre qu'il fallait de sacrées puissances de calcul pour obtenir quelque résultat...

Re: Deep Learning Trading robot

par Dernière Chance » 01 janv. 2018 15:36

C'est vrai que l'expression "Deep Learning" est un peu pompeuse. Il s'agit grosso modo du retour en force ces 5 dernières années des réseaux de neurones et des méthodes d'apprentissage automatique, après le coup d'arrêt des années 1985-2010. Il est vrai que cela peut demander beaucoup de ressources de calcul, mais on dispose aussi aujourd'hui de méthodes d'apprentissage rapides et économes en calcul (quitte à perdre un peu en précision).

Je vais détailler mon projet dans les prochains messages.

Re: Deep Learning Trading robot

par Dernière Chance » 01 janv. 2018 19:00

Le contexte :
Il s’agit d’un projet de longue date, encore loin d’être abouti. De plus, mes obligations familiales et professionnelles me contraignent à ne pouvoir consacrer qu’à peine plus d’une heure par jour à ce projet. Les premiers trades automatiques ne seront donc pas passés avant plusieurs mois.

Je trade depuis 2001, avec des pertes importantes, de l’ordre de 10 000€ par an les 10 premières années, puis de l’ordre de 1 000 € par an ces dernières années. La majeure partie de ces pertes sont dues au non-respect des règles de bases du trading : trades impulsifs, levier trop important, moyennage à la baisse, manque de discipline, etc… J’ai maintenant la conviction que la seule façon pour moi de réussir à gagner est le « full auto » : ne plus prendre aucune décision de trading moi-même, me baser uniquement sur une analyse approfondie des cours par l’ordi, et sur un calcul objectif des risques.

Au niveau programmation, j’ai abandonné le langage C++ pour me mettre au langage Java en 2012. J’ai lu une vingtaine de bouquins sur Java depuis, mais je considère que je ne suis encore qu’à 50% de mon apprentissage de ce langage.

Pour ce qui concerne la Bourse, j’utilise IG depuis une dizaine d’année, et j’ai quasiment abandonné tous les autres courtiers depuis 2012. Comme le rappelle souvent Benoist, IG (et aussi ProRealTime) offre les meilleures conditions pour trader en France, avec notamment les spreads réduits et fixes, le nombres de valeurs disponibles, la possibilité de trader à 1€ le point, les stops garantis, sans oublier l’API IG qui permet de connecter un programme directement aux cours d’IG et de passer des ordres automatiquement. Deux membres du forum m’ont particulièrement inspiré à ce sujet : Falex avec sa plateforme L3 et Takapoto avec sa récupération des cours IG.

J’ai depuis 18 mois un programme qui récupère les cours IG des valeurs qui m’intéressent, mais ce programme est loin d’être parfait et demande à être finalisé, j’en reparlerai plus tard.

Depuis un an, ma motivation pour le trading a dégringolé, en partie à cause de la menace d’interdiction des cfd à risque limité en France, mais apparemment cette interdiction n’aura pas lieu. J’ai donc retrouvé de la motivation.

Dernier point : le capital disponible pour trader : environ 5 000€ (dont environ 1 000 € sur le compte IG). En cas d’échec, je n’envisage pas de consacrer plus d’argent au trading.

Re: Deep Learning Trading robot

par Dernière Chance » 01 janv. 2018 20:41

Pourquoi faire état de l’avancement de mon projet ?

Trouver de la motivation
Le fait d’être lu par d’autres personnes, l’idée que des gens m’attendent au tournant, tout cela me mettra une certaine pression. Cela m’apportera aussi peut-être du soutien. J’en ai besoin car ma femme ne voit pas d’un très bon œil le trading et ne veut absolument pas m’encourager dans cette voie.
Tenir un journal de bord
Cela ne fait jamais de mal de mettre noir sur blanc ses idées, d’expliquer cela à d’autres personnes, et cela oblige à tout mettre au propre, à s’organiser et à tenir les délais. Relire de temps en temps ce qui a été fait permet de se rendre compte du chemin accompli.
Mesurer l’avancement du projet
Découper le projet en sous-projets, en toutes petites parties. A défaut de voir le compte de trading augmenter, il y aura au moins l’avancement du projet qui progressera. Cela peut être une source de motivation.
Le partage
Je suis prêt à partager certaines idées. Après plus de 15 années de trading, j’ai accumulé pas mal d’expérience, même si je suis toujours un trader perdant.
Last but not least : le mug Andlil
Si mon projet échoue, à 3 messages par jour pendant un an, j’aurai peut-être atteint les 1000 messages à la fin, et j’aurai droit au mug Andlil pour me consoler :)

Re: Deep Learning Trading robot

par plataxis » 01 janv. 2018 20:59

Tu m'étonnes que ta femme soit réticente : si elle en a partagé les pertes, ça doit la piquer un peu ! :shock:

Je te souhaite d'avoir d'avantage de succès dans cette entreprise :)

Re: Deep Learning Trading robot

par Dernière Chance » 01 janv. 2018 21:20

Heureusement j'ai connu ma femme au moment où mes pertes moyennes annuelles ont été divisées par 10 :)
Merci ig pour les contrats CAC à 1€ le point sans spread additionnel! C'est ce qui m'a permis d'arrêter avec les contrats futures à 10€ le point.

Re: Deep Learning Trading robot

par Dernière Chance » 01 janv. 2018 21:25

Les objectifs

Je n’ai pas d’objectif en terme de % ou d’€ gagnés. L’objectif est simplement de faire le mieux possible.
Si à la fin, après une analyse approfondie, l’algo arrive à la conclusion qu’il n’y a aucun moyen de gagner de l’argent en bourse et que le mieux à faire est de ne faut prendre aucune position, j’aurai atteint mon objectif et je pourrai passer à autre chose (la pêche, la physique quantique ou le point de croix, on verra).

Pour cette année 2018, j’espère pouvoir consacrer au total 500 heures au projet (un peu plus d’une heure par jour, c’est très peu mais je ne peux pas faire plus), et arriver pour la fin de l’été à environ 50% du projet réalisé. Un autre objectif est de poster régulièrement ici des nouvelles sur l’avancement du projet. Il y aura probablement parfois des périodes d’une semaine sans message, et parfois comme aujourd’hui beaucoup d’informations. Bref, le rythme ne sera sûrement pas régulier.

Le robot pourra trader sur n’importe quel support (indices boursiers, actions, devises, pétrole, or, volatilité, taux d’intérêt…), par l’intermédiaire des cfd à risque limité IG ou sur les options binaires IG, et sur n’importe quel horizon de temps (du scalping au swing trading, c’est-à-dire que les trades pourront durer de 1 seconde à 1 an). C’est le robot qui évaluera lui-même ce qui lui semble être le mieux, y compris pour ce qui est de la taille des positions.

Re: Deep Learning Trading robot

par Dernière Chance » 01 janv. 2018 23:20

Les 10 phases du projet

J’ai décomposé le projet global en 10 parties (de tailles à peu près égales) :

1- Capture des cours
Il s’agit ici de capturer en temps réel et en continu les cours IG de différentes valeurs, comme le fait Takapoto avec son logiciel. Les cours sont stockés en format texte.
Une partie vraiment fastidieuse, pénible, ennuyeuse, ch…, mais ô combien importante. Les données historiques sont la base de tout système de trading.

2- Données
L’objectif est de transformer les fichiers textes des cours en un format plus maniable et plus rapide pour être ensuite traité par les algorithmes d’analyse. Cette partie repose sur la partie 1 et est très technique.

3- Visualisation
Une partie purement graphique. En gros, on essaie de visualiser les historiques des cours que l’on a enregistrés, un peu comme sur ProRealTime. Cette partie repose sur la partie 2. Très technique, de la pure programmation JavaFX.

4- Indicateurs techniques
Ici, on crée des indicateurs techniques basés sur les cours (moyennes mobiles, RSI, point pivots, spread entre différentes valeurs, etc… ainsi que des indicateurs customisés). Cette partie repose sur la partie 3. Une partie déjà un peu plus amusante.

5- Analyse des cours
Enfin une partie vraiment intéressante, qui fait appel aux algorithmes de Machine Learning. On fait ici toutes sortes de calculs, d’analyse et de statistiques sur les cours, en essayant d’y déceler des régularités ou des choses intéressantes. On analyse également les corrélations entre tous les marchés.

6- Systèmes de trading
Il s’agit ici de transformer l’analyse de la partie précédente en un véritable système de trading, avec calcul les plus objectif possible des risques associés.

7- Passage d’ordres
Cette partie est indépendante des précédentes. On programme le passage des ordres via l’API IG comme l’a fait Falex avec sa plateforme L3. On rajoute quelques types d’ordres customisés du genre « fermer la position à 17h30 ».

8- Gestion des positions
Des fonctions pour gérer et suivre les positions ouvertes. Programmer notamment un « soft-stop » ou « stop mou » (par exemple sur une position de 1 lot, fermer 0,1 lot à chaque fois qu’on a perdu 1% du capital).

9- Robot de trading
Le véritable robot, qui met en jeu toutes les parties précédentes pour trader de façon autonome, en gérant tous les risques et pannes possibles. Il faudra aussi envisager la possibilité de paramétrer manuellement le robot, par exemple un curseur pour le niveau de risque souhaité, ou interdire certaines valeurs pour diverses raisons.

10- Bonus
Cette partie est en bonus. En fait je voulais avoir 10 parties dans mon projet (parce qu’on a 10 doigts, ça doit être ça la vraie raison profonde :) ) Il y aura bien une autre idée qui me viendra au cours du travail pour faire une dixième partie, ou bien une des parties (la 5, la 6 ou la 9 peut-être) se révèlera tellement longue qu’il faudra la couper en deux morceaux.

Re: Deep Learning Trading robot

par chad » 01 janv. 2018 23:42

C'est fini le mug andlil :? :cry:

Re: Deep Learning Trading robot

par Dernière Chance » 01 janv. 2018 23:56

Catastrophe! J'arrête tout alors, ça vaut plus la peine!!! :(

Re: Deep Learning Trading robot

par takapoto » 02 janv. 2018 07:55

Bonne Dernière Chance !
Pour ma part, je suivrais ton avancement avec un grand intérêt, d'autant plus que tu détaille beaucoup ta vision, ce qui rend les choses bien plus intéressantes.

Re: Deep Learning Trading robot

par BearIsDead » 02 janv. 2018 09:39

Idem je suis intéressé. J'avais commencé à lire un tuto bien Fichu sur les réseau de neurones (https://www.goodreads.com/book/show/29746976-make-your-own-neural-network), laissé de côté... il y a sans doute des idées intéressantes dans l'IA pour nous autres développeurs auto. Bon courage!

Re: Deep Learning Trading robot

par Dernière Chance » 02 janv. 2018 10:30

Etat du projet global

La partie 1 est déjà bien avancée. Les parties 2, 3, 4 et 7 ont été entamées.
Je vais de toute façon tout reprendre à zéro et considérer que l’avancement du projet est à 0% aujourd’hui.
Cela permettra de voir l’avancement du projet progresser plus vite au début, histoire de se motiver un peu plus.

Cette semaine, j’ai un peu de temps et je vais me consacrer uniquement à la partie 1 : Capture des cours.

Re: Deep Learning Trading robot

par Dernière Chance » 02 janv. 2018 11:20

Etat du projet « Capture des cours »

Cela fait plus de deux ans que je travaille sur la capture des cours IG (de façon irrégulière).

Il y a 10 ans, je capturais les cours de ProRealTime et de WHSelfinvest avec une méthode artisanale : des milliers de captures d’écrans, et de la reconnaissance de chiffres dans les images capturées. C’était une grosse galère.
Heureusement, avec l’API IG, ce temps est révolu. On a directement les valeurs des cours en temps réel. Par contre, il faut toujours capturer en temps réel, et on court toujours le risque de louper des données en cas de panne quelconque (coupure internet, panne de réveil qui fait qu’on n’a pas lancé le logiciel à temps, redémarrage intempestif de Windows et j’en passe). IG offre bien la possibilité de télécharger après coup des données historiques, mais la quantité de données autorisées au téléchargement est très limitée.

Depuis avril 2016, j’ai un logiciel de capture des cours à peu près fonctionnel. En voici une capture d’écran prise ce matin:
Capture.PNG
Capture.PNG (26.21 Kio) Vu 819 fois
Les gros défauts du logiciel sont :
• Les cours sont sauvegardés avec l’heure correspondante mais pas la date. La date est sauvegardée dans le nom du fichier, qui est créé à l’ouverture du logiciel. Ainsi, il faut fermer manuellement le logiciel chaque soir et l’ouvrir chaque matin. En général, je sauvegarde les cours de 8h à 23h (donc pas la nuit). Et il est arrivé 3 ou 4 fois que j’oublie d’ouvrir le logiciel, ou que je me lève un peu tard le matin.
• Les redémarrages de Windows posent problème. Il faudrait que le logiciel redémarre automatiquement au démarrage de Windows, et il faudrait supprimer le mot de passe Windows. J’ai ainsi loupé trois fois une semaine de capture quand je suis parti en vacances.
• Le programme utilise mon compte IG démo et non réel. J’ai remarqué que dans certains cas, les cours du CAC en démo étaient différents des cours du CAC en réel (probablement un retard de quelques minutes). Mes données sont donc parfois erronées. Ce problème est facile à régler : il suffit de se connecter avec le compte réel.
• Le logiciel utilise le vieux framework graphique de Java : Java Swing. Il faudrait moderniser tout ça et utiliser le nouveau framework graphique plus performant : JavaFX.
• Le logiciel crée chaque jour un fichier log censé enregistrer les événements qui se produisent, notamment les coupures de connexion. Ce système de fichier log est mal fait et doit être revu.
• La gestion des événements exceptionnels doit être revue, elle est trop rudimentaire pour le moment. En cas de coupure de connexion internet ou perte de connexion IG, le logiciel tente de se reconnecter au bout d’une seconde, puis 2 secondes, puis 4 secondes, puis 8 secondes etc…
• Le programme n’est pas portable. Si je pars en vacances avec mon ordi, et que je veux faire tourner pendant ce temps-là le programme sur l’ordi de quelqu’un d’autre, il risque d’y avoir des problèmes : java doit être installé, et les noms des répertoires ne vont probablement pas coller.

Voilà les problèmes que j’aimerais régler rapidement, pour avoir un logiciel complètement automatisé et plus sûr.

L’idéal serait de repérer les données manquantes en cas de coupure de connexion, puis de les re-télécharger automatiquement. Il faudrait aussi passer par un VPN. Je verrai ces raffinements plus tard.

Re: Deep Learning Trading robot

par takapoto » 02 janv. 2018 11:31

Ce n'est pas pour en faire de la pub, mais pourquoi, n'utilises-tu pas les historiques de TakaPeek3 ?
Il tourne en parallèle depuis plus d'un an sur une machine AWS amazon et il n'y a pas de trous de cotation.
(et les cours contiennent la date et le spread)

Re: Deep Learning Trading robot

par Dernière Chance » 02 janv. 2018 11:54

Je compte bien utiliser tes historiques Takapoto!
En fait j'en parlerai dans le sous-projet n°2 "Données".

Je compte utiliser 3 sources de données :
  • Mes propres captures IG
    Avantage : je choisis de capturer les valeurs que je veux, et elles sont immédiatement disponibles
    Inconvénient : les trous de cotation
  • Les historiques de Takapeek3
    Avantage : données fiables et complètes
    Inconvénient : ne concerne que les indices CAC, DAX et DOW (c'est déjà bien!), et il y a un petit délai avant de pouvoir les utiliser
  • Les historiques de Yahoo Finance
    En daily, mais sur plusieurs dizaines d'années

Re: Deep Learning Trading robot

par takapoto » 02 janv. 2018 12:51

Dernière Chance a écrit : Les historiques de Takapeek3
...
Inconvénient : ne concerne que les indices CAC, DAX et DOW (c'est déjà bien!)
Depuis quelque temps, j'ai rajouté :
- NASDAQ 100
- indice anglais 100
- NIKKEI 125
- Bitcoin
- Dollar
Si tu veux que je rajoute une ou deux valeurs en plus, dis-le moi.
C'est la moindre des chose vu la qualité de ton partage.

Re: Deep Learning Trading robot

par Dernière Chance » 02 janv. 2018 13:34

Ne te tracasse pas pour moi. Tu risquerais de dépasser le nombre de valeurs autorisées par ig. Tes données sont déjà une ressource précieuse pour moi, surtout avec les nouvelles valeurs que tu as ajoutées. Encore merci pour ton travail!

Re: Deep Learning Trading robot

par Dernière Chance » 02 janv. 2018 14:46

1-5 Démarrage automatique

Le programme de capture doit se lancer automatiquement au démarrage de Windows. Cela permet de régler le problème des redémarrages intempestifs de Windows (notamment les fameuses mises à jour du vendredi soir).

J’ai créé une nouvelle application JavaFX, appelée Capture FX, qui affiche une fenêtre vide.
Elle s’ouvre automatiquement au démarrage de Windows.
Elle se ferme en cliquant sur la case de fermeture (il n’y a rien de spécial à programmer pour cela).

Cela nécessite de créer un fichier JAR exécutable, qui est pour le moment situé sur le bureau (Capture FX.jar).

Astuce : Comment lancer automatiquement un programme au démarrage de Windows 10 ?
Il suffit de mettre un raccourci vers le programme dans le répertoire ci-dessous :
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
ou son équivalent en français :
C:\ProgramData\Microsoft\Windows\Menu Démarrer\Programmes\Démarrage

Une automatisation complète nécessite de supprimer le mot de passe permettant d’ouvrir Windows.

Remarque : Il faut afficher les fichiers cachés pour pouvoir accéder à ce répertoire. De plus, si on fait tourner le programme sur un autre PC, attention à bien vérifier que cela fonctionne bien, car la démarche est différente sous Windows 8 par exemple.

Résultat : une splendide fenêtre vide ;)
Capture FX.PNG
Capture FX.PNG (4.08 Kio) Vu 773 fois
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. Pour cette fois, je le mets dans le corps du message parce que le programme est très court, mais par la suite, avec des codes de 1000 lignes, ce sera peut-être trop long.

Code : #

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.TextArea;
import javafx.stage.Stage;

public class CaptureFX extends Application{	
	
	public static void main(String[] args) {
		Application.launch(args);
	}
	
	public void start(Stage stage) {
		stage.setTitle("Capture FX");		
		TextArea textArea=new TextArea();
		textArea.setEditable(false);				
		Group root=new Group();
		root.getChildren().add(textArea);
		Scene scene=new Scene(root,500,400);
		stage.setScene(scene);
		stage.show();	
	}
}

Sujets similaires
[Recherche développeur] Création algo + deep learning
par Epitaf » 25 févr. 2017 22:33 (81 Réponses)
Introduction au Deep Learning
Fichier(s) joint(s) par plataxis » 12 mars 2017 08:59 (12 Réponses)
Mooc Deep Learning
Fichier(s) joint(s) par Euraed » 01 mars 2018 10:56 (2 Réponses)
Deep Learning sur Dax 30 : tick data
par coolpi94 » 30 mars 2020 22:39 (13 Réponses)
Deep Nostalgia
par Thierry 29 » 01 mars 2021 11:36 (11 Réponses)
Machine Learning for Trading chez udacity.com
par ladefense92800 » 25 déc. 2015 20:05 (0 Réponses)
Trading IA & Machine learning
par ChristelleP » 22 janv. 2020 16:23 (3 Réponses)
Formations E-learning gratuite (économétrie, finance...)
par Neddy » 09 avr. 2020 10:26 (0 Réponses)
Premiers retours fxcmpy et machine learning
Fichier(s) joint(s) par coolpi94 » 10 juin 2020 10:19 (1 Réponses)