Historique des prix, combien de fois le prix a t’il coupé un niveau ?

Forums ProRealTime forum Français Support ProBuilder Historique des prix, combien de fois le prix a t’il coupé un niveau ?

Tagged: ,

Viewing 15 posts - 1 through 15 (of 21 total)
  • #183243

    Bonjour à tous,

    Je cherche à connaitre combien de fois une valeur de prix est “coupée” par le cours.

    Je m’explique, je travaille sur les indices, en chandelier et j’aimerai réussir à créer un indicateur qui sur la droite (barindex + 50 par exemple) me dise combien de fois le cours a coupé ou été égal à ce niveau.

    J’y arrive correctement avec 1 niveau à tester.

    Donc pour le niveau tester ‘16390’ le cour le coupe ou est égal 108 fois !
    (La ligne visuelle n’est pas nécessaire, c’était uniquement pour ‘illustrer’ l’exemple).

    Maintenant j’aimerai arriver à trouver comment faire pour tester toutes les valeurs entre le plus bas et le plus haut affiché.

    Je n’arrive pas à utiliser correctement la fonction “For” ou “While”, et surtout comment faire pour connaitre pour chaque niveau le nombre de “coupe”.

    Faut il passer par “array” car quand je demande “drawtext” j’ai la même valeur à chaque niveau.

    Voici mon début de code :

    Merci d’avance,

    N’hésitez pas à me demander plus de précisions.

    Benjamin

     

    #183959

    Il n’y aurait qu’1 seul niveau à tester ? Et cela pour toutes les bougies de l’historique affichée ?

    Si oui comment cela devrait ensuite s’afficher ? le compte écrite sur chaque bougie ?

    #184048

    Bonsoir Nicolas!

    Merci pour ton retour!

    Alors je vais essayer d’être le plus clair possible.

    Il y aurait plusieurs niveaux à tester ! Idéalement de 0,25 en 0,25 d’une valeur X a une valeur X+50 (par exemple).

    Et cela sur un nombre choisi de chandelles, les 100 dernières par exemple.

    Pour l’affichage.

    J’imaginais, en gros, une sorte de heatmap sur le côté (dans le futur) au niveau des valeurs du cours.

    Je m’explique, pour la valeur testée “16400”

    Le cours “crosses over” ou “crosses under” “16400”, 9 fois sur les 100 dernières chandelles. Donc idéalement au niveau de “16400” un petit carré d’une certaine couleur, si 9 fois c’est beaucoup.

    Cela se mettrait à jour à chaque chandelle clôturée.

    Je suis compréhensible?

    Encore merci à toi Nicolas, je reste à ta disposition pour tous éclaircissements nécessaires!

    #184103

    Ci-joint un premier essai, mais le code ne fonctionne pas 🙁 j’ai une erreur de ‘positive integer’ pour le tableau $level, alors que non il ne devrait pas y en avoir à priori..

    Je vais voir qui pourrait m’aider et je reviens vers toi .. ! 😉

    #184128

    Merci beaucoup pour ton retour Nicolas!

    J’attends de tes nouvelles dès que tu auras quelque chose!

    Encore merci pour tout!

    #184150

    Le problème du code posté ci-dessus vient du fait que j’ai référencé les colonnes du tableau avec des Double puisque j’utilisais x comme valeur avec des pointsize, donc avec des décimales pour résumé, hors ce doit être des integer bien entendu..

    bref, je suis reparti de plus simple, d’autant plus qu’on excède facilement les capacités mémoire avec ce genre de boucle, voici autre chose :

     

     

    #184418

    Bonjour Nicolas!

    Navré de ne pas avoir pu te répondre avant!

    Un immense merci à toi pour avoir prit le temps de m’aider!

    Je vais tout de suite regarder cela et reviens vers toi au besoin!

    Merci beaucoup!

    #193753

    Bonjour à tous,

    Bonjour Nicolas,

    Une nouvelle fois merci pour tes précédents retours,

    Je me permets de répondre ici, afin d’éviter de faire un doublon de topic.

    Car en effet, les limites de mes connaissances en codage m’empêche d’utiliser / torturer le code que tu as eu la gentillesse de me faire.

    Et je n’arrive pas à l’exploiter comme je l’aimerai.

    Je me permets de nouveau d’expliquer ce que j’aimerai réussir à faire.

    L’idée principale et de visualiser les niveaux de prix les plus “touchés”, sur une période donnée.

    Dans mon exemple, je travaille sur le S&P en 30s.

    Donc une période de 120 barindex pour avoir la dernière heure.

    Tester chaque valeur de prix entre le plus haut de la dernière heure et le plus bas de la dernière heure.

    Dans l’optique final d’avoir sur le côté du graphique (barindex + 5) une heat map des niveaux les plus fréquents, juste un petit carré variant du blanc (touché 1 fois) au rouge (touché le plus de fois) pour chaque valeur de prix.

    Donc j’ai créé un petit code très simple, qui me donne pour une ligne test le nombre de fois où cette dernière est touchée par le cours.

     

     

    Maintenant je bloque sur le fait de tester chaque valeur de prix (de 0,25 en 0,25, entre le plus bas et le plus haut).

    Pour ensuite créer la heat map.

    Aurais tu une idée de comment je pourrai faire?

    Je reste à votre entière disponibilité si vous avez la moindre question.

    Merci beaucoup!

    #193758

    Voilà une version rapide, la couleur varie du noir au rouge :

     

    1 user thanked author for this post.
    #193784

    Merci beaucoup Nicolas, c’est exactement ce que je cherchais à faire!

    Merci à toi!

    #193787

    Rebonjour Nicolas,

    Petite question bonus, il y aurait il un moyen de faire une drawhline au niveau du “touch” le plus élevé?
    Même s’il y a plusieurs “touch” qui ont la même valeur.

    Comme il y a du array, je n’arrive pas à l’isoler.

    #193792

    regarde ce que a fait cventurer.

    avec le volume profil

    c’est le poc que tu cherche

    #193793
    #193799

    Bonjour Fifi,

    Merci beaucoup pour ton retour,

    Effectivement, ce qu’à construit Cventurer est très intéressant,

    Néanmoins je ne trouve toujours pas l’astuce pour ressortir le plus grand ‘touch’.

    Merci de ton aide,

    Si jamais une autre technique est possible!

    #193803

    Bonsoir,

    J’ai un début d’ébauche de commencement d’idée,

    //////////

    defparam drawonlastbaronly=true

    Period = 120
    step = 0.25
    // ———

    hh = Highest[Period](High)
    ll = Lowest[Period](Low)

    checkprice = ll
    MaxTouch1 = 0

    if IsLastBarUpdate then
    ind=0 //reset index of array
    //get the price touch occurences for each level
    while checkprice<=hh do
    touch=0 //reset price touch for this price level
    for i = 0 to period-1 do
    if high[i]>=checkprice and low[i]<=checkprice then
    touch=touch+1
    $hm[ind] = touch
    endif
    next

    if $hm[ind] > MaxTouch1 then
    MaxTouch1 = $hm[ind]
    MaxTouch2 = checkprice
    endif

    //define color
    r = min($hm[ind]*10,255)
    //plot the result
    drawtext(“█”,barindex+5,checkprice) coloured(r,0,0)
    drawtext(“#touch#”,barindex+8,checkprice) coloured(r,0,0)
    checkprice=checkprice+step //increase price check for next round
    ind=ind+1 //increase array index

    wend
    endif

    return hh,ll, touch as “touch”, MaxTouch2 as “MaxTouch2″

    //////////

    (Désolé je n’ai plus la fonction ‘insert PRT code”)

    Première remarque, en faisant un return de “MaxTouch2” j’arrive à avoir le niveau (prix) du ‘touch’ le plus grand, mais uniquement à partir du moment ou je ‘valide’ le code.
    Je n’ai pas ‘avant’, est se lié à “IsLastBarUpdate”?

    Deuxièmement, comme je le présentais, si plusieurs ‘touch’ on le même nombre ‘MaxTouch2’ se fixe sur le niveau du ‘premier’.
    Comment pourrais je faire pour pour que si il y a un seul ‘touch’ à 25 alors ‘MaxTouch2’ = le niveau du touch à 25.
    Mais s’ił y a 2 touch à 25 alors avoir un nouveau ‘MaxTouch2’ qui s’aligne au niveau du deuxième touch à 25.

    Merci à vous!

Viewing 15 posts - 1 through 15 (of 21 total)

Create your free account now and post your request to benefit from the help of the community
Register or Login