Bonjour est il possible de créer un indic qui trace un trait au niveau 50% des meches et qui disparait quand ce niveau a été touché? Merci à tous.
voici
//--------------------------------------------
// PRC_50%WickLevels (Unmitigated)
//--------------------------------------------
DEFPARAM DRAWONLASTBARONLY = TRUE
// --- Paramètres ---
lookback = 200 // nombre de bougies à surveiller en arrière
extension = 0 // bougies de projection supplémentaires à droite
IF islastbarupdate THEN
maxLook = MIN(lookback, barindex - 1)
FOR i = 1 TO maxLook DO
niveau = (high[i] + low[i]) / 2
// Parcours du prix sur les i bougies postérieures
minPost = Lowest[i](low)
maxPost = Highest[i](high)
// Niveau NON touché -> on trace le trait
IF niveau < minPost OR niveau > maxPost THEN
DRAWSEGMENT(barindex - i, niveau, barindex + extension, niveau) COLOURED(255,140,0)
ENDIF
NEXT
ENDIF
RETURN
Merci Ivan, mais cela ne marche pas. Toutes les meches de bougie cloturée ( up ou down) doivent avoir leur niveau 50% affiché. si lookback =200, alors on devrait voir sur le graphique de nombreux niveaux. as tu une solution?
cet itf montre les 50% des bougies et non les meches.
Bonjour Géraud,
Que signifie 50% des mèches svp ? Pourriez vous nous adresser un schéma, un exemple tracé sur une graphique sur une seule bougie pour bien comprendre ce qu’il faut programmer ? ça sera plus rapide ! Merci par avance.
voi en H4 les derniers niveaux 50% des meches.Merci Nicolas
J’ai compris maintenant, c’est toujours plus précis et clair avec une image qui illustre ce qu’on a dans la tête ! 😉
Voici le code qui enregistre puis trace les niveaux qui n’ont pas encore étaient franchis par le prix. On limite la quantité de niveaux avec le paramètre “MaxLevels” en tête de code.
// =============================================
// 50% des mèches - niveaux actifs jusqu'au touch
// =============================================
DEFPARAM DrawOnLastBarOnly = true
MaxLevels = 400
maxLevels = MaxLevels
once nLevels = 0
if IsLastBarUpdate then
nLevels = 0
totalBars = BarIndex
// --- Remplissage des arrays sur tout l'historique
for i = totalBars downto 0 do
offset = totalBars-i
bTop = max(open[offset], close[offset])
bBot = min(open[offset], close[offset])
wHigh = high[offset] - bTop
wLow = bBot - low[offset]
// Mèche haute
if wHigh > 0 and nLevels < maxLevels then
$levelVal[nLevels] = bTop + wHigh / 2
$levelBar[nLevels] = barindex[offset]
$levelType[nLevels] = 1
$levelActive[nLevels] = 1
nLevels = nLevels + 1
endif
// Mèche basse
if wLow > 0 and nLevels < maxLevels then
$levelVal[nLevels] = bBot - wLow / 2
$levelBar[nLevels] = barindex[offset]
$levelType[nLevels] = -1
$levelActive[nLevels] = 1
nLevels = nLevels + 1
endif
next
// --- Test : le niveau a-t-il été touché APRÈS sa bougie source ?
for j = 0 to nLevels - 1 do
if $levelActive[j] = 1 then
srcOffset = barindex - $levelBar[j]
lv = $levelVal[j]
lType = $levelType[j]
for k = 1 to srcOffset - 1 do
if lType = 1 then
if high[k] >= lv then
$levelActive[j] = 0
endif
else
if low[k] <= lv then
$levelActive[j] = 0
endif
endif
next
endif
next
// --- Dessin des niveaux encore actifs
for j = 0 to nLevels - 1 do
if $levelActive[j] = 1 then
srcBar = $levelBar[j]
lv = $levelVal[j]
lType = $levelType[j]
if lType = 1 then
DRAWSEGMENT(srcBar, lv, barindex, lv) COLOURED(30, 144, 255, 210) STYLE(Line, 1)
else
DRAWSEGMENT(srcBar, lv, barindex, lv) COLOURED(255, 140, 0, 210) STYLE(Line, 1)
endif
endif
next
endif
RETURN