ProRealTime
Un problème de pc ? Une choix de logiciel ou de hardware à faire ? Besoin de conseils pour acheter ou optimiser votre station de trading ?

Re: Informations pour les futurs développeurs informatiques

par BeerIsDead » 06 avr. 2019 13:22

Certes C# est un bon langage, aucun doute là-dessus. Mais bon on ne peut pas tout apprendre : Java ou C# il faut choisir son camp :) (même s'il y a de nombreuses similitudes , ils copient leurs avancées mutuelles). Cependant, la "légende urbaine" veut que C++ reste plus performant que n'importe quel autre langage. Je vais me mettre à jour sur le sujet, du reste, vérifier ce qu'il en est à l'heure actuelle.

Re: Informations pour les futurs développeurs informatiques

par falex » 06 avr. 2019 13:49

Pour donner un exemple : python c’est un peu la voiture de monsieur tout le monde : facile à conduire et accessible au plus grand nombre mais pas très nerveuse en terme de performance
Le C/C++ c’est un peu le roadster ou la Porsche : n’importe qui peut en acheter une mais ça demande beaucoup plus de finesse dans le pilotage car on peut vite partir dans le décors.

Re: Informations pour les futurs développeurs informatiques

par Jim » 06 avr. 2019 13:52

BeerIsDead a écrit :la "légende urbaine" veut que C++ reste plus performant que n'importe quel autre langage.
En terme de rapidité d'exécution sans aucun doute.
Le gros point faible que je lui trouve : c'est un fourre-tout de tout et n'importe quoi (en langage savant : il est multi-paradigme lol).
Les dernières évolutions dans le niveau d'abstraction sont assez complexes.
Du coup, c'est parfois difficile de comprendre du code écrit par un autre que soit.

Re: Informations pour les futurs développeurs informatiques

par BeerIsDead » 06 avr. 2019 14:06

:mercichinois: Jim pour la rapidité d'exécution. Pas de raison que ça ait changé après tout => Java / C# sont compilés en langage intermédiaire alors que C++ est directement compilé en langage natif.

On est ok pour ce qui est la lisibilité du code (donc la productivité à terme) => Java et C# (entre autres), lorsqu'ils sont bien programmés, sont très "expressifs", donc une équipe peut facilement reprendre un projet, ainsi que soi-même quand on revient sur le code quelques mois / années plus tard.

Cependant sur ce thème Bernardino me disait justement qu'il y avait eu de grandes avancées côté C++. Mais je ne pourrais pas te donner les détails, je n'ai pas noté à l'époque, et je ne me suis pas penché sur ce langage depuis longtemps.

Re: Informations pour les futurs développeurs informatiques

par takapoto » 06 avr. 2019 14:32

Exemple de benchmark :
Screenshot 2019-04-06_14-26-09-662.jpg
Screenshot 2019-04-06_14-26-09-662.jpg (23.09 Kio) Vu 340 fois
Source :
https://benchmarksgame-team.pages.debian.net/benchmarksgame/performance/regexredux.html

Ceci est juste un exemple : sur le site, il y a plusieurs algorithmes différents qui donnent des résultats différents suivant le langage et qui bousculent ce classement.

@BeerIsDead:
Le C# est d'abord compilé en langage intermédiaire qui est ensuite compilé en langage natif.

Re: Informations pour les futurs développeurs informatiques

par BeerIsDead » 06 avr. 2019 14:35

Sympa ce site, je ne connaissais pas ! Des benchmarks pour différents algorithmes ok. :top: :top:

Oui le Java / C# sont compilés en langage intermédiaire, et c'est seulement à l'exécution qu'ils sont compilés en langage natif ? Donc moins performant, à priori, que du C / C++ compilé directement en natif avant l'exécution :?:

Re: Informations pour les futurs développeurs informatiques

par Jim » 06 avr. 2019 14:37

Pour ce qui est de la rapidité du C et de ses rejetons, voici une autre légende urbaine : un code bien écrit en C sera généralement plus rapide qu'un code bien écrit en assembleur. La raison ? Les compilateurs C font un énorme boulot d'optimisation pour la meilleure exécution.

La compilation C c'est un peu vaudou par moment. Ca marche mieux si tu as trempé ton CPU dans le sang d'une chèvre fraîchement décapitée...

Re: Informations pour les futurs développeurs informatiques

par BeerIsDead » 06 avr. 2019 14:45

:mercichinois: je pense que tu as raison pour le caractère "aléatoire" des compilateurs.

J'ai bossé quelques temps sur du C embarqué => le développeur initial avait tout écrit en assembleur, puis a petit à petit traduit en C ANSI (pour des raisons de lisibilité...). Il a tout de même choisi de garder certaines parties "sensibles" (en temps d'exécution) en assembleur.

Disons que si on maîtrise bien son sujet, je pense qu'on peut faire mieux en assembleur que n'importe quel compilateur côté optimisations. (je n'y connais rien assembleur, je m'occupais du C, mais c'est ce que j'en ai compris)

Malgré tout ça, ça n'empêche que même un compilateur C++ qui optimiserait "mal" le code, débouchera sur un logiciel plus performant que nos compères en langage intermédiaire, à mon avis.

Re: Informations pour les futurs développeurs informatiques

par Jim » 06 avr. 2019 14:52

Super intéressant le lien de Takapoto ! On voit bien que le même code compilé sur différents compilateurs donne des différences d'exécutions énormes (en durée d'exécution, d'utilisation de mémoire, ou des CPUs) :mercichinois:

Re: Informations pour les futurs développeurs informatiques

par takapoto » 06 avr. 2019 14:53

Je rejoins Jim en ce qui concerne l'assembleur et son optimisation par le C.
J'ai travaillé en équipe sur des systèmes de guidage de missiles (en assembleur) et il fallait sans cesse réécrire le code de certains car il était très loin des performances exigées. Quand on a pu enfin travailler en C, les résultats étaient beaucoup plus lissés.
Spoiler:
Il y avait même un original qui écrivait ses fonctions directement en langage machine :) véridique ! Evidemment ça ne marchait jamais...

Re: Informations pour les futurs développeurs informatiques

par Jim » 06 avr. 2019 15:26

Puisqu'on parle de guidage de missile et de conseil pour les futurs développeurs... Taka, j'imagine que tu connais l'histoire suivante :|
Pour nous autres, c'est un sinistre rappel.

Tout développeur s'est, un jour ou l'autre, arraché les cheveux à cause des arrondis de calculs en virgule flottante. Parfois c'est plus grave : quand un missile Patriot rate son interception de Scud pour une toute petite erreur d'arrondi. Toute petite erreur, mais qui reproduite un grand nombre de fois, crée un décalage de 0.34 seconde au lancement. Et fait fait 28 morts.

http://www-users.math.umn.edu/~arnold//disasters/patriot.html
Spoiler:
On February 25, 1991, during the Gulf War, an American Patriot Missile battery in Dharan, Saudi Arabia, failed to track and intercept an incoming Iraqi Scud missile. The Scud struck an American Army barracks, killing 28 soldiers and injuring around 100 other people. Patriot missile A report of the General Accounting office, GAO/IMTEC-92-26, entitled Patriot Missile Defense: Software Problem Led to System Failure at Dhahran, Saudi Arabia reported on the cause of the failure. It turns out that the cause was an inaccurate calculation of the time since boot due to computer arithmetic errors. Specifically, the time in tenths of second as measured by the system's internal clock was multiplied by 1/10 to produce the time in seconds. This calculation was performed using a 24 bit fixed point register. In particular, the value 1/10, which has a non-terminating binary expansion, was chopped at 24 bits after the radix point. The small chopping error, when multiplied by the large number giving the time in tenths of a second, led to a significant error. Indeed, the Patriot battery had been up around 100 hours, and an easy calculation shows that the resulting time error due to the magnified chopping error was about 0.34 seconds. (The number 1/10 equals 1/24+1/25+1/28+1/29+1/212+1/213+.... In other words, the binary expansion of 1/10 is 0.0001100110011001100110011001100.... Now the 24 bit register in the Patriot stored instead 0.00011001100110011001100 introducing an error of 0.0000000000000000000000011001100... binary, or about 0.000000095 decimal. Multiplying by the number of tenths of a second in 100 hours gives 0.000000095×100×60×60×10=0.34.) A Scud travels at about 1,676 meters per second, and so travels more than half a kilometer in this time. This was far enough that the incoming Scud was outside the "range gate" that the Patriot tracked. Ironically, the fact that the bad time calculation had been improved in some parts of the code, but not all, contributed to the problem, since it meant that the inaccuracies did not cancel

Re: Informations pour les futurs développeurs informatiques

par takapoto » 06 avr. 2019 15:34

Je ne la connaissais pas, Merci !

Re: Informations pour les futurs développeurs informatiques

par Jim » 06 avr. 2019 15:54

J'ai une autre histoire du même type, mais appliquée au trading.

prt est une boîte noire, mais j'ai quelques suppositions quant à son fonctionnement : les valeurs des indicateurs sont calculées sur 32 bits côté utilisateur ; et calculées sur 16 bits (ou quelque chose qui s'en approche) côté serveur.
16 bits c'est très très léger pour exprimer des valeurs à 5 ou 6 chiffres commes les indices (16 bits = 7 chiffres précis au mieux).

Du coup, mes robots qui tournaient côté serveur et qui étaient censés prendre position sur des croisements de moyenne mobile étaient toujours décalés de plusieurs bougies par rapport à mes indicateurs qui tournaient en local.

Même cause, mêmes effets, j'ai changé de plateforme de trading et je me retrouve avec le même foutoir lorsque je calcule en float 16 bits. Passer en double 32 bits et c'est tout bon.

A RETENIR : PAS DE CROISEMENT DE moyennes mobiles D'INDICES CODES EN 16 BITS (ou alors il faut que les pentes des MM soient raides ;) )

Re: Informations pour les futurs développeurs informatiques

par takapoto » 06 avr. 2019 16:05

Et moi qui allais te dire qu'avec les robots de trading, on n'avait pas ce problème...
Spoiler:
Il faut dire que je ne travaille qu'en "décimal" sur 128 bits

Re: Informations pour les futurs développeurs informatiques

par BeerIsDead » 06 avr. 2019 16:05

Intéressant ça Jim. Les virgules flottantes, la hantise des systèmes précis.

Sinon sur prt , il y aurait des optimisations à faire. L'utilisation de régressions linéraires, par exemple, rame grave, voire plante sur mon poste. Bon je dis ça => qui aime bien châtie bien.

Tu es passé sur quel langage de script du coup ? MetaTrader ?

Re: Informations pour les futurs développeurs informatiques

par BeerIsDead » 06 avr. 2019 16:09

Sur un autre sujet => je suis bien content de n'avoir jamais géré que de l'argent au final. J'ai confiance en mes qualités de développeur, mais je ne me sens pas gérer des sytèmes genre aéronotique, médecine etc... critiques quoi.

Re: Informations pour les futurs développeurs informatiques

par Jim » 06 avr. 2019 16:13

BeerIsDead a écrit : Tu es passé sur quel langage de script du coup ? MetaTrader ?
Je suis passé sur Sierra Chart. 100% écrit en C++. Ultra-rapide.
La principale raison de ma migration n'était pas la rapidité de la plateforme, mais la flexibilité de pouvoir tout faire. Et en plus elle est robuste (sauf quand mes codes font des boucles infinies :mrgreen: ).

Pas de script. Il faut coder ses indicateurs en C++ (idéalement). Puis les compiler, et ils deviennent des DLL de Sierra Chart.

Re: Informations pour les futurs développeurs informatiques

par BeerIsDead » 06 avr. 2019 16:17

Ah sympa. Ok. Je ne connais pas. De toute façon, j'ai plutôt l'optique de programmer tout de A à Z (en Java sans doute) dés que je maîtrise le machine learning.

Même si la partie la plus flippante (pas la plus compliquée) c'est le passage d'ordres et les problèmes techniques, pour moi. Au moins quand c'est prt qui gère, tu peux te plaindre à quelqu'un si ton ordre n'a pas été exécuté.

Re: Informations pour les futurs développeurs informatiques

par Jim » 06 avr. 2019 16:24

Je ne sais pas quelle est ta motivation, mais ça me semble une tâche très ardue.
Gérer les différents protocoles pour les flux de données et maîtriser les langages spécifiques pour les passages d'ordre sur les marchés régulés (DTC/FIX...) c'est un vrai métier à temps plein.

Re: Informations pour les futurs développeurs informatiques

par falex » 06 avr. 2019 16:48

Python est présent partout.
Dans toute les application de type box, raspberry domo tique. Dès qu’il y a un peu de Linux il y a du python. Tu prends par exemple distribution Ubuntu toute l’interfaces graphiques est quasiment faite en python. Tous les scriptes d’installation, de mises à jour de tout ce que tu veux python
Dans le web
Dans les applications sur PC et sur Mac
Dans les outils de production et dans l’industrie partout partout partout

C’est assez complémentaires du C et du Java

Sujets similaires
Problèmes informatiques de Tahamomo
par JonhWolf » 10 mars 2014 10:14 (2 Réponses)
La place des développeurs dans le trading
par Blia » 21 mars 2018 10:37 (1 Réponses)
Cotations Futurs - Indices
par Benoist Rousseau » 24 mai 2012 22:36 (3 Réponses)
Question cfd à risque limité Futurs
par Benoist Rousseau » 24 févr. 2016 23:04 (1 Réponses)
Ramener un PP futurs sur cfds à risque limité
Fichier(s) joint(s) par Jim » 13 oct. 2016 14:44 (23 Réponses)
Précisions sur les contrats Futurs Dax
par Barik » 20 juil. 2017 00:10 (6 Réponses)
nouveau contrat pour CME : micro-futurs
par Benoist Rousseau » 13 mars 2019 19:24 (3 Réponses)
Ecart et pertinence des volume PRT et futurs euronext
par Amarantine » 08 mai 2020 03:34 (2 Réponses)