Array: récupérer une valeur/index selon période définie

Viewing 8 posts - 1 through 8 (of 8 total)
  • Author
    Posts
  • #131546 quote
    RicLg
    Participant
    Senior

    Bonjour
    C’est la 1ere fois que j’utilise Array, j’épprouve quelques difficultés.
    j’ai un tableau des Top : $Topy

    Je souhaiterai récupérer..
    1 – la valeur du top le plus haut durant les indices (1 to 15) , indice Zero n’est pas inclus dans la période
    2 – ainsi que la barIndex qui lui est associé.

    Merci pour votre aide.

    ps: Suggestion concernant Arraymax, ArrayMin
    Arraymax              ($variable) [période]
    ArraymaxIndex   ($variable) [période]

    #131608 quote
    Nicolas
    Keymaster
    Master

    Il faut créer 2 tableaux, l’un qui comportera le barindex et l’autre le prix associé, au même index du tableau.

    Pour trouver le barindex de la valeur la plus haute du tableau du prix, alors il faudra faire une boucle entre  1 et 15. Si tu connais cet index pour le prix, alors celui du tableau de tes barindex sera le même et tu connaîtra donc la coordonnée en abscisse de ta valeur prix.

    #131679 quote
    RicLg
    Participant
    Senior

    Bonjour

    Merci Nicolas pour tes indications.

    A la ligne 29, pourrai-tu m’orienter ?

    Comment afficher la courbe de valeurs du tableau?

    Cela me permettrait une vérification du résultat du code.

    Merci pour les exemples de codes liés au Tableau/Array

    Merci Nicolas

    // https://www.prorealcode.com/topic/array-variables-availability-in-prorealtime/
    // (please do not remove the link above for future reference)
    // Example #1: support and resistance example, based on fractals points
    defparam drawonlastbaronly=true
    cp=10
    Rem LEs Tableaux
    if high[cp] >= highest[(cp)*2+1](high) then //new fractal high found
    $TOPy[lastset($TOPy)+1] = high[cp] //store fractal value
    $TOPx[lastset($TOPx)+1] = barindex[cp] //store fractal barindex
    endif
    if low[cp] <= lowest[(cp)*2+1](low)  then //new fractal low found
    $BOTy[lastset($BOTy)+1] = low[cp] //store fractal value
    $BOTx[lastset($BOTx)+1] = barindex[cp] //stire fractal barindex
    endif
    
    Rem Traitement
    if(islastbarupdate and isset($topy[0]) and isset($boty[0])) then
    once HighestTopTmp=$TOPy[lastset($TOPy)]
    Rem TOP
    for i = lastset($TOPy)-15 to lastset($TOPy) do  // Définition de la Periode 
    Rem Le plus HAUT des 15 derniers indices
    Rem --------------------------------------
    if  $TOPy[i]> HighestTopTmp then
    HighestTopTmp=$TOPy[i]
    idxHighestTopTmp=$TOPx[i]
    endif
    Rem Afficher la courbe du tableau $TOPy
    Rem --------------------------------------
    CourbeTopArray=$TOPy[i]               //  comment afficher la courbe de valeurs du tableau?
    next
    Rem DRAWTEXT : Le plus HAUT des 15 derniers indices
    Rem --------------------------------------------------------------------
    DRAWTEXT("#HighestTopTmp#", idxHighestTopTmp, high[barIndex- idxHighestTopTmp],dialog,bold,20) //coloured (255,255,255,alphaTopCount))
    endif
    
    return  CourbeTopArray as "CourbeTopArray"
    ArrayRecupValeursSelonPeriod.itf
    #131710 quote
    RicLg
    Participant
    Senior

    Par curiosité je voulais vérifier si le code fonctionne avec le  critère inverse de la ligne 23

    J’ai donc injecté le bloc de la ligne 29

    Et voila que le code fonctionne bizarrement. Je n’y comprends plus rien.

    Merci pour votre aide.

    *Je suis en EoD version gratuite chez Prorealtime. Marché Euronext action

    // https://www.prorealcode.com/topic/array-variables-availability-in-prorealtime/
    // (please do not remove the link above for future reference)
    // Example #1: support and resistance example, based on fractals points
    defparam drawonlastbaronly=true
    cp=10
    Rem LEs Tableaux
    if high[cp] >= highest[(cp)*2+1](high) then //new fractal high found
    $TOPy[lastset($TOPy)+1] = high[cp] //store fractal value
    $TOPx[lastset($TOPx)+1] = barindex[cp] //store fractal barindex
    endif
    if low[cp] <= lowest[(cp)*2+1](low)  then //new fractal low found
    $BOTy[lastset($BOTy)+1] = low[cp] //store fractal value
    $BOTx[lastset($BOTx)+1] = barindex[cp] //stire fractal barindex
    endif
    
    Rem Traitement
    if(islastbarupdate and isset($topy[0]) and isset($boty[0])) then
    once HighestTopTmp=$TOPy[lastset($TOPy)]
    once LowestTopTmp=$TOPy[lastset($TOPy)]
    Rem TOP
    for i = lastset($TOPy)-15 to lastset($TOPy) do  // Définition de la Periode
    
    Rem Le plus HAUT des 15 derniers indices
    Rem ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
    if  $TOPy[i]> HighestTopTmp then
    HighestTopTmp=$TOPy[i]
    idxHighestTopTmp=$TOPx[i]
    endif
    Rem Le plus BAS des 15 derniers indices     // INJECTION
    Rem ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
    if  $TOPy[i]< LowestTopTmp then
    LowestTopTmp=$TOPy[i]
    idxLowestTopTmp=$TOPx[i]
    endif
    
    Rem Afficher la courbe du tableau $TOPy
    Rem ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
    CourbeTopArray=$TOPy[i]               //  comment afficher la courbe de valeurs du tableau?
    next
    
    Rem DRAWTEXT : Le plus HAUT/BAS des 15 derniers indices
    Rem ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
    DRAWVLINE(idxHighestTopTmp)
    DRAWTEXT("#HighestTopTmp#", idxHighestTopTmp, high[barIndex- idxHighestTopTmp],dialog,bold,20)
    Rem ..
    DRAWVLINE(idxLowestTopTmp)
    DRAWTEXT("#LowestTopTmp#", idxLowestTopTmp, high[barIndex- idxLowestTopTmp],dialog,bold,20)
    endif
    
    return  CourbeTopArray as "CourbeTopArray"
    ArrayRecupValeursSelonPeriod-1.itf
    #132133 quote
    RicLg
    Participant
    Senior

    Bonjour,

    je sollicite votre aide car je je  ne réussi pas à résoudre le problème de mon codage. j’ai fais une copie d’écran qui résume la situation.j’essaie de comprendre et de manipuler les données d’un tableau.

    Je vous remercie pour votre aide.

    Mauvais-codage.png Mauvais-codage.png ArrayRecupValeursSelonPeriod-2.itf
    #132367 quote
    RicLg
    Participant
    Senior

    Bonjour

    S’il vous plait, une petite aide pour mon petit problème. merci

    #132435 quote
    Nicolas
    Keymaster
    Master

    J’ai repris ton dernier code, le problème c’est que tu ne reset jamais le max et le min avant une boucle, sauf à la première itération où ça fonctionne car tu utilises ONCE. Pour mémoire, ONCE ne permet qu’une seule fois de donner une valeur à une variable. En retirant ONCE, les valeurs trouvées restent affichées.

    #132452 quote
    RicLg
    Participant
    Senior

    Rhaaaa , trop merci  :-).   Je comprends enfin le problème grâce à tes explications. Je vais pouvoir avancer sur l’apprentissage du Array.

    Merci de nouveau Nicolas.

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

Array: récupérer une valeur/index selon période définie


ProBuilder : Indicateurs & Outils Personnalisés

New Reply
Author
author-avatar
RicLg @riclg Participant
Summary

This topic contains 7 replies,
has 2 voices, and was last updated by RicLg
5 years, 9 months ago.

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