Bonjour à tous,
J’ai par défaut sur ma plateforme PRT (il apparaît aussi dans la liste de screeners dans certaines vidéos)
le screener ForexTrend1H.
Il semble que le code de ce screener contienne des bugs et des incohérences.
Cependant, il s’exécute normalement.
(variables v1 et v2 identiques, variable lindic non initialisée, …)
De fait, je ne comprends pas l’algorithme.
Peut-on le corriger ou faut-il le mettre à la poubelle ?
Une âme charitable pourrait-elle m’éclairer ?
Merci d’avance
LaLimit=25
p = 25
st = 10
MM = 10
norm = AverageTrueRange[14](close)*400
v2=ExponentialAverage[MM]((MACDline[12,25,9](close)+MACDline[50,100,9](close))*10000/norm)
v1=v2
if (v1>LaLimit and v2>LaLimit) or (lindic[1]<close[1]) then
sens=1
var=high
laref=(high + low)/2
elsif (v1<-LaLimit and v2<-LaLimit) or (lindic[1]>close[1]) then
sens=-1
var=low
laref=(high + low)/2
else
sens=0
lindic=close
endif
if sens <>0 then
if lindic[1]=close[1] and ((v2<v2[1] and sens = -1) or (v2>v2[1] and sens = 1)) then
lindic=laref-(st/10)*sens*AverageTrueRange[14](close)
elsif lindic[1]<>close[1] then
coef=(1+abs(v2)/50)/1000
if ((v2>v2[1] and sens = -1) or (v2<v2[1] and sens = 1)) then
coef=coef/10
else
coef=coef*1.5
endif
lindic=lindic[1]+(p*coef)*(var-lindic[1])
else
lindic=close
endif
endif
if (close>lindic and sens=-1) OR (close<lindic and sens=1) then
lindic=close
endif
if lindic=close then
sens=0
endif
c1 = (close[1] <> lindic[1])
SCREENER[c1] ((close/DClose(1)-1)*100 AS "%VAR")
Bonjour Biturbanipal,
Il n’est pas nécessaire d’initialiser les variables sous PRT. Mais je vois ce que tu veux dire, celle-ci étant testé dans les toutes premières lignes de code alors qu’elle n’a pas de valeur à priori. Elle en prendra une à la première barre testée, dés la ligne 18.
Pour les variables v1=v2, j’avoue je vois pas l’idée non plus dernière cela 🙂 mais en y regardant de plus près cela ne changerait rien au résultat si on en enlevait une des 2.
J’ai aussi ce screener par défaut sur ma plateforme CFD. Le jeter à la poubelle? non je pense pas, mais on peut le corriger pour éviter ces tests qui ne servent à rien. Comme tu le mentionnes déjà, celui-ci fonctionne et le corriger ne changera pas les valeurs retournées non plus.
La ligne 18 ne concerne que le cas où sens = 0.
Sinon, lindic, de même que lindic[1], reste toujours sans valeur ligne 21, et ligne 23.
d’alilleurs, ligne 23: quelle valeur prend le test: true ou false ?
Si le test est true: Ligne 30: lindic[1] n’a toujours pas de valeur !
Pour la variable v1, j’ai l’intuition que le programmeur voulait écrire: v1 = v2[1] et qu’il a oublié de l’utiliser par la suite.
Enfin, si l’on regarde le tri opéré par le screener, on se demande pourquoi le test a lieu sur l’avant-dernier chandelier et pas sur le dernier.
Je crois bien que seul l’auteur de ce code peut comprendre ce qu’il a voulu précisément faire.
Quant-à ce qu’il fait réellement, c’est encore une autre affaire : cela demanderait de savoir comment réagit le proscreener devant des variables sans valeur et des tests qui en contiennent !?!
Le programme s’exécute sans signaler d’erreur, mais impossible (pour moi) d’interpréter le résultat:
Je ne monterais pas dans un avion dont les plans de vol sont buggués !
Merci pour ton aide, Nicolas