Bonsoir tout le monde, voici un code qui me pose problème depuis un moment.
En outre le screener renvoie des stocks avec une variable “Structure” étant égale à 0, or il devrait renvoyé (comme il le fait 90% du temps) des stocks ayant une variable “structure” égale à 1. Par ailleurs l’indicateur ayant le même code que le screener détermine la variable “structure” comme étant nulle, c’est troublant.
Vous pouvez retrouver le code ci-dessous, celui-ci à pour but de rechercher des actifs ayant des plus bas croissants (en l’occurrence trois plus bas croissants).
Merci pour votre aide 🙂
ZZ=ZigZag[3](low)
//définition bottom
if zz[2]>zz[1] and zz>zz[1] then
Bottom=1
else
Bottom=0
endif
//Coordonnées du premier low :
If bottom=1 then
premierbot=low[1]
else
endif
//Coordonnées du deuxieme low :
boucle1=1
if bottom=1 then
while boucle1<50 do
boucle1=boucle1+1
if bottom[boucle1]=1 then
SecondBot=low[boucle1+1]
break
else
Secondbot=0
endif
wend
endif
//Coordonnées du troisième low :
boucle2=1
if bottom=1 then
while boucle2<50 do
boucle2=boucle2+1
if bottom[boucle2+boucle1]=1 then
TroisiemeBot=low[boucle2+1+boucle1]
break
else
TroisiemeBot=0
endif
wend
endif
//Suppression cassure de plus bas (permet de limiter les erreurs liées aux données actualisées en fin de journée)
Minimum=lowest[10] (low)
if low>minimum then
SupMini=1
else
SupMini=0
endif
//Variable finale
If SupMini=1 then
If Premierbot>Secondbot and Secondbot>Troisiemebot then
Structure=1
else
Structure=0
endif
elsif SupMini=0 then
Structure=0
endif
Screener[structure=1]
Je n’ai pas testé le screener, mais cela ressemble fort à une désynchronisation des résultats dut à un historique différent.
Puisque ton code utilise le zigzag qui commence à se calculer dés la première barre de l’historique pour trouver des points hauts et des points, si l’historique est différent entre ProScreener et le graphique de l’instrument que tu observes, alors il peut y avoir en effet des différences.
Pour mémoire, ProScreener se limite à 254 unités. Essaie d’afficher uniquement cette quantité de bougies sur le graphique pour voir si des différences continuent de se produire.
Bonjour Nicolas,
L’affichage de cette quantité de bougies sur le graphique n’a rien donné, les disparités sont toujours présentes. Peut-on incrémenter la quantité de bougies sur laquelle se base le screener ?
Je vous remercie.
L’idéal pour comprendre la différence entre l’indicateur Zigzag calculé par le screener et celui affiché sur ton graphique, c’est ajouté la valeur du zigzag dans la colonne de critère de tri :
Screener[structure=1](ZZ as "valeur zigzag")
Malheureusement il s’avère que le ZigZag calculé par le graphique et le screener sont semblables.
J’ai par ailleurs vérifié cette donnée pour plusieurs bougies antécédentes au signal renvoyé par le screener.
Tout fonctionne correctement pour moi, j’ai testé sur la liste NASDAQ en daily sur un compte IG sponso PRT.
Quelle version de PRT et courtier utilises-tu stp ? S’agit-il d’un compte “fin de journée” ?
J’utilise la version 11.1, ainsi qu’un compte “fin de journée”.
Dans ce cas c’est sûrement lié à mon type de compte bien que cela me semble bizarre. En outre comme vous pouvez le remarquer dans ma capture d’écran l’indicateur est nul depuis mai, ce n’est pas lié aux données d’aujourd’hui.
NTES est pour moi conforme, en v11 (voir image), fin de journée, donc résultat de la veille. J’utilise le code du screener transformé en indicateur :
ZZ=ZigZag[3](low)
//définition bottom
if zz[2]>zz[1] and zz>zz[1] then
Bottom=1
else
Bottom=0
endif
//Coordonnées du premier low :
If bottom=1 then
premierbot=low[1]
else
endif
//Coordonnées du deuxieme low :
boucle1=1
if bottom=1 then
while boucle1<50 do
boucle1=boucle1+1
if bottom[boucle1]=1 then
SecondBot=low[boucle1+1]
break
else
Secondbot=0
endif
wend
endif
//Coordonnées du troisième low :
boucle2=1
if bottom=1 then
while boucle2<50 do
boucle2=boucle2+1
if bottom[boucle2+boucle1]=1 then
TroisiemeBot=low[boucle2+1+boucle1]
break
else
TroisiemeBot=0
endif
wend
endif
//Suppression cassure de plus bas (permet de limiter les erreurs liées aux données actualisées en fin de journée)
Minimum=lowest[10] (low)
if low>minimum then
SupMini=1
else
SupMini=0
endif
//Variable finale
If SupMini=1 then
If Premierbot>Secondbot and Secondbot>Troisiemebot then
Structure=1
else
Structure=0
endif
elsif SupMini=0 then
Structure=0
endif
return structure
Bien vérifier que l’indicateur est le même que la détection en screener.
Après avoir copié collé à deux reprises le code que vous m’avez transmis il s’avère que je n’obtiens absolument pas les mêmes résultats… C’est incompréhensible.
ZZ=ZigZag[3](low)
//définition bottom
if zz[2]>zz[1] and zz>zz[1] then
Bottom=1
else
Bottom=0
endif
//Coordonnées du premier low :
If bottom=1 then
premierbot=low[1]
else
endif
//Coordonnées du deuxieme low :
boucle1=1
if bottom=1 then
while boucle1<50 do
boucle1=boucle1+1
if bottom[boucle1]=1 then
SecondBot=low[boucle1+1]
break
else
Secondbot=0
endif
wend
endif
//Coordonnées du troisième low :
boucle2=1
if bottom=1 then
while boucle2<50 do
boucle2=boucle2+1
if bottom[boucle2+boucle1]=1 then
TroisiemeBot=low[boucle2+1+boucle1]
break
else
TroisiemeBot=0
endif
wend
endif
//Suppression cassure de plus bas (permet de limiter les erreurs liées aux données actualisées en fin de journée)
Minimum=lowest[10] (low)
if low>minimum then
SupMini=1
else
SupMini=0
endif
//Variable finale
If SupMini=1 then
If Premierbot>Secondbot and Secondbot>Troisiemebot then
Structure=1
else
Structure=0
endif
elsif SupMini=0 then
Structure=0
endif
return structure
Je comprends pas pourquoi non plus ❓
Je vais refaire un code plus simple. Si j’ai bien compris, il s’agit de trouver 3 points bas successifs de plus en plus haut ?
C’est troublant … Et ce problème revient pour plusieurs autres programmes.
C’est exactement le but recherché. C’est très appréciable merci !
bien compris, ci-dessous les codes à tester pour trouver la structure de 3 point bas de plus en plus haut successifs :
ZZ=ZigZag[3](low)
//définition bottom
if zz[2]>zz[1] and zz>zz[1] then
if zz>lastzz then
count=count+1
else
count=0
endif
lastzz=zz
endif
structure = count = 3
return structure
ZZ=ZigZag[3](low)
//définition bottom
if zz[2]>zz[1] and zz>zz[1] then
if zz>lastzz then
count=count+1
else
count=0
endif
lastzz=zz
endif
structure = count = 3
screener[structure]