Stockage valeur Creux (prix)

Viewing 15 posts - 1 through 15 (of 21 total)
  • Author
    Posts
  • #160434 quote
    PRC_2021
    Participant
    Average

    Bonjour,

    J’aimerai savoir sur un intervalle de temps prédéfini comment on peux stocker la valeur des 2 derniers creux (si creux il y a). J’ai commencé à coder quelque chose mais je bloque.
    Sachant qu’il peut y avoir plus de 2 creux mais seul les 2 derniers m’intéresse.

    // Période en jours
    Per = 7
    a = close
    
    // Définition du creux
    creux = a>a[1] and a[1]<a[2]
    
    For a to per do
    if creux then
    // On stock sa valeur afin de pouvoir l'utiliser ensuite(??)
    end if
    NEXT

    Merci de votre aide.
    Manu

    #160439 quote
    JC_Bywan
    Moderator
    Master

    Bonjour, basé sur ta définition d’un creux sur les clôtures, ceci te retournera la valeurs des 2 creux les plus récents, ou 0 s’ils sont en dehors de la période per:

    // Période en jours
    Per = 7
    a = close
     
    // Définition du creux
    creux1 = a>a[1] and a[1]<a[2]
    
    if creux1 then
     barindex2=barindex1
     barindex1=barindex[1]
     close2=close1
     close1=close[1]
    endif
    
    if barindex-per>=barindex1 then
     close1=0
     barindex1=0
    endif
    if barindex-per>=barindex2 then
     close2=0
     barindex2=0
    endif
    
    return close1 as "creux le plus récent", close2 as "2ème creux le plus récent"
    PRC_2021 thanked this post
    #160440 quote
    Nicolas
    Keymaster
    Master

    Je te conseil dans ce cas d’utiliser des variables en tableaux, puis de stocker à la volée les valeurs des deux dernière colonnes du tableau dans des variables standard. On pourrait faire sans les tableaux, mais ce sera plus simple par la suite si tu veux utiliser plus de valeurs stockés que simplement 2.

    // Période en jours
    a = close
    
    // Définition du creux
    creux = a>a[1] and a[1]<a[2]
    
    if creux then //creux détecté
     $creux[index]=a[1] //valeur du creux stocké dans le tableau dans la colonne 'index'
     index=index+1 //j'incrémente la colonne du tableau pour le prochain creux à stocker
    endif
    
    //les 2 derniers $creux se trouvent donc dans les 2 derniers index
    if index>=2 then //y-at'il au moins 2 creux?
     var1=$creux[index-1] //var1 sera mon premier creux
     var2=$creux[index-2] //var2 sera le deuxième
    endif
    
    return var1,var2
    PRC_2021 thanked this post
    #160448 quote
    PRC_2021
    Participant
    Average

    Merci pour vos réponses rapides. Je testerai cela ce weekend 🙂

    #160577 quote
    PRC_2021
    Participant
    Average

    Effectivement, peut être que j’utiliserai plusieurs valeurs stockées. Par contre, Nicolas dans ton code, tu n’as pas indiquer  l’intervalle de temps prédéfini.

    Par exemple, une variable “per = 7” pour stoker sur les 7 derniers jours la valeur des 2 derniers creux si creux il y a.

    Merci par avance

    #160690 quote
    PRC_2021
    Participant
    Average

    Parallèlement, j’utilise ce code dans un screnner par contre, cela m’indique une erreur de syntaxe à la ligne suivante “if creux then //creux détecté” . Je ne vois pas c’est une simple condition si (??)

    #160696 quote
    Nicolas
    Keymaster
    Master

    Je ne comprends pas ce que tu veux dire par “intervalle de temps”. La détection de creux c’est la tienne, je n’ai fait que la reprendre, je pense que tu veux parler de creux type fractal (qui contienne une condition en période dans la détection de points hauts / bas).

    L’erreur de syntaxe est normal puisque ProScreener ne supporte pas les variables en tableaux. Ton sujet étant posté dans le forum ProBuilder, je n’ai pas créé de codes compatibles avec ProScreener.

    Si je connaissais l’intégralité de ton projet, ce serai bien plus simple et rapide de te guider dans la bonne direction, merci.

    #160698 quote
    PRC_2021
    Participant
    Average

    Autant pour moi. Je pensais pouvoir me débrouiller seul ensuite mais non visiblement 😉 😉

    Dans un screnner et à partir de ma définition du creux, je voudrais savoir lors des 10 derniers jours (par exemple) :

    • si il y avait eu un creux
    • si il y avait eu un 2ieme creux
    • Et si la valeur du creux 1 était supérieur à la valeurs du creux 2

    Le screnner retournant les 3 conditions ci dessus réunis.

    #160705 quote
    Nicolas
    Keymaster
    Master

    Bien compris, je pense que le code ci-dessous répond correctement à ces conditions, à tester :

    a = close
     
    // Définition du creux
    creux = a>a[1] and a[1]<a[2]
    
    plushaut = 0
    if creux then
    plushaut = a[1]>creuxP and creuxP>0
    creuxP = a[1]
    endif
    
    test = summation[10](plushaut)>0
    
    screener[test]
    
    PRC_2021 thanked this post
    #160776 quote
    PRC_2021
    Participant
    Average

    Oui, c’est exactement cela. Merci

    #196401 quote
    christophe11560
    Participant
    Senior

    Bonjour à tous,
    Dans le screener, je souhaiterais intégrer une notion de volume.
    si l’on considère que le creux 1 est plus récent que le creux 2, Je voudrais voir un volume plus élevé sur le creux 1 qui est plus haut que le creux 2.

    Comment pourrait on adapter ce code?

    bien à vous

    #196431 quote
    Nicolas
    Keymaster
    Master

    A tester avec cette version qui teste un volume plus élevé sur le creux actuel que sur le creux qui le précède:

    a = close
     
    // Définition du creux
    creux = a>a[1] and a[1]<a[2]
    
    plushaut = 0
    if creux then
    plushaut = a[1]>creuxP and creuxP>0 and volume[1]>creuxPV
    creuxP = a[1]
    creuxPV = volume[1]
    endif
    
    test = summation[10](plushaut)>0
    
    screener[test]
    #196550 quote
    christophe11560
    Participant
    Senior

    Bonjour Nicolas,
    j’ai essayé le test. Pour les volumes cela fonctionne. Génial
    Par contre, j’ai un soucis avec la fonction sommation.
    J’ai fait un test en hebdo et remplacé les chandeliers par une ligne pour vérifier plus clairement la position des creux. J’ai également raccourci la sommation à 6 au lieu de 10, soit 6 semaines de recul.

    Je te joints une image du screen réalisé avec un exemple type:
    – Point 1: creux à 2 semaines OK
    – Point 2: creux à 10 semaines > 6 semaines.

    Comment peut modifier le code pour que la sélection des creux se limite bien à la durée choisie?

    Dans l’attente de te lire
    christophe 😉

    a = close
     
    // Définition du creux
    creux = a>a[1] and a[1]<a[2]
    
    plushaut = 0
    if creux then
    plushaut = a[1]>creuxP and creuxP>0 and volume[1]>creuxPV
    creuxP = a[1]
    creuxPV = volume[1]
    endif
    
    test = summation[6](plushaut)>0
    
    screener[test]
    PRTim1.jpg PRTim1.jpg
    #196720 quote
    Nicolas
    Keymaster
    Master

    Désolé la question n’est pas clair.

    Mais, pour mémoire, ton code teste les valeurs de creux à la suite, si il y a x creux entre 2 valeurs, on ne peut pas tester si le creux N est plus haut que le creux N-6

    Il faudrait pour cela un code bien plus complexe.

    #196747 quote
    christophe11560
    Participant
    Senior

    Bonjour Nicolas,
    Je me suis mal exprimé.

    test = summation[6](plushaut)>0

    On utilise la fonction “summation ” et dans ce cas de periode 6, soit 6 semaines dans mon cas.

    Sur la photo que je t’ai jointe, le 2ième creux est distant de 10 semaines de la date d’aujourd’hui et de 8 semaines du 1ier creux.

    Je ne comprends pas pourquoi le screener me propose cette action qui ne respecte pas la sommation de 6 (max).

    bien à toi

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

Stockage valeur Creux (prix)


ProBuilder : Indicateurs & Outils Personnalisés

New Reply
Author
author-avatar
PRC_2021 @manu35250 Participant
Summary

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

Topic Details
Forum: ProBuilder : Indicateurs & Outils Personnalisés
Language: French
Started: 02/05/2021
Status: Active
Attachments: 4 files
Logo Logo
Loading...