Wolfe waves indicator
Forums › ProRealTime English forum › ProBuilder support › Wolfe waves indicator
- This topic has 11 replies, 6 voices, and was last updated 1 year ago by robertogozzi.
Tagged: waves, Wolfe, Wolfe waves
-
-
04/08/2020 at 9:54 AM #125177
Hello,
It has been some time since I haven’t been around the forum, as I’m developing my own trade manager in Python. The goal is to trade manually, but let the risk management and the follow up of the trade to the trade manager (best way to earn money on market in my opinion). For people interested, I may commercialize it soon…Anyway, back to prt code.
As I don’t really use it, and I think a lot of people look at it, here is my code of the wolves wave…For people good with coding, I think my code embed some really interesting parts that can be reused. Given complexity of the code, some bugs may remain.Feel free to try to improve it also. I can help also explain the logic if there are some interests…
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702defparam calculateonlastbars=5000defparam drawonlastbaronly=falseONCE coefATR=1.5ONCE Period=10pinshow=0showline=1RcolorBuy=0GcolorBuy=255BcolorBuy=10RcolorSell=255GcolorSell=0BcolorSell=0//detection UTonce NbBar = 1if openyear<>openyear[1] and openyear[1]<>openyear[2] thenMybarminutes=15000elsif openmonth-openmonth[1]=3 or openmonth-openmonth[1]=-9 thenMybarminutes=11000elsif openmonth<>openmonth[1] and openmonth[1]<>openmonth[2] thenMybarminutes=10000elsif openday-openday[1]=7 or openday-openday[1]=-21 or openday-openday[1]=-22 or openday-openday[1]=-23 or openday-openday[1]=-24 thenMybarminutes=9000elsif openday<>openday[1] and openday[1]<>openday[2] thenMybarminutes=8000elsif BarIndex < NbBar+2 thenMyDay=daydayminutes = 1440*(MyDay-MyDay[1])MyHour=hourhourminutes = 60*(MyHour-MyHour[1])MyMin=minutebarminutes = MyMin - MyMin[1] + hourminutes + dayminutesbarminutes=abs(barminutes)Mybarminutes = lowest[NbBar](barminutes)[1]endifif Mybarminutes<>0 and Mybarminutes<10 thenRRatr=5elsif Mybarminutes<>0 and Mybarminutes<60 thenRRatr=3.5elseRRatr=2.5endif//1. on utilise des MM pour trouver les points hauts/basATR=averagetruerange[14](close)//Period=10DataF = CloselagF = ROUND((Period-1)/2)dF = (DataF+(DataF-DataF[lagF]))LMA = exponentialaverage[period](dF)//Smoothed curve of zero lag Moving AverageIF BARINDEX > period THENsmoothLMA=weightedaverage[period](LMA)ELSEsmoothLMA=undefinedENDIFif minbar=0 thenminbar=barindexendifif maxbar=0 thenmaxbar=barindexendifIF BARINDEX > PERIOD THEN //For avoid computer errorsbullcross=LMA crosses over smoothLMAbearcross=LMA crosses under smoothLMAENDIF//2. chaque fois qu'il y a un croisement de MM, on stocke le point extrème précédent et sa position, et on trouve le dernier point extrèmeIf bearcross then//on prend le dernier plus baslastmaxtemp=high[1]maxbartemp=barindex[1]for i=0 to barindex-minbar-1 doif high[i]>=lastmaxtemp thenlastmaxtemp=high[i]maxbartemp=barindex[i]endifnext//on verifie qu'il y a assez d'ampli entre le plus haut récent et le précédent plus bas, sinon on prend pas en compte.If lastmaxtemp-lastmin>ATR*CoefATR then//Si on a skippé un plus bas car pas assez d'ampli, on se retrouve donc avec 2 plus hauts. Si le plus récent est le plus haut, on essaye d'oublier le précédent plus haut. Si le précédent était plus haut, on ne prend pas en compte le dernierif barindex-maxbar<barindex-minbar thenif lastmaxtemp>lastmax thenlastmax=lastmaxtempmaxbar=maxbartempendif//si on est dans le cas normal d'un plus bas suivit d'un plus haut, alors on sauve les derniers plus hautselse//prevlastmax2=prevlastmax//prevmaxbar2=prevmaxbarprevlastmax=lastmaxprevmaxbar=maxbarlastmax=lastmaxtempmaxbar=maxbartempendifendif//test=prevlastmax2//drawtext("#test#",barindex,low-20,SansSerif,Bold,10) coloured (0,0,10)endifIf bullcross then//on prend le dernier plus baslastmintemp=low[1]minbartemp=barindex[1]for i=0 to barindex-maxbar-1 doif low[i]=<lastmintemp thenlastmintemp=low[i]minbartemp=barindex[i]endifnextIf lastmax-lastmintemp>ATR*CoefATR thenif barindex-minbar<barindex-maxbar thenif lastmintemp<lastmin thenlastmin=lastmintempminbar=minbartempendifelse//prevlastmin2=prevlastmin//prevminbar2=prevminbarprevlastmin=lastminprevminbar=minbarlastmin=lastmintempminbar=minbartempendifendifendifif pinshow thenDRAWTEXT("▼",prevmaxbar,prevlastmax,Dialog,Bold,12) coloured(255,0,0)endifif pinshow thenDRAWTEXT("▲",prevminbar,prevlastmin,Dialog,Bold,12) coloured(0,255,10)endif//3. Si on a une loi de Dow (2 plus bas montent, 2 plus hauts montent) et qu'on a un peu de vol entre les points, on peut tracer des obliques//neutre=1if lastmax>prevlastmax and lastmin>prevlastmin and prevlastmin<>0 and prevlastmax<>0 and prevlastmax>lastmin and ((abs(Lastmax-Lastmin)+abs(Prevlastmax-PrevLastmin))/2)>ATR*CoefATR and prevminbar>prevmaxbar and minbar>maxbar and lastmin<(lastmax-(lastmax-prevlastmin)*0.37) and short=0 and long=0 and lastmax>(prevlastmax-prevlastmin)*1.22+prevlastmin thenbull=-1endifif lastmin<prevlastmin and lastmax<prevlastmax and prevlastmax<>0 and prevlastmin<>0 and prevlastmin<lastmax and ((abs(Lastmax-Lastmin)+abs(Prevlastmax-PrevLastmin))/2)>ATR*CoefATR and prevmaxbar>prevminbar and maxbar>minbar and lastmax>(lastmin+(prevlastmax-lastmin)*0.37) and long=0 and short=0 and lastmin<prevlastmax-(prevlastmax-prevlastmin)*1.22 thenbull=1endif//test=lastmin<prevlastmin and lastmax<prevlastmax and prevlastmax<>0 and prevlastmin<>0 and prevlastmin<lastmax////drawtext("#test#",barindex,high+ATR/5,SansSerif,Bold,10) coloured (0,0,10)//test=lastmin//drawtext("#test#",barindex,low-ATR,SansSerif,Bold,10) coloured (255,0,10)if bull[1]=0 and bull=1 thenW1upbar=prevminbarW1up=prevlastminW2upbar=prevmaxbarW2up=prevlastmaxW3upbar=minbarW3up=lastminW4up=lastmaxW4upbar=maxbarendifif bull[1]=0 and bull=-1 thenW1dnbar=prevmaxbarW1dn=prevlastmaxW2dnbar=prevminbarW2dn=prevlastminW3dn=lastmaxW3dnbar=maxbarW4dnbar=minbarW4dn=lastminendif//if bull=1 then//endif//Angle13=low crosses under W3up//drawtext("#Angle13#",barindex,high,SansSerif,Bold,16) coloured (0,255,10)//si on a 4 vagues et qu'on dépasse le point 4, on trace les éléments graphiquesif bull=1 and ((low<W3up-ATR*0.75 and low[1]>W3up-ATR*0.75) or (low<W3up-ATR and bull[1]=0)) and wolve=0 thenAngle13=tan(((W1up-W3up)/W1up*100)/(W3upbar-W1upbar))Angle24=tan(((W4up-W2up)/W2up*100)/(W4upbar-W2upbar))AngleTP3=tan(((W4up-W1up)/W1up*100)/(W4upbar-W1upbar))//test=(W1up-W3up)/ATR/(W3upbar-W1upbar)//drawtext("#test#",barindex,low,SansSerif,Bold,10) coloured (0,0,10)if showline thendrawsegment(W1upbar,W1up,barindex,W3up-(((barindex-W3upbar)*Atan(Angle13))/100*W3up)) coloured(0,0,0)endifdrawtext("1",W1upbar,W1up-ATR/2,SansSerif,Bold,16) coloured (RcolorBuy,GcolorBuy,BcolorBuy)drawtext("2",W2upbar,W2up+ATR/2,SansSerif,Bold,16) coloured (RcolorBuy,GcolorBuy,BcolorBuy)drawtext("3",W3upbar,W3up-ATR/2,SansSerif,Bold,16) coloured (RcolorBuy,GcolorBuy,BcolorBuy)drawtext("4",W4upbar,W4up+ATR/2,SansSerif,Bold,16) coloured (RcolorBuy,GcolorBuy,BcolorBuy)wolve=1endifIf bull=-1 and ((high>W3dn+ATR*0.75 and high[1]<W3dn+ATR*0.75) or (high>W3dn+ATR and bull[1]=0)) and wolve=0 thenAngle13=tan(((W3dn-W1dn)/W1dn*100)/(W3dnbar-W1dnbar))Angle24=tan(((W4dn-W2dn)/W2dn*100)/(W4dnbar-W2dnbar))AngleTP3=tan(((W1dn-W4dn)/W1dn*100)/(W4dnbar-W1dnbar))//test=(W1up-W3up)/ATR/(W3upbar-W1upbar)//drawtext("#test#",barindex,low,SansSerif,Bold,10) coloured (0,0,10)//test=Angle13//drawtext("#test#",barindex,high+ATR/5,SansSerif,Bold,10) coloured (0,0,10)if showline thendrawsegment(W1dnbar,W1dn,barindex,W3dn+(((barindex-W3dnbar)*Atan(Angle13))/100*W3dn)) coloured(0,0,0)//drawsegment(W2dnbar,W2dn,barindex,W4dn+(((barindex-W4dnbar)*Atan(Angle24))/100*W4dn)) coloured(0,0,0)//test=angle13//drawtext("#test#",barindex,low,SansSerif,Bold,10) coloured (0,0,10)endifdrawtext("1",W1dnbar,W1dn+ATR/2,SansSerif,Bold,16) coloured (RcolorSell,GcolorSell,BcolorSell)drawtext("2",W2dnbar,W2dn-ATR/2,SansSerif,Bold,16) coloured (RcolorSell,GcolorSell,BcolorSell)drawtext("3",W3dnbar,W3dn+ATR/2,SansSerif,Bold,16) coloured (RcolorSell,GcolorSell,BcolorSell)drawtext("4",W4dnbar,W4dn-ATR/2,SansSerif,Bold,16) coloured (RcolorSell,GcolorSell,BcolorSell)wolve=-1endif//test=barindex//drawtext("#test#",barindex,low,SansSerif,Bold,10) coloured (0,0,10)/////////////////////////// Heiken Ashi SIGNAL for WAVE 5//Activer les trades sur signal ou pas (si les cassures n'ont pas marché avant)signalHA=0//appelle au Half trend 2 pour Buy/sell levelampliHT=2once lowpricei2 = 0once highpricei2 = 0once lowma2 = 0once highma2 = 0if barindex>1 thenaclose=(open+close+low+high)/4aopen=(aopen[1]+aclose[1])/2xHigh = Max(aOpen, aClose)xLow = Min(aOpen, aClose)ahigh = Max(High,xHigh)alow = Min(Low,xLow)endifamplitude2=ampliHTlowpricei2 = Lowest[Amplitude2](alow)highpricei2 = Highest[Amplitude2](ahigh)lowma2 = average[Amplitude2](alow)highma2 = average[Amplitude2](ahigh)if barindex>Amplitude2 thenif(nexttrend2=1) thenmaxlowprice2=Max(lowpricei2,maxlowprice2)if(highma2<maxlowprice2 and Close<Low[1]) thentrend2=1.0nexttrend2=0minhighprice2=highpricei2endifendifif(nexttrend2=0) thenminhighprice2=Min(highpricei2,minhighprice2)if(lowma2>minhighprice2 and Close>High[1]) thentrend2=0.0nexttrend2=1maxlowprice2=lowpricei2endifendifif(trend2=0.0) thenif(trend2[1]<>0.0) thenup2=down2[1]elseup2=Max(maxlowprice2,up2[1])endifdown2=0.0elseif(trend2[1]<>1.0) thendown2=up2[1]elsedown2=Min(minhighprice2,down2[1])endifup2=0.0endifendifhalftrend2=undefinedif up2>0 thenhalftrend2 = up2elsif down2>0 thenhalftrend2 = down2endif/////////////////////////// Heiken Ashi Current TFIF BarIndex>0 THENxClose = (open+high+low+close)/4xOpen = (xOpen[1]+xClose[1])/2xHigh = max(High,max(xOpen,xClose))xLow = min(Low,min(xOpen,xClose))ELSExClose = (open+high+low+close)/4xOpen = openxHigh = max(High,max(xOpen,xClose))xLow = min(Low,min(xOpen,xClose))endifFiltreZoneHL=1if FiltreZoneHL thenRRup=abs(low-lowest[10](low))<ATR2*1.5RRdn=abs(high-highest[10](high))<ATR2*1.5elseRRUP=1RRDn=1endifCrossUp=close>halftrend2CrossDn=close<halftrend2SignalHASmoothed=1LimSurAchatVente=180If SignalHASmoothed thendist=AverageTrueRange[50](close)*0.8//15 //distance MA50ma7=average[7]ma20=average[20]ma50=average[50]Up1=ma7<ma50 and ma7<ma20 and ma50-open>dist*pointsizeDn1=ma7>ma50 and ma7>ma20 and open-ma50>dist*pointsize//--External parametersSmoother=5ys1 = ( high + low + close * 2 ) / 4rk3 = exponentialaverage[Smoother](ys1)rk4 = std[Smoother](ys1)if rk4<>0 thenrk5 = (ys1 - rk3 ) * 200 / rk4rk6 = exponentialaverage[Smoother](rk5)up = exponentialaverage[Smoother](rk6)down = exponentialaverage[Smoother](up)endif//--Overbought/Oversold/Warning DetailUPshape = up > LimSurAchatVente and up>downDOWNshape = down < -LimSurAchatVente and up<downHAD= upshape or upshape[1] or upshape[2] or upshape[3] or Dn1HAU= downshape or downshape[1] or downshape[2] or downshape[3] or Up1elseHAU=1HAD=1endifHAUp2= xClose-xOpen>0HADn2= xClose-xOpen<0///////////////////////////ATR2=averagetruerange[20](close)RatioBougie= abs(xOpen - xClose)DojiHA= 1//RatioBougie<=ATR2/3 or RatioBougie[1]<=ATR2/3HADecroit= summation[3](RatioBougie <RatioBougie[1])>0////////////////////////////////if HAup2 and DojiHA and HADecroit and HAU and RRUP thensignalup=1elsesignalup=0endifif HADn2 and DojiHA and HADecroit and HAD and RRDn thensignaldn=1elsesignaldn=0endifif trendbreak=1 and ENTRYbar<>0 and wolve=1 thenif close<trendbreakprice thentrendbreak=0endifendifif trendbreak=1 and ENTRYbar<>0 and wolve=-1 thenif close>trendbreakprice thentrendbreak=0endifendif//test=wolve//drawtext("#test#",barindex,high+ATR,SansSerif,Bold,10) coloured (255,0,10)if wolve=1 and trendbreak=0 then//si les prix cassent l'oblique 1-3 par le bas puis cloture audessus, que la bougie soit verte et que le TP1 ne soit pas déjà atteint et que le RR avec le stop soit bon//test=close[1]<W3up+(((barindex[1]-W3upbar)*Atan(Angle24))/100*W3up)-ATR/5 and high>W3up+(((barindex-W3upbar)*Atan(Angle24))/100*W3up)+ATR/5//drawtext("#test#",barindex,high+ATR,SansSerif,Bold,10) coloured (255,0,10)if low[1]<W3up-(((barindex[1]-W3upbar)*Atan(Angle13))/100*W3up)+ATR/5 and close>W3up-(((barindex-W3upbar)*Atan(Angle13))/100*W3up)+ATR/5 and long[1]=0 and close<W1up-ATR thenSL=lowest[8](low)-ATRtrendbreak=1ENTRY=high+ATR/5ENTRYbar=barindextrendbreakprice=low-ATR/5//si les prix cassent l'oblique 2-4 reportée sur le point 3, puis cloture au dessus, que la bougie soit verte et que le TP1 ne soit pas déjà atteint et que le RR avec le stop soit bonelsif low[1]<W3up+(((barindex[1]-W3upbar)*Atan(Angle24))/100*W3up)-ATR/5 and close>W3up+(((barindex-W3upbar)*Atan(Angle24))/100*W3up)+ATR/5 and long[1]=0 and close<W1up-ATR thenSL=lowest[8](low)-ATRtrendbreak=1ENTRY=high+ATR/5ENTRYbar=barindextrendbreakprice=low-ATR/5//si les prix cassent l'oblique 2-4, puis cloture au dessus, que la bougie soit verte et que le RR avec le stop soit bonelsif open[1]<W4up+(((barindex[1]-W4upbar)*Atan(Angle24))/100*W4up) and close>W4up+(((barindex-W4upbar)*Atan(Angle24))/100*W4up)+ATR/5 and long[1]=0 and high<min(W1up,W4up)-ATR thenSL=lowest[8](low)-ATRtrendbreak=1ENTRY=high+ATR/5ENTRYbar=barindextrendbreakprice=low-ATR/5//si on a eu un signal achat, que le stop n'est pas trop loin et que l'entrée n'est pas déjà au dessus de la vague 3 ou du TP1elsif (signalup=1 or signalup[1]=1) and CrossUp and long[1]=0 and halftrend2-lowest[8](low)<RRatr*ATR*ATR and halftrend2<W3up and halftrend2<W1up and signalHA=1 thenSL=lowest[8](low)-ATRtrendbreak=1ENTRY=max(open,halftrend2+ATR/5)ENTRYbar=barindextrendbreakprice=low-ATR/5//else//trendbreak=0endifendifif wolve=-1 and trendbreak=0 then//test=high[1]>W3dn+(((barindex[1]-W3dnbar)*Atan(Angle13))/100*W3dn)+ATR/5 and low<W3dn+(((barindex-W3dnbar)*Atan(Angle13))/100*W3dn)-ATR/5//drawtext("#test#",barindex,high+ATR,SansSerif,Bold,10) coloured (255,0,10)if high[1]>W3dn+(((barindex[1]-W3dnbar)*Atan(Angle13))/100*W3dn)+ATR/5 and close<W3dn+(((barindex-W3dnbar)*Atan(Angle13))/100*W3dn)-ATR/5 and short[1]=0 and close>W1dn+ATR thenSL=highest[8](high)+ATRtrendbreak=1ENTRY=low-ATR/5ENTRYbar=barindextrendbreakprice=high+ATR/5elsif high[1]>W3dn+(((barindex[1]-W3dnbar)*Atan(Angle24))/100*W3dn)+ATR/5 and close<W3dn+(((barindex-W3dnbar)*Atan(Angle24))/100*W3dn)-ATR/5 and short[1]=0 and close>W1dn+ATR thenSL=highest[8](high)+ATRtrendbreak=1ENTRY=low-ATR/5ENTRYbar=barindextrendbreakprice=high+ATR/5elsif open[1]>W4dn+(((barindex[1]-W4dnbar)*Atan(Angle24))/100*W4dn) and close<W4dn+(((barindex-W4dnbar)*Atan(Angle24))/100*W4dn)-ATR/5 and short[1]=0 and low>max(W1dn,W4dn)+ATR then//test=W4dn+(((barindex-W4dnbar)*Atan(Angle24))/100*W4dn)//drawtext("#test#",barindex,high+ATR,SansSerif,Bold,10) coloured (255,0,10)SL=highest[8](high)+ATRtrendbreak=1ENTRY=low-ATR/5ENTRYbar=barindextrendbreakprice=high+ATR/5elsif (signaldn=1 or signaldn[1]=1) and CrossDn and short[1]=0 and highest[8](high)-halftrend2<RRatr*ATR*ATR and halftrend2>W3dn and halftrend2>W1dn and signalHA=1 thenSL=highest[8](high)+ATRtrendbreak=1ENTRY=min(open,halftrend2-ATR/5)ENTRYbar=barindextrendbreakprice=high+ATR/5endifendifif trendbreak=1 and ENTRYbar<>0 and barindex-ENTRYbar>10 thentrendbreak=0endif//test=wolve//drawtext("#test#",barindex,high+2,SansSerif,Bold,10) coloured (0,0,10)//Si on a eu un signal Achat Vente, on prend le trade à la cassure du nieau d'entréeif trendbreak and bull[1]=1 and long[1]=0 thenif high>entry thenDRAWARROWUP(barindex,low) coloured (0,255,10)drawtext("wolve",barindex,low-ATR/5,SansSerif,Bold,10) coloured (RcolorBuy,GcolorBuy,BcolorBuy)drawtext("---",barindex,ENTRY,SansSerif,Bold,16) coloured (RcolorBuy,GcolorBuy,BcolorBuy)long=1TP1=0TP2=0TP3=0wolve=0trendbreak=0bull=0endifendifif trendbreak and bull[1]=-1 and short[1]=0 thenif low<entry thenDRAWARROWDOWN(barindex,high) coloured (RcolorSell,GcolorSell,BcolorSell)drawtext("wolve",barindex,high+ATR/5,SansSerif,Bold,10) coloured (RcolorSell,GcolorSell,BcolorSell)drawtext("---",barindex,ENTRY,SansSerif,Bold,16) coloured (RcolorSell,GcolorSell,BcolorSell)short=1wolve=0TP1=0TP2=0TP3=0trendbreak=0bull=0endifendif//GESTION SLIf short=1 and high>SL thenshort=0if SL=entry thendrawtext("SL BE wolve",barindex,high+ATR/5,SansSerif,Bold,10) coloured (RcolorSell,GcolorSell,BcolorSell)elsedrawtext("SL wolve",barindex,high+ATR/5,SansSerif,Bold,10) coloured (RcolorSell,GcolorSell,BcolorSell)endif//drawtext("#SL#",barindex,SL,SansSerif,Bold,16) coloured (255,0,10)drawtext("---",barindex,SL,SansSerif,Bold,16) coloured (RcolorSell,GcolorSell,BcolorSell)endifIf long=1 and low<SL thenlong=0if SL=entry thendrawtext("SL BE wolve",barindex,low-ATR/5,SansSerif,Bold,10) coloured (RcolorSell,GcolorSell,BcolorSell)elsedrawtext("SL wolve",barindex,low-ATR/5,SansSerif,Bold,10) coloured (RcolorSell,GcolorSell,BcolorSell)endifdrawtext("---",barindex,SL,SansSerif,Bold,16) coloured (RcolorSell,GcolorSell,BcolorSell)endif///GESTION TP SHORTif entry-W1dn<4*ATR thenTP1Sell=W1dnelseTP1Sell=W3dnendifIf short=1 and low<TP1Sell and TP1=0 thendrawtext("TP1 wolve",barindex,low-ATR,SansSerif,Bold,10) coloured (RcolorSell,GcolorSell,BcolorSell)drawtext("---",barindex,TP1Sell,SansSerif,Bold,16) coloured (RcolorSell,GcolorSell,BcolorSell)if entry-TP1Sell>ATR thenSL=ENTRY//endifendifTP1=1endifIf short=1 and low<W4dn+ATR/5 and TP2=0 thendrawtext("TP2 wolve",barindex,low-ATR,SansSerif,Bold,10) coloured (RcolorSell,GcolorSell,BcolorSell)drawtext("---",barindex,W4dn+ATR/5,SansSerif,Bold,16) coloured (RcolorSell,GcolorSell,BcolorSell)//SL=W1dnTP2=1SL=ENTRY//short=0endifIf short=1 and low<W4dn-(((barindex-W4dnbar)*Atan(AngleTP3))/100*W4dn) and TP3=0 thendrawtext("TP3 wolve",barindex,low-ATR,SansSerif,Bold,10) coloured (RcolorSell,GcolorSell,BcolorSell)drawtext("---",barindex,W4dn-(((barindex-W4dnbar)*Atan(AngleTP3))/100*W4dn),SansSerif,Bold,16) coloured (RcolorSell,GcolorSell,BcolorSell)TP3=1short=0if showline thendrawsegment(W1dnbar,W1dn,barindex,W4dn-(((barindex-W4dnbar)*Atan(AngleTP3))/100*W4dn)) coloured(0,0,0)endifendif///GESTION TP LONGif W1up-entry<4*ATR thenTP1buy=W1upelseTP1Buy=W3upendifIf long=1 and high>TP1Buy and TP1=0 thendrawtext("TP1 wolve",barindex,high+ATR,SansSerif,Bold,10) coloured (RcolorBuy,GcolorBuy,BcolorBuy)drawtext("---",barindex,TP1Buy,SansSerif,Bold,16) coloured (RcolorBuy,GcolorBuy,BcolorBuy)if TP1Buy-entry>ATR thenSL=ENTRY//endifendifTP1=1endifIf long=1 and high>W4up-ATR/5 and TP2=0 thendrawtext("TP2 wolve",barindex,high+ATR,SansSerif,Bold,10) coloured (RcolorBuy,GcolorBuy,BcolorBuy)drawtext("---",barindex,W4up-ATR/5,SansSerif,Bold,16) coloured (RcolorBuy,GcolorBuy,BcolorBuy)//SL=W1upTP2=1SL=ENTRY//long=0endifIf long=1 and high>W4up+(((barindex-W4upbar)*Atan(AngleTP3))/100*W4up) and TP3=0 thendrawtext("TP3 wolve",barindex,high+ATR,SansSerif,Bold,10) coloured (RcolorBuy,GcolorBuy,BcolorBuy)drawtext("---",barindex,W4up+(((barindex-W4upbar)*Atan(AngleTP3))/100*W4up),SansSerif,Bold,16) coloured (RcolorBuy,GcolorBuy,BcolorBuy)TP3=1long=0if showline thendrawsegment(W1upbar,W1up,barindex,W4up+(((barindex-W4upbar)*Atan(AngleTP3))/100*W4up)) coloured(0,0,0)endifendifif long=1 and barindex-ENTRYBAR>100 thenlong=0bull=0wolve=0drawtext("end wolve",barindex,high+ATR,SansSerif,Bold,10) coloured (RcolorSell,GcolorSell,BcolorSell)endifif short=1 and barindex-ENTRYBAR>100 thenshort=0bull=0wolve=0drawtext("end wolve",barindex,high+ATR,SansSerif,Bold,10) coloured (RcolorSell,GcolorSell,BcolorSell)endif//Si on a eu une figure de wolfe, mais qui est invalidée, on reset toutif bull=1 and (high>lastmax or (bullcross and lastmin>prevlastmin) or (bearcross and bull[1]=1)) thenbull=0wolve=0endifif bull=-1 and (low<lastmin or (bearcross and lastmax<prevlastmax) or (bullcross and bull[1]=-1)) then//if bull=-1 and low<lastmin thenbull=0wolve=0endifreturn04/08/2020 at 10:15 AM #12518005/08/2020 at 11:05 AM #13059105/08/2020 at 1:16 PM #13061405/09/2020 at 6:56 PM #130788It’s ok now.
My error was because of too much units on the graph.
As it’s limited to 5000 by program, I had an error message.
Congratulation for this indic, it works perfectly !
Is it possible to convert it to a screener easily ? For example when point 4 is confirmed or when price are near point 5 ?
Thanks a lot for sharing.
Thierry
12/22/2020 at 1:51 PM #154891Hi guys,
Fantastic indicator, what a job! Thanks to Stefou for sharing.
I use the indicator on 12 templates in various timeframe charts. Because the Wolfe pattern now only shows itself when it is completed, I sometimes do not immediately notice.
Is it possible to program a sound signal and/or popup after the 4 highs/ lows have been formed? (Line 234 till 260 in the script)
And if so, is this also possible at the first crossing of (the continuation of) line 1-3 (point 5)?
Or is there another option, for example by setting an alert?
Thanks in advance!
04/22/2021 at 11:55 AM #16777905/04/2022 at 7:54 AM #192623Merci pour le partage de cette indicateurBeau travailThank you for sharing this indicator
Nice work
05/04/2022 at 8:45 AM #192626Only post in the language of the forum that you are posting in. For example English only in the English speaking forums and French only in the French speaking forums.
Thanks 🙂
05/04/2022 at 10:28 AM #192640More Wolfes Waves related links:
wolf (1) , Wolf Wave (1) , wolf waves (2) , Wolfe (1) , Wolfe Wave (1) , Wolfe waves (1)
and on the marketplace:
12/09/2022 at 11:39 AM #20546012/15/2022 at 4:07 PM #205823 -
AuthorPosts
Find exclusive trading pro-tools on