screener à partir d’un indicateur
Forums › ProRealTime forum Français › Support ProScreener › screener à partir d’un indicateur
- This topic has 13 replies, 2 voices, and was last updated 16 hours ago by
finplus.
-
-
03/11/2025 at 7:46 PM #244838
Bonsoir, je souhaiterai avoir un screener à partir de cet indicateur
period=50
plusDM = (MAX(HIGH-HIGH[1], 0))*10
minusDM = (MAX(LOW[1]-LOW, 0))*10IF plusDM > minusDM THEN
minusDM = 0
ENDIFIF plusDM < minusDM THEN
plusDM = 0
ENDIFIF plusDM = minusDM THEN
plusDM = 0
minusDM = 0
ENDIFplusDI = WILDERAVERAGE[period](plusDM)
minusDI = WILDERAVERAGE[period](minusDM)DM = (plusDI-minusDI)/pipsize
moy = exponentialaverage[period]((DM))
if Moy<Moy[1] and Moy[1]>Moy[2] and Moy[1]>0 then
RetB5=RetB4
RetB4=RetB3
RetB3=RetB2
RetB2=RetB1
RetB1=Moy[1]
ReturnBmoy=(RetB1+RetB2+RetB3+RetB4+RetB5)/5
endifif Moy>Moy[1] and Moy[1]<Moy[2] and Moy[1]<0 then
RetH5=RetH4
RetH4=RetH3
RetH3=RetH2
RetH2=RetH1
RetH1=Moy[1]
ReturnHmoy=(RetH1+RetH2+RetH3+RetH4+RetH5)/5
endifif abs(returnBmoy-0) > abs(returnHmoy-0) then
limitUP = returnBmoy
elsif abs(returnBmoy-0) < abs(returnHmoy-0) then
LimitUp = -ReturnHmoy
endifif abs(ReturnHmoy-0) > abs(ReturnBmoy-0) then
limitDn = ReturnHmoy
elsif abs(ReturnHmoy-0) < abs(ReturnBmoy-0) then
LimitDn = – ReturnBmoy
endifTopDMMoy = exponentialaverage [150](returnBMoy)
BottomDMMoy = exponentialaverage[150](returnHmoy)if DM > 0 and DM > TopDMMoy then
drawcandle (0,0, DM, DM) COLOURED (32,0,192)
elsif DM > 0 and DM < TopDMmoy then
drawcandle (0,0, DM, DM) COLOURED (0,204,255)
endifif DM < 0 and DM < BottomDMmoy then
drawcandle (0,0, DM, DM) COLOURED (255,0,0)
elsif DM < 0 and DM > BottomDMmoy then
drawcandle (0,0, DM, DM) COLOURED (255,204,153)
endifReturn DM as “DM”, moy as “DM Moy”, TopDMMoy as “TOP”, BottomDMMoy as “BOTTOM’
Ce screener devrait identifier lorsque le DM est au dessus du TopDMMoy ou au dessous du BottomDMMOy avec un DM au dessus ou au dessous de la Moy.
j’ai tenté le screener ci dessous mais il ne remonte pas tout :
///////////////////////////////////////////////////////////////////// DM
period=50
plusDM = (MAX(HIGH-HIGH[1], 0))*10
minusDM = (MAX(LOW[1]-LOW, 0))*10IF plusDM > minusDM THEN
minusDM = 0
ENDIFIF plusDM < minusDM THEN
plusDM = 0
ENDIFIF plusDM = minusDM THEN
plusDM = 0
minusDM = 0
ENDIFplusDI = WILDERAVERAGE[period](plusDM)
minusDI = WILDERAVERAGE[period](minusDM)DM = (plusDI-minusDI)/pipsize
moy = exponentialaverage[period]((DM))
if Moy<Moy[1] and Moy[1]>Moy[2] and Moy[1]>0 then
RetB5=RetB4
RetB4=RetB3
RetB3=RetB2
RetB2=RetB1
RetB1=Moy[1]
ReturnBmoy=(RetB1+RetB2+RetB3+RetB4+RetB5)/5
endifif Moy>Moy[1] and Moy[1]<Moy[2] and Moy[1]<0 then
RetH5=RetH4
RetH4=RetH3
RetH3=RetH2
RetH2=RetH1
RetH1=Moy[1]
ReturnHmoy=(RetH1+RetH2+RetH3+RetH4+RetH5)/5
endifTopDMMoy = exponentialaverage [150](returnBMoy)
BottomDMMoy = exponentialaverage[150](returnHmoy)DMStrongUp = (DM > moy) and (DM > TopDMMoy)
DMStrongDn = (Dm < moy) and (DM < BottomDMMoy)screener [DMStrongUp or DMStrongDn]
merci.
03/11/2025 at 8:08 PM #244839Bonsoir, tu l’as fait tourner avec une version de PRT “complete” (256 barres d’historique proscreener) ou “premium” (1024 barres d’historique proscreener)?
Si en version “complete”, il faudrait vérifier ce que dit la mm expo de période 150 dans proscreener avec seulement 256 d’historique contre sans doute beaucoup plus d’historique en version indicateur dans probuilder, donc n’existant qu’à partir de la barre 150 pour les 106 dernières barres à peine. Car les math derrière le calcul d’une mm expo sont: on initialise à la première barre sur une valeur arbitraire forcément différente de ce que serait une mm expo si on avait beaucoup d’historique en amont, puis à chaque rang on calcule par récurrence en utilisant la valeur du rang précédent, ce procédé nécessite pas mal d’historique avant de converger, et donc les mm expo de grande période ne sont pas adaptées à l’usage de proscreener. Et sauf valeur arbitraire au premier rang très proche de ce qu’aurait été la mm expo 150, il n’est pas dit que tes TopDMMoy et BottomDMMoy soient bien les mêmes dans proscreener que dans probuilder, par manque d’historique proscreener. Si c’est le cas, alors les conditions DMStrongUp et DMStrongDn peuvent différer dans proscreener par rapport à ce qu’elles sont dans probuilder, d’où “il ne remonte pas tout”.
03/11/2025 at 8:25 PM #24484003/11/2025 at 8:53 PM #244841Tu peux créer un mini-screener dont le code est:
1SCREENER(barindex as "barindex")sans oublier de sélectionner une liste pour que ça puisse tourner. S’il te donne 255 dans la colonne de tri “barindex”, c’est que tu as 256 barres d’histo proscreener (la première étant numérotée 0, de 0 à 255 on a les 256), et donc la version “complete”.
1 user thanked author for this post.
03/11/2025 at 9:11 PM #24484203/12/2025 at 11:47 AM #24486703/12/2025 at 12:08 PM #244869De la même manière que tu as pu visualiser ton nombre de barres pour en conclure que tu n’as que 256 barres d’historique (et donc probablement utilisé une mm expo non convergée car sa période de 150 est trop grande pour proscreener), tu peux confirmer ou informer l’hypothèse que le problème vient de la mm expo en visualisant TopDMMoy ou BottomDMMoy dans proscreener avec des (“…”) afin de les comparer à ce qu’elles sont dans probuilder pour une même valeur:
screener [DMStrongUp or DMStrongDn](TopDMMoy as “TopDMMoy”)
ou:
screener [DMStrongUp or DMStrongDn](BottomDMMoy as “BottomDMMoy “)
De là, soit ça confirme un écart non négligeable, et tu ne peux pas y faire grand chose en version complete à 256 barres pour proscreener (et d’ailleurs, avant de voir s’il est possible d’avoir une version premium, il vaut mieux vérifier dans probuilder si l’ema est suffisamment convergée avec seulement 1024 barres d’historique via un calculateonlastbars=1024 pour s’éviter des démarches inutiles)
soit les valeurs sont bonnes pour les mm expo dans prosceener par rapport à ton indicateur dans probuilder et son plus grand historique, et ça ouvre la voie de chercher si le problème pourrait venir d’ailleurs et, une fois identifié, s’il a une solution…
…mais pour le moment tant que tu n’as pas testé la comparaison de tes valeurs de mm expo, tu cours le risque de tourner en rond en cherchant un “autre” problème empêchant de remonter toutes les valeurs qu’il n’y a peut être pas…
03/12/2025 at 12:49 PM #24487203/12/2025 at 10:11 PM #244892Non ça c’était pour probuilder (cf “…il vaut mieux vérifier dans probuilder si l’ema…”), afin de vérifier si même avec 1024 d’historique il reste un problème de mm expo ou pas par rapport à leur valeur avec ton historique habituel.
La ligne entière dans probuilder serait:
defparam calculateonlastbars=1024
https://www.prorealcode.com/documentation/calculateonlastbars/
Mais le plus simple bien qu’approximatif est de limiter ton historique probuilder à 1000 unités sans ajouter de calculateonlastbars, ce sera bien assez proche pour voir s’il y a des différences dans les mm expo par rapport à un historique plus long.
03/13/2025 at 9:37 AM #244895merci. ça devient trop technique pour moi. Comment stp ajouter dans mon screener cette limitation de mon historique à 1000 unités. Parce que dans mes indicateurs, tout fonctionne correctement. Mais je crois savoir que le moteur Probuilder est différent de celui de proscreener. C’est dommage.
Merci.
03/13/2025 at 10:19 AM #244903Non, ton screener en version complete est déjà limité à moins que ça: à 256 barres, tu ne peux pas lui mettre une limite à 1000 ou 1024 de toi-même.
Ma remarque sur “faire un test supplémentaire à 1024 avec probuilder” était juste pour voir si cela aurait pu éventuellement suffire pour que tes mm expo soient quasi-convergées aux bonnes valeurs, car si elles n’étaient pas encore assez bonnes (ce qui me semble très probable vu le très peu d’occurences différentes de ces valeurs au sein de la période 150) , tu aurais su que tu pouvais t’épargner les démarches de changement de courtier qui fournirait la premium (augmentant la limite de proscreener à 1024). Donc si tu ne vois pas comment augmenter la limite de proscreener dans les posts précédents, c’est normal, ce n’était pas de cela qu’il s’agissait.
PS: Je rajoute un commentaire dans mon post suivant pour ne pas mélanger mes remarques, j’essaie d’écrire le post suivant avant midi.
03/13/2025 at 10:39 AM #24490403/13/2025 at 11:23 AM #244906Le commentaire que je voulais rajouter, c’est que si le problème vient des mm expo (ce qui ne sera confirmé ou pas que si tu constates des différences de valeur entre proscreener et probuilder tel que discuté dans les posts précédents), tu peux de toute façon en amont de ce problème soulever la question de l’utilité ou pas d’utiliser des mm expo ici. En effet, je me demande si tu as cru coder une mm expo sur les 150 derniers changements de TopDMMoy ou BottomDMMoy , alors que ce qui est codé prend en compte les 150 barres les plus récentes, même si ces variables n’ont pas bougé (graphiquement ressemblant à des créneaux, succession de plats et de changements d’un coup). Or à l’intérieur des 150 dernières barres, il peut y a voir eu assez peu de changements, donc si ton intention était de faire une mm expo sur les 150 derniers changements de valeur, ce n’est pas le cas, donc la mm a essentiellement un rôle de lissage plutôt que d’emphase sur le dernier changement… et si tu es dans ce cas, tu peux peut-être préférer une mm simple, et si tu choisis de basculer plutôt sur une mm simple, alors proscreener et son historique limité de 256 suffira pour faire remonter des valeurs cohérentes avec ce qui est lu dans probuilder sur un historique pus grand. En tout cas, si ça ne suffit pas, c’est qu’il y a un autre problème quelque part…
03/13/2025 at 7:39 PM #244916 -
AuthorPosts
Find exclusive trading pro-tools on