Test continu d'une condition pour colorier le graphique
Forums › ProRealTime forum Français › Support ProBuilder › Test continu d'une condition pour colorier le graphique
- This topic has 16 replies, 2 voices, and was last updated 5 years ago by jeanguy.
Tagged: backgroundcolor, SUMMATION
-
-
07/30/2019 at 8:53 PM #103835
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)
ENDIFIF Close<MM1 and MM2<MM1 and MM3<MM1 and summation[32](Close>MM1 or Open>MM1)<32 THEN
Backgroundcolor(255,0,0,80)
ENDIFRETURN indicateur
Pouvez-vous m’aider ?
Merci
07/30/2019 at 10:52 PM #103839Bonjour 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.
123456789101112131415161718192021222324252627282930Indicateur = 0MM1 = exponentialaverage[200]//TENDANCE DE FONDMM2 = exponentialaverage[20]MM3 = exponentialaverage[7]//TENDANCE DE FONDIF Close>MM1 THENBackgroundcolor(0,255,0,80)ELSIF Close<MM1 THENBackgroundcolor(255,0,0,80)ENDIF//CONSOLIDATION HAUSSIEREIF Close>MM1 and MM3<MM2 THENBackgroundcolor(0,255,0,160)ENDIF//CONSOLIDATION BAISSIEREIF Close<MM1 and MM3>MM2 THENBackgroundcolor(0,255,0,160)ENDIF//LISSAGEIF summation[32](close>MM1 or open>MM1)<31 THENBackgroundcolor(255,0,0,80)ENDIFRETURN indicateurAvez-vous une idée ?
Logiquement la partie entre les 2 lignes noires cad (MM7>MM20) lorsque Close<MM200 devrait apparaître en rouge foncé.
07/31/2019 at 3:31 PM #103892Le 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:
1234567891011121314151617181920212223242526272829303132333435363738Indicateur = 0MM1 = exponentialaverage[200]//TENDANCE DE FONDMM2 = exponentialaverage[20]MM3 = exponentialaverage[7]//TENDANCE DE FONDIF Close>MM1 THENr=0g=255b=0alpha=80endifIF Close<MM1 THENr=255g=0b=0alpha=80Endifif (Close>MM1 and MM3<MM2) OR (Close<MM1 and MM3>MM2) then //CONSOLIDATION HAUSSIERE & BAISSIEREr=0g=0b=255alpha=160ENDIF//LISSAGEIF summation[32](close>MM1 or open>MM1)<31 THENr=255g=50b=0alpha=80ENDIFBackgroundcolor(r,g,b,alpha)RETURN indicateurJ’ai volontairement mis les consolidations en bleu pour vérifier.
Concernant la partie “lissage”, je n’ai pas compris et rien changé.
07/31/2019 at 10:34 PM #103912Merci 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
Tendance de fonds12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758Indicateur = 0//CHOIX DE LA MM DE TENDANCEMM1 = exponentialaverage[200](close)//CHOIX DES MM COURTES DE CONSOMM2 = exponentialaverage[20](close)MM3 = exponentialaverage[7](close)//REGLAGE DE LA PENTEPenteMM1 = MM1-MM1[3]X = 0.00004MM1Forte = PenteMM1>X or PenteMM1<-XMM1Faible = PenteMM1<X or PenteMM1>-X//LISSAGEA2 = 4//Durée d'observationsB2 = 3//Bougies correctivesIF summation[A2](MM1Faible)<B2 THEN//PENTE FAIBLEIF Close>MM1 THENr=0g=255b=0alpha=80//VERT CLAIRELSIF Close<MM1 THENr=255g=0b=255alpha=80//ROUGE CLAIRENDIFENDIFIF summation[A2](MM1Forte)<B2 THEN//PENTE FORTEIF Close>MM1 THENr=0g=255b=0alpha=160//VERT FONCEELSIF Close<MM1 THENr=255g=0b=0alpha=160//ROUGE FONCEENDIFENDIF//CONSOLIDATIONif (Close>MM1 and MM3<MM2) OR (Close<MM1 and MM3>MM2) then //CONSOLIDATION HAUSSIERE & BAISSIEREr=0g=0b=255alpha=160//BLEUENDIFBackgroundcolor(r,g,b,alpha)RETURN indicateurJ’ai essayé de te mâcher le travail comme j’ai pu. JE N’Y ARRIVE PAS MERCI DE TON AIDE PRECIEUSE !
08/01/2019 at 8:15 AM #103937Bon, 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 🙂
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061Indicateur = 1//CHOIX DE LA MM DE TENDANCEMM1 = exponentialaverage[200](close)//CHOIX DES MM COURTES DE CONSOMM2 = exponentialaverage[20](close)MM3 = exponentialaverage[7](close)//REGLAGE DE LA PENTEPenteMM1 = abs(MM1-MM1[3])X = 4 //en points/pipsMM1Forte = PenteMM1>X*ticksizeMM1Faible = PenteMM1<X*ticksize//LISSAGEA2 = 4//Durée d'observationsB2 = 3//Bougies correctivesweak = summation[A2](MM1Faible)>=B2strong = summation[A2](MM1Forte)>=B2IF weak THEN//PENTE FAIBLEIF Close>MM1 THENr=152g=251b=152alpha=255//VERT PALEELSIF Close<MM1 THENr=255g=182b=193alpha=255//ROSE CLAIRENDIFENDIFIF strong then //PENTE FORTEIF Close>MM1 THENr=0g=255b=0alpha=255//VERT FONCEELSIF Close<MM1 THENr=255g=0b=0alpha=255//ROUGE FONCEENDIFENDIF//CONSOLIDATIONif (Close>MM1 and MM3<MM2) OR (Close<MM1 and MM3>MM2) then //CONSOLIDATION HAUSSIERE & BAISSIEREr=0g=0b=255alpha=160//BLEUENDIFBackgroundcolor(r,g,b,alpha)RETURN indicateur08/01/2019 at 2:12 PM #103979Ce 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.
08/02/2019 at 10:31 AM #104022Nicolas, 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 !
09/01/2019 at 9:19 PM #106142Bon 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 ?
Simple1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556Indicateur = 1//CHOIX DE LA MM DE TENDANCEMM1 = exponentialaverage[200](close)//CHOIX DES MM COURTES DE CONSOMM2 = exponentialaverage[20](close)MM3 = exponentialaverage[7](close)//REGLAGE DE LA PENTEPenteMM1 = abs(MM1-MM1[1])X = 5 //en points/pipsMM1Forte = PenteMM1>X*ticksizeMM1Faible = PenteMM1<X*ticksize//PENTE FAIBLEIF MM1Faible THENIF MM2>MM1 THENr=0g=255b=0alpha=30//VERT CLAIRELSIF MM2<MM1 THENr=255g=0b=0alpha=30//ROUGE CLAIRENDIFENDIF//PENTE FORTEIF MM1Forte thenIF MM2>MM1 THENr=0g=255b=0alpha=60//VERT FONCEELSIF MM2<MM1 THENr=255g=0b=0alpha=60//ROUGE FONCEENDIFENDIF//CONSOLIDATIONif (Close>MM1 and MM3<MM2) OR (Close<MM1 and MM3>MM2) thenr=0g=0b=255alpha=30//BLEU FONCEENDIFBackgroundcolor(r,g,b,alpha)RETURN indicateur09/01/2019 at 10:14 PM #106155Pour 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
09/02/2019 at 3:17 PM #106237Avec 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 ?
09/02/2019 at 5:57 PM #106257Je 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 !
09/02/2019 at 5:58 PM #10625809/02/2019 at 8:49 PM #10626909/03/2019 at 8:03 AM #106309Aucun 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.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970Indicateur = 1//CHOIX DE LA MM DE TENDANCEMM1 = exponentialaverage[200](close)//CHOIX DES MM COURTES DE CONSOMM2 = exponentialaverage[20](close)MM3 = exponentialaverage[7](close)//REGLAGE DE LA PENTEPenteMM1 = abs(MM1-MM1[1])X = 5 //en points/pips pour seuil max pente faibleY = 10 //en points/pips pour seuil min pente forteMM1Forte = PenteMM1>=Y*ticksizeMM1Faible = PenteMM1<=X*ticksize//PENTE FAIBLEIF MM1Faible THENIF MM2>MM1 THENr=0g=255b=0alpha=30//VERT CLAIRELSIF MM2<MM1 THENr=255g=0b=0alpha=30//ROUGE CLAIRENDIFENDIF//PENTE FORTEIF MM1Forte thenIF MM2>MM1 THENr=0g=255b=0alpha=60//VERT FONCEELSIF MM2<MM1 THENr=255g=0b=0alpha=60//ROUGE FONCEENDIFENDIF//CONSOLIDATIONif (Close>MM1 and MM3<MM2) OR (Close<MM1 and MM3>MM2) thenr=0g=0b=255alpha=30//BLEU FONCEENDIF//ranging or not?xx = 10 //period de test occurrence pente faible & touchette MM1ratiopente = 0.5 //ratio de seuil de range trouvé dans les XX dernières périodesratiotouche = 0.2 //ratio de seuil de touche trouvé dans les XX dernières périodesirange = summation[xx](mm1faible)>=xx*ratiopenteitouche = summation[xx](high crosses over mm1 or low crosses under mm1)>=xx*ratiotoucheif irange and itouche thenr=255g=255b=0alpha=100 //JAUNEendifBackgroundcolor(r,g,b,alpha)RETURN indicateur09/03/2019 at 11:04 AM #106349C’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.
-
AuthorPosts
Find exclusive trading pro-tools on