// 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.
en modifiant la ligne 27
elsif (kama150 – xclose) >0
ou
elsif ( xclose-kama150 ) <0
Bonjour
aucun changement en modifiant la ligne 27 par l’une ou l’autre proposition.
Mais merci fifi743 pour avoir prêté attention à mon problème.
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.
Avec ELSE la 1ère parenthèse (avant xclose), endif et moy sont surlignés d’un trait rouge.
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"
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.
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.
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.
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.
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.
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.
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)