Comment screener une condition s’exprimant par une boucle?

Viewing 10 posts - 1 through 10 (of 10 total)
  • Author
    Posts
  • #83878 quote
    Nicolas
    Keymaster
    Master

    Il faudrait donc retourner le nombre de séances qui a vu cette condition de “dessus le stop”, peu importe si durant les 100 dernières périodes, à un moment, cela n’a pas été le cas ?

    #84025 quote
    OursPro
    Participant
    Junior

    Bonjour

    Veuillez m’excuser si je ne m’adresse pas au bon endroit :

    je voudrais faire un screen pour détecter des actions qui sont restées au-dessus de mon stop pendant un certain nombre de séances (mettons 100 pour fixer les idées.)

    J’ai pensé qu’il fallait faire une boucle avec un indice pour obtenir la condition devant servir à sélectionnez mes actions, mais je ne sais pas comment exprimer la condition à screener .

    Est-ce que quelqu’un pourrait m’aider?

    Merci d’avance.

    <once i =0
    
    if Close [i] > ChandeKrollStopUp[10, 20, 3][i] and i < 100 then
    
    i =  i +1
    
    endif
    
    SCREENER [?]>
    #84030 quote
    Nicolas
    Keymaster
    Master

    Le topic est réparé, votre dernier message a été supprimé, désolé. Pour une raison que j’ignore il comportait un code “malveillant” provenant sans doute de l’image que vous avez envoyé dans le sujet. Merci d’ajouter les images avec l’outil approprié et d’éviter les formats TIF, et de privilégier les formats JPEG ou PNG.

    #84041 quote
    OursPro
    Participant
    Junior

    L’Image que j’ai voulu insérer était une copie d’écran. Je suis sur Mac, c’est du PNG et il n’y a pas de code malveillant.

    Je vais essayer d’insérer du code PRT avec deux versions d’un screen pour sélectioner des actions dont la cloture n’est jamais en dessous du ChandKroll Stop au cours des 10 dernières séances.

    La première est une méthode “bourin”,  elle marche mais n’est pas élégante :  il faut entrer les chiffres un par un après avoir copier 10 fois le même texte. iii

    La deuxième me parraît plus pro, avec un indice qu’on choisi, mais elle ne  marche pas et je ne vois pas où je me suis trompé. C’est surement simple, mais il me faudrait un deuxième cerveau.

    Merci d’avance . (J’ai bien utilisé le bouton PRT code, mais apparemment, je n’obtiens pas le bon résultat en couleur?)

    //Je choisis combien de séances doivent cloturer au-dessus du stop
    n = 5
    
    //c est la condition à screener, elle et nulle par défault.
    once c = 0
    
    //initialisation de l'indice :
    once i = 0
    
    //Toutes les fermetures doivent être supérieures au stop
    if Close [i] > ChandeKrollStopUp[10, 20, 3][i] then
    
    //Si la condition est remplie n fois
    if i<n then
    i=i+1
    
    //, l'action est validée.
    elsif c = 1 then
    endif
    
    //sinon elle ne l'est pas
    else
    c = 0
    endif
    
    //On retiend les actions qui ont validé n fais la condition.
    SCREENER [c = 1]
    
    //Aucune action n'est retenue! Où est l'erreur?
    

     

    c2 = ChandeKrollStopUp[10, 20, 3][9] < ChandeKrollStopUp[10, 20, 3][4]
    c3 = ChandeKrollStopUp[10, 20, 3][4] < ChandeKrollStopUp[10, 20, 3]
    c4 = (ChandeKrollStopUp[10, 20, 3] - ChandeKrollStopUp[10, 20, 3][9]) / ChandeKrollStopUp[10, 20, 3][9] > 0.1
    
    once c = 0
    
    
    //Toutes les fermetures doivent être supérieures au stop
    if Close  > ChandeKrollStopUp[10, 20, 3] and Close [1] > ChandeKrollStopUp[10, 20, 3][1] and Close [2] > ChandeKrollStopUp[10, 20, 3][2] and Close [3] > ChandeKrollStopUp[10, 20, 3][3] and Close [4] > ChandeKrollStopUp[10, 20, 3][4] and Close [5] > ChandeKrollStopUp[10, 20, 3][5]and Close [6] > ChandeKrollStopUp[10, 20, 3][6]and Close [7] > ChandeKrollStopUp[10, 20, 3][7]and Close [8] > ChandeKrollStopUp[10, 20, 3][8]and Close [9] > ChandeKrollStopUp[10, 20, 3][9] then
    
    //, l'action est validée.
    c = 1
    
    //sinon elle ne l'est pas
    else
    c = 0
    endif
    
    //On retiend les actions qui ont validé n fOis la condition.
    SCREENER [(c = 1) and c2 and c3 and c4]
    
    #84042 quote
    OursPro
    Participant
    Junior

    J’ajoute quelques commentaires à mon post qui est passé finallement numéroté avec ses couleurs.

    C’est le premier avec une boucle qui ne marche pas.(recherche sur 5 séances seulement).

    Le deuxième programme marche (recherche sur 9 séances), mais la longue ligne avec une succession de “and” a été coupée par votre logiciel (ligne 9) : on devine facilement la suite. Il ne faut pas tenir compte des 3 premières lignes qui sont hors sujet : Je les avais ajoutées pour imposer que la tendance soit croissante également.

    #84043 quote
    JC_Bywan
    Moderator
    Master

    Pour info pratique pour les nouveaux, dans une fenêtre de code PRT insérée dans un message de ce forum, une ligne plus longue que la largeur dispo sur vos écrans est quand même visible intégralement soit en passant sur la fenêtre avec la souris pour faire apparaitre en bas une barre de défilement horizontale, soit en utilisant le premier des 3 boutons du coin supérieur droit (celui avec la flèche retour chariot) qui si on clic dessus va alors faire des retours à la ligne respectant la largeur dispo pour éviter de défiler horizontalement

    #84047 quote
    JC_Bywan
    Moderator
    Master

    Pour que la première façon fonctionne, il aurait fallu faire varier i avec une boucle for next (car écrit tel que ci-dessus i n’est pas incrémenté plusieurs fois dans la bougie considérée puis réinitialisé pour la suivante comme il le devrait).

    Mais la 2e façon est meilleure dans l’esprit de toute façon, les boucles étant trop consommatrices de ressource dans PRT avec le moteur actuel (qui devrait bientôt s’améliorer). Si l’élégance est ce que tu cherches à y rajouter, alors le mot-clé “summation” devrait en apporter:

    condition= Close>ChandeKrollStopUp[10,20,3]
    if summation[10](condition)=10 then
     etc...
    Nicolas thanked this post
    #84079 quote
    OursPro
    Participant
    Junior

    Merci pour tes conseils , le mot-clé “summation” me convient très bien mais je ne l’avais pas encore utilisé : la condition vaut 1 quand elle est remplie, et donc elle doit l’être 10 fois! Elémentaire mon cher Watson!

    Mais je vais tout de même réfléchir pour que ma boucle fonctionne correctement. Je ne suis pas très familiarisé avec ce langage, bien qu’il soit “basic” .

    #84117 quote
    Nicolas
    Keymaster
    Master

    Les boucles, c’est le sujet principal de la formation sur la programmation avancée 🙂

    #84338 quote
    OursPro
    Participant
    Junior

    Merci, mais je n’ai aucune envie de suivre une formation supplémentaire. J’apprends à programmer en programmant et quand j’ai un problème je cherche sur la doc ou je demande sur Internet. Quand je ne trouve pas sur un site, je vais voir sur un autre.

    (Pour info, j’ai déjà fait 15 ans d’études et ça me suffit 😇) Mais j’aurai toujours quelque chose à apprendre…et j’accepte tous les conseils!

Viewing 10 posts - 1 through 10 (of 10 total)
  • You must be logged in to reply to this topic.

Comment screener une condition s’exprimant par une boucle?


ProScreener : Scanners de Marché & Détection

New Reply
Author
author-avatar
OursPro @ourspro Participant
Summary

This topic contains 9 replies,
has 3 voices, and was last updated by OursPro
7 years, 4 months ago.

Topic Details
Forum: ProScreener : Scanners de Marché & Détection
Language: French
Started: 11/02/2018
Status: Active
Attachments: No files
Logo Logo
Loading...