IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Delphi Discussion :

Besoin d aide pour algo reconnaissance de figures sur courbe


Sujet :

Delphi

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 549
    Points : 226
    Points
    226
    Par défaut Besoin d aide pour algo reconnaissance de figures sur courbe
    Bonjour

    Bon mon titre est peut etre pas assez explicite alors je precise :
    J ai une courbe qui est construite de la maniere suivante : les differentes points ne peuvent evoluer que de 1 unité sur Y (+1/-1) et evoluent d une nuité sur X, c est à dire que visuellement j'ai ça :


    Je souhaiterais creer un algo qui me permete de reconnaitre les formes de la courbe comme par exemple les /\/\ etc

    donc j envisage ça :

    Au fur et à mesure de la construction de la courbe, enregistrer les formes rencontrées sous forme de 'code binaire', stoquer ces formes dans une bdd pour pouvoir ensuite les comparer.
    J entends par binaire une suite de 101010. etant donné la construction de la courbe (+1/-1) je considererais 1 comme +1 et 0 comme -1 pour le y, le rang dans le code etant le x...
    Mais cela me semble tres fastidieux.
    Seul avantage je peux ecrire ce 'code binaire' à la vue du chart ex 01010 donne \/\/\ ...

    Qu' en pensez vous ?
    Que me conseillerais vous ?

    Je ne connais rien aux algos de reconnaissance de forme qui je crois devrait etre une solution bien plus simple...

    merci de votre aide et de tous commentaires.

    Pour info c est une representation perso des cours de l euro/dollarsUS

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Salut,

    Sp2308 : Seul avantage je peux ecrire ce 'code binaire' à la vue du chart ex 01010 donne \/\/\ ...
    Bizarre quel intérêt de remplacer des 0 et des 1 par des \ et des / ???
    Je comprendrais mieux que l'on cherche à remplacer les zig-zag de la courbe du graphique joint par une équation du style y = F(X) qui s'approche au plus près de ces zig-zag.

    En tous cas faudra un peu mieux préciser ta demande pour obtenir des réponses plus concrètes.

    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 549
    Points : 226
    Points
    226
    Par défaut
    C est vrai mais je trouve plus lisible une suite de 100011 que de /\\\// et ça se calcule plus facilement en parcourant la courbe et en comparant la position du point avec la position du point precedent...

    Concernant une fonction qui calculerait...moi j ai un vague souvenir des fonctions au lycee, il y a 27 ans.... donc j imaginais même pas qu une fonction puisse faire ça. J ai lu sur des algos de reconnaissance de forme mais j imagine que ça reviendrait à utiliser un char d assault pour ecraser une mouche dans ce cas precis mais je n y connais rien dans ce domaine...non plus

  4. #4
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    il existe des algorithmes de détection de signal, comme celui-ci, mais je n'ai jamais mis en oeuvre.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 549
    Points : 226
    Points
    226
    Par défaut
    Merci pour ce lien mais je ne pense pas que cela soit possible car l algo mis en oeuvre :
    L' algorithme Goertzel est un traitement numérique du signal technique (DSP) qui fournit un moyen d'évaluation efficace des clauses du transformée de Fourier discrète (DFT), ce qui rend utile dans certaines applications pratiques, telles que la reconnaissance des DTMF sons produits par les boutons poussé sur un clavier téléphonique. L'algorithme a d'abord été décrit par Gerald Goertzel en 1958. [ 1 ]
    .
    pour ma part, ma courbe est construite avec une succession de +1/-1 en y et de +1 en x. les courbes detectees avec cet algo varient proportionnellement en x et y alors que la mienne ne varie en x que de 1 mais en y ce peut etre aussi -1... en tous les cas c est ce que j ai cru comprendre à la lecture des pages wikipedia mais si je me trompe, je suis preneur d une petite explication

  6. #6
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Re-bonjour,

    Sp2308 : C'est vrai mais je trouve plus lisible une suite de 100011 que de /\\\// et ça se calcule plus facilement en parcourant la courbe et en comparant la position du point avec la position du point précedent...
    Bin dans ce cas si tu places les valeurs X et Y des positions des points dans une table il suffit de parcourir cette table pour comparer le Y de chaque point au Y du point précédent et if LePoint[X].Y > LePoint[X-1].Y then s:=s+'0' else s:=s+'0'; dans cet exemple je récupère le résultat dans une chaîne de caractères du style '00011100101' mais on peut récupérer le résultat autement.

    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  7. #7
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Citation Envoyé par sp2308 Voir le message
    Merci pour ce lien mais je ne pense pas que cela soit possible car l algo mis en oeuvre :
    .
    pour ma part, ma courbe est construite avec une succession de +1/-1 en y et de +1 en x. les courbes detectees avec cet algo varient proportionnellement en x et y alors que la mienne ne varie en x que de 1 mais en y ce peut etre aussi -1... en tous les cas c est ce que j ai cru comprendre à la lecture des pages wikipedia mais si je me trompe, je suis preneur d une petite explication
    c'est juste une question de fréquence d’échantillonnage, si x est le temps, y l'intensité du signal, ton +1/-1 peut correspondre à un Sinus.

    Je ne suis pas du tout expert en traitement du signal, mais si tu veux trouver une séquence "+1 -1 +1 -1 +1 -1" il suffit de prendre 6 valeurs consécutives, vérifier qu'elles sont dans un interval +/- 1, exemple "8 10 8 10 8 10", "9 11 9 11 9 11", "-5 -3 -5 -3 -5 -3", donc "n n+2 n n+2". Si ce n'est pas le cas tu décales d'une valeur et tu recommences.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 549
    Points : 226
    Points
    226
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    c'est juste une question de fréquence d’échantillonnage, si x est le temps, y l'intensité du signal, ton +1/-1 peut correspondre à un Sinus.

    Je ne suis pas du tout expert en traitement du signal, mais si tu veux trouver une séquence "+1 -1 +1 -1 +1 -1" il suffit de prendre 6 valeurs consécutives, vérifier qu'elles sont dans un interval +/- 1, exemple "8 10 8 10 8 10", "9 11 9 11 9 11", "-5 -3 -5 -3 -5 -3", donc "n n+2 n n+2". Si ce n'est pas le cas tu décales d'une valeur et tu recommences.
    Je te remercie de ta réponse,il me reste encore pas mal de boulot...

    J ai aussi trouvé une source d OCR que je vais essayer de bidouiller...

  9. #9
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Bonjour,

    Sp2308 : J'ai aussi trouvé une source d' OCR que je vais essayer de bidouiller...
    Ah, on commence y voir plus clair : tu ne disposes pas des valeurs numériques des X,Y et tu veux en quelque sorte en obtenir leurs variations par un traitement d'images qui changent en fonction des époques. Oui/Non ???

    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 549
    Points : 226
    Points
    226
    Par défaut
    Non j ai la valeur de chaque point, c est moi qui construit la courbe mais je me dis que c est peut etre mois compliqué de bidouiller une source OCR ...

  11. #11
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Re-bonjour,

    Sp2308 : Non j'ai la valeur de chaque point, c'est moi qui construis la courbe mais je me dis que c'est peut être moins compliqué de bidouiller une source OCR ...
    Cela m'étonnerait que cela soit plus simple.
    Puisque tu disposes des valeurs de chaque point, à mon avis le plus simple c'est de les comparer numériquement puis de sortir les séquences de "+1" ... "-1" ... "0" en fonction du résultat de comparaison.
    Sous quelle forme disposes-tu des valeurs de points ???
    Sous le type MesPoints = Array of tPoint ??? Si Oui :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    var s : string;
    begin
        for i:=Low(MesPoints) + 1 to Hig(MesPoints) do
        begin
           if MesPoints[i].Y > MesPoints[i - 1].Y then s:=s + '+1' else
           if MesPoints[i].Y < MesPoints[i - 1].Y then s:=s + '-1' else
           if MesPoints[i].Y = MesPoints[i - 1].Y then s:=s + '0';
        end;
    end;
    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 549
    Points : 226
    Points
    226
    Par défaut
    en fait je calcule mes points de la façon la plus simple qui soit.

    je parcours un fichier de doubles, le premier me sert de double_de_reference et quand la valeur est >= double_de_reference+X j ajoute 1 à ma courbe et si elle est <= double_de_reference-X, -> -1.

    Si j ai une courbe qui fait 1 creux, 1 pic, 1 creux ( un W en sorte ) et que les diffs sont chaque fois de 1, pas de pb c est du -1+1+1-1-1+1 mais le pb est que ce pic n est pas necessairement +1-1, ce peut etre +1+1+1-1-1-1...
    Donc si j'ai un w comme ci-dessous je ne sais pas le trouver d ou mon idee de reconnaissance de forme
    ....../\
    ...../..\
    ..../....\
    ..\/......\/

  13. #13
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Bonjour,

    Sp2308 : mais le pb est que ce pic n'est pas necessairement +1-1, ce peut etre +1+1+1-1-1-1...
    Donc si j'ai un w comme ci-dessous je ne sais pas le trouver d'où mon idée de reconnaissance de forme
    Bin ç'est simple les pics et les creux ce sont des points de changement de pente :
    - un pic : /\ est situé aux valeurs de X où les DeltaY font apparaître "+1-1" : le +1 précède le -1
    - un creux : \/ est situé aux valeurs de X où les DeltaY font apparaître "-1+1" : le +1 arrive après le -1.

    Et comme tu disposes des valeurs exactes des points ce sera bien plus précis et plus simple que de la reconnaissance de forme.

    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  14. #14
    Membre émérite
    Avatar de skywaukers
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2005
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 216
    Points : 2 303
    Points
    2 303
    Par défaut
    Bonjour,
    Citation Envoyé par Gilbert Geyer Voir le message
    Bonjour,
    Bin ç'est simple les pics et les creux ce sont des points de changement de pente :
    - un pic : /\ est situé aux valeurs de X où les DeltaY font apparaître "+1-1" : le +1 précède le -1
    - un creux : \/ est situé aux valeurs de X où les DeltaY font apparaître "-1+1" : le +1 arrive après le -1.

    Et comme tu disposes des valeurs exactes des points ce sera bien plus précis et plus simple que de la reconnaissance de forme.

    A+.
    Pour approfondir l'idée, il y a changement lorsque la somme de 2 points (-1+1 ou +1-1) consécutifs = 0, le sens du changement étant déterminé au choix par le premier ou le deuxième points.

    @++
    Dany

  15. #15
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Re-bonjour,

    Skywaukers : il y a changement lorsque la somme de 2 points (-1+1 ou +1-1) consécutifs = 0, le sens du changement étant déterminé au choix par le premier ou le deuxième points.
    ... Bien vu!

    Au fait, comme Sp2308 disait en introduction
    Pour info c'est une représentation perso des cours de l'euro/dollarsUS
    c'est donc qu'aux changements il va faire acheter/vendre des Dollars via sa bécane pendant qu'il regarde la télé ... donc on va lui demander tous les deux 10% du bénef qu'en penses-tu ? (lol).

    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  16. #16
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 549
    Points : 226
    Points
    226
    Par défaut
    bon messieurs 5% chacuns alors

    c est vrai que detecter simplement les creux et les pics...puis detecter si la distance entre le 1er et deuxieme et 2eme et troisieme sont egales, peu importe la pente, j ai la meme figure plus ou mois haute...

    merci messieurs, j en ai assez pour pondre mon 'PSE' Pattern Search Engine puisqu il faut donner un nom à ce que l on fait autant en donner un qui flash...

  17. #17
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Bonjour,

    Sp2308 : bon messieurs 5% chacuns alors.
    OK, mille fois merci : "Chose promise, chose dûe".

    Au fait, deux petites questions:
    - On fait comment pour récupérer en temps réel les cours de l'Euro et du Dollar via Delphi ???
    - On fait comment pour acheter/vendre en temps réel des valeurs financières via Delphi ???
    Car le temps perdu pour prendre rendez-vous avec son banquier et le temps qu'il met pour actualiser les choses ... les cours ont déjà changé.

    Une remarque à propos des "pics" et des "creux" : n'arrive-t-il jamais :
    1) des "plats" : "_________________________________" : série de DeltaY = 0 ???
    1) des"yoyo" : "/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/" : série de +1-1+1-1+1-1 ???

    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  18. #18
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 549
    Points : 226
    Points
    226
    Par défaut
    pour recuperer les cours forex en temps reel tu telecharge une version de metatrader4, le logiciel fournit par la plus part des brokers forex.
    Il y a une fonction DDE...eh hop les cours dans delphi

    Sinon pour etudier les cours ticks par tick pour etablir une strategie tu peux aller ici, c est tres bien :http://ratedata.gaincapital.com/

    Pour trader avec delphi, moi j ai envisagé MetaTrader4 comme bridge via cette API http://www.min2006.ru/_sgg/eng/_sgg/m2_1.htm

    Sinon une DLL delphi appellée depuis MT4, je suis convaincu que c est plus rapide.

    Pour les plats non c est pas possible etant donné que je prends en compte la variation des cours ( je rapelle que c est une interpretation personnelle) donc forcement ça evolue

    Sinon pour le yoyo, j ai regulierement jusqu'à 5...mais je n en suis qu à une 'premiere lecture'

    Mais si tu es reelement interessé, contacte moi en mp

    EDit : pour le yoyo, il est possible (theoriquement) de determiner la longueur maxi d aprtes ce que j ai lu de la loi des ecarts http://www.tournesol-homepage.fr/J2S...20CRITIQUE.pdf
    si l on considere 2 mouvements dans le meme sens comme gagnant et /\ perdant et la taille de l echantillon etudié, ça doit le faire...enfin de ce que j en ai compris

  19. #19
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Bonjour Sp2308,

    Merci beaucoup pour ta mine d'informations.

    Mais si tu es reelement interessé, contacte moi en mp
    Merci mille fois ... pour l'instant je me documente et j'hésite un peu à entrer dans la pratique car acheter/vendre des valeurs via Delphi le moindre bug et on vide son compte en banque ... donc prudence.

    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  20. #20
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 549
    Points : 226
    Points
    226
    Par défaut
    Je te rassure, il n y a pas besoin d utiliser delphi pour vider son compte ;-)

    mais la plus part des brokers proposent des comptent demo...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Besoin d'aide pour remplacer avec expression régulière sur plusieurs lignes
    Par MediaVistaIntel dans le forum Général Python
    Réponses: 11
    Dernier message: 01/12/2011, 14h19
  2. [XL-2003] Besoin d'aide pour faire une boucle loop sur une macro
    Par spacesheep dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 14/04/2010, 11h42
  3. Besoin d'aide pour installer l'extention mcrypt sur mon serveur
    Par easylius dans le forum Distributions
    Réponses: 3
    Dernier message: 30/12/2008, 01h37
  4. Besoin d'aide pour algo
    Par vodevil dans le forum Langage
    Réponses: 8
    Dernier message: 08/03/2006, 13h45
  5. besoin d'aide pour des algos
    Par mathieu77 dans le forum Algorithmes et structures de données
    Réponses: 23
    Dernier message: 08/11/2005, 18h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo