Bonjour,
J’ai un souci avec le code d’un indicateur sur un graphique renko et je n’ai pas trouvé de sujets existants traitant de cette question. Je souhaiterais tracer une ligne qui suivrait le mouvement des briques seulement si l’écart entre cette ligne et les briques dépasse une certaine valeur. Un schéma vaut mieux qu’un long discours, alors j’ai tracé à la main ce que j’aimerais obtenir dans l’image jointe (voir première image).
Dans cet exemple, la taille des briques est de 10 points. La ligne est initialement placée 2 briques sous la première brique (20 points en dessous donc). Quand une nouvelle brique à la hausse apparait, la ligne monte d’une taille de brique pour conserver un écart maximum de 2 briques. Lorsque les premières briques rouges apparaissent, la ligne reste au même niveau car l’écart entre renko et la ligne est inférieur à 2 briques. Il faut attendre qu’il y ait une brique rouge 4 niveaux en dessous de la ligne pour que celle-ci décale à la baisse d’une taille de brique et ainsi revenir à un écart de 2 briques. Etc.
J’ai codé deux versions de l’indicateur. La première version est basique et se base sur la clôture (voir deuxième image).
DEFPARAM DRAWONLASTBARONLY = true
delta = boxsize*Offset
once LT = close - delta
while close-LT>delta do
LT=LT+boxsize
wend
while close-LT<-delta do
LT=LT-boxsize
wend
return LT as "ligne tendance"
La seconde tentative est plus complexe et se base sur le code pour recréer les briques renko à partir du cours “normal” de l’actif (voir 3e image).
DEFPARAM DRAWONLASTBARONLY = true
once renkoMax = ROUND(close / boxSize) * boxSize
once renkoMin = renkoMax - boxSize
once renkoline = renkomax
IF close >= renkoMax + boxSize THEN
WHILE close >= renkoMax + boxSize
renkoMax = renkoMax + boxSize
renkoMin = renkoMin + boxSize
WEND
ELSIF close <= renkoMin - boxSize THEN
WHILE close <= renkoMin - boxSize
renkoMax = renkoMax - boxSize
renkoMin = renkoMin - boxSize
WEND
ENDIF
//---renkoline
if renkomax > renkomax[1] then
renkoline = renkomax
elsif renkomax < renkomax[1] then
renkoline = renkomin
endif
delta = boxsize*Offset
once LT = renkoline - delta
while renkoline-LT>delta do
LT=LT+boxsize
wend
while renkoline-LT<-delta do
LT=LT-boxsize
wend
return LT as "ligne tendance"
Aucune de ces deux versions de code ne permet d’obtenir la bonne ligne. Je ne comprends pas ce qui ne va pas. Est-ce que l’un de vous aurait une idée ?
Merci par avance pour votre aide 🙂
Si j’ai bien compris, il suffit de garder la ligne éloigné de X points de la bougie actuelle, selon sa direction :
size = 20
if close>open then
rline = max(rline,open-size*pointsize)
else
rline = min(rline,open+size*pointsize)
endif
return rline
Mille mercis Nicolas 🙏 C’est exactement ça !
Par contre il y a une chose que je ne comprends pas. Lorsque je mets l’indicateur sur un graphique future ça fonctionne très bien, mais si je le mets sur un graphique CFD, il y a un décalage (voir image jointe). Saurais-tu ce qui pourrait expliquer cette différence et comment faire en sorte pour que ça fonctionne bien en CFD ?
La construction des bougies Renko a été complètement refaite en v11 pour permettre une comptabilité parfaite avec les codes persos, je ne suis pas étonné qu’il y ai une différence en v10.3 avec un indicateur personnalisé appliqué dessus.
Ah OK, merci pour cette info précieuse. Ça va m’éviter de chercher pendant des heures une solution (inexistante) à ce problème.
Du coup j’ai testé mes deux codes sur un graphique futures et les deux fonctionnent bien. Le problème venait donc de la plateforme en elle-même, pas du code.
Encore merci pour ton aide toujours aussi efficace 👍