4801Participant
Junior
Bonjour à tous,
Ivan Gonzalez que je remercie a écrit le code qui suit et je ne comprends pas les lignes qui suivent. Pouvez vous m’ aider, quelque chose m’ échappe. Merci.
//————————————————-
if trend>0 and smin < smin[1] then La moyenne mobile smin décroit, sa valeur diminue
smin=smin[1] Comment peut on alors avoir : smin=smin[1]
elsif trend<0 and smax > smax[1] then Même chose pour smax qui est croissante, sa valeur augmente
smax=smax[1] Comment peut on alors avoir : smax=smax[1]
//PRC_TrendEnvelopes
//version = 0
//19.06.2024
//Iván González @ http://www.prorealcode.com
//Sharing ProRealTime knowledge
//—–Inputs——————————————————-//
period=21
type=1
colorcandles=1
//—–Moving averages———————————————-//
smax=average[period,type](high)
smin=average[period,type](low)
//—–Trend calculation——————————————–//
once trend=undefined
if close > smax[1] then
trend=1
elsif close < smin[1] then
trend=-1
endif
//—–Trail calculation——————————————–//
once mytrail=undefined
if trend>0 and smin < smin[1] then
smin=smin[1]
elsif trend<0 and smax > smax[1] then
smax=smax[1]
endif
if trend=1 then
mytrail=smin
r=0
g=255
b=0
if trend[1]<>1 then
drawpoint(barindex,mytrail,2)coloured(“blue”)
endif
elsif trend=-1 then
mytrail=smax
r=255
g=0
b=0
if trend[1]<>-1 then
drawpoint(barindex,mytrail,2)coloured(“blue”)
endif
endif
//—–Color Candles————————————————//
//if colorcandles then
//drawcandle(open,high,low,close)coloured(r,g,b)
//endif
return mytrail coloured(r,g,b)style(line,2)
Bonjour,
Je vais vous expliquer les lignes de code qui vous posent des questions afin de vous aider à comprendre la logique derrière elles.
Explication du code
1.Première condition if pour smin :
if trend > 0 and smin < smin[1] then
smin = smin[1]
endif
-
- Cette instruction vérifie si la tendance est positive (
trend > 0) et si la valeur actuelle de smin est inférieure à celle de la période précédente (smin < smin[1]).
- Si ces deux conditions sont vraies,
smin prend la valeur de smin[1], c’est-à-dire la valeur de la période précédente.
- Pourquoi faire cela ? : Ce mécanisme permet de maintenir
smin constant dans des situations de tendance haussière lorsque la moyenne mobile commence à diminuer. Cela empêche smin de prendre des valeurs plus basses, permettant ainsi à la ligne de tendance de rester inchangée dans ce contexte de tendance positive.
2. Deuxième condition elsif pour smax :
elsif trend < 0 and smax > smax[1] then
smax = smax[1]
endif
- Cette instruction vérifie si la tendance est négative (
trend < 0) et si la valeur actuelle de smax est supérieure à celle de la période précédente (smax > smax[1]).
- Si ces deux conditions sont vraies,
smax prend la valeur de smax[1], c’est-à-dire la moyenne mobile de la période précédente.
- Pourquoi faire cela ? : De manière similaire à
smin, cette logique assure que smax ne monte pas dans un contexte de tendance baissière. Ainsi, dans une tendance descendante, si smax commence à augmenter, le code force smax à rester au niveau précédent.
Conclusion
Cette logique est un moyen de “lissage” qui garantit que, dans une tendance spécifique (haussière ou baissière), smin ou smax ne prennent pas des valeurs qui contrediraient la direction de la tendance actuelle.
4801Participant
Junior
Un grand merci à Yvan dont le code fonctionne très bien pour moi sur le Dow Jones, time frame de 4 ou 6 heures.
Je ne connaissais pas cette technique de lissage. Bonne journée à toute la communauté.