Test continu d'une condition pour colorier le graphique

Viewing 15 posts - 1 through 15 (of 17 total)
  • Author
    Posts
  • #103835 quote
    jeanguy
    Participant
    Senior

    Bonjour

    J’aimerai écrire le code suivant :

    “Tant que les clôtures sont au dessus de la MM200 et que sur une période de X bougies il n’y a pas plus de X clôture ou X ouverture sous cette MM200 – l’indicateur s’affiche en fond vert”  et inversement

    Je pense que c’est avec la fonction SUMMATION mais je n’y arrive pas :

    Indicateur = 0

    MM1 = exponentialaverage[200]//TENDANCE DE FOND
    MM2 = exponentialaverage[20]
    MM3 = exponentialaverage[7]

    IF Close>MM1 and MM2>MM1 and MM3>MM1 and summation[32](Close<MM1 or Open<MM1)<32 THEN
    Backgroundcolor(0,255,0,80)
    ENDIF

    IF Close<MM1 and MM2<MM1 and MM3<MM1 and summation[32](Close>MM1 or Open>MM1)<32 THEN
    Backgroundcolor(255,0,0,80)
    ENDIF

    RETURN indicateur

    Pouvez-vous m’aider ?

    Merci

    #103839 quote
    jeanguy
    Participant
    Senior

    Bonjour J’ai presque réussi comme ceci mais j’aimerai que les consolidations apparaissent également en tendance BAISSIERE ce qui n’est pas le cas.

    Indicateur = 0
    
    MM1 = exponentialaverage[200]//TENDANCE DE FOND
    MM2 = exponentialaverage[20]
    MM3 = exponentialaverage[7]
    
    
    //TENDANCE DE FOND
    IF Close>MM1 THEN
    Backgroundcolor(0,255,0,80)
    ELSIF Close<MM1 THEN
    Backgroundcolor(255,0,0,80)
    ENDIF
    
    //CONSOLIDATION HAUSSIERE
    IF Close>MM1 and MM3<MM2 THEN
    Backgroundcolor(0,255,0,160)
    ENDIF
    
    //CONSOLIDATION BAISSIERE
    IF Close<MM1 and MM3>MM2 THEN
    Backgroundcolor(0,255,0,160)
    ENDIF
    
    //LISSAGE
    IF summation[32](close>MM1 or open>MM1)<31 THEN
    Backgroundcolor(255,0,0,80)
    ENDIF
    
    RETURN indicateur

    Avez-vous une idée ?

    Logiquement la partie entre les 2 lignes noires cad (MM7>MM20) lorsque Close<MM200 devrait apparaître en rouge foncé.

    DXMXXXX-15-minutes.png DXMXXXX-15-minutes.png
    #103892 quote
    Nicolas
    Keymaster
    Master

    Le code est lu de haut en bas. Tu ne veux afficher qu’une seule couleur, mais certaines conditions peuvent se chevaucher, d’ou le problème.

    Le mieux étant de ne colorier qu’une seule fois le graphique en jouant simplement avec des variables pour le RGB et l’alpha:

    Indicateur = 0
    
    MM1 = exponentialaverage[200]//TENDANCE DE FOND
    MM2 = exponentialaverage[20]
    MM3 = exponentialaverage[7]
    
    
    //TENDANCE DE FOND
    IF Close>MM1 THEN
    r=0
    g=255
    b=0
    alpha=80
    endif
    IF Close<MM1 THEN
    r=255
    g=0
    b=0
    alpha=80
    Endif
    if (Close>MM1 and MM3<MM2) OR (Close<MM1 and MM3>MM2) then  //CONSOLIDATION HAUSSIERE & BAISSIERE
    r=0
    g=0
    b=255
    alpha=160
    ENDIF
    
    //LISSAGE
    IF summation[32](close>MM1 or open>MM1)<31 THEN
    r=255
    g=50
    b=0
    alpha=80
    ENDIF
    
    Backgroundcolor(r,g,b,alpha)
    
    RETURN indicateur

    J’ai volontairement mis les consolidations en bleu pour vérifier.

    Concernant la partie “lissage”, je n’ai pas compris et rien changé.

    consolidation-tendances.png consolidation-tendances.png
    #103912 quote
    jeanguy
    Participant
    Senior

    Merci Nicolas. Le lissage je souhaitai m’en servir pour éviter les changement de couleur brutaux.

    Par exemple : Je suis en Tendance baissière, si ne serait-ce que 2 ou trois bougies passent au dessus de ma MM1, la couleur va devenir “verte” alors que je souhaite que la couleur reste “rouge” tant qu’il n’y a pas 30 ou 32 bougies de corrections

    Je te joins un autre code pour lequel je suis bloqué (Peut-être cela servira pour les autres)

    Dans celui-ci j’aimerai définir 4 tendances grâce à ma MM1 :

    Tendance haussière FORTE => VERT FONCE

    Tendance haussière FAIBLE => VERT CLAIR

    Tendance baissière FORTE => ROUGE FONCE

    Tendance baissière FAIBLE => ROUGE CLAIR

    Et idéalement dans tous les cas je souhaiterai faire apparaître les conso en => BLEU (cad quand les MM2 et 3 les courtes sont en contre tendance)

    Et le top du top avec cette notion de lissage.

    J’aimerai en faire ma base de travail pour la suite

    Indicateur = 0
    
    //CHOIX DE LA MM DE TENDANCE
    MM1 = exponentialaverage[200](close)
    
    //CHOIX DES MM COURTES DE CONSO
    MM2 = exponentialaverage[20](close)
    MM3 = exponentialaverage[7](close)
    
    //REGLAGE DE LA PENTE
    PenteMM1 = MM1-MM1[3]
    X = 0.00004
    MM1Forte = PenteMM1>X or PenteMM1<-X
    MM1Faible = PenteMM1<X or PenteMM1>-X
    
    //LISSAGE
    A2 = 4//Durée d'observations
    B2 = 3//Bougies correctives
    
    IF summation[A2](MM1Faible)<B2 THEN//PENTE FAIBLE
    IF Close>MM1 THEN
    r=0
    g=255
    b=0
    alpha=80//VERT CLAIR
    ELSIF Close<MM1 THEN
    r=255
    g=0
    b=255
    alpha=80//ROUGE CLAIR
    ENDIF
    ENDIF
    
    IF summation[A2](MM1Forte)<B2 THEN//PENTE FORTE
    IF Close>MM1 THEN
    r=0
    g=255
    b=0
    alpha=160//VERT FONCE
    ELSIF Close<MM1 THEN
    r=255
    g=0
    b=0
    alpha=160//ROUGE FONCE
    ENDIF
    ENDIF
    
    //CONSOLIDATION
    if (Close>MM1 and MM3<MM2) OR (Close<MM1 and MM3>MM2) then  //CONSOLIDATION HAUSSIERE & BAISSIERE
    r=0
    g=0
    b=255
    alpha=160//BLEU
    ENDIF
    
    Backgroundcolor(r,g,b,alpha)
    
    RETURN indicateur

    J’ai essayé de te mâcher le travail comme j’ai pu. JE N’Y ARRIVE PAS MERCI DE TON AIDE PRECIEUSE !

    #103937 quote
    Nicolas
    Keymaster
    Master

    Bon, si j’ai bien compris l’ensemble, j’ai pas mal revu toute la logique. Aussi changé les couleurs pour les pentes faibles (rose clair et vert pale) pour mieux comprendre. Il te reste à trouver l’oscillateur qui va bien pour trouver le timing d’entrée 🙂

    Indicateur = 1
    
    //CHOIX DE LA MM DE TENDANCE
    MM1 = exponentialaverage[200](close)
    
    //CHOIX DES MM COURTES DE CONSO
    MM2 = exponentialaverage[20](close)
    MM3 = exponentialaverage[7](close)
    
    //REGLAGE DE LA PENTE
    PenteMM1 = abs(MM1-MM1[3])
    X = 4 //en points/pips
    MM1Forte = PenteMM1>X*ticksize 
    MM1Faible = PenteMM1<X*ticksize 
    
    //LISSAGE
    A2 = 4//Durée d'observations
    B2 = 3//Bougies correctives
    
    weak = summation[A2](MM1Faible)>=B2
    strong = summation[A2](MM1Forte)>=B2 
    
    IF weak THEN//PENTE FAIBLE
    IF Close>MM1 THEN
    r=152
    g=251
    b=152
    alpha=255//VERT PALE
    ELSIF Close<MM1 THEN
    r=255
    g=182
    b=193
    alpha=255//ROSE CLAIR
    ENDIF
    ENDIF
    
    IF strong then //PENTE FORTE
    IF Close>MM1 THEN
    r=0
    g=255
    b=0
    alpha=255//VERT FONCE
    ELSIF Close<MM1 THEN
    r=255
    g=0
    b=0
    alpha=255//ROUGE FONCE
    ENDIF
    ENDIF
    
    //CONSOLIDATION
    if (Close>MM1 and MM3<MM2) OR (Close<MM1 and MM3>MM2) then  //CONSOLIDATION HAUSSIERE & BAISSIERE
    r=0
    g=0
    b=255
    alpha=160//BLEU
    ENDIF
    
    Backgroundcolor(r,g,b,alpha)
    
    RETURN indicateur
    signaux-trading-indicateurs-tendance.png signaux-trading-indicateurs-tendance.png
    #103979 quote
    jeanguy
    Participant
    Senior

    Ce n’est pas exactement ça pour ce qui est du lissage.

    Pour la pente, les couleurs parfait.

    Regarde ces zones (Nous sommes en PENTE FAIBLE et les BOUGIES passent alternativement sous et sur la MM1).

    J’aimerai isoler ces zones :

    • soit l’indicateur reste dans la tendance précédente (Ici ROUGE) ce qui m’indiquera que même si les cours passent au dessus de la MM1, la tendance inverse n’est pas encore établie
    • soit l’indicateur affiche une autre couleur, ce qui m’indiquera que nous sommes en zone “batarde” ou les cours n’ont pas choisis de direction claire

    A la réflexion, je préfère une autre couleur.

    Je tatillonne car j’aimerai coder des signaux différents pour les 6 ZONES (Les 6 Zones sont = Les 4 pentes, Les conso, La zone batarde que je viens de te définir)

    Merci Nicolas pour ton travail.

    DXMXXXX-15-minutes962.png DXMXXXX-15-minutes962.png
    #104022 quote
    jeanguy
    Participant
    Senior

    Nicolas, en fait je pense qu’il faut juste réécrire comme ceci :

    “Sur les 96 dernières bougies tant que il n’y a pas plus de 10 bougies au-dessus de la MM1 ET 10 bougies au dessous de la MM1″

    ALORS – Tendance établie :

    Cas 1 : Pente Forte Haussière (ROUGE FONCE)

    Cas 2 : Pente Faible Haussière (ROUGE CLAIR)

    Cas 3 : Pente Forte Baissière (VERT FONCE)

    Cas 4 : Pente Faible Baissière (VERT CLAIR)

    Cas 5 : Dans les 4 cas ci-dessus afficher les zones de conso (GRIS)

    SINON – Range : Cela signifie “qu’il y a plus de 10 bougies au-dessus de la MM1 ET plus de 10 bougies au dessous de la MM1 ”

    Cas 6 : Pente Faible ET Zone batarde (BLEU)

    (J’aimerai pouvoir par ailleurs changer la durée d’observation de la zone à ma guise 96/10 contre 8/2 ou 50/20…)

    Peux-tu ajuster le code ?

    J’essaye mais je n’y arrive pas !

    #106142 quote
    jeanguy
    Participant
    Senior

    Bon j’ai avancé… je remarque que la fonction summation (ce que j’appelais le lissage) n’apporte pas grand chose. Certes elle permet de ne pas changer la tendance à la moindre correction (ce que je souhaitais) mais en échange elle retarde l’entrée en tendance (logique !).

    Dans l’immédiat j’ai donc remplacé la summation grâce à la MM2 ce qui évite les changement au moindre franchissement de MM1 par les cours. Cela simplifie aussi le code. Ce que je cherche maintenant à faire c’est isoler les Zones de Range pour que l’indicateur se mette en GRIS (Mon cas 6)

    J’ai lu les posts sur la définition des ranges – au début ça va mais après … je manque clairement de compétences.

    Le schéma montre bien ou je veux en venir. Pouvez-vous m’aider ?

    Indicateur = 1
     
    //CHOIX DE LA MM DE TENDANCE
    MM1 = exponentialaverage[200](close)
     
    //CHOIX DES MM COURTES DE CONSO
    MM2 = exponentialaverage[20](close)
    MM3 = exponentialaverage[7](close)
     
    //REGLAGE DE LA PENTE
    PenteMM1 = abs(MM1-MM1[1])
    X = 5 //en points/pips
    MM1Forte = PenteMM1>X*ticksize
    MM1Faible = PenteMM1<X*ticksize
    
    //PENTE FAIBLE 
    IF MM1Faible THEN
    IF MM2>MM1 THEN
    r=0
    g=255
    b=0
    alpha=30//VERT CLAIR
    ELSIF MM2<MM1 THEN
    r=255
    g=0
    b=0
    alpha=30//ROUGE CLAIR
    ENDIF
    ENDIF
    
    //PENTE FORTE 
    IF MM1Forte then
    IF MM2>MM1 THEN
    r=0
    g=255
    b=0
    alpha=60//VERT FONCE
    ELSIF MM2<MM1 THEN
    r=255
    g=0
    b=0
    alpha=60//ROUGE FONCE
    ENDIF
    ENDIF
     
    //CONSOLIDATION
    if (Close>MM1 and MM3<MM2) OR (Close<MM1 and MM3>MM2) then 
    r=0
    g=0
    b=255
    alpha=30//BLEU FONCE
    ENDIF
     
    Backgroundcolor(r,g,b,alpha)
     
    RETURN indicateur
    EURUSD-15-minutes.png EURUSD-15-minutes.png
    #106155 quote
    jeanguy
    Participant
    Senior

    Pour isoler le CAS 6 (Qui me permettrai de me mettre en mode “RANGE” dans mon trading) je ne sais pas comment faire mais j’ai identifié 2 pistes de codage :

    1) La MM1 est en pente faible et la MM2 (ou les cours ou MM2 + MM3) franchissent plusieurs fois dans un sens et dans l’autre la MM1 (ce qui permettrai d’identifier l’oscillation autour de la MM1). Oscillation qui n’apparait pas en tendance.

    2) Raccrocher un codage de RANGE du site est le prioriser par rapport aux CAS 1 à 5

    #106237 quote
    Nicolas
    Keymaster
    Master

    Avec l’historique complet devant les yeux, la détection du range est aisé. En temps réel, chaque croisement de tes moyennes auraient pu marquer le début d’une nouvelle tendance, comme tu le marques avec les traits gras verticaux. A posteriori, c’est toujours plus facile 🙂

    La technique que tu décris au point 1/ pourrait être cependant codé, bien entendu. Qu’appelles-tu une “pente faible”, cette notion est-elle déjà présente dans le code posté précédemment ?

    #106257 quote
    jeanguy
    Participant
    Senior

    Je comprends !

    Oui notion déjà présente dans le code précédent (ligne 10 à 14) mais peut être peux-tu isoler 2 variables de pente (les 2 paramétrables à souhait) :

    – Une qui servira à faire la distinction entre tendance faible et forte (Moi j’ai réglé à 5 mais peut être d’autres réglerons autrement)

    – Une pour identifier le range comme ça chacun pourra faire un paramétrage différent pour la tendance et pour l’identification du RANGE

    Après pour marquer les oscillations je ne sais pas ce qui est le mieux : peut-être utiliser les high/low car on voit bien ici que le range sera détecté plus tôt qu’avec les MM. Qu’en penses-tu ?

    D’autant que si des “touchettes” comme celle-ci arrivaient en tendance (Cas 1 à 5) elles seraient exclu par la variable “pente” spécifique au code du RANGE.

    Dans mon idée première c’était pour ça que je pensais utiliser la fonction “summation” pour faire un comptage des perturbations sur X bougies… après pas de solution miracle j’ai l’impression puisque si tu codes la summation, cela aura pour conséquence d’afficher un retard de 20h pour l’entrée en tendance (Cf schéma).

    J’aurai cru que raccrocher un code RANGE et le prioriser aurait été plus simple pour toi… mais non !

    #106258 quote
    jeanguy
    Participant
    Senior

    Avec le fichier. Merci Nicolas !

    EURUSD-15-minutesV3.png EURUSD-15-minutesV3.png
    #106269 quote
    jeanguy
    Participant
    Senior

    Je rejoins les graphs pour être sur de me faire bien comprendre Nicolas.

    Je ne vois pas comment il est possible de détecter le range tôt sans pour autant exclure les pics

    EURUSD-15-minutesV3-1.png EURUSD-15-minutesV3-1.png EURUSD-15-minutesV4.png EURUSD-15-minutesV4.png EURUSD-15-minutesV5.png EURUSD-15-minutesV5.png EURUSD-15-minutesV6.png EURUSD-15-minutesV6.png
    #106309 quote
    Nicolas
    Keymaster
    Master

    Aucun miracle et une nouvelle façon de détecter ce qui pourrait être un range dans ce code, j’ai isolé cette partie dans la dernière partie. J’ai colorié en jaune les zones trouvées, il y a une période d’analyse (10 bougies par défaut) et un ratio pour chaque détection (pente faible et touchette). Je te laisse faire les analyses.

    Indicateur = 1
     
    //CHOIX DE LA MM DE TENDANCE
    MM1 = exponentialaverage[200](close)
     
    //CHOIX DES MM COURTES DE CONSO
    MM2 = exponentialaverage[20](close)
    MM3 = exponentialaverage[7](close)
     
    //REGLAGE DE LA PENTE
    PenteMM1 = abs(MM1-MM1[1])
    X = 5 //en points/pips pour seuil max pente faible
    Y = 10 //en points/pips pour seuil min pente forte
    MM1Forte = PenteMM1>=Y*ticksize
    MM1Faible = PenteMM1<=X*ticksize
    
    //PENTE FAIBLE
    IF MM1Faible THEN
    IF MM2>MM1 THEN
    r=0
    g=255
    b=0
    alpha=30//VERT CLAIR
    ELSIF MM2<MM1 THEN
    r=255
    g=0
    b=0
    alpha=30//ROUGE CLAIR
    ENDIF
    ENDIF
    
    //PENTE FORTE
    IF MM1Forte then
    IF MM2>MM1 THEN
    r=0
    g=255
    b=0
    alpha=60//VERT FONCE
    ELSIF MM2<MM1 THEN
    r=255
    g=0
    b=0
    alpha=60//ROUGE FONCE
    ENDIF
    ENDIF
     
    //CONSOLIDATION
    if (Close>MM1 and MM3<MM2) OR (Close<MM1 and MM3>MM2) then
    r=0
    g=0
    b=255
    alpha=30//BLEU FONCE
    ENDIF
    
    //ranging or not?
    xx = 10 //period de test occurrence pente faible & touchette MM1
    ratiopente = 0.5 //ratio de seuil de range trouvé dans les XX dernières périodes
    ratiotouche = 0.2 //ratio de seuil de touche trouvé dans les XX dernières périodes
    irange = summation[xx](mm1faible)>=xx*ratiopente
    itouche = summation[xx](high crosses over mm1 or low crosses under mm1)>=xx*ratiotouche
    if irange and itouche then 
    r=255
    g=255
    b=0
    alpha=100 //JAUNE
    endif
     
    Backgroundcolor(r,g,b,alpha)
     
    RETURN indicateur
    detection-range.png detection-range.png
    #106349 quote
    jeanguy
    Participant
    Senior

    C’est pas fou fou à première vue… je vais encore creuser sur le site pour améliorer. 2 questions encore :

    • je n’ai pas compris la notion de ratiopente / ratiotouche ? Pourquoi utiliser des ratios et ne pas mettre des nombres pleins comme dans le calcul de pente figurant ligne 11 à 15 ?
    • si tu as un idée à me donner pour l’oscillateur à utiliser en complément de cette tendance de fonds je suis preneur… (FOREX)

    Ensuite je ne t’embête pas plus – tu m’as déjà bien aidé dans la structuration c’est à moi de progresser maintenant.

Viewing 15 posts - 1 through 15 (of 17 total)
  • You must be logged in to reply to this topic.

Test continu d'une condition pour colorier le graphique


ProBuilder : Indicateurs & Outils Personnalisés

New Reply
Author
author-avatar
jeanguy @mhscrforever Participant
Summary

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

Topic Details
Forum: ProBuilder : Indicateurs & Outils Personnalisés
Language: French
Started: 07/30/2019
Status: Active
Attachments: 11 files
Logo Logo
Loading...