Transformer un iindicateur complexe en screener
Forums › ProRealTime forum Français › Support ProScreener › Transformer un iindicateur complexe en screener
- This topic has 5 replies, 2 voices, and was last updated 3 years ago by steve_.
-
-
05/09/2021 at 11:07 PM #169212
Hello,
Je me suis mis récemment à Prorealcode et en fouinant dans la bibliothèque, j’ai découvert cet indicateur qui date un peu mais semble donner des signaux d’achat potentiellement intéressants (merci Léo!).
https://www.prorealcode.com/prorealtime-indicators/double-top-double-bottom-detector/
NB: le screener associé fourni par Léo ne donne pas du tout les mêmes signaux… 🙁
J’essaie de transformer l’indicateur en screener et le résultat n’est pas très concluant (je m’y prends sûrement mal!).
1- Serait-il possible de détecter chaque soir les valeurs (actions, ETF…) pour lesquelles l’indicateur a dessiné une flèche ascendante pour la dernière séance de cotation ?
2- Serait-il possible de détecter chaque soir les valeurs (actions, ETF…) pour lesquelles l’indicateur a dessiné une flèche ascendante lors d’une des x dernières séances de cotation ? (x, variable en paramètre)
J’ai mis en commentaire les instructions de dessin et au lieu de dessiner une flèche “up”, j’initialise une varaible “CondBuyOk=1” que je passe au screener.
Ca marche pôôô. 🙁
Je n’ai pas le résultat attendu.
Voici ci-dessous mon essai de screener…
Merci par avance à toute personne pouvant m’aider.
Je ne demande pas forcément que l’on me donne le poisson tout cuit, je suis prêt à apprendre à le pêcher mais il me faut quelques pistes ! 😉
(un tuto du genre “Comment transformer un indicateur complexe en screener”) 🙂
Bon, si un expert a la solution en 10 minutes, je suis preneur, ça me permettra de dormir un peu plus ! :))
@+
Steve
Mon essai de screener123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126//LOCALS MINIMUMS AND MAXIMUMS USING LEO MOVING AVERAGE//Autor: LEO//VARIABLES TO BE OPTIMIZEDPERIOD=20 //Period for analysisKdouble=0.2 //Factor for defining what is double top or bottom//-----------CondBuyOK=0//Leo Moving Average, formula: LMA= WMA+(WMA-SMA)LMA=2*weightedaverage[period](close)-average[period](close)//Smoothed curve of Leo Moving AverageIF BARINDEX > period THENsmoothLMA=weightedaverage[period](LMA)ELSEsmoothLMA=undefinedENDIF// << Storage of minimums and maximums >>once mintemp=low//once posmintemp=10once posmintemp=1once maxtemp=highonce posmaxtemp=1IF BARINDEX>2 THEN// the value 0.75 is to ensure that the donchian channel is faster than the curves analysis (this value to be checked)IF low < lowest[round(0.75*period)](low[1]) THENmintemp=low //minimum temporalposmintemp=BARINDEX //postition of minimum temporalENDIFIF high > highest[round(0.75*period)](high[1]) thenmaxtemp=high //maximum temporalposmaxtemp=BARINDEX //position maximum temporalENDIFENDIF// << Detecting and locating a local minimums >>// Where the LMA is crossing the smoothed LMA, there is a maximum or minimum nearby// If there is a new local min/max, the preivus one is stored in de varible B... (before)once LEVMIN=lowonce POSLEVMIN=1once LEVMAX=highonce POSLEVMAX=1once bullcross=0once bearcross=0IF BARINDEX > PERIOD THEN //For avoid computer errorsbullcross=LMA crosses over smoothLMAbearcross=LMA crosses under smoothLMAENDIFIF bullcross THENBLEVMIN=LEVMIN //previus local minimum is savedBPOSLEVMIN=POSLEVMINLEVMIN=mintempPOSLEVMIN=posmintempsupport=LEVMIN//DRAWARROWUP(POSLEVMIN,LEVMIN) coloured(0,0,0,30)//DRAWARROWUP(POSLEVMIN,LEVMIN) coloured(85,255,0)CondBuyOK=1ENDIF// --> Detecting and locating a local maximumIF bearcross THENBLEVMAX=LEVMAX //previus local maximum is savedBPOSLEVMAX=POSLEVMAXLEVMAX=maxtempPOSLEVMAX=posmaxtempresistance=LEVMAX//DRAWARROWDOWN(POSLEVMAX,LEVMAX) coloured(0,0,0,30)//DRAWARROWDOWN(POSLEVMAX,LEVMAX) coloured(255,85,0)ENDIFsupport=min(low,support)resistance=max(high,resistance)// << DETECTING DOUBLE TOP OR BOTTOMS >>once WidthDoubleTop = high-lowonce WidthDoubleBottom = high-low//--> Double bottoms//looking for the top between two local minimumsIF bullcross THENdoublebottomtop=high[BARINDEX-POSLEVMIN+1] // we start looking for the top in between two local minimums//POSdoublebottomtop=BARINDEX-POSLEVMIN+1FOR i = (BARINDEX-POSLEVMIN+1) to (BARINDEX-BPOSLEVMIN-1) DOIF high[i] > doublebottomtop THENdoublebottomtop=high[i]//POSdoublebottomtop=BARINDEX-iENDIFNEXTWidthDoubleBottom = doublebottomtop-(BLEVMIN+LEVMIN)/2 // (top betwen local minimums) - (average of the las two local minimums)IF abs(BLEVMIN-LEVMIN) < Kdouble*WidthDoubleBottom THEN// <<<<<<< HERE WE HAVE A DOUBLE BOTTOM FOR TRADING >>>>>//DRAWTRIANGLE(POSLEVMIN,LEVMIN,POSdoublebottomtop,doublebottomtop,BPOSLEVMIN,BLEVMIN) COLOURED(0,255,0,200)ENDIFENDIF//--> Double tops//looking for the bottom between two local maximumsIF bearcross THENdoubletopbottom=low[BARINDEX-POSLEVMAX+1]//POSdoubletopbottom=BARINDEX-POSLEVMAX+1FOR i = (BARINDEX-POSLEVMAX+1) to (BARINDEX-BPOSLEVMAX-1) DOIF low[i] < doubletopbottom THENdoubletopbottom=low[i]//POSdoubletopbottom=BARINDEX-iENDIFNEXTWidthDoubleTop=(BLEVMAX+LEVMAX)/2 -doubletopbottomIF abs(BLEVMAX-LEVMAX) < Kdouble*WidthDoubleTop THEN// <<<<<<< HERE WE HAVE A DOUBLE TOP FOR TRADING >>>>>//DRAWTRIANGLE(POSdoubletopbottom,doubletopbottom,POSLEVMAX,LEVMAX,BPOSLEVMAX,BLEVMAX) COLOURED(255,0,0,200)ENDIFENDIFSCREENER [CondBuyOk]//RETURN LMA AS "Leo Moving Average", support as "support", resistance as "resistance", smoothLMA as "smooth LMA" //, lowest[round(0.75*period)](low[1]), highest[round(0.75*period)](high[1])05/10/2021 at 9:20 AM #169234Salut, le meilleur moyen de débugguer un screener (même s’il vient d’un indicateur) c’est de visualiser les conditions dans… un indicateur.
Quand il screen tu ne vois pas ce qu’il fait, tu vois juste une liste, et en plus s’y superpose le risque de l’erreur humaine dans l’interprétation de la justesse de la liste. Alors qu’en visualisant les conditions, tu empêches le doute au contraire tu crées des indices, qui l’un après l’autre permettent de tirer sur le fil des indices jusqu’à que ça marche.
Donc d’abord: visualiser en indicateur condbuyok= 0 ou 1, puis (ou en même temps) visualiser en return ce qui joue dans condbuyok càd apparemment bullcross (qui permet d’entrer dans le if ou pas qui met condbuyok à vrai), s’il y a des anomalies avec bullcross, visualiser ce qui fait bouger bullcross (apparemment lma et smoothlma) etc…
C’est le genre d’approche “apprendre à pêcher” que tu as demandé, et qui permet de débugguer, comme mise en place dans ce topic qui a permis à l’auteur de résoudre un bug après l’autre: https://www.prorealcode.com/topic/screener-indicateurs-multiples/
05/11/2021 at 12:51 AM #169352Hello Noobywan,
J’ai suivi tes bons conseils et le résultat obtenu me laisse perplexe (cf. PJ 01).
Actions effectuées:
– duplication de l’indicateur d’origine (auteur Léo)
– en début de script ajout de “CondBuyOk=0”
– ajout de “CondBuyOk=1” juste avant de dessiner le flèche verte montante
12345IF bullcross THEN...CondBuyOk=1DRAWARROWUP(POSLEVMIN,LEVMIN) coloured(85,255,0)ENDIF– renvoie des 3 variables à étudier
1RETURN CondBuyOk,POSLEVMIN,LEVMINComme tu le vois sur la copie d’écran 01, une flèche verte est dessinée alors que “CondBuyOk=0”!?!
Je pige pas…
Par contre, on voit bien (PJ 02) que “CondBuyOk=1” quand les 2 moyennes de l’indicateur se croisent, conformément à la condition:
1bullcross=LMA crosses over smoothLMALa logique de fonctionnement du bouzin m’échappe …
Pourrais-tu (ou tout expert de ProRealCode) m’éclairer STP sur le sujet ?
Merci.
@+
Steve
Le script complet modifié:
Mon essai d'indicateur123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126//LOCALS MINIMUMS AND MAXIMUMS USING LEO MOVING AVERAGE//Autor: LEO//VARIABLES TO BE OPTIMIZEDPERIOD=20 //Period for analysisKdouble=0.2 //Factor for defining what is double top or bottom//-----------CondBuyOk=0//Leo Moving Average, formula: LMA= WMA+(WMA-SMA)LMA=2*weightedaverage[period](close)-average[period](close)//Smoothed curve of Leo Moving AverageIF BARINDEX > period THENsmoothLMA=weightedaverage[period](LMA)ELSEsmoothLMA=undefinedENDIF// << Storage of minimums and maximums >>once mintemp=lowonce posmintemp=10once maxtemp=highonce posmaxtemp=1IF BARINDEX>2 THEN// the value 0.75 is to ensure that the donchian channel is faster than the curves analysis (this value to be checked)IF low < lowest[round(0.75*period)](low[1]) THENmintemp=low //minimum temporalposmintemp=BARINDEX //postition of minimum temporalENDIFIF high > highest[round(0.75*period)](high[1]) thenmaxtemp=high //maximum temporalposmaxtemp=BARINDEX //position maximum temporalENDIFENDIF// << Detecting and locating a local minimums >>// Where the LMA is crossing the smoothed LMA, there is a maximum or minimum nearby// If there is a new local min/max, the preivus one is stored in de varible B... (before)once LEVMIN=lowonce POSLEVMIN=1once LEVMAX=highonce POSLEVMAX=1once bullcross=0once bearcross=0IF BARINDEX > PERIOD THEN //For avoid computer errorsbullcross=LMA crosses over smoothLMAbearcross=LMA crosses under smoothLMAENDIFIF bullcross THENBLEVMIN=LEVMIN //previus local minimum is savedBPOSLEVMIN=POSLEVMINLEVMIN=mintempPOSLEVMIN=posmintempsupport=LEVMINCondBuyOk=1//DRAWARROWUP(POSLEVMIN,LEVMIN) coloured(0,0,0,30)DRAWARROWUP(POSLEVMIN,LEVMIN) coloured(85,255,0)ENDIF// --> Detecting and locating a local maximumIF bearcross THENBLEVMAX=LEVMAX //previus local maximum is savedBPOSLEVMAX=POSLEVMAXLEVMAX=maxtempPOSLEVMAX=posmaxtempresistance=LEVMAX//DRAWARROWDOWN(POSLEVMAX,LEVMAX) coloured(0,0,0,30)DRAWARROWDOWN(POSLEVMAX,LEVMAX) coloured(255,85,0)ENDIFsupport=min(low,support)resistance=max(high,resistance)// << DETECTING DOUBLE TOP OR BOTTOMS >>once WidthDoubleTop = high-lowonce WidthDoubleBottom = high-low//--> Double bottoms//looking for the top between two local minimumsIF bullcross THENdoublebottomtop=high[BARINDEX-POSLEVMIN+1] // we start looking for the top in between two local minimumsPOSdoublebottomtop=BARINDEX-POSLEVMIN+1FOR i = (BARINDEX-POSLEVMIN+1) to (BARINDEX-BPOSLEVMIN-1) DOIF high[i] > doublebottomtop THENdoublebottomtop=high[i]POSdoublebottomtop=BARINDEX-iENDIFNEXTWidthDoubleBottom = doublebottomtop-(BLEVMIN+LEVMIN)/2 // (top betwen local minimums) - (average of the las two local minimums)IF abs(BLEVMIN-LEVMIN) < Kdouble*WidthDoubleBottom THEN// <<<<<<< HERE WE HAVE A DOUBLE BOTTOM FOR TRADING >>>>>DRAWTRIANGLE(POSLEVMIN,LEVMIN,POSdoublebottomtop,doublebottomtop,BPOSLEVMIN,BLEVMIN) COLOURED(0,255,0,200)ENDIFENDIF//--> Double tops//looking for the bottom between two local maximumsIF bearcross THENdoubletopbottom=low[BARINDEX-POSLEVMAX+1]POSdoubletopbottom=BARINDEX-POSLEVMAX+1FOR i = (BARINDEX-POSLEVMAX+1) to (BARINDEX-BPOSLEVMAX-1) DOIF low[i] < doubletopbottom THENdoubletopbottom=low[i]POSdoubletopbottom=BARINDEX-iENDIFNEXTWidthDoubleTop=(BLEVMAX+LEVMAX)/2 -doubletopbottomIF abs(BLEVMAX-LEVMAX) < Kdouble*WidthDoubleTop THEN// <<<<<<< HERE WE HAVE A DOUBLE TOP FOR TRADING >>>>>DRAWTRIANGLE(POSdoubletopbottom,doubletopbottom,POSLEVMAX,LEVMAX,BPOSLEVMAX,BLEVMAX) COLOURED(255,0,0,200)ENDIFENDIFRETURN CondBuyOk,POSLEVMIN,LEVMIN//RETURN LMA AS "Leo Moving Average", support as "support", resistance as "resistance", smoothLMA as "smooth LMA" //, lowest[round(0.75*period)](low[1]), highest[round(0.75*period)](high[1])05/11/2021 at 7:01 AM #169360Salut, ma première réaction pré-café, c’est que comme ton drawarrowup n’est pas forcément avec une abscisse sur barindex courant (il est mis sur poslevmin, lui même venant de posmintemps, lui-même défini en ligne 31 dans un autre bloc if-endif), alors ça me dit que la flèche verte n’est pas forcément dessinée sur la même barre que celle où buycondok=1, donc la PJ 1 ne suffit pas à conclure à une incohérence sauf ^à être sûr que c’est la lecture du code à cette barre là qui a mis la flèche là, mais comme il y a un autre bullcross que la PJ2 (celui de la dernière barre), il faudrait voir si ce n’est pas un buycondok=1 de la dernière barre qui déclenche la flèche verte en arrière dans l’historique en PJ1.
05/11/2021 at 10:02 PM #169437Hello,
Oui, effectivement, mon 1er essai était trop simpliste… 🙁
Je me suis plongé dans le code cet après-midi pour comprendre cet indicateur et ça vallait le coup.
Voici ma dernière version d’adaptation de l’indicateur de Léo en screener.
Le résultat est plutôt satisfaisant. 🙂
En tête de script, j’ai ajouté la variable LgHisto qui définit la pronfondeur de recherche d’apparition d’une flèche “up” ou “down”.
J’ai testé sur des actions France, Euro, US, crypto en daily, ça semble bien marcher, c’est même un peu trop beau ! 😉
Ca ne ramène rien en “daily” sur les cryptos mais ça doit être normal (?).
Je n’ai pas pu tester avec des UT inférieures au jour (version de démo).
Voilà, je laisse les experts du forum jouer avec ce screener et me dire ce qu’ils en pensent (pertinence des “signaux”, failles, améliorations possibles…).
Par avance, merci.
@+
Steve
NB: le bouton “insertion code PRT” n’est plus dispo en mode “Visual”, il faut passer par “Text” ?!?
Ma dernière version123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145//LOCALS MINIMUMS AND MAXIMUMS USING LEO MOVING AVERAGE//Autor of indicator: LEO//Screener adaptation : Steve_//VARIABLES TO BE OPTIMIZEDPERIOD=20 //Period for analysisKdouble=0.2 //Factor for defining what is double top or bottom// Arrow up/down must appear during last LgHisto UTLgHisto=5//-----------CondBuyOK=0//Leo Moving Average, formula: LMA= WMA+(WMA-SMA)LMA=2*weightedaverage[period](close)-average[period](close)//Smoothed curve of Leo Moving AverageIF BARINDEX > period THENsmoothLMA=weightedaverage[period](LMA)ELSEsmoothLMA=undefinedENDIF// << Storage of minimums and maximums >>once mintemp=low//once posmintemp=10once posmintemp=1once maxtemp=highonce posmaxtemp=1IF BARINDEX>2 THEN// the value 0.75 is to ensure that the donchian channel is faster than the curves analysis (this value to be checked)IF low < lowest[round(0.75*period)](low[1]) THENmintemp=low //minimum temporalposmintemp=BARINDEX //postition of minimum temporalENDIFIF high > highest[round(0.75*period)](high[1]) thenmaxtemp=high //maximum temporalposmaxtemp=BARINDEX //position maximum temporalENDIFENDIF// << Detecting and locating a local minimums >>// Where the LMA is crossing the smoothed LMA, there is a maximum or minimum nearby// If there is a new local min/max, the preivus one is stored in de varible B... (before)once LEVMIN=lowonce POSLEVMIN=1once LEVMAX=highonce POSLEVMAX=1once bullcross=0once bearcross=0IF BARINDEX > PERIOD THEN //For avoid computer errorsbullcross=LMA crosses over smoothLMAbearcross=LMA crosses under smoothLMAENDIFIF bullcross THENBLEVMIN=LEVMIN //previus local minimum is savedBPOSLEVMIN=POSLEVMINLEVMIN=mintempPOSLEVMIN=posmintempsupport=LEVMIN//DRAWARROWUP(POSLEVMIN,LEVMIN) coloured(0,0,0,30)//DRAWARROWUP(POSLEVMIN,LEVMIN) coloured(85,255,0)//CondBuyOK=1ENDIF// --> Detecting and locating a local maximumIF bearcross THENBLEVMAX=LEVMAX //previus local maximum is savedBPOSLEVMAX=POSLEVMAXLEVMAX=maxtempPOSLEVMAX=posmaxtempresistance=LEVMAX//DRAWARROWDOWN(POSLEVMAX,LEVMAX) coloured(0,0,0,30)//DRAWARROWDOWN(POSLEVMAX,LEVMAX) coloured(255,85,0)ENDIFsupport=min(low,support)resistance=max(high,resistance)// << DETECTING DOUBLE TOP OR BOTTOMS >>once WidthDoubleTop = high-lowonce WidthDoubleBottom = high-low//--> Double bottoms//looking for the top between two local minimumsIF bullcross THENdoublebottomtop=high[BARINDEX-POSLEVMIN+1] // we start looking for the top in between two local minimums//POSdoublebottomtop=BARINDEX-POSLEVMIN+1FOR i = (BARINDEX-POSLEVMIN+1) to (BARINDEX-BPOSLEVMIN-1) DOIF high[i] > doublebottomtop THENdoublebottomtop=high[i]//POSdoublebottomtop=BARINDEX-iENDIFNEXTWidthDoubleBottom = doublebottomtop-(BLEVMIN+LEVMIN)/2 // (top betwen local minimums) - (average of the las two local minimums)IF abs(BLEVMIN-LEVMIN) < Kdouble*WidthDoubleBottom THEN// <<<<<<< HERE WE HAVE A DOUBLE BOTTOM FOR TRADING >>>>>//DRAWTRIANGLE(POSLEVMIN,LEVMIN,POSdoublebottomtop,doublebottomtop,BPOSLEVMIN,BLEVMIN) COLOURED(0,255,0,200)ENDIFENDIF//--> Double tops//looking for the bottom between two local maximumsIF bearcross THENdoubletopbottom=low[BARINDEX-POSLEVMAX+1]//POSdoubletopbottom=BARINDEX-POSLEVMAX+1FOR i = (BARINDEX-POSLEVMAX+1) to (BARINDEX-BPOSLEVMAX-1) DOIF low[i] < doubletopbottom THENdoubletopbottom=low[i]//POSdoubletopbottom=BARINDEX-iENDIFNEXTWidthDoubleTop=(BLEVMAX+LEVMAX)/2 -doubletopbottomIF abs(BLEVMAX-LEVMAX) < Kdouble*WidthDoubleTop THEN// <<<<<<< HERE WE HAVE A DOUBLE TOP FOR TRADING >>>>>//DRAWTRIANGLE(POSdoubletopbottom,doubletopbottom,POSLEVMAX,LEVMAX,BPOSLEVMAX,BLEVMAX) COLOURED(255,0,0,200)ENDIFENDIF// Arrow up positionPosFlUp=BARINDEX-POSLEVMIN// Arrow down positionPosFlDwn=BARINDEX-POSLEVMAX// We screen arrows appeared during the last LgHisto UTCondBuyOk=(PosFlUp < LgHisto)CondSellOk=(PosFlDwn < LgHisto)// To check results onlyPosFl=posflup * 1000 + PosFlDwnSCREENER[CondBuyOk OR CondSellOk]( PosFl as "Pos.Up , Down")//RETURN LMA AS "Leo Moving Average", support as "support", resistance as "resistance", smoothLMA as "smooth LMA" //, lowest[round(0.75*period)](low[1]), highest[round(0.75*period)](high[1])05/13/2021 at 3:03 AM #169546Hello,
Voici une dernière version plus “présentable”, nettoyée de toutes les portions de code de l’indicateur (dessins flèches, triangles…), inutiles au screener.
Ca semble OK, je n’ai rien supprimé de trop, j’ai les mêmes résultats que la version précédente. 🙂
Bref, je laisse les experts du forum jouer avec ce screener et me dire ce qu’ils en pensent (pertinence des “signaux”, failles, améliorations possibles…).
Par avance, merci.
@+
Steve
Version12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576//LOCALS MINIMUMS AND MAXIMUMS USING LEO MOVING AVERAGE//Autor of indicator: LEO//Screener adaptation : Steve_//VARIABLES TO BE OPTIMIZEDPeriod=20 //Period for analysis// We screen arrows up/down appearing during last LgHisto timeframesLgHisto=5//-----------// Buy/sell conditionsCondBuyOK=0CondSellOk=0//Leo Moving Average, formula: LMA= WMA+(WMA-SMA)LMA = 2 * weightedaverage[period](close) - average[period](close)//Smoothed curve of Leo Moving Average// BARINDEX : index de la barre courante (0 à n), n=200 par défaut ?IF BARINDEX > period THENsmoothLMA = weightedaverage[period](LMA)ELSEsmoothLMA = undefinedENDIF// << Storage of minimums and maximums >>once posmintemp=10once posmaxtemp=1IF BARINDEX > 2 THEN// the value 0.75 is to ensure that the donchian channel is faster than the curves analysis (this value to be checked)IF low < lowest[round(0.75*period)](low[1]) THENposmintemp=BARINDEX //postition of minimum temporalENDIFIF high > highest[round(0.75*period)](high[1]) thenposmaxtemp=BARINDEX //position maximum temporalENDIFENDIF// << Detecting and locating a local minimums >>// Where the LMA is crossing the smoothed LMA, there is a maximum or minimum nearby// If there is a new local min/max, the previous one is stored in de varible B... (before)once POSLEVMIN=1once POSLEVMAX=1once bullcross=0once bearcross=0IF BARINDEX > period THEN // To avoid computer errorsbullcross = LMA crosses over smoothLMAbearcross = LMA crosses under smoothLMAENDIF// --> Locating a local minimumIF bullcross THENPOSLEVMIN = posmintempENDIF// --> Locating a local maximumIF bearcross THENPOSLEVMAX = posmaxtempENDIF// Arrow up positionPosFlUp = BARINDEX - POSLEVMIN// Arrow down positionPosFlDwn = BARINDEX - POSLEVMAX// We screen arrows appeared during the last LgHisto timeframesCondBuyOk = (PosFlUp < LgHisto)CondSellOk = (PosFlDwn < LgHisto)// To check results onlyPosFl = posflup * 1000 + PosFlDwnSCREENER[CondBuyOk OR CondSellOk]( PosFl as "Pos.Up , Down") -
AuthorPosts
Find exclusive trading pro-tools on