coloriser une bougie

Viewing 15 posts - 1 through 15 (of 17 total)
  • Author
    Posts
  • #210518 quote
    finplus
    Participant
    Master
    // KAMA150
    
    Period1 = 150
    FastPeriod1 = 2
    SlowPeriod1 = 30
     
    Fastest1 = 2 / (FastPeriod1 + 1)
    Slowest1 = 2 / (SlowPeriod1 + 1)
    if barindex < Period1+1 then
    Kama150=close
    else
    Num1 = abs(close-close[Period1])
    Den1 = summation[Period1](abs(close-close[1]))
    ER1 = Num1 / Den1
    Alpha1 = SQUARE(ER1 *(Fastest1 - Slowest1 )+ Slowest1)
    KAMA150 = (Alpha1 * Close) + ((1 -Alpha1)* Kama150[1])
    endif
    
    
    
    xClose = (Open+High+Low+Close)/4
    Distance = abs(xclose- kama150)
    
    
    if (xclose - kama150 > 0) then
    drawcandle(kama150, kama150, xclose, xclose) coloured(32,0,192)
    elsif (kama150 - xclose) < 0 then
    drawcandle(kama150, kama150, xclose, xclose) coloured(0,204,255)
    endif
    
    moy = average[200](distance)
    
    return distance as "distance", moy as "moy200"

    Bonjour,

    je souhaiterais coloriser le calcul de la distance en fonction de la position du close : bleu si le cours est au dessus de la kama et rouge si le cours est au dessous de la kama. J’ai bien tenté avec “drawcandle” mais ça ne donne rien.

    Merci pour votre aide.

    #210526 quote
    fifi743
    Participant
    Master

    en modifiant la ligne 27

    elsif (kama150 xclose) >0
    ou
    elsif ( xclose-kama150 ) <0
    finplus thanked this post
    #210534 quote
    finplus
    Participant
    Master

    Bonjour

    aucun changement en modifiant la ligne 27 par l’une ou l’autre proposition.

    #210536 quote
    finplus
    Participant
    Master

    Mais merci fifi743 pour avoir prêté attention à mon problème.

    #210537 quote
    robertogozzi
    Moderator
    Master

    La ligne 27 doit être:

    else
    #210538 quote
    finplus
    Participant
    Master

    Par contre, dans l’onglet “configurer” du graphique, je devrais décocher “Distance” sauf que si je fais cela, je n’ai plus aucune bougie sur mon graphe. Donc je pense qu’il y a autre chose qui m’échappe.

    #210540 quote
    finplus
    Participant
    Master

    Avec ELSE la 1ère parenthèse (avant xclose), endif et moy sont surlignés d’un trait rouge.

    #210542 quote
    robertogozzi
    Moderator
    Master

    Vous ne voyez pas la distance et la moyenne car elles sont à une échelle beaucoup plus petite que le prix.
    Je vous conseille de créer deux indicateurs distincts, un sous le graphique (sans les bougies) et un autre sur le graphique (sans les lignes) :

    // KAMA150
     
    Period1 = 150
    FastPeriod1 = 2
    SlowPeriod1 = 30
     
    Fastest1 = 2 / (FastPeriod1 + 1)
    Slowest1 = 2 / (SlowPeriod1 + 1)
    if barindex < Period1+1 then
    Kama150=close
    else
    Num1 = abs(close-close[Period1])
    Den1 = summation[Period1](abs(close-close[1]))
    ER1 = Num1 / Den1
    Alpha1 = SQUARE(ER1 *(Fastest1 - Slowest1 )+ Slowest1)
    KAMA150 = (Alpha1 * Close) + ((1 -Alpha1)* Kama150[1])
    endif
     
     
     
    xClose = (Open+High+Low+Close)/4
    Distance = abs(xclose- kama150)
     
     
    if (xclose - kama150 > 0) then
    drawcandle(kama150, kama150, xclose, xclose) coloured(32,0,192)
    else//if (kama150 - xclose) < 0 then
    drawcandle(kama150, kama150, xclose, xclose) coloured(0,204,255)
    endif
     
    //moy = average[200](distance)
     
    return//distance as "distance", moy as "moy200"
    // KAMA150
     
    Period1 = 150
    FastPeriod1 = 2
    SlowPeriod1 = 30
     
    Fastest1 = 2 / (FastPeriod1 + 1)
    Slowest1 = 2 / (SlowPeriod1 + 1)
    if barindex < Period1+1 then
    Kama150=close
    else
    Num1 = abs(close-close[Period1])
    Den1 = summation[Period1](abs(close-close[1]))
    ER1 = Num1 / Den1
    Alpha1 = SQUARE(ER1 *(Fastest1 - Slowest1 )+ Slowest1)
    KAMA150 = (Alpha1 * Close) + ((1 -Alpha1)* Kama150[1])
    endif
     
     
     
    xClose = (Open+High+Low+Close)/4
    Distance = abs(xclose- kama150)
     
     
    if (xclose - kama150 > 0) then
    //drawcandle(kama150, kama150, xclose, xclose) coloured(32,0,192)
    else//if (kama150 - xclose) < 0 then
    //drawcandle(kama150, kama150, xclose, xclose) coloured(0,204,255)
    endif
     
    moy = average[200](distance)
     
    return distance as "distance", moy as "moy200"
    x-5.jpg x-5.jpg
    #210544 quote
    finplus
    Participant
    Master

    Grazie per aver risposto alla mia richiesta.

    Le problème est que si je fais comme vous me l’avez indiqué, la moyenne mobile va tendre vers 0 lorsque l’écart se réduit (c’est un sujet que je n’arrive pas à résoudre depuis des mois et des mois).

    Donc j’ai opté pour calculer un écart avec “ABS” qu’il soit positif ou négatif et ainsi la moyenne mobile ne tendra jamais vers 0. Mais je voudrais différencier le sens de l’écart (positif ou négatif) par une couleur (bleue si le xclose est au dessus la kama etrouge si le xclose est au dessous de la kama).

    Je ne sais pas si c’est compréhensible.

    #210547 quote
    robertogozzi
    Moderator
    Master

    Vous devez vérifier si > ou < 0 AVANT d’utiliser abs().
    Après cela, vous pouvez ajouter abs().
    De cette façon, vous savez quelle est la position correcte.

    #210550 quote
    finplus
    Participant
    Master

    En fait, je ne recherche pas la position correcte. J’ai du mal m’exprimer. Ou alors il faudrait que je calcule deux moyennes mobiles : une qui est calculé uniquement lorsque l’écart xclose – kama est positif et un deuxième ou xclose – kama est négatif. Et ça, je n’y arrive pas.

    #210551 quote
    finplus
    Participant
    Master

    Comme le montre le graphe ci-dessous, la moyenne mobile s’écrase et tend d’abord vers 0 lorsque l’écart passe de positif à négatif (et vice versa). Or, je souhaite utiliser cette moyenne mobile pour filtrer mes entrées.

    Capture-decran-2023-02-26-a-18.25.43.png Capture-decran-2023-02-26-a-18.25.43.png
    #210561 quote
    robertogozzi
    Moderator
    Master

    Désolé, mais je ne comprends pas très bien ce que fait votre code. Dans le premier message vous parliez d'un problème de coloration, mais là je ne comprends plus très bien. Peut-être que quelqu'un parlant français pourra mieux vous aider que moi.

    #210566 quote
    finplus
    Participant
    Master

    C’est moi qui m’exprime mal. Mon code mesure la distance entre la kama150 et le xclose. Cette distance est ensuite calculée en valeur absolue pour qu’elle soit toujours positive. En pratique, ce qui m’importe c’est de calculer la distance. Puis j’y applique une moyenne mobile. J’ai mis ABS parce que si je ne mets pas ABS, la moyenne mobile va bien sûr suivre l’évolution de la distance. Et dans ce cas, elle se rapprochera de 0 lorsque la distance (sans mettre ABS) passera de positive à négative et vice versa. Et dans ces conditions elle ne me servira à rien puisque je m’en sers pour filtrer mes entrées (lorsque la distance franchit la moyenne mobile).

    L’idéal serait de calculer une moyenne mobile spécifique appliquée à la distance lorsque le xclose est supérieur à la kama et une moyenne mobile spécifique lorsque le xclose est inférieur à la kama. Mais je n’y arrive pas.

    Grazie.

    #210575 quote
    Nicolas
    Keymaster
    Master

    La version ci-dessous calcule 2 moyennes mobiles de période 200 sur les valeur de l’histogramme vert ou rouge.

    // KAMA150
     
    Period1 = 150
    FastPeriod1 = 2
    SlowPeriod1 = 30
     
    Fastest1 = 2 / (FastPeriod1 + 1)
    Slowest1 = 2 / (SlowPeriod1 + 1)
    if barindex < Period1+1 then
    Kama150=close
    else
    Num1 = abs(close-close[Period1])
    Den1 = summation[Period1](abs(close-close[1]))
    ER1 = Num1 / Den1
    Alpha1 = SQUARE(ER1 *(Fastest1 - Slowest1 )+ Slowest1)
    KAMA150 = (Alpha1 * Close) + ((1 -Alpha1)* Kama150[1])
    endif
     
     
     
    xClose = (Open+High+Low+Close)/4
    Distance = abs(xclose- kama150)
     
     
    if (xclose - kama150 > 0) then
    r=0
    g=255
    distplus = distance
    else
    r=255
    g=0
    distminus = distance
    endif
     
    moyplus = average[200](distplus)
    moyminus = average[200](distminus)
    
    return distance as "distance" style(histogram) coloured(r,g,0), moyplus as "moyenne plus" coloured("green") style(line,2), moyminus as "moyenne minus" coloured("crimson") style(line,2)
    finplus thanked this post
    histogramme-et-mm.png histogramme-et-mm.png
Viewing 15 posts - 1 through 15 (of 17 total)
  • You must be logged in to reply to this topic.

coloriser une bougie


ProBuilder : Indicateurs & Outils Personnalisés

New Reply
Author
author-avatar
finplus @finplus Participant
Summary

This topic contains 16 replies,
has 4 voices, and was last updated by finplus
3 years ago.

Topic Details
Forum: ProBuilder : Indicateurs & Outils Personnalisés
Language: French
Started: 02/26/2023
Status: Active
Attachments: 3 files
Logo Logo
Loading...