Comment Faire un screener faisant appel a un indicateur
Forums › ProRealTime forum Français › Support ProScreener › Comment Faire un screener faisant appel a un indicateur
- This topic has 5 replies, 2 voices, and was last updated 3 years ago by Nicolas.
-
-
04/25/2021 at 6:25 PM #168002
Bonjour a tous,
Toujours en recherche pour des screeners sur quelques elements que j’utilise mais qui m’eviterais de me faire un grand nombres d’actions une a une.
J’utilise un indicateur trouvé sur PROREALCODE appelé ppk dont voici le code. Il a été modifié pour ne faire apparaitre que les “points” principaux (hausse et baisse)
extrait du code pour ces 2 signaux:
12345678/bulldiv= BottomPointsInPPO ? d[1] : na // plots dots at bottoms in the PPOif BottomPointsInPPo thendrawtext("●",barindex[1],low-P[1],dialog,bold,30) coloured(0,255,255)endif//beardiv= TopPointsInPPO ? d[1]: na // plots dots at tops in the PPOif TopPointsInPPO thendrawtext("●",barindex[1],high+P[1],dialog,bold,30) coloured(255,0,0)endifEn fait j’aimerais pouvoir utiliser ce code pour 2 screeners, l’un qui me ressort les actions lorsque le signal “achat” point bleu sous les cours et “vente “point rouge sur les cours est apparu.(voir copie ecran joint)
Voici le code complet
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173// PEKIPEK NICO ON CHART by Matriciel 25.10.2018// <pre class="lang:probuilder decode:true ">longtermdiv = 1 //input(true, title="Use long term Divergences?")divlookbackperiod = 55//input(55, minval=1, title="Lookback Period")fastLength = 12//input(12, minval=1),slowLength= 26 //input(26,minval=1)//signalLength= 9 //input(9,minval=1)smoother = 2 //input(2,minval=1)source = customcloseP = (AverageTrueRange[2](close))fastMA = average[fastLength,1](source)slowMA = average[slowLength,1](source)mmacd = fastMA - slowMAmacd2=(mmacd/slowMA)*100d = average[smoother](macd2) // smoothing PPObullishPrice = lowpriceMins = (bullishPrice > bullishPrice[1] and bullishPrice[1] < bullishPrice[2]) or (low[1] = low[2] and low[1] < low and low[1] < low[3]) or (low[1] = low[2] and low[1] = low[3] and low[1] < low and low[1] < low[4]) or (low[1] = low[2] and low[1] = low[3] and low[1] and low[1] = low[4] and low[1] < low and low[1] < low[5]) // this line identifies bottoms and plateaus in the priceoscMins= d > d[1] and d[1] < d[2] // this line identifies bottoms in the PPOBottomPointsInPPO = oscMinsbearishPrice = highpriceMax = (bearishPrice < bearishPrice[1] and bearishPrice[1] > bearishPrice[2]) or (high[1] = high[2] and high[1] > high and high[1] > high[3]) or( high[1] = high[2] and high[1] = high[3] and high[1] > high and high[1] > high[4]) or (high[1] = high[2] and high[1] = high[3] and high[1] and high[1] = high[4] and high[1] > high and high[1] > high[5]) // this line identifies tops in the priceoscMax = d < d[1] and d[1] > d[2] // this line identifies tops in the PPOTopPointsInPPO = oscMax//avoid loops!if oscMins thencurrenttrough4=d[1] //valuewhen (oscMins, d[1], 0) // identifies the value of PPO at the most recent BOTTOM in the PPOoscMinsBar = barindexendifif oscMax thencurrenttrough5=d[1] //valuewhen (oscMax, d[1], 0) // identifies the value of PPO at the most recent TOP in the PPOoscMaxBar = barindexendifif priceMins thencurrenttrough6= low[1]//valuewhen (priceMins, low[1], 0) // this line identifies the low (price) at the most recent bottom in the PricepriceMinsBar = barindexif barindex-oscMinsBar<3 then //=line 47delayedlow=low[1]elsedelayedlow=0endifif priceMins<>priceMins[1] then //=line62longtermbullfilt=lowest[divlookbackperiod](source)[0]endifendifif priceMax thenpriceMaxBar = barindexcurrenttrough7= high[1]//valuewhen (priceMax, high[1], 0) // this line identifies the high (price) at the most recent top in the Priceif barindex-oscMaxBar<3 then //=line48delayedhigh=high[1]elsedelayedhigh=0endifif priceMax<>priceMax[1] then //=line63longtermbearfilt=highest[divlookbackperiod](source)[0]endifendif// only take tops/bottoms in price when tops/bottoms are less than 5 bars away//filter = barssince(priceMins) < 5 ? lowest(currenttrough6, 4) : naif barindex-priceMinsBar<5 thenfilter = lowest[4](currenttrough6)elsefilter=0endif//filter2 = barssince(priceMax) < 5 ? highest(currenttrough7, 4) : naif barindex-priceMaxBar<5 thenfilter2=highest[4](currenttrough7)elsefilter2=0endif//delayedbottom/top when oscillator bottom/top is earlier than price bottom/top//y11 = valuewhen(oscMins, delayedlow, 0)if oscMins then//y11=delayedlowy7=currenttrough4 //=line71y9 = currenttrough6 //=line74if oscMins<>oscMins[1] and filter2>0 theny2=filter2 //=line59y8=currenttrough4[1] //=line72endifendif//y12 = valuewhen(oscMax, delayedhigh, 0)if oscMax then//y12 = delayedhighy3=currenttrough5 //=line 65y10=currenttrough7 //=line75if oscMax<>oscMax[1] and filter>0 theny6=filter //=line60y4=currenttrough5[1] //=line66endifendif// only take tops/bottoms in price when tops/bottoms are less than 5 bars away, since 2nd most recent top/bottom in osc//y2=0//y6=0//for xyz=0 to barindex do////y2=valuewhen(oscMax, filter2, 1) // identifies the highest high in the tops of price with 5 bar lookback period SINCE the SECOND most recent top in PPO////y6=valuewhen(oscMins, filter, 1) // identifies the lowest low in the bottoms of price with 5 bar lookback period SINCE the SECOND most recent bottom in PPO//if filter2[xyz]<>filter2 and filter2>0 then//y2=filter2[xyz]//endif//if filter[xyz]<>filter and filter>0 then//y6=filter[xyz]//endif//if y2>0 and y6>0 then//break//endif//next//bulldiv= BottomPointsInPPO ? d[1] : na // plots dots at bottoms in the PPOif BottomPointsInPPo thendrawtext("●",barindex[1],low-P[1],dialog,bold,30) coloured(0,255,255)endif//beardiv= TopPointsInPPO ? d[1]: na // plots dots at tops in the PPOif TopPointsInPPO thendrawtext("●",barindex[1],high+P[1],dialog,bold,30) coloured(255,0,0)endifi = currenttrough5 < highest[divlookbackperiod](d) // long term bearish oscilator divergencei2 = y10 > longtermbearfilt // long term bearish top divergencei3 = delayedhigh > longtermbearfilt and delayedhigh>0 // long term bearish delayedhigh divergencei4 = currenttrough4 > lowest[divlookbackperiod](d) // long term bullish osc divergencei5 = y9 < longtermbullfilt // long term bullish bottom divi6 = delayedlow < longtermbullfilt and delayedlow>0// long term bullish delayedbottom div//plot(y10>y2 and oscMax and y3 < y4 ? d :na, title = "Bearish Divergence2", color=orange, style= circles, linewidth=4)if y10>y2 and oscMax and y3 < y4 then//drawtext("●",barindex,low-P,dialog,bold,14) coloured(255,165,0)endif//plot(y9<y6 and oscMins and y7 > y8 ? d :na, title = "Bullish Divergence2", color=purple, style=circles, linewidth=4)if y9<y6 and oscMins and y7 > y8 then//drawtext("●",barindex,high+P,dialog,bold,14) coloured(128,0,128)endif//plot(delayedlow<y6 and y7 > y8 ? d :na, title = "Bullish Divergence2", color=purple, style=circles, linewidth=4)if delayedlow<y6 and y7 > y8 and delayedlow>0 then//drawtext("●",barindex,low-P,dialog,bold,14) coloured(128,0,128)endif//plot(delayedhigh>y2 and y3 < y4 ? d :na, title = "Bearish Divergence2", color=orange, style= circles, linewidth=4)if delayedhigh>y2 and y3 < y4 and delayedhigh>0 then//drawtext("●",barindex,high+P,dialog,bold,14) coloured(255,165,0)endif//plot(long_term_div and oscMax and i and i2 ? d :na, title = "Bearish Divergence2", color=orange, style= circles, linewidth=4)if longtermdiv and oscMax and i and i2 then//drawtext("●",barindex,low-P,dialog,bold,14) coloured(255,165,0)endif//plot(long_term_div and oscMins and i4 and i5 ? d : na, title = "Bullish Divergence2", color=purple, style=circles, linewidth=4)if longtermdiv and oscMins and i4 and i5 then//drawtext("●",barindex,high+P,dialog,bold,14) coloured(128,0,128)endif//plot(long_term_div and i and i3 ? d :na, title = "Bearish Divergence2", color=orange, style= circles, linewidth=4)if longtermdiv and i and i3 then//drawtext("●",barindex,low-P,dialog,bold,14) coloured(255,165,0)endif//plot(long_term_div and i4 and i6 ? d : na, title = "Bullish Divergence2", color=purple, style=circles, linewidth=4)if longtermdiv and i4 and i6 then//drawtext("●",barindex,high+P,dialog,bold,14) coloured(128,0,128)endifreturn customclose as " customclose "Merci pour votre aide.
04/26/2021 at 8:57 AM #168019Le code ci-dessous screener les points bleus (affiche 1 dans la colonne de tri) et rouge (-1), j’ai supprimé le code inutile.
1234567891011121314151617181920212223242526fastLength = 12//input(12, minval=1),slowLength= 26 //input(26,minval=1)smoother = 2 //input(2,minval=1)source = customclosefastMA = average[fastLength,1](source)slowMA = average[slowLength,1](source)mmacd = fastMA - slowMAmacd2=(mmacd/slowMA)*100d = average[smoother](macd2) // smoothing PPOoscMins= d > d[1] and d[1] < d[2] // this line identifies bottoms in the PPOoscMax = d < d[1] and d[1] > d[2] // this line identifies tops in the PPOtest = 0if oscMins thentest = 1endifif oscMax thentest = -1endifscreener[test<>0](test as "direction")04/26/2021 at 5:37 PM #16810504/27/2021 at 7:15 AM #16813504/27/2021 at 7:33 AM #16813704/27/2021 at 7:37 AM #168139 -
AuthorPosts
Find exclusive trading pro-tools on