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

Re: Labview

par Tartempion » 29 juin 2015 19:39

bah merci :).

Re: Labview

par Tartempion » 21 oct. 2015 18:49

Donc me revoilà avec un peu de progrès accompli.
D'abord toute l'utilisation de l'appli se fait à la manette xbox (360 ou one), sauf la fermeture de l'appli qui se fait à la souris. Je ne connaissais pas mais en m'y plongeant j'ai découvert toute une faune de customisateurs. En fait pour l'instant en attendant la Elite de Microsoft j'ai l'impression que c'est la one le meilleur compromis. La mienne est une 360 filaire achetée 35 € chez matos.net dont j'ai retiré les masses vibrantes.
manette.jpg
manette.jpg (166.64 Kio) Vu 1524 fois
Carte des touches :
Bumper gauche = achat ou fermeture d'une position vendeuse,
Bumper droit = vente ou fermeture d'une position à l'achat,
Y = incrémenter la taille,
A = décrémenter la taille,
B =
* clic 0 modulo 4 = rien afficher (valeur par défaut),
* clic 1 modulo 4 = afficher agenda des statistiques économiques du jour,
* clic 2 modulo 4 = afficher la table des transactions de la journée ,
* clic 3 modulo 4 = rien ( en fait ce qui est prévu sur le troisième clic c'est d'afficher le profil de trading de la journée = statistiques personnelles , des trucs un peu flou qui restent à définir).
X =
* clic 0 modulo 2 = limite prend valeur 1 (quand c'est très bruité c'est plus confortable) (valeur par défaut),
* clic 1 modulo 2 = limite prend valeur 10 (ça veut dire moins bruité, sortie à la main),
Croix directionnelle:
* Haut = incrémenter la limite,
* Bas = décrémenter la limite,
* Droite = incrémenter le stop,
* Gauche = décrémenter le stop,
Joystick droit =
* clic = ouvrir la liste des watchlists,
* haut et bas = naviguer dans la liste des listes,
* gauche ou droite = sélectionner la watchlist et fermer la liste des watchlists,
Joystick gauche =
* clic = ouvrir la watchlist,
* haute et bas = naviguer dans la watchlist,
* gauche ou droite = sélectionner le marché et fermer la watchlist,

Il reste donc 2 boutons non utilisés. Les gachettes ne sont pas utilisables à mon sens car analogiques donc on ne peut pas enregistrer d'évènement ou alors ça consomme du processeur pour rien. J'ai assez galéré avec les joysticks comme ça pour faire un truc très léger, je ne recommencerai pas pour les gachettes.

Outre l'aspect pratique (à présent je ne pourrai plus revenir à la souris) il y a une très nette économie de processeur à ne plus manipuler la souris.
Bon sinon ben disons que la fonction principale du logiciel est remplie. REST et STREAM terminés ! ouf !! Appli opérationnelle.
Il reste tout le traitement parallélisé des data mais c'est secondaire et bien plus facile. Le plus dur était de faire les parties: négociation REST, gestion du STREAM et interaction négociation-stream. Il reste aussi à peaufiner l'interface car là c'est brut de décoffrage par rapport à ce que je vois dans vos applis en C ou en python qui sont très belles. Sous labview c'est malheureusement nettement plus austère l'interface.
j'essaie de faire une video demain en action .
Pitié si un programmeur Labview est intéressé qu'il se manifeste ! Je me sens seul :cry:
La principale tache maintenant c'est de monter une petite solution d'aquisition des ticks en continue pour bénéficier d'un historique au lancement de l'appli car tel quel les graphes sont vides à chaque lancement de l'appli. Ce qui n'est pas hyper génant mais ça limite la vision.

Tout conseil ou idée ou critique est bienvenu(e) !

Re: Labview

par beni » 21 oct. 2015 20:49

Et bâ !! Chapeau !
Tout ça en LabView, je retire tout ce que j'ai pu dire de mal sur ce language :lol:
C'est marrant que l'utilisation de la souris consomne plus de processeur que la manette.
Tartempion a écrit :Sous labview c'est malheureusement très nettement plus austère l'interface.
Je ne sais pas avec quelle version tu développes mais sous LV2010 j'avais trouvé un jeu d'icônes pas trop dégeu sur le VI package manager qui embellisait pas mal les appli.
Tartempion a écrit :Pitié si un programmeur Labview est intéressé qu'il se manifeste ! Je me sens seu
Je n'ai pas ton niveau, alors je ne sais pas trop en quoi je pourrai te sevir mais je me manifeste :mrgreen:

Re: Labview

par Tartempion » 21 oct. 2015 21:22

Bonjour Beni !
une capture faite il y a quelques minutes (le temps de me débattre avec paint.exe )
Je vois de quel jeu d'icones tu parles. Ben j'ai laissé tombé. :|
Labview pour celui qui l'utilise dans son labo devient souvent inséparable. Dans tous les labos où j'ai pu passer pour mon boulot (quand je bossais :musique: ) c'était du labview. Et du c ou du fortran. Mais c'était une physique intrumentale donc c'est sûr que c'est pratique dans ce domaine. Après c'est vrai que c'est pas de la programmation impérative. Pour moi le plus beau truc c'est la programmation fonctionnelle du genre ml, caml etc. C'est d'une beauté :hein: ! j'en suis gaga !!! (je n'y connais rien en C) Et faudrait que je me mette au python mais c'est trop tard pour moi je n'ai plus l'âge pour ça.

ah la capture au fait ! (c'est un écran 1920*1200=16/10)
le 0,7 c'est les points du trade ouvert au moment de la capture, bien-sûr calculés en mode DISTINCT à partir de la table CHART. C'est là que ça s'affiche (ou plutot palpite…).
Les petites barres en bas à droite c'est l'utilisation (temps) des 4 coeurs logiques, après c'est le taux DPC ( appels de procédures différées ) et enfin l'utilisation mémoire (8go) .
En haut , 1 c'est la taille, et 1,8 le spread.
L , la limite; S le stop,
En bas 5,7 : le dernier trade (pts) et 12,6 le cumul (en pts).
Le compte démo a bien morflé depuis l'ouverture en mai. Il s'est pris tous les tests REST dans la tronche. Le pauvre je n'ai jamais utilisé le companion :oops: .
Le graphe fait 1000 ticks en largeur.

Re: Labview

par Tartempion » 21 oct. 2015 22:04

un truc qui va pas te faire plaisir : la partie REST (en fait le coeur et le cerveau de l'appli) est une machine d'états :lol:

Re: Labview

par beni » 21 oct. 2015 22:13

Joli ! 8-)

Du coup t'as qu'une intercation via la manette, pas de face-avant avec des gros bouttons ?
Le jeu d'icônes c'est "Missing control System"
https://decibel.ni.com/content/docs/DOC-9921

Mais depuis la v2013, je crois il y avait déjà quelques icônes/boutons moins austères.

La machine d'état c'est bien ! Une fois qu'on a compris le principe :mrgreen:
En effet X est courant (et utile) dans les labos, le seul hic à mon sens c'est le prix de la licence et des toolkits pour des fois pas grand chose. Un peu comme Matlab...Bref c'est pas le sujet.

Re: Labview

par Tartempion » 21 oct. 2015 22:30

beni a écrit :
C'est marrant que l'utilisation de la souris consomne plus de processeur que la manette.
Ben la manette ça consomme comme un clavier, c'est des évènements sur des clics. La souris quand elle bouge par contre elle le fait savoir au proco et aillaillaille ! Surtout avec les hautes densités. C'est pour ça que la programmation des joysticks ou des gachettes est pénible car se sont des capteurs analogiques. Tu peux pas y coller d'évènements. Faut rentrer dans une boucle dans laquelle le proco récupère la valeur du capteur. Et là ça peut te "flinguer" le proco en effet si tu fais ça comme un cochon.

Re: Labview

par Tartempion » 21 oct. 2015 22:42

beni a écrit :Joli ! 8-)

Du coup t'as qu'une intercation via la manette, pas de face-avant avec des gros bouttons ?
non aucun bouton pour l'instant. Ce que tu vois c'est la face-avant. Il y en aura des boutons mais très peu (il y a de la place à droite). Ne serait-ce que pour éditer les watchlists. Il faut un bouton pour lancer la procédure, et après, l'édition des watchlists (création d'une liste, suppression d'une liste ou modification du contenu d'une liste) se fait comme sur le site web de IG. J'ai galéré avec les arbres mais le vi marche et c'est finalement le truc dont je ne me sers jamais :? (on ne modifie pas ses listes tous les jours !). Bref il faut un bouton pour lancer le sous-programme qui affiche les arbres et la souris pour drag&drop les marchés entre l'arbre du serveur d'IG et les arbres de mes listes. Tout ça se fait via le REST bien-sûr (requete "marketnavigation" http://labs.ig.com/rest-trading-api-reference/service-detail?id=173 et http://labs.ig.com/rest-trading-api-reference/service-detail?id=162. Ça fait exactement ce qu'on fait et de la même manière que sur la plateforme web mais à distance . Aucune liste n'est stockée dans la bécane. Tout se fait en REST quand l'appli tourne.
C'est complètement stupide de se faire plusieurs listes et de pouvoir changer de listes. On trade jamais plus de 2 voir 3 produits au grand maximummum je suis d'accord . Mais bon quand tu programmes la nuit c'est bien d'avoir la chine par exemple :mercichinois:

Il faudra une ou deux commandes aussi si il y a un trading automatique ou en tout cas une aide à la décision. Je m'oriente vers la logique floue.

Re: Labview

par Tartempion » 21 oct. 2015 22:54

beni a écrit :Joli ! 8-)


Le jeu d'icônes c'est "Missing control System"
https://decibel.ni.com/content/docs/DOC-9921
Ça , c'est joli ! :
http://www.batchtest.com/pebbles-ui-for-labview/
mais c'est pas donné :(
En vectoriel, genre Flash, c'est sûr que c'est toujours beau et quelque soit la taille :bravo:

Re: Labview

par beni » 22 oct. 2015 00:10

C'est étonnant quand même cette histoire de souris. La gestion des évènements/tracking doit être radicalement différente des autres languages pour faire chauffer le proc...

Si j'ai bien compris tu manage tes listes via un sous programme, c'est bien ça ?
Mais du coup tu dit que t'as une table des transactions/agenda, ils sont où ?
Ils apparaissent uniquement quand t'appuies sur les boutons correspondants? ou c'est dans un sous programme aussi ?
Dernière question après promisje vais me coucher :mrgreen:

Il sert à quoi le bouton "Rest" en bas à droite?

Merci et a +

PS: pas mal le jeu d'icônes, même si un peut trop "shiny" à mon goût ;)

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 ?