Il y a plusieurs façons de faire, disons que celle-ci n’est ni la plus élégante ni la plus robuste (en cas d’ut exotiques dont la clôture ne tomberait pas sur les 4 horaires précis évoqués), mais c’est la plus simple à comprendre en version v10.3 quand on débute
Il me semble que pour les lignes supplémentaires aux extrêmes, les formules données en 3) et 4) ne correspondent pas aux segments tracés sur ton graphique. J’ai laissé les lignes 20 et 21 avec des // pour que les formules du texte y soient, et j’ai mis à la place les lignes 22 et 23 qui semblent mieux représenter la position des segments sur ton graphique. A toi de mettre des // aux lignes 22 et 23 et de les enlever aux lignes 20 et 21 si ce n’était pas le cas.
Pour avoir des pointillés, soit il faut la v11 pour styler les drawsegment, soit il faut compliquer un peu le code en v10.3 pour garder la main sur le style via des variables retournées dans la ligne return (d’où mon commentaire sur les façons de faire au début)
start1 = 083000
end1 = 123000
start2 = 153000
end2 = 220000
if opentime=start1 then
bar1=barindex
endif
if opentime=end1 then
hi=highest[barindex-bar1](high)
lo=lowest[barindex-bar1](low)
DRAWSEGMENT(barindex, hi, bar1, hi) coloured(255,215,0)
DRAWSEGMENT(barindex, lo, bar1, lo) coloured(255,215,0)
endif
if opentime>=start2 and opentime<end2 then
DRAWSEGMENT(barindex, hi, barindex[1], hi) coloured(99,184,255)
DRAWSEGMENT(barindex, lo, barindex[1], lo) coloured(255,131,250)
mid=(hi+lo)/2
//hi2=hi+mid
//lo2=lo-mid
hi2=hi+(hi-mid)
lo2=lo-(mid-lo)
DRAWSEGMENT(barindex, hi2, barindex[1], hi2) coloured(176,226,255)
DRAWSEGMENT(barindex, mid, barindex[1], mid) coloured(250,250,250)
DRAWSEGMENT(barindex, lo2, barindex[1], lo2) coloured(255,187,255)
endif
return