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

Re: Labview

par Tartempion » 22 oct. 2015 00:51

pour la souris , je parle sous windows, quelque soit le prog. De là à faire chauffer le proco non ou alors c'est une séance d'aérobic que tu fais sur ton bureau avec le mulot. Mais ça pompe quand même. Fais des grands ronds lentement avec ton mulot ou des allés-retours sur toute la largeur et tu verras dans le gestionnaire de performance que ça monte tranquillement à 10% ou plus . C'est pas une question de vitesse de déplacement de la souris. Au contraire c'est surtout quand tu fais ça lentement. (en tout cas ça fait ça sur ma bécane et sur toutes celles d'avant et c'est normal).
Pour les listes j'ai pas été clair du tout. Désolé. Les listes sont obtenues par la requete watchlist, normal quoi. C'est juste que j'ai fais en plus un sous-programme qui permet de créer , modifier ou supprimer mes listes. À l'identique de ce que tu fais sur la plateforem ig , c'est à dire par drag&drop entre l'arbre général de tous les produits ig et tes listes. Mais ce sous-programme je ne l'utilise pas et n'ai pas fait de bouton pour le lancer parce que c'est comme ça :?: Il interroge l'arbre ig, et par drag&drop tu modifies tes watchlists directement sur le serveur ig. Quand ensuite tu te logues sur la plateforme web tu constates que tes listes sont modifiées. En fait c'est pour ne plus avoir à me connecter à la plateforme web. C'est juste que j'ai galéré pour gérer les arbres et les drag&drop. Parce que les listes sont taguées par ig. Certaines sont supprimables, d'autres éditables etc… :?
Le bouton REST c'est pour couper toutes les connexions. Interrupteur général.
D'ailleurs l'état du portif (couv,dispo,solde et latent) n'est actualisé que par le REST. C'est à dire après chaque fermeture de position c'est actualisé mais ça ne dépend pas du stream. Comme ça si le stream plante , le latent et la couverture m'indiquent si il y a une position ouverte qui reste planquée. En stream les points suffisent à mon humble avis. (sur la capture y a 0,7 pt à l'instant de la capture mais y a 0 en latent) . C'est du "latent" hors trading (nouveau concept :lol: )

Oui l'agenda et la table des transac n'apparaissent que sur le clic B. Premier clic l'agenda apparaît, second clic l'agenda disparaît et les transacs apparaissent et troisième clic les transacs disparaissent. Autant dire qu'à la fin de la journée tu connais bien l'agenda :mrgreen:
Bonne nuit !

Re: Labview

par beni » 22 oct. 2015 09:43

Ok merci pour ces explications.
Tartempion a écrit : Oui l'agenda et la table des transac n'apparaissent que sur le clic B
Ça me rappelle les fps en ligne type CS ou DoD :) , un p'tit coup sur la touche TAB pour voir ton classement, combien de mecs t'avais derrouillé

Re: Labview

par Tartempion » 05 nov. 2015 11:22

**** Rajout d'une "volatilité" (version home made) tracée en continu, tick by tick, en superposition sur le graphe du cfd à risque limité. Longueur de l'échantillon modifiable à la volée par commande numérique. La formule choisie pour la volat :
Soit n entier naturel non nul = la longueur de l'échantillon,
Pour tout i naturel compris entre 1 et n, soit S(i) la valeur du tick i,
Alors volat=Racine carrée [Somme [ i = 1 à n de (S(i+1) - S(i))^2] /n].
**** Rajout d'un enregistrement, à chaque ouverture de position et à chaque fermeture de position, des infos affichées sur la face-avant, des historiques des graphes et différents paramètres (hh:mm:ss etc…). Ces data sont stockées dans un fichier journal.
**** Création d'une liseuse-analyseuse : une appli permet à la fin de la journée de visioner chaque trade. Elle reproduit la face-avant telle qu'elle était à chaque ouverture et femeture de position ( lecture du fichier journal pour re-tracer les graphes, afficher les textes et numériques capturés au moment du passage d'ordre) et analyse différentes grandeurs (conditions de trading , portif). Avec la visionneuse on se déplace d'un trade un l'autre. C'est une liseuse pour analyser mes trades a posteriori.
**** Pour l'instant j'ai laissé tomber la capture d'écran (jpg) à chaque ouverture et chaque fermeture , ça marche ( c'est on ne peut plus simple à faire) mais je ne trouve pas de composant .NET ou activex pour les agréger en video (le seul intéret de la manip). La liseuse fait beaucoup mieux le taff puisqu'elle fourni une analyse quantitative de n'importe quel paramètre que je veux.

Voili voilou . Y en a qui se font un journal de trading ben moi c'est mon petit journal Labview. On s'éclate comme on peut. :oops:
En route vers l'implémentation de la logique floue ! Et surtout vers une solution d'acquisiton du stream en continue sur une bécane tierce pour stocker les ticks en continue hors de mes horaires de trading.

Re: Labview

par Tartempion » 05 nov. 2015 11:42

Pour la config d'acquisition en continu je me suis monté ça (config zéro bruit) :
http://www.ldlc.com/b-2eeab93fa94415bb.html (les balises url sont interdites)
avec carte-mere N3700 format ITX : http://www.ldlc.com/fiche/PB00192694.html
Ben c'est pas mal pour l'instant. Mais bon faut pas faire de gros calculs.
L'intéret c'est les 4 coeurs puisque sous Labview on parallélise à mort.

Re: Labview

par Tartempion » 09 avr. 2016 22:18

Du nouveau : Vibration de la manette Xbox en retour à certains évènements. (Une manette xbox possède deux moteurs à masses vibrantes . Une lourde à gauche et une légère à droite . Chacun paramètrable de 0 à 65536.)
Création automatique d'une video par agrégation des captures d'écrans effectuées à chaque ouverture et fermeture de position ce qui permet de retracer en video la succession des trades.
Enregistrement de la durée du trade et du draw-down (précisément pire moins-value latente) de chaque trade dans la table des transactions et donc dans le fichier journal.
D'autres trucs en chantier.

Re: Labview

par Tartempion » 13 avr. 2016 14:33

Affichage d'un chronomètre à chaque ouverture de position. C'est pas mal cette idée lue dans le journal Swinging de se fixer un timing.
Affichage de l'heure du dernier ordre exécuté. (ouverture ou fermeture).
AH sinon il est prévu d'acheter une manette microsoft Elite. Je l'ai prise en main c'est pas mal. Elle pèse son poids. Très intéressé par les palettes sous la manettes. Mais d'un autre côté ça me semble assez risqué de déclencher un ordre non désiré. C'est l'impression que j'ai eue. Faut la prendre en main avec soin.

Tout ça c'est fait. Le seul truc qui reste en chantier c'est la logique floue. Mais ça demande reflexion et sérénité. Voire de la méditation… :mur:

Re: Labview

par Tartempion » 13 juin 2016 02:43

Module de création de vidéo de la session de trading:

il est opérationnel, le plus important est fait. Reste plus qu'à fignoler l'interface virtuelle qui apparaitra dans les videos , optimiser le code et la compression.

Définition : Après chaque session de trading le module fabrique une video de tous les trades de la session.
Une video est un enchainement de différents "passages" ("passage" ou "scène", je ne sais pas comment appeler ça), chacun consacré à un trade successif.
Dans la video chaque passage débute peu de temps avant l'ouverture du trade et s'achève peu de temps après la fermeture du trade.
La video n'est pas capturée en temps réel pendant la session (beaucoup d'inconvénients et aucun avantage) mais construite a posteriori par programmation par le module.
La video retrace l'évolution de chaque trade tick by tick en respectant la temporalité c'est à dire que la durée entre deux ticks successifs est respectée du mieux possible comme le ferait une capture temps réel par un logiciel de capture video.
sauf qu'elle ne dure que la durée totale de tous les trades de la session puisque, de fait, les zones de non trade ne sont pas synthétisées.
Puisque la video est complètement construite par programmation par le module, l'interface (graphes, affichage d'infos et autres) n'est pas l'interface de mon logiciel de trading (trop volumineuse pour une video) mais une interface virtuelle computée par le module.

Explications:
En début de session la connexion souscrit à deux tables : CHART et OPU. (je ne souscris ni à WOU ni à CONFIRMS)
Lors d'une session de trading deux fichiers sont créés :
-un "fichier de stream", dans lequel sont stockés les ticks ( ticks by ticks avec bien-sûr le timestamp donné par IG en millisecondes, table CHART mode DISTINCT),et les OPU (horodatés en ms par IG également, on reviendra dessus). Ticks et OPU sont stockés dans ce fichier dans l'ordre qu'ils arrivent par le stream.
-un "fichier des transactions" constitué des champs : timestamp d'ouverture, niveau d'ouverture, taille (algébrique), timestamp de fermeture, niveau de fermeture, points du trade (par lot), programmation neuro-linguistique de la transac (€), durée du trade (secondes), drawdown du trade (pire moins-value en point par lot pour ce trade).

Grace au fichier des transactions le module connaît les timestamps de chaque ouverture de position (respectivement chaque fermeture), leur retranche 5 secondes (resp. additionne 5s), délai paramétrable, puis prélève la portion des ticks correspondante dans le fichier de stream. Le délai de 5s permet à ce que chaque passage consacré à un trade dans la video débute 5s avant l'ouverture de la position et finisse 5s après la fermeture.
Pour l'instant la fréquence des trames est de 20 trames par seconde. Je peux monter à 60 fps mais bof ça explose la taille pour un intéret négligeable a priori.

Dans la suite on appelle «publication» tout tick ou opu collecté depuis le stream et stocké dans le fichier de stream.

Soient m,n deux entiers naturels :
1) Soit P(n) une publication dans le fichier de stream, et soit T(n) son timestamp. P(n) est traitée par le module pour actualiser l'interface virtuelle qui apparaitra dans la video. Une image I(m) de l'interface actualisée est créée.
2) I(m) est concaténée aux images précédentes dans le fichier avi.
3) m est incrémenté et I(m) est copiée. Cette étape 3) est réalisée autant de fois que l'on peut mettre de trames entre T(n) et T(n+1).
4) n est incrémenté et retour à l'étape 1).

Remarque : le timestamp renvoyé par IG sur les OPU de fermeture de position sur limite touchée est assez dégueu car sans milliseconde, arrondi à la seconde, par contre faut juste le savoir et adapter son code quand on fait se genre de module car au début je n'avais pas percuté et ça m'a joué un drôle de tour je comprenais rien au bug dans la video.

Limitation : Je ne sais pas ( et je crois que je ne saurai jamais faire) introduire du son dans la video. C'est vraiment dommage car le visionnage d'un trade sans entendre un «ding» ou un «dong» à chaque OPU (ouverture de position, fermeture de position, posage d'une limite=0 ) est assez pénible.
Ça serait beaucoup plus confortable avec une illustration sonore. Bien-sûr que on peut poser une bande son à coté de la bande video dans la capsule avi mais sa construction se fait habituellement in-extenso. Son cheminement est parallèle à celui de la video.
Sauf que ici il s'agit d'introduire un ding synchronisé précisément avec un opu, et ça pour l'instant, et pour longtemps, je ne sais pas faire.

Pour fabriquer une video d'une longueur de 7min en gros il faut 2min. (32bits en profondeur de couleur à 20fps sur un format 1200*700 en gros) . C'est un peu long comme temps mais bon le code n'est pas fignolé. C'est fait à la truelle , je voulais déjà un code simple stable qui marche. Et puis faut se pencher sur le choix du codec et le niveau de compression des images.

Certainement une video en ligne cette semaine…(mais chut ! :mrgreen: )

Re: Labview

par Tartempion » 13 juin 2016 04:30

/!\ Me suis trompé dans le message précédent : ce sont les ouvertures qui sont horodatées à la seconde et non les fermetures sur limite touchée.

Replay
Cette semaine également verra la mise au point d'une option dans mon logiciel de trading, celle de trader non pas sur le stream de IG mais sur "le stream" d'une séance de bourse passée. Euh c'est du training-trading :roll:
Puisque le stream est stocké dans un "fichier de stream" (cf. message précédent) il suffit de choisir la date et roule ma poule !
Puisque les OPU sont stockés dans le même fichier on peut décider de publier ou de ne pas publier le stream des ordres exécutés durant la journée enregistrée entrelacé dans le stream des ticks pendant que l'on est en train de la refaire. Histoire de se comparer soi-même en temps réel.
Les ticks du fichier de stream sont horodatés en milliseconde donc aucun souci pour fournir un stream-replay qui reproduit parfaitement le stream originel. Cette semaine je mesurerai la gigue mais elle doit certainement être inférieure à la durée minimale relevée entre les timestamps de deux ticks consécutifs publiés et horodatés par les serveurs d'IG.

Le principe est très simple, tu crées:
* un producteur (de stream),
* un consommateur (=le logiciel de trading mais il existe déjà),
* une file d'attente.
Dans la file d'attente le producteur dépose les ticks en respectant entre deux dépots consécutifs les durées séparant les timestamps correspondant. File d'attente dans laquelle le consommateur extrait (lit et supprime) les éléments un par un aussi vite qu'il le peut de ce côté (il a du traitement à faire le pauvre et il sait qu'on est pressé ;) ) et si la file d'attente est vide il attent, jusqu'au timeout, qu'un élément soit déposé bien-sûr. Ce dernier cas correspond au fonctionnement usuel du logiciel de trading heureusement :musique: !

Le producteur est parallélisé sur un autre coeur que le consommateur du logiciel de trading.

L'avantage de cette architecture c'est que ça laisse la possibilité de mobiliser un troisième coeur (également consommateur du stream) pour des traitements parallélisés plus lourds qui alimentera une seconde file d'attente consommée par le logiciel de trading tous les x ticks.

J'ai commis une bourde car jusqu'à présent le logiciel téléchargeait chaque semaine le fichier agenda (perso je m'alimente sur abcbourse ça me suffit) et écrasait celui de la semaine précédente. Héhé ben maintenant faudra plus faire ça…

Re: Labview

par DarthTrader » 13 juin 2016 05:09

:top: beau boulot !!!!

Merci ! Mais tu ne dors jamais DarthTrader ??

par Tartempion » 13 juin 2016 05:11

Merci ! Mais tu ne dors jamais DarthTrader ?? À l'étranger ?