// Original Script > @DonovanWall
// Adapted Version > @guikroth
//////////////////////////////////////////////////////////////////////////
// Settings for 5min chart, BTCUSDC. For Other coin, change the parameters
//////////////////////////////////////////////////////////////////////////
// Color variables
downColorR = 255
downColorG = 69
downColorB = 0
upColorR = 50
upColorG = 205
upColorB = 50
midColorR = 0
midColorG = 191
midColorB = 255
// Source
src = customclose
// Sampling Period
// Settings for 5min chart, BTCUSDC. For Other coin, change the paremeters
// per = defval=100, minval=1, "Sampling Period"
// Range Multiplier
// mult = defval=3.0, minval=0.1, "Range Multiplier"
// Smooth Average Range
wper = per*2 -1
avrng = exponentialaverage[per](abs(src-src[1]))
smrng = mult * exponentialaverage[wper](avrng)
// Range Filter
rngfilt = src
If src > rngfilt[1] then
If rngfilt[1] > src-smrng then
rngfilt = rngfilt[1]
Else
rngfilt = src-smrng
endif
elsif rngfilt[1] < src+smrng then
rngfilt = rngfilt[1]
else
rngfilt = src+smrng
endif
filt = rngfilt
// Filter Direction
upward = 0
If filt > filt[1] then
upward = upward[1]+1
elsif filt < filt[1] then
upward = 0
else
upward = upward[1]
endif
downward = 0
If filt < filt[1] then
downward = downward[1]+1
elsif filt > filt[1] then
downward = 0
else
downward = downward[1]
endif
// Target Bands
hband = filt + smrng
lband = filt - smrng
// Colors
If upward > 0 then
filtcolorR = upColorR
filtcolorG = upColorG
filtcolorB = upColorB
elsif downward > 0 then
filtcolorR = downColorR
filtcolorG = downColorG
filtcolorB = downColorB
else
filtcolorR = midColorR
filtcolorG = midColorG
filtcolorB = midColorB
endif
if src > filt and src > src[1] and upward > 0 then
barcolorR = upColorR
barcolorG = upColorG
barcolorB = upColorB
elsif src > filt and src < src[1] and upward > 0 then
barcolorR = upColorR
barcolorG = upColorG
barcolorB = upColorB
elsif src < filt and src < src[1] and downward > 0 then
barcolorR = downColorR
barcolorG = downColorG
barcolorB = downColorB
elsif src < filt and src > src[1] and downward > 0 then
barcolorR = downColorR
barcolorG = downColorG
barcolorB = downColorB
else
barcolorR = midColorR
barcolorG = midColorG
barcolorB = midColorB
endif
colorbetween(hband,filt,upColorR,upColorG,upColorB,30)
colorbetween(lband,filt,downColorR,downColorG,downColorB,30)
// Break Outs
longCond = (src > filt and src > src[1] and upward > 0) or (src > filt and src < src[1] and upward > 0)
shortCond = (src < filt and src < src[1] and downward > 0) or (src < filt and src > src[1] and downward > 0)
CondIni = 0
If longCond then
CondIni = 1
elsif shortCond then
CondIni = -1
else
CondIni = CondIni[1]
endif
longCondition = longCond and CondIni[1] = -1
shortCondition = shortCond and CondIni[1] = 1
//Alerts
If longCondition then
Drawarrowup(barindex,low-AverageTrueRange[14](close)) coloured("green",255)
endif
If shortCondition then
Drawarrowdown(barindex,high+AverageTrueRange[14](close)) coloured("red",255)
endif
Return filt style(line,4) coloured(barcolorR,barcolorG,barcolorB,255) as "Range Filter", hband style(line,2) coloured(upColorR,upColorG,upColorB,100) as "High Target", lband style(line,2) coloured(downColorR,downColorG,downColorB,100) as "Low Target"
Share this
Bonjour, j’ai une demande : comment modifier le code pour que lorsque les cours sont dans la zone verte ou rouge; celles-ci changent de couleur : par exemple la zone verte soit modifiée en bleue ou la zone rouge en orange par exemple ? Merci.
Bonjour, la coloration des bandes se fait ligne 111 et 112 à l’aide des instructions colorbetween. Il suffit de mettre ces deux instructions entre des conditions (IF THEN ELSE END) en fonction de ce que l’on veut exactement et de changer les couleurs appliquée en fonction des conditions, sachant que la ligne du milieu est filt, le haut hband, le bas lband. Tu peux ne changer que la transparence en fonctions des conditions désirée (ici elle st à 30). Voir : https://www.prorealcode.com/documentation/colorbetween/
Bonjour, j’ai fait comme ceci mais le résultat n’est pas concluant pour l’intensité de la couleur de la zone du haut ne change pas. Une idée du problème SVP ?
if close > filt then
colorbetween(hband,filt,upColorR,upColorG,upColorB,40)
endif
if close < filt then
colorbetween(hband,filt,upColorR,upColorG,upColorB,20)
endif
if close < filt then
colorbetween(lband,filt,downColorR,downColorG,downColorB,40)
endif
if close > filt then
colorbetween(lband,filt,downColorR,downColorG,downColorB,20)
endif
Il faut rassembler les instructions pour éviter de faire des tests redondant qui ralentissent inutilement l’indicateur…
if close > filt then
colorbetween(hband,filt,upColorR,upColorG,upColorB,60)
colorbetween(lband,filt,downColorR,downColorG,downColorB,10)
endif
if close < filt then
colorbetween(hband,filt,upColorR,upColorG,upColorB,10)
colorbetween(lband,filt,downColorR,downColorG,downColorB,60)
endif