Bonjour, je souhaite trouver le barIndex correspondant au croisement de close avec price1 en partant en marche arrière à partir d’un barIndex défini mais je n’y arrive pas. Quelqu’un peut-il regarder mon code ci-dessous pour essayer de voir ce qui ne va pas ?
Merci !!
Price1 = (high + low)/2
for g = 30 downTo 0 do
once a = 1
if close[a] crosses over price1[a] then
//if open[a] <= price1[a] and close[a] > price1[] then
drawVLine(g) style (dottedLine,3)
//break
else
a = a + 1
endIf
next
if close crosses over price1 then
drawVLine(barindex)
endIf
return
price1 = (high+low)/2
if islastbarupdate then
for i = 0 to 30
if close[i] crosses over price1[i] then
drawVline(barindex-i)coloured("violet",100)style(dottedline,1)
drawtext(barindex-i,barindex-i,10)anchor(bottom,index,yshift)
break
endif
next
endif
return
price1 = (high+low)/2
condition = (close crosses over price1)
bar = barssince(condition,0)
print(bar)
if condition then
drawVline(barindex)coloured("violet",100)style(dottedline,1)
drawtext(barindex,barindex,10)anchor(bottom,index,yshift)
endif
return close as"close", price1 as"price1" coloured("red")style(dottedline,1)
Bonjour Druby,
Les 2 codes cherchent dans le sens des barIndex et non dans le sens inverse à partir d’un barIndex défini …
Ce que je recherche c’est trouver le premier croisement mais en repartant en arrière à partir d’un barIndex défini, c’est pour cette raison que j’ai essayé avec la fonction downTo … Exemple, rechercher le 1er croisement de close avec price1 à partir du barIndex = 30 mais cherchant en sens inverse du déroulement normal.
Un grand merci tout de même, c’est sympa !!
Salut Louloute, je ne suis pas sûr de suivre ta description.
Mais voici une autre tentative.
Cela commence à barindex=30, regarde en arrière vers barindex = 0
jusqu’à ce que la condition IF soit remplie ou que la boucle se termine.
price1 = (high+low)/2
if barindex >= 30 then
for i = 30 downto 0
x = barindex-i
if close[x] crosses over price1[x] then
drawVline(barindex[x])coloured("violet",100)style(dottedline,1)
drawtext(barindex[x],barindex[x],10)anchor(bottom,index,yshift)
break
endif
next
endif
return close as"close", price1 as"price1" coloured("red")style(dottedline,1)
Cette version imprimera la ligne verticale sur la barre correspondant au premier croisement survenu à partir des barres arrière LOOKBACK.
baridx est le numéro BARINDEX où le croisement a eu lieu.
//defparam drawonlastbaronly = true
LookBack = 30
price1 = (high+low)/2
condition = (close[LookBack] crosses over price1[LookBack])
IF BarIndex > LookBack THEN
bar = barssince(condition,0)
baridx = barindex[bar + LookBack]
drawVLine(baridx)
ENDIF
return
Pour voir les numéros BARINDEX, utilisez cet indicateur :
RETURN BarIndex AS "BarIndex"
C’est exactement le comportement attendu ! Merci Druby et merci Robertogozzi.
Cependant je n’arrive pas à comprendre pourquoi mon code ne donne rien … Avez-vous une idée ?
Ceci est votre code modifié. Maintenant ça marche.
N contient le numéro de la bougie à partir de laquelle partir. Il peut aussi être 0, mais pas négatif.
N = 30
Price1 = (high + low)/2
for g = N to BarIndex
if close[g] crosses over price1[g] then
drawVLine(barindex[g]) style (dottedLine,3)
break
endIf
next
return