PATTERN CUP & HANDLE
Forums › ProRealTime forum Italiano › Supporto ProScreener › PATTERN CUP & HANDLE
- This topic has 21 replies, 3 voices, and was last updated 6 months ago by robertogozzi.
-
-
03/20/2024 at 5:26 PM #230137
Buona sera Roberto, chiedevo uno screener su grafici weekly che riproponga il pattern cup & handle (letteralmente coppa con manico) con i seguenti parametri:
prezzo sopra la sma 200 weekly;
il prezzo dal punto (a) scende per un minimo di 7 settimane, ma può essere anche molto di più (10 20 30 settimane) e scende per una % che va dal 15% al 35%, formando una base a cui segue un rialzo fino al punto (a). Mi interessa che lo screeener estragga titoli
che sono ritornati dopo la discesa al punto (a), per monitorare il break out o la formazione dell handle.
Sperando di essermi spiegato, ti ringrazio.
03/22/2024 at 3:40 PM #230283Tenendo presenti quesi codici (indicatore e screener), qual’è il punto A?
https://www.prorealcode.com/prorealtime-indicators/cup-with-handle/
https://www.prorealcode.com/prorealtime-market-screeners/cup-with-handle-screener/
03/25/2024 at 7:47 PM #230439Hai ragione Roberto, volevo uno screener Cup with handle e sono partito da un ipotetico punto A per spiegare. Quello però che hai allegato è per operazioni intraday, io lo volevo se possibile, con grafici daily di fine giornata. Grazie.
04/01/2024 at 9:13 PM #230861Qual’è il punto A?
04/02/2024 at 7:44 AM #230866Buon giorno Roberto, possiamo fare screener con 2 punti A?
1 dal minimo a 52 settimane aumento del 30% (punto A) e poi da qui costituzione della base come sopra descritto (un minimo di 7 settimane, ma può essere anche molto di più (10 20 30 settimane) e scende per una % che va dal 15% al 35%, formando una base a cui segue un rialzo fino al punto (a). Mi interessa che lo screeener estragga titoli che sono ritornati dopo la discesa al punto (a), per monitorare il break out o la formazione dell handle.
2 dalla media mobile a 200 giorni un aumento del 20% (punto A) e poi da e poi da qui costituzione della base come sopra descritto (un minimo di 7 settimane, ma può essere anche molto di più 10 20 30 settimane) e scende per una % che va dal 15% al 35%, formando una base a cui segue un rialzo fino al punto (a). Mi interessa che lo screeener estragga titoli che sono ritornati dopo la discesa al punto (a), per monitorare il break out o la formazione dell handle.
Per parametri daily poi cambierò io i parametri eventualmente, grazie mille.
04/06/2024 at 9:47 PM #231167Tu hai scritto di due diversi punti A (il minimo a 52 settimane aumento del 30% e la media mobile a 200 giorni un aumento del 20%), quindi ti servono due screener separati?
Puoi postare due foto delle due diverse condizioni con i rispettivi punti A indicati e con indicato il momento che deve essere segnalato?
04/07/2024 at 10:02 AM #231180Buon giorno, si Roberto 2 screener separati uno dove l aumento del 30% (punto A) è dal giorno minimo a 52 settimane e il secondo screener dove il punto A è il giorno dove il titolo raggiunge il 30% di aumento dal superamento della media mobile a 200 giorni, per poi ritracciare con i parametri come sopra descritti (discesa dal 15 al 35% in un periodo che va da un minimo di 7 settimane (35gg) a un massimo di 30 settimane (150 gg) ), formare la base e risalire al punto A formando il pattern cup and handle.
04/17/2024 at 1:47 PM #231620Sono interessato anch’io sul Daily /Azionario. Mi sembra di capire che gli esempi che ci hai mandato sono tarati per i Futures ??
04/18/2024 at 4:46 PM #231666Ho provato ad usare lo script fatto da Nicholas tempo fa che riporto in allegato ma, a me servirebbe che lo screener mi indicasse una Cup with Handle in formazione, mi và bene che sia senza “handle” in modo che possa tenere sotto controllo il titolo prima di individuare il punto d’ingresso, ma non mi va bene che trovi le CwH di settimane fà…..
Come posso modificare lo script per fare questo ?
Grazzzzie
Allego il vecchio codice
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758//PRC_CupFormations (beta) | screener//25.06.2018//Nicolas @ www.prorealcode.com//Sharing ProRealTime knowledge//adapted from MetaStock code versionParameter = 1.5//Param( "parameter", 1.5, 1, 10, 0.1 )C = closeFilC = ( log( C ) )eps = 0.0000000001// basic Definitionsfor i = 1 to barindex doif c[i]>c*parameter thenBarsSincex=barindex-barindex[i]breakendifnextsemicupperiod = Max( BarsSincex, 1 ) + 1Ptop = highest[Semicupperiod](FilC)Pbot = lowest[Semicupperiod](FilC)boxheight = abs( Ptop - Pbot ) / 5boxlength = Max( round( semicupperiod / 5 ), 1 )// Grid Nodesbar = max(1,barindex)b0 = bar - semicupperiod + 1b5 = barb1 = Min( b0 + boxlength, b5 )b2 = Min( b1 + boxlength, b5 )b3 = Min( b2 + boxlength, b5 )b4 = Min( b3 + boxlength, b5 )L2 = Pbot + 2 * boxheightL3 = Pbot + 3 * boxheight// Directional StrengthDiff = FilC - FilC[1]UpSum2 = Summation[2*boxlength]( Max( Diff, 0 ) )DnSum2 = Summation[2*boxlength]( Max( -Diff, 0 ) )DSX1 = abs( UpSum2 - DnSum2 ) / ( eps + UpSum2 + DnSum2 ) * 100UpSum3 = Summation[3*boxlength]( Max( Diff, 0 ) )DnSum3 = Summation[3*boxlength]( Max( -Diff, 0 ) )DSX2 = abs( UpSum3 - DnSum3 ) / ( eps + UpSum3 + DnSum3 ) * 100// Coditionsif(bar>b2) thentest1=summation[bar-b2](FilC>L3)=0endifif(bar>b4) thentest2=summation[bar-b4](FilC>L2)=0endifisSemicup = ( semicupperiod >= 20 ) AND ( DSX1[ b5 - b2] > 25 ) AND ( DSX2 < 25 ) AND test1 and test2LIS = isSemicupscreener[LIS]04/20/2024 at 4:29 PM #231740Nicolas e Roberto please potete rispondere ??
Grazie
04/21/2024 at 3:56 PM #231780Proverò, ma avrò bisogno di altri 2-3 giorni di tempo.
04/22/2024 at 10:49 AM #231805Perfetto, grazie Roberto.
04/26/2024 at 9:15 AM #231963Mi servirà qualche giorno in più, farò prima i due screener iniziali e poi l’altro.
05/10/2024 at 4:53 PM #232536C’è voluto molto tempo perché è complesso dovere entrare nella logica di chi l’ha scritto per un numero di ore sufficiente, perché se mi ci mettedsdi solo un paio d’ore e poi mi dedicassi ad altro, perderei di nuovo il filo logico al momento di riprendere in mano quel coduice.
Ad ogni modo, questo è il codice dello screener richiesto nel primo post:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136Sma200 = average[200,0](close)//variablesearchzone=23B5searchzone=searchzone//23 //nombre de bougies récentes où le plus haut est recherchéP1Price = 0for i = 0 to B5searchzoneif high[i] > P1Price thenP1Price = high[i]B5=i //de droite à gaucheB5index = BarIndex[i] //B5 index de bougie où le plus haut a été trouvéendifnext// En partant de B5 (le plus haut trouvé à l'étape précédente), trouver la bougie avec un plus haut égal ou inférieur à P1 et pour laquelle la bougie précédente (plus ancienne) a un plus haut supérieur à P1 ; soit B0 l'indice temps de cette bougieB0price=0for j=B5 to B5+172 DOIf high[j] <= P1Price and high[j+1] > P1Price thenB0price=high[j]B0=j //de droite à gaucheB0index=barindex[j]endifnext// Soit P0 le plus bas entre B0 et B5P0price = 10000for k = B5 to B0if low[k] < P0price then//P0index=barindex[K]//P0=kP0price = low[k]endifnext// Noeuds du quadrillageB0B5=abs(B0-B5)boxheight = abs( P1price - P0price ) / 5boxlength = round( (B0B5-0.5) / 5 )reste=B0B5 MOD 5B4= B5 + boxlength//B4index=B5index-boxlengthB3=B4+boxlength//B3index= B4index-boxlengthB2=B3+boxlength//B2index=B3index-boxlengthB1=B2+boxlength+reste//B1index=B2index-boxlength-reste//P1= P1price//L0= P0priceL1= P0price + boxheightL2 = P0price + 2 * boxheightL3 = P0price + 3 * boxheight//L4 = P0price + 4 * boxheightflag=0d=abs((b1-b4))+1e=b4deborde=highest[max(1,d)](close)[e]//if islastbarupdate thenIF deborde<l3 THENflag=1endif//endifflag1=0f=abs((b2-b3))+1deborde1=highest[max(1,f)](close)[b3]IF deborde1<l2 THENflag1=1endifflagB0B1B4B5=0fl=abs((b0-b1))+1fm=abs((b4-b5))+1lowdebordea=lowest[max(1,fl)](low)[b1]lowdebordeb=lowest[max(1,fm)](low)[b5]IF (lowdebordea or lowdebordeb) <(L2-(boxheight/3)) thenflagB0B1B4B5=1endifflagB1B2B3B4=0fn=abs((b1-b2))+1Fo=abs((b3-b4))+1lowdebordec=lowest[max(1,fn)](low)[b2]lowdeborded=lowest[max(1,fo)](low)[b4]IF (lowdebordec or lowdeborded) <(L1-(boxheight/3)) thenflagB1B2B3B4=1endiflowdedans=0lowdedans=(flagB0B1B4B5 or flagB1B2B3B4)>0If barindex > B5index thenplusgrandL2=summation[B5](low>L2)=0endif//trendhaussier=ExponentialAverage[4](close)[b0]>ExponentialAverage[4](close)[b0+5] or ExponentialAverage[4](close)[b0]>ExponentialAverage[4](close)[b0+10] or ExponentialAverage[4](close)[b0]>ExponentialAverage[4](close)[b0+15] or ExponentialAverage[4](close)[b0]>ExponentialAverage[4](close)[b0+20] or ExponentialAverage[4](close)[b0]>ExponentialAverage[4](close)[b0+25]//cote=high>lowlowanse=lowest[max(1,b5)](low)condition=flag=1 and flag1=1 and lowdedans=1 and plusgrandL2=0 and b0index<b5index and B0price>L3 and lowanse>((p1price-p0price)*0.5+(p0price))/*t = 255if condition then//---DRAWRECTANGLE(B5INDEX,lowanse,Barindex,lowanse) coloured("Green",t)//FILLCOLOR("Green",t)DRAWSEGMENT(B5INDEX,lowanse,Barindex,lowanse) coloured("Green",t) style(line,3)//---DRAWRECTANGLE(barindex,lowanse,Barindex,P1price)coloured("Green",t)//FILLCOLOR("Green",t)DRAWSEGMENT(barindex,lowanse,Barindex,P1price)coloured("Green",t) style(line,3)////---DRAWRECTANGLE(B0INDEX,P0price,B0INDEX,P1price) coloured("Green",t)//FILLCOLOR("Green",t)DRAWSEGMENT(B0INDEX,P0price,B0INDEX,P1price) coloured("Green",t) style(line,3)//---DRAWRECTANGLE(B0INDEX, L0, B5INDEX, L0) coloured("Green",t)//FILLCOLOR("Green",t)DRAWSEGMENT(B0INDEX, L0, B5INDEX, L0) coloured("Green",t) style(line,3)//---DRAWRECTANGLE(B5INDEX,P0price,B5INDEX,P1price) coloured("Green",t)//FILLCOLOR("Green",t)DRAWSEGMENT(B5INDEX,P0price,B5INDEX,P1price) coloured("Green",t) style(line,3)//if trendhaussier thenDRAWPOINT(b0index,high[b0]+0.01*high[b0],2)coloured(0,200,0,t)endifendif*/A1 = B0INDEX //A sinistraA2 = B5INDEX //A destraHH = P1price //top price of point ALL = P0price //low price of point Abars = (A2 - A1) + 1 //bars elapsed from leftmost and rigtmost point AGap = HH - LL //price gap between the highest and the lowest// pruice in the CUPPC = ceil(Gap * 100 / HH,1) //% LOSS//AX = 0FOR i = A1 + 6 TO A2j = Barindex - iIF LL[j] = lowest[Bars](low) thenAX = ibreakendifNEXT//c1 = ((AX - A1) >= 7)c2 = ((PC >= 15) AND (PC <= 35))c3 = (close > Sma200)c4 = (low <> high)Cond = condition AND c1 AND c2 AND c3 AND c4Screener[summation[1](Cond)](PC as "%")come si vede dalla foto, trova pochi elementi (ho selezionato TUTTI gli elenchi possibili) con i parametri indicati.
Le condizioni )vedi foto relativa) su cui agire per variare i parametri sono 4, anche se una è preferibile non cambiarla:
- riga 131 (c1) numero di barre minime che devono passare tra il punto A di sinistra ed il punto di discesa più basso, se viene cambiata questa va cambiata anche la riga 123 (dove va messo lo stesso valore dminuito di 1), come da foto relativa
- riga 132 (c2) percentuali, Minima e Massima, di discesa
- riga 133 (c3) prezzo sopra la Sma200
- riga 134 (c4) verifica che ci sia stato anche un minimo movimento di prezzo – questa è preferibile lasciarla così, secondo me, magari facendo una prova a disabilitarla.
oltre a cambiare i valori numerici, è possibile DISABILITARE ogni condizione aggiungendo, alla fine della riga della condizione da disabilitare, OR 1, in questo modo:
1c3 = (close > Sma200) OR 1Nei prossimi giorni, sempre con il dovuto tempo, tra un lavoro e l’altro e dando priorità a qualche risposta molto semplice, risponderò alle altre richieste nell’ordine sequenziale.
05/11/2024 at 9:44 AM #232544 -
AuthorPosts
Find exclusive trading pro-tools on