Bonjour à tous,
Voici un indicateur qu’il est bien !
Question = Pourquoi ne peut-on pas mettre la variable “L” en decimal ? le système nous jette. Existe t’il une astuce pour contourner ce problème ?
merci de votre apport.
bon week end.
//PRC_Variable Moving Average | indicator
//14.12.2016
//Nicolas @ www.prorealcode.com
//Sharing ProRealTime knowledge
//converted and adapted from Pinescript version
// --- parameters
src=customclose
//l = 6
if barindex>l then
k = 1.0/l
pdm = max((src - src[1]), 0)
mdm = max((src[1] - src), 0)
pdmS = ((1 - k)*(pdmS[1]) + k*pdm)
mdmS = ((1 - k)*(mdmS[1]) + k*mdm)
s = pdmS + mdmS
pdi = pdmS/s
mdi = mdmS/s
pdiS = ((1 - k)*(pdiS[1]) + k*pdi)
mdiS = ((1 - k)*(mdiS[1]) + k*mdi)
d = abs(pdiS - mdiS)
s1 = pdiS + mdiS
iS = ((1 - k)*(iS[1]) + k*d/s1)
hhv = highest[l](iS)
llv = lowest[l](iS)
d1 = hhv - llv
vI = (iS - llv)/d1
vma = (1 - k*vI)*(vma[1]) + k*vI*src
endif
RETURN VMA
Il s’agit des périodes de calcul, l étant ici l’abréviation de “length”. Pourquoi vouloir utiliser des décimales dans le nombre de bougies ? Simple question .. 🙂
Pour ne pas avoir le décalage L parfois brutal quand on passe de 6 à 7, de 7 à 8, etc … afin de peaufiner l’indicateur en l’utilisant comme support ou résistance.
Le problème c’est que cela n’est pas possible, les calculs des indicateurs utilisés dans le code (highest et lowest) utilisent bien entendu des périodes sans décimales. Par ailleurs, on ne pourrait trouver un High contenu entre 2 bougies par exemple.. CQFD 🙂
c est comme le lowest ou highest [negatif] que refuse le systeme.
je pensais a un truc comme 10% 20% etc de la bougie !
Bonsoir supertiti,
Je suis presque nul en codage,mais dans le cas présent,je propose que la valeur 1.0 dans la formule k=1.0/l
soit une variable décimale.Je pense que cela donne le même résultat que si on faisait varier l en décimal,ce qui n’est évidemment pas possible.
Essaie pour voir,et tu m’en diras des nouvelles!!
Bonne soirée.
Bonsoir Beotien
j ai fais ce que tu proposes, en effet cela fonctionne en allant de 1 et moins. Nicolas devrait nous donner son avis pour savoir si cette modification n altere pas l integrite du code.
ps : pas d accents car je tape avec un clavier espagnol et le temps de les trouver !!!
VMA V1
J’aimerai appliquer le principe de la HOLT EMA sur la VMA. c’est à dire colorer l’indicateur VMA en 3 couleurs : vert, blanc, rouge selon la tendance.
condition 1 = vert quand VMA > angle 5° positifs
condition 2 = blanc quand VMA est compris entre 5° positifs et 5° negatifs
condition 3 = rouge quand VMA > angle 5° negatifs
J’ai fais ceci mais cela ne me semble pas satisfaisant car je recherche à faire apparaitre les segments blancs de l’indicateur comme points de retournement éventuels; d’autre part l’indicateur perd de son intérêt car les “marches” disparaissent (les
plats de marches de VMA étant de bons supports ou résistances me semble t’il).
je joins un graphe avec VMA (jaune/bleu) et VMA V1 (vert,blanc,rouge)
// VMA V1
// VMA PRC_Variable Moving Average 14.12.2016
//Nicolas @ www.prorealcode.com Sharing ProRealTime knowledge
//converted and adapted from Pinescript version
src=customclose
if barindex>l then
k = 1.0/l
pdm = max((src - src[1]), 0)
mdm = max((src[1] - src), 0)
pdmS = ((1 - k)*(pdmS[1]) + k*pdm)
mdmS = ((1 - k)*(mdmS[1]) + k*mdm)
s = pdmS + mdmS
pdi = pdmS/s
mdi = mdmS/s
pdiS = ((1 - k)*(pdiS[1]) + k*pdi)
mdiS = ((1 - k)*(mdiS[1]) + k*mdi)
d = abs(pdiS - mdiS)
s1 = pdiS + mdiS
iS = ((1 - k)*(iS[1]) + k*d/s1)
hhv = highest[l](iS)
llv = lowest[l](iS)
d1 = hhv - llv
vI = (iS - llv)/d1
vma = (1 - k*vI)*(vma[1]) + k*vI*src
endif
// l = 6
///////////////////////////////////////////////////////////////
// HOLT EMA V2 slope by Nicolas
price = customclose
if alpha > 1 then
myalpha = 2.0/(alpha+1.0)
else
myalpha = alpha
endif
if gmma > 1 then
mygamma = 2.0/(gmma+1)
else
mygamma = gmma
endif
If barindex = 1 then
value1 = price
K = 0.0
else
value1 = (1-myalpha)*(value1[1] + K[1]) + myalpha*price
K = (1-mygamma)*K[1] + mygamma*(value1 - value1[1])
endif
VMA = value1
slope = atan((value1-(value1[1]+value1[2])/2)/1.5/ticksize)
condition1 = slope >= angle1
condition2 = slope < angle1 and slope > angle2
condition3 = slope <= -1*angle1
//base color = jaune
r=255
g=255
b=0
if condition1 then // vert clair
r=0
g=255
b=0
elsif condition2 then // blanc
r=255
g=255
b=255
elsif condition3 then // rouge
r=255
g=0
b=0
endif
// Variables :
// gmma = 40
// alpha = 20
// angle1 = 5
// angle2 = 1
//////////////////////////////////////////////////////////////
RETURN SRC as " CC " , VMA coloured(r,g,b) as " VMA V1 "
Si quelqu’un peut apporter de l’aide pour résoudre ces problèmes d’escaliers qui disparaissent et de segments blancs absents par conséquence.
Merci, bonne journée et bons trades