Screener avec zigzag échouant 5-10% du temps !

Viewing 15 posts - 1 through 15 (of 16 total)
  • Author
    Posts
  • #145272 quote
    Machin
    Participant
    New

    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]
    
    #145308 quote
    Nicolas
    Keymaster
    Master

    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.

    #145419 quote
    Machin
    Participant
    New

    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.

    #145637 quote
    Nicolas
    Keymaster
    Master

    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")
    #145701 quote
    Machin
    Participant
    New

    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.

    #145706 quote
    Nicolas
    Keymaster
    Master

    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” ?

    #145707 quote
    Machin
    Participant
    New

    J’utilise la version 11.1, ainsi qu’un compte “fin de journée”.

    #145708 quote
    Machin
    Participant
    New

    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.

    Capture-1.png Capture-1.png
    #145714 quote
    Nicolas
    Keymaster
    Master

    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
    NTES-Daily.png NTES-Daily.png
    #145716 quote
    Nicolas
    Keymaster
    Master

    Bien vérifier que l’indicateur est le même que la détection en screener.

    #145717 quote
    Machin
    Participant
    New

    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.

    NTES.png NTES.png
    #145719 quote
    Machin
    Participant
    New
    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
    #145722 quote
    Nicolas
    Keymaster
    Master

    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 ?

    #145724 quote
    Machin
    Participant
    New

    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 !

    #145731 quote
    Nicolas
    Keymaster
    Master

    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]
    Machin thanked this post
Viewing 15 posts - 1 through 15 (of 16 total)
  • You must be logged in to reply to this topic.

Screener avec zigzag échouant 5-10% du temps !


ProScreener : Scanners de Marché & Détection

New Reply
Author
author-avatar
Machin @machin Participant
Summary

This topic contains 15 replies,
has 2 voices, and was last updated by Machin
5 years, 5 months ago.

Topic Details
Forum: ProScreener : Scanners de Marché & Détection
Language: French
Started: 09/24/2020
Status: Active
Attachments: 3 files
Logo Logo
Loading...