Tracer plus haut, plus bas sous conditions

Viewing 7 posts - 1 through 7 (of 7 total)
  • Author
    Posts
  • #223721 quote
    Garex
    Participant
    New

    Bonjour,

    J’aurais aimé avoir un code qui reproduise l’image ci-dessous.
    Un plus haut est tracé lorsque la clôture dépasse le précédent plus haut et en même temps le plus bas est tracé à partir du bas de l’impulsion qui a engendré la cassure du plus haut (et inversement pour la tendance baissière).
    Ce qui se rapproche le plus est le canal de donchian mais celui ci ne garde les valeurs plus haut/bas que sur une certaine période et non sous les conditions que je viens de donner.

    Je ne sais pas par ou commencer pour coder cela.

    Merci d’avance.

    NAS100USD_2023-11-14_17-49-25.png NAS100USD_2023-11-14_17-49-25.png
    #223955 quote
    JC_Bywan
    Moderator
    Master

    Bonjour,

    sur le graphe on voit que parfois, une clôture casse le précédent plus haut, sans que le plus bas soit mis à jour (voir image attachée, cas des flèches rouges par opposition aux cas de flèches vertes).

    Il manque donc dans la description une condition capable de distinguer les cassures de plus haut sans mise à jour du bas de celles avec mise à jour du bas, ce qui pourrait expliquer le manque de réponses des membres du forum jusqu’à maintenant malgré une requête bien formatée et intéressante à coder.

    On peut tenter de deviner la condition manquante :
    – Eliminons d’emblée celle-ci: être adjacent ou pas à une précédente cassure pendant une impulsion ne peut visiblement pas être cette condition (cas dans le graphe de bas pas mis à jour suite à 2 cassures de précédent haut non adjacentes).
    – Un nombre de bougies écoulées depuis la cassure pourrait, il faudrait dire combien, mais cela semble très (trop) arbitraire. On doit pouvoir trouver un critère indépendant du nombre de bougies
    – Je tente en inventant ce critère: avoir eu une clôture sous l’open de la bougie ayant eu une clôture qui a cassé un précédent plus haut, comme étant l’élément autorisant une prochaine mise à jour plus haute du plus bas au cas où elle interviendrait avant une inversion par cassure du plus bas. Cela aurait du sens, ce serait le départ d’une autre impulsion à la hausse par rapport à la bougie de cassure de plus haut précédente. Voici ce que ça donnerait, à tester :

    // PRC_Imbalances indicator
    // 20.11.2023
    // JC_Bywan @ www.prorealcode.com
    // Sharing ProRealTime knowledge
    
    once bandebas=low
    once bandehaut=high
    once majbasok=0
    once majhautok=0
    
    precbas= lowest[barindex-barrefhaut+1](low)
    prechaut= highest[barindex-barrefbas+1](high)
    
    if close<openrefbas then
    majbasok=1
    endif
    if close>openrefhaut then
    majhautok=1
    endif
    
    if close>bandehaut then
    bandehaut=high
    barrefhaut=barindex
    openrefbas=open
    if majbasok then
    bandebas=precbas
    endif
    majbasok=0
    endif
    if close<bandebas then
    bandebas=low
    barrefbas=barindex
    openrefhaut=open
    if majhautok then
    bandehaut=prechaut
    endif
    majhautok=0
    endif
    
    return bandehaut as "bande haute", bandebas as "bande basse"

     

    Si tu as un autre critère que celui créé pour décrire ce qui manquait, n’hésite pas à le dire et on verra comment modifier le code en conséquence.

    Garex thanked this post
    PRC_req_similiDonchian.png PRC_req_similiDonchian.png
    #223958 quote
    Garex
    Participant
    New

    Bonjour et merci de la réponse.

    En effet je n’ai pas accès au code original mais il y a bien une condition manquante. Votre proposition ne donne pas exactement le résultat de l’autre indicateur mais l’esprit est parfaitement respecté.

    Encore merci, je vais voir si il y a des améliorations possibles que je posterai ici au cas où.

    #223960 quote
    JC_Bywan
    Moderator
    Master

    On peut aussi tester avec la mèche plutôt que la clôture qui battrait l’open de référence, via ces petites modifs pour les if de majbasok et majhautok :

    // PRC_Imbalances indicator
    // 20.11.2023
    // JC_Bywan @ www.prorealcode.com
    // Sharing ProRealTime knowledge
    
    once bandebas=low
    once bandehaut=high
    once majbasok=0
    once majhautok=0
    
    precbas= lowest[barindex-barrefhaut+1](low)
    prechaut= highest[barindex-barrefbas+1](high)
    
    if low<openrefbas then//if close<openrefbas then
    majbasok=1
    endif
    if high>openrefhaut then//if close>openrefhaut then
    majhautok=1
    endif
    
    if close>bandehaut then
    bandehaut=high
    barrefhaut=barindex
    openrefbas=open
    if majbasok then
    bandebas=precbas
    endif
    majbasok=0
    endif
    if close<bandebas then
    bandebas=low
    barrefbas=barindex
    openrefhaut=open
    if majhautok then
    bandehaut=prechaut
    endif
    majhautok=0
    endif
    
    return bandehaut as "bande haute", bandebas as "bande basse"

     

    Et si ça ne correspond toujours pas, on pourra aussi tester en prenant low (resp high) plutôt que l’open en référence pour openrefbas (resp openrefhaut)

    #223971 quote
    Garex
    Participant
    New

    Cette dernière version respecte moins bien le principe d’obtenir un bornage, on voit que lors d’un up la borne basse se met à jour alors qu’elle devrait rester là ou elle était comme dans la V1

    indicateur-PRTv2.png indicateur-PRTv2.png indicateur-PRT-.png indicateur-PRT-.png
    #223975 quote
    Garex
    Participant
    New

    J’ai l’impression que c’est mieux avec
    openrefbas=low
    openrefhaut=High

    #223992 quote
    Garex
    Participant
    New

    Je viens d’ajouter une condition qui permet de m’approcher encore un peu plus de l’indicateur original :

    if high>bandehaut and close > open [1] then
    if lowonce bandebas=low
    once bandehaut=high
    once majbasok=0
    once majhautok=0

    precbas= lowest[barindex-barrefhaut+1](low)
    prechaut= highest[barindex-barrefbas+1](high)

    if close<openrefbas then
    majbasok=1
    endif
    if close>openrefhaut then
    majhautok=1
    endif

    if high>bandehaut and close > open [1] then
    bandehaut=high
    barrefhaut=barindex
    openrefbas=low
    if majbasok then
    bandebas=precbas
    endif
    majbasok=0
    endif
    if low<bandebas and close < open [1]then
    bandebas=low
    barrefbas=barindex
    openrefhaut=High
    if majhautok then
    bandehaut=prechaut
    endif
    majhautok=0
    endif

    return bandehaut as "bande haute", bandebas as "bande basse"

    Autre remarque, l’indicateur original met à jour les bas comme indiqué avec la droite en pointillé ce qui semble logique puisque c’est le bas à l’origine de la cassure, met je ne sais pas comment formuler cette condition.

    indicateur-PRT-ideal.png indicateur-PRT-ideal.png
Viewing 7 posts - 1 through 7 (of 7 total)
  • You must be logged in to reply to this topic.

Tracer plus haut, plus bas sous conditions


ProBuilder : Indicateurs & Outils Personnalisés

New Reply
Author
author-avatar
Garex @garex Participant
Summary

This topic contains 6 replies,
has 2 voices, and was last updated by Garex
2 years, 3 months ago.

Topic Details
Forum: ProBuilder : Indicateurs & Outils Personnalisés
Language: French
Started: 11/15/2023
Status: Active
Attachments: 5 files
Logo Logo
Loading...