Bonjour,
à partir du programme Multicolorband (https://www.prorealcode.com/prorealtime-indicators/multicolour-bollinger-bands-market-phases/)
j’essaye de créer le Proscreener moindre risque en vert foncé. Le code ci dessous fonctionne mais il me délivre quelques faux signaux (exemple Sanofi, Klepierre..). Ayant tout essayé pour trouver la solution je viens vers vous pour une aide. Merci par avance.
// PARAMETRES
BAISSE=0
CONSOLIDATIONMOINDRERISQUE=0
MOINDRERISQUE=0
HAUSSE=0
OPPORTUNITE=0
REBONDTECHNIQUE=0
RETOURNEMENTHAUSSIER=0
RISQUEFINDEHAUSSE=0
// INDICATEUR
MM20 = AVERAGE[20](CLOSE)
MM50 = AVERAGE[50](CLOSE)
MM100 = AVERAGE[100](CLOSE)
MM200 = AVERAGE[200](CLOSE)
IF CLOSE > MM50 AND CLOSE > MM200 AND MM50 > MM200 AND CLOSE > MM20 THEN
MOINDRERISQUE=1
ENDIF
IF CLOSE > MM50 AND CLOSE > MM200 AND MM50 < MM200 THEN
HAUSSE=1
ENDIF
IF CLOSE > MM200 AND CLOSE < MM50 OR CLOSE < MM20 AND MM50 > MM200 AND CLOSE > MM100 THEN
CONSOLIDATIONMOINDRERISQUE=1
ENDIF
IF CLOSE > MM200 AND MM50>MM200 AND CLOSE < MM100 THEN
RISQUEFINDEHAUSSE=1
ENDIF
IF CLOSE > MM50 AND CLOSE > MM100 AND CLOSE < MM200 THEN
RETOURNEMENTHAUSSIER=1
ENDIF
IF CLOSE > MM50 AND CLOSE < MM100 AND CLOSE < MM200 THEN
OPPORTUNITE=1
ENDIF
IF CLOSE > MM20 AND CLOSE < MM50 AND CLOSE < MM200 THEN
REBONDTECHNIQUE=1
ENDIF
IF CLOSE < MM50 AND CLOSE < MM200 AND CLOSE < MM20 THEN
BAISSE=1
ENDIF
NOK = (BAISSE=0 OR CONSOLIDATIONMOINDRERISQUE=0 OR HAUSSE=0 OR OPPORTUNITE=0 OR REBONDTECHNIQUE=0 OR RETOURNEMENTHAUSSIER=0 OR RISQUEFINDEHAUSSE=0)
OK = (MOINDRERISQUE)
//
OKVOL = AVERAGE[20](CLOSE*VOLUME)>=1000000
MONTANT = (CLOSE*VOLUME)>=500000
// ECARTER LES TITRES AVEC DES TROUS DE COTATION JUSTE AVANT
PASTROUSCOTATION = (HIGH[1] - LOW[1] > 0) AND (HIGH[2] - LOW[2] > 0) AND (HIGH[3] - LOW[3] > 0) AND (HIGH[4] - LOW[4] > 0)
SIGNAL = (NOK AND OK) AND (OKVOL AND MONTANT AND PASTROUSCOTATION)
SCREENER[SIGNAL]((CLOSE*VOLUME) AS "MONTANT")
Selon moi c’est plus simple de tester la couleur de l’indicateur d’origine (à compléter avec tes autres filtres): donc ici vert foncé avec r=0 g=150 et b=0
MM20=average[20](close)
MM50=average[50](close)
MM100=average[100](close)
MM200=average[200](close)
//rouge (baissier prix sous moyenne mobile 200
c1= (close<MM200)
if c1 then
r=250
g=0
b=0
ENDIF
//orange( rebond technique)
c2= c1 and(MM20<close)
if c2 then
r=255
g=160
b=0
ENDIF
//jaune (phase1 nouveau cycle)
c3= c1 and(MM50<close)and(mm50<mm200)and(close<mm200)
if c3 then
r=800
g=250
b=0
ENDIF
//vert fluo ( phase 2 nouveau cycle)
c4= (MM200<close)and(MM50<close)and(MM50<MM200)
if c4 then
r=0
g=300
b=0
ENDIF
//vert foncé ( au dessus de tte moyenne mobile, cycle mur)
C5= (MM200<MM50)and(MM50<close)and(MM20<close)
if c5 then
r=0
g=150
b=0
ENDIF
//bleu (retournement de tendance)
c6= (MM100<MM200) and(MM50<MM200)and (close<MM200)and(MM100<close)and(MM50<MM100)
if c6 then
r=0
g=0
b=300
ENDIF
//bleu (retournement de tendance 2 )
c6bis= (MM100<MM200) and(MM50<MM200)and (close<MM200)and(MM50<close)and(MM100<MM50)
if c6bis then
r=0
g=0
b=300
ENDIF
//gris (phase 5 affaiblissement ou retournement à la baisse, neutre)
c7= (MM200<close) and(close<MM100)and (MM200<MM100)and(MM200<MM50)
if c7 then
r=150
g=150
b=150
ENDIF
//bleu bouteille (consolidation)
c8=(MM200<MM50)and(MM200<close)and(MM100<close)and((close<MM50)or(close<MM20))
if c8 then
r=0
g=250
b=200
ENDIF
screener[r=0 and g=150 and b=0]
Bonjour Nicolas,
merci pour ton aide. Cela ne fonctionne toujours pas. Par contre en isolant des parties du code, je me suis aperçu que Proscreeener ne reconnaît plus certains critères comme une simple clôture au dessus la moyenne mobile à 20 périodes sur certaines valeurs. Même remarque sur la version 11 ou 12, j’ai donc remonté l’incident. Encore merci et bonne fin de journée
De mon côté c’est bien fonctionnel, les instruments retournés sont tous bien en vert foncé selon l’indicateur que tu as mentionné ? Aurais tu un exemple à me montrer pour comprendre où se situe le problème ?
Nicolas,
par exemple à la date du 16 mai 2022 (ce soir) sur Euronext actions en journalier, le Proscreener ressort quelques titres en fichiers joints avec Proximus qui est en tendance baissière donc rouge et Sanofi en consolidation donc bleu bouteille (je t’ai mis un rectangle sur les prix pour identifier la zone) J’ai également quelques valeurs en gris .Pour qu’une action soit classée moindre risque elle doit à minima avoir comme critère un cours de clôture supérieur à la moyenne mobile simple à 20 périodes. (courbe en pointillé) En bas des photocopies d’écran l’indicateur des phases de marchés sous forme d’histogrammes. Merci Nicolas
150 unités affichées sur le graphique, ça n’est pas suffisant pour calculer une moyenne mobile de 200 périodes, les valeurs des calculs de ton indicateur devraient donc changer si tu étends l’affichage à disons au moins 300 unités.
et non :). Finalement j’ai fini par trouver et c’est un peu plus vicieux. Tout d’abord grâce à l’assistance qui m’a indiqué la nécessité de cocher l’ajustement des dividendes, et ensuite je me suis amusé à séparer chacune des conditions. Le programme d’origine est dysfonctionnel car les couleurs se chevauchent car il manque des conditions pour que cela fonctionne.
Merci pour ton aide Nicolas, une fois le code modifié je le posterais à nouveau dans le forum.
Le programme d’origine est dysfonctionnel car les couleurs se chevauchent
oui c’est pour cette raison que je teste dans mon code la couleur verte foncé uniquement et pas chacune des conditions à la suite.
Bravo pour avoir trouvé 🙂
Bonjour Nicolas,
voici le correctif. J’ignore sur le site où je peux l’intégrer pour que la communauté puisse l’utiliser. En attendant ..
// PARAMETRE
BAISSE=0
CONSOLIDATIONMOINDRERISQUE=0
HAUSSE=0
MOINDRERISQUE=0
OPPORTUNITE=0
RETOURNEMENTHAUSSIER=0
REBONDTECHNIQUE=0
RISQUEFINDEHAUSSE=0
// INDICATEURS
MM20 = AVERAGE[20](CLOSE)
MM50 = AVERAGE[50](CLOSE)
MM100 = AVERAGE[100](CLOSE)
MM200 = AVERAGE[200](CLOSE)
// PHASES CLASSEES D'UN MARCHE EN BAISSIE A UN MARCHE EN HAUSSE
// ROUGE TENDANCE BAISSIERE
IF CLOSE<MM20 AND CLOSE<MM50 AND CLOSE<MM200 THEN
BAISSE=1
ENDIF
// ORANGE REBOND TECHNIQUE
IF CLOSE > MM20 AND CLOSE < MM50 AND CLOSE < MM200 THEN
REBONDTECHNIQUE=1
ENDIF
// JAUNE OPPORTUNITE
IF CLOSE > MM50 AND CLOSE < MM100 AND CLOSE < MM200 THEN
OPPORTUNITE=1
ENDIF
// BLEU RETOURNEMENT HAUSSIER
IF CLOSE > MM50 AND CLOSE > MM100 AND CLOSE < MM200 THEN
RETOURNEMENTHAUSSIER=1
ENDIF
// VERT CLAIR HAUSSE
IF CLOSE > MM50 AND CLOSE > MM200 AND MM50 < MM200 THEN
HAUSSE=1
ENDIF
// VERT FONCE MOINDRE RISQUE
IF CLOSE > MM20 AND CLOSE > MM50 AND CLOSE>MM100 AND CLOSE > MM200 AND MM50 > MM200 THEN
MOINDRERISQUE=1
ENDIF
// VERT BOUTEILLE CONSOLIDATION MOINDRE RISQUE
IF CLOSE > MM200 AND (CLOSE < MM50 OR CLOSE < MM20) AND MM50 > MM200 AND CLOSE > MM100 THEN
CONSOLIDATIONMOINDRERISQUE=1
ENDIF
// GRIS RISQUE FIN DE HAUSSE
IF CLOSE > MM200 AND MM50>MM200 AND CLOSE < MM100 THEN
RISQUEFINDEHAUSSE=1
ENDIF
RETURN MOINDRERISQUE COLOURED (20, 148, 20) STYLE(HISTOGRAM,1) AS "VERT FONCE - MOINDRE RISQUE", HAUSSE COLOURED (0, 255, 0) STYLE(HISTOGRAM,1) AS "VERT CLAIR - HAUSSE", CONSOLIDATIONMOINDRERISQUE COLOURED (0, 250, 200) STYLE(HISTOGRAM,1) AS "CYAN - CONSOLIDATION MOINDRE RISQUE", RISQUEFINDEHAUSSE COLOURED (150, 150, 150) STYLE(HISTOGRAM,1) AS "GRIS - RISQUE FIN DE HAUSSE", RETOURNEMENTHAUSSIER COLOURED (1, 49, 180) STYLE(HISTOGRAM,1) AS "BLEU - RETOURNEMENT HAUSSIER", OPPORTUNITE COLOURED (255, 255, 0) STYLE(HISTOGRAM,1) AS "JAUNE - OPPORTUNITE",REBONDTECHNIQUE COLOURED (239,155,15) STYLE(HISTOGRAM,1) AS "ORANGE - REBOND TECHNIQUE",BAISSE COLOURED (237, 0, 0) STYLE(HISTOGRAM,1) AS "ROUGE - BAISSE"
Ici c’est très bien et lié au sujet et à son titre, merci pour le retour avec la version finale ! 🙂
Bonjour à tous
Serait-il possible de mettre le code en .itf , en le recopiant j’ai une erreur ligne 61 caractère 708
merci ,bonne journée
Il n’y a pas de ligne 61 pourtant ?! mauvais copier/coller je pense 🙄
ligne 59 caractere 708
je l’ai copié/coller 3 fois ! tjrs le même pb ?