/////////////////////////////////////KAMA 150
Period = 150
FastPeriod = 2
SlowPeriod = 30
Fastest = 2 / (FastPeriod + 1)
Slowest = 2 / (SlowPeriod + 1)
if barindex < Period+1 then
Kama=close
else
Num = abs(close-close[Period])
Den = summation[Period](abs(close-close[1]))
ER = Num / Den
Alpha = SQUARE(ER *(Fastest - Slowest )+ Slowest)
KAMA = (Alpha * Close) + ((1 -Alpha)* Kama[1])
endif
///////////////////////////////////////////////////////////////////: Distance Cours KAMA
xClose = (Open+High+Low+Close)/4
Distance = (xclose- kama)
moy = exponentialaverage[period]((distance))
if Moy<Moy[1] and Moy[1]>Moy[2] and Moy[1]>0 then
RetB5=RetB4
RetB4=RetB3
RetB3=RetB2
RetB2=RetB1
RetB1=Moy[1]
RetBmoy=(RetB1+RetB2+RetB3+RetB4+RetB5)/5
endif
if Moy>Moy[1] and Moy[1]<Moy[2] and Moy[1]<0 then
RetH5=RetH4
RetH4=RetH3
RetH3=RetH2
RetH2=RetH1
RetH1=Moy[1]
RetHmoy=(RetH1+RetH2+RetH3+RetH4+RetH5)/5
endif
if abs(retBmoy-0) > abs(retHmoy-0) then
limitUP = retBmoy
elsif abs(retBmoy-0) < abs(retHmoy-0) then
LimitUp = -RetHmoy
endif
if abs(RetHmoy-0) > abs(RetBmoy-0) then
limitDn = RetHmoy
elsif abs(RetHmoy-0) < abs(RetBmoy-0) then
LimitDn = - RetBmoy
endif
if ((xclose - kama) > 0) then
distplus = distance
else
distminus =-distance
endif
MoyDistHigh = average[20](distplus)
MoyDistlow = -average[20](distminus)
G1=highest[150](distance)
for i=0 to 49
$montab[i]=distance[i]
if distance[i]=G1 then
i1=i
endif
next
$montab[i1]=ArrayMin($montab)
G2=ArrayMax($montab)
moy2plusgrands=(G1+G2)/2
G11=lowest[150](distance) // je reprends ta notation G11,G12 à la place des G1,G2 du cas des 2 plus grands
for i=0 to 49
$montab[i]=distance[i]
if distance[i]=G11 then // attention, tu avaiss oublié de transformer G1 en G11 ici
i2=i
endif
next
$montab[i2]=ArrayMax($montab)// on élimine le plus petit en i1 du tableau en en faisant un plus grand, pour qu'ensuite l'arraymin donne le 2e plus petit de la série de départ
G12=ArrayMin($montab)
moy2pluspetits=(G11+G12)/2
if (moydisthigh > moydisthigh[1]) and distance > moydisthigh then
drawcandle (0,0, distance, distance) COLOURED (32,0,192)
elsif (distance > moydisthigh) or (distance > retbmoy) then
Drawcandle(0,0, distance, distance) COLOURED (0,204,255)
endif
if (moydistlow < moydistlow[1]) and distance < moydistlow then
drawcandle (0,0, distance, distance) COLOURED (255,0,0)
elsif (distance < moydistlow) or (distance < rethmoy) then
Drawcandle (0,0, distance, distance) COLOURED (255,204,153)
endif
Return distance as "Distance", moy as "DM Moy", RetBmoy as "Moyenne 5 derniers retournements baissiers", RetHmoy as "Moyenne 5 derniers retournements haussiers", MoyDistHigh as "MoyDistHigh", MoyDistLow as "MoyDistLow", moy2plusgrands as "FilterUp", moy2pluspetits as "FilterDn"
Bonjour,
je filtre mes entrées en position à partir de cet indicateur que j’ai “bidouillé” avec l’aide des personnes (merci à elles pour leur dévouement et leur patience) qui animent ce site. J’aimerai que celles-ci revoient cet indicateur pour savoir si elle ne détectent pas d’anomalie de “construction”.
Je l’utilise en filtrant avec cette formule :
CrossLimitUp1h = (distance1h > moydisthigh1h) and (moydistHigh1h > MoyDistHigh1h[1]) and (moydisthigh1h < RetBmoy1h) and (moydisthigh1h[1] < RetBmoy1h[1]) and (moydisthigh1h[2] < RetBmoy1h[2]) pour entrer long
CrossLimitDn1h = (distance1h < moydistlow1h) and (moydistLow1h < MoyDistLow1h[1]) and (MoydistLow1h > RetHmoy1h) and (MoydistLow1h[1] > RetHmoy1h[1]) and (MoydistLow1h[2] > RetHmoy1h[2]) pour entrer en cours
Or, en programmation automatique, certaines positions sont prises quand par exemple la distance n’est pas au dessus de la moydistlight ou que la moydisthigh est au dessus de RetBmoy.
Est-ce quelque chose “cloche” dans l’indicateur par hasard ?
merci.