//@version=2 //Author= John F. Ehlers //Hilbert Sine Wave // // study("Sine Wave not overlay", shorttitle="SINE", overlay=false, precision=5) src=input(hl2, title="Source") fl=input(.5, title="Fast Limit") sl=input(.05, title="Slow Limit") divider=input(4,title="length hull") pi= 4* atan(1) DTR=pi/180 RTD=180/pi //sp = (4*src + 3*src[1] + 2*src[2] + src[3]) / 10.0 sp = wma(2*wma(src,round(divider/2))-wma(src,divider), round(sqrt(divider))) dt = (.0962*sp + .5769*nz(sp[2]) - .5769*nz(sp[4])- .0962*nz(sp[6]))*(.075*nz(p[1]) + .54) q1 = (.0962*dt + .5769*nz(dt[2]) - .5769*nz(dt[4])- .0962*nz(dt[6]))*(.075*nz(p[1]) + .54) i1 = nz(dt[3]) jI = (.0962*i1 + .5769*nz(i1[2]) - .5769*nz(i1[4])- .0962*nz(i1[6]))*(.075*nz(p[1]) + .54) jq = (.0962*q1 + .5769*nz(q1[2]) - .5769*nz(q1[4])- .0962*nz(q1[6]))*(.075*nz(p[1]) + .54) i2_ = i1 - jq q2_ = q1 + jI i2 = .2*i2_ + .8*nz(i2[1]) q2 = .2*q2_ + .8*nz(q2[1]) re_ = i2*nz(i2[1]) + q2*nz(q2[1]) im_ = i2*nz(q2[1]) - q2*nz(i2[1]) re = .2*re_ + .8*nz(re[1]) im = .2*im_ + .8*nz(im[1]) p1 = iff(im!=0 and re!=0, 2*pi/atan(im/re), nz(p[1])) p2 = iff(p1 > 1.5*nz(p1[1]), 1.5*nz(p1[1]), iff(p1 < 0.67*nz(p1[1]), 0.67*nz(p1[1]), p1)) p3 = iff(p2<6, 6, iff (p2 > 50, 50, p2)) p = .2*p3 + .8*nz(p3[1]) spp = .33*p + .67*nz(spp[1]) DCPeriod=round(spp+ 0.5) RealPart1=iff(0<=DCPeriod-1,0+sin(DTR*360*0/DCPeriod)*nz(sp[0]),0) RealPart2=iff(1<=DCPeriod-1,RealPart1+sin(DTR*360*1/DCPeriod)*nz(sp[1]),RealPart1) RealPart3=iff(2<=DCPeriod-1,RealPart2+sin(DTR*360*2/DCPeriod)*nz(sp[2]),RealPart2) RealPart4=iff(3<=DCPeriod-1,RealPart3+sin(DTR*360*3/DCPeriod)*nz(sp[3]),RealPart3) RealPart5=iff(4<=DCPeriod-1,RealPart4+sin(DTR*360*4/DCPeriod)*nz(sp[4]),RealPart4) RealPart6=iff(5<=DCPeriod-1,RealPart5+sin(DTR*360*5/DCPeriod)*nz(sp[5]),RealPart5) RealPart7=iff(6<=DCPeriod-1,RealPart6+sin(DTR*360*6/DCPeriod)*nz(sp[6]),RealPart6) RealPart8=iff(7<=DCPeriod-1,RealPart7+sin(DTR*360*7/DCPeriod)*nz(sp[7]),RealPart7) RealPart9=iff(8<=DCPeriod-1,RealPart8+sin(DTR*360*8/DCPeriod)*nz(sp[8]),RealPart8) RealPart10=iff(9<=DCPeriod-1,RealPart9+sin(DTR*360*9/DCPeriod)*nz(sp[9]),RealPart9) RealPart11=iff(10<=DCPeriod-1,RealPart10+sin(DTR*360*10/DCPeriod)*nz(sp[10]),RealPart10) RealPart12=iff(11<=DCPeriod-1,RealPart11+sin(DTR*360*11/DCPeriod)*nz(sp[11]),RealPart11) RealPart13=iff(12<=DCPeriod-1,RealPart12+sin(DTR*360*12/DCPeriod)*nz(sp[12]),RealPart12) RealPart14=iff(13<=DCPeriod-1,RealPart13+sin(DTR*360*13/DCPeriod)*nz(sp[13]),RealPart13) RealPart15=iff(14<=DCPeriod-1,RealPart14+sin(DTR*360*14/DCPeriod)*nz(sp[14]),RealPart14) RealPart16=iff(15<=DCPeriod-1,RealPart15+sin(DTR*360*15/DCPeriod)*nz(sp[15]),RealPart15) RealPart17=iff(16<=DCPeriod-1,RealPart16+sin(DTR*360*16/DCPeriod)*nz(sp[16]),RealPart16) RealPart18=iff(17<=DCPeriod-1,RealPart17+sin(DTR*360*17/DCPeriod)*nz(sp[17]),RealPart17) RealPart19=iff(18<=DCPeriod-1,RealPart18+sin(DTR*360*18/DCPeriod)*nz(sp[18]),RealPart18) RealPart20=iff(19<=DCPeriod-1,RealPart19+sin(DTR*360*19/DCPeriod)*nz(sp[19]),RealPart19) RealPart21=iff(20<=DCPeriod-1,RealPart20+sin(DTR*360*20/DCPeriod)*nz(sp[20]),RealPart20) RealPart22=iff(21<=DCPeriod-1,RealPart21+sin(DTR*360*21/DCPeriod)*nz(sp[21]),RealPart21) RealPart23=iff(22<=DCPeriod-1,RealPart22+sin(DTR*360*22/DCPeriod)*nz(sp[22]),RealPart22) RealPart24=iff(23<=DCPeriod-1,RealPart23+sin(DTR*360*23/DCPeriod)*nz(sp[23]),RealPart23) RealPart25=iff(24<=DCPeriod-1,RealPart24+sin(DTR*360*24/DCPeriod)*nz(sp[24]),RealPart24) RealPart26=iff(25<=DCPeriod-1,RealPart25+sin(DTR*360*25/DCPeriod)*nz(sp[25]),RealPart25) RealPart27=iff(26<=DCPeriod-1,RealPart26+sin(DTR*360*26/DCPeriod)*nz(sp[26]),RealPart26) RealPart28=iff(27<=DCPeriod-1,RealPart27+sin(DTR*360*27/DCPeriod)*nz(sp[27]),RealPart27) RealPart29=iff(28<=DCPeriod-1,RealPart28+sin(DTR*360*28/DCPeriod)*nz(sp[28]),RealPart28) RealPart30=iff(29<=DCPeriod-1,RealPart29+sin(DTR*360*29/DCPeriod)*nz(sp[29]),RealPart29) RealPart31=iff(30<=DCPeriod-1,RealPart30+sin(DTR*360*30/DCPeriod)*nz(sp[30]),RealPart30) RealPart32=iff(31<=DCPeriod-1,RealPart31+sin(DTR*360*31/DCPeriod)*nz(sp[31]),RealPart31) RealPart33=iff(32<=DCPeriod-1,RealPart32+sin(DTR*360*32/DCPeriod)*nz(sp[32]),RealPart32) RealPart34=iff(33<=DCPeriod-1,RealPart33+sin(DTR*360*33/DCPeriod)*nz(sp[33]),RealPart33) RealPart35=iff(34<=DCPeriod-1,RealPart34+sin(DTR*360*34/DCPeriod)*nz(sp[34]),RealPart34) RealPart36=iff(35<=DCPeriod-1,RealPart35+sin(DTR*360*35/DCPeriod)*nz(sp[35]),RealPart35) RealPart37=iff(36<=DCPeriod-1,RealPart36+sin(DTR*360*36/DCPeriod)*nz(sp[36]),RealPart36) RealPart38=iff(37<=DCPeriod-1,RealPart37+sin(DTR*360*37/DCPeriod)*nz(sp[37]),RealPart37) RealPart39=iff(38<=DCPeriod-1,RealPart38+sin(DTR*360*38/DCPeriod)*nz(sp[38]),RealPart38) RealPart40=iff(39<=DCPeriod-1,RealPart39+sin(DTR*360*39/DCPeriod)*nz(sp[39]),RealPart39) RealPart41=iff(40<=DCPeriod-1,RealPart40+sin(DTR*360*40/DCPeriod)*nz(sp[40]),RealPart40) RealPart42=iff(41<=DCPeriod-1,RealPart41+sin(DTR*360*41/DCPeriod)*nz(sp[41]),RealPart41) RealPart43=iff(42<=DCPeriod-1,RealPart42+sin(DTR*360*42/DCPeriod)*nz(sp[42]),RealPart42) RealPart44=iff(43<=DCPeriod-1,RealPart43+sin(DTR*360*43/DCPeriod)*nz(sp[43]),RealPart43) RealPart45=iff(44<=DCPeriod-1,RealPart44+sin(DTR*360*44/DCPeriod)*nz(sp[44]),RealPart44) RealPart46=iff(45<=DCPeriod-1,RealPart45+sin(DTR*360*45/DCPeriod)*nz(sp[45]),RealPart45) RealPart47=iff(46<=DCPeriod-1,RealPart46+sin(DTR*360*46/DCPeriod)*nz(sp[46]),RealPart46) RealPart48=iff(47<=DCPeriod-1,RealPart47+sin(DTR*360*47/DCPeriod)*nz(sp[47]),RealPart47) RealPart49=iff(48<=DCPeriod-1,RealPart48+sin(DTR*360*48/DCPeriod)*nz(sp[48]),RealPart48) RealPart=iff(49<=DCPeriod-1,RealPart49+sin(DTR*360*49/DCPeriod)*nz(sp[49]),RealPart49) ImagPart1=iff(0<=DCPeriod-1,0+cos(DTR*360*0/DCPeriod)*nz(sp[0]),0) ImagPart2=iff(1<=DCPeriod-1,ImagPart1+cos(DTR*360*1/DCPeriod)*nz(sp[1]),ImagPart1) ImagPart3=iff(2<=DCPeriod-1,ImagPart2+cos(DTR*360*2/DCPeriod)*nz(sp[2]),ImagPart2) ImagPart4=iff(3<=DCPeriod-1,ImagPart3+cos(DTR*360*3/DCPeriod)*nz(sp[3]),ImagPart3) ImagPart5=iff(4<=DCPeriod-1,ImagPart4+cos(DTR*360*4/DCPeriod)*nz(sp[4]),ImagPart4) ImagPart6=iff(5<=DCPeriod-1,ImagPart5+cos(DTR*360*5/DCPeriod)*nz(sp[5]),ImagPart5) ImagPart7=iff(6<=DCPeriod-1,ImagPart6+cos(DTR*360*6/DCPeriod)*nz(sp[6]),ImagPart6) ImagPart8=iff(7<=DCPeriod-1,ImagPart7+cos(DTR*360*7/DCPeriod)*nz(sp[7]),ImagPart7) ImagPart9=iff(8<=DCPeriod-1,ImagPart8+cos(DTR*360*8/DCPeriod)*nz(sp[8]),ImagPart8) ImagPart10=iff(9<=DCPeriod-1,ImagPart9+cos(DTR*360*9/DCPeriod)*nz(sp[9]),ImagPart9) ImagPart11=iff(10<=DCPeriod-1,ImagPart10+cos(DTR*360*10/DCPeriod)*nz(sp[10]),ImagPart10) ImagPart12=iff(11<=DCPeriod-1,ImagPart11+cos(DTR*360*11/DCPeriod)*nz(sp[11]),ImagPart11) ImagPart13=iff(12<=DCPeriod-1,ImagPart12+cos(DTR*360*12/DCPeriod)*nz(sp[12]),ImagPart12) ImagPart14=iff(13<=DCPeriod-1,ImagPart13+cos(DTR*360*13/DCPeriod)*nz(sp[13]),ImagPart13) ImagPart15=iff(14<=DCPeriod-1,ImagPart14+cos(DTR*360*14/DCPeriod)*nz(sp[14]),ImagPart14) ImagPart16=iff(15<=DCPeriod-1,ImagPart15+cos(DTR*360*15/DCPeriod)*nz(sp[15]),ImagPart15) ImagPart17=iff(16<=DCPeriod-1,ImagPart16+cos(DTR*360*16/DCPeriod)*nz(sp[16]),ImagPart16) ImagPart18=iff(17<=DCPeriod-1,ImagPart17+cos(DTR*360*17/DCPeriod)*nz(sp[17]),ImagPart17) ImagPart19=iff(18<=DCPeriod-1,ImagPart18+cos(DTR*360*18/DCPeriod)*nz(sp[18]),ImagPart18) ImagPart20=iff(19<=DCPeriod-1,ImagPart19+cos(DTR*360*19/DCPeriod)*nz(sp[19]),ImagPart19) ImagPart21=iff(20<=DCPeriod-1,ImagPart20+cos(DTR*360*20/DCPeriod)*nz(sp[20]),ImagPart20) ImagPart22=iff(21<=DCPeriod-1,ImagPart21+cos(DTR*360*21/DCPeriod)*nz(sp[21]),ImagPart21) ImagPart23=iff(22<=DCPeriod-1,ImagPart22+cos(DTR*360*22/DCPeriod)*nz(sp[22]),ImagPart22) ImagPart24=iff(23<=DCPeriod-1,ImagPart23+cos(DTR*360*23/DCPeriod)*nz(sp[23]),ImagPart23) ImagPart25=iff(24<=DCPeriod-1,ImagPart24+cos(DTR*360*24/DCPeriod)*nz(sp[24]),ImagPart24) ImagPart26=iff(25<=DCPeriod-1,ImagPart25+cos(DTR*360*25/DCPeriod)*nz(sp[25]),ImagPart25) ImagPart27=iff(26<=DCPeriod-1,ImagPart26+cos(DTR*360*26/DCPeriod)*nz(sp[26]),ImagPart26) ImagPart28=iff(27<=DCPeriod-1,ImagPart27+cos(DTR*360*27/DCPeriod)*nz(sp[27]),ImagPart27) ImagPart29=iff(28<=DCPeriod-1,ImagPart28+cos(DTR*360*28/DCPeriod)*nz(sp[28]),ImagPart28) ImagPart30=iff(29<=DCPeriod-1,ImagPart29+cos(DTR*360*29/DCPeriod)*nz(sp[29]),ImagPart29) ImagPart31=iff(30<=DCPeriod-1,ImagPart30+cos(DTR*360*30/DCPeriod)*nz(sp[30]),ImagPart30) ImagPart32=iff(31<=DCPeriod-1,ImagPart31+cos(DTR*360*31/DCPeriod)*nz(sp[31]),ImagPart31) ImagPart33=iff(32<=DCPeriod-1,ImagPart32+cos(DTR*360*32/DCPeriod)*nz(sp[32]),ImagPart32) ImagPart34=iff(33<=DCPeriod-1,ImagPart33+cos(DTR*360*33/DCPeriod)*nz(sp[33]),ImagPart33) ImagPart35=iff(34<=DCPeriod-1,ImagPart34+cos(DTR*360*34/DCPeriod)*nz(sp[34]),ImagPart34) ImagPart36=iff(35<=DCPeriod-1,ImagPart35+cos(DTR*360*35/DCPeriod)*nz(sp[35]),ImagPart35) ImagPart37=iff(36<=DCPeriod-1,ImagPart36+cos(DTR*360*36/DCPeriod)*nz(sp[36]),ImagPart36) ImagPart38=iff(37<=DCPeriod-1,ImagPart37+cos(DTR*360*37/DCPeriod)*nz(sp[37]),ImagPart37) ImagPart39=iff(38<=DCPeriod-1,ImagPart38+cos(DTR*360*38/DCPeriod)*nz(sp[38]),ImagPart38) ImagPart40=iff(39<=DCPeriod-1,ImagPart39+cos(DTR*360*39/DCPeriod)*nz(sp[39]),ImagPart39) ImagPart41=iff(40<=DCPeriod-1,ImagPart40+cos(DTR*360*40/DCPeriod)*nz(sp[40]),ImagPart40) ImagPart42=iff(41<=DCPeriod-1,ImagPart41+cos(DTR*360*41/DCPeriod)*nz(sp[41]),ImagPart41) ImagPart43=iff(42<=DCPeriod-1,ImagPart42+cos(DTR*360*42/DCPeriod)*nz(sp[42]),ImagPart42) ImagPart44=iff(43<=DCPeriod-1,ImagPart43+cos(DTR*360*43/DCPeriod)*nz(sp[43]),ImagPart43) ImagPart45=iff(44<=DCPeriod-1,ImagPart44+cos(DTR*360*44/DCPeriod)*nz(sp[44]),ImagPart44) ImagPart46=iff(45<=DCPeriod-1,ImagPart45+cos(DTR*360*45/DCPeriod)*nz(sp[45]),ImagPart45) ImagPart47=iff(46<=DCPeriod-1,ImagPart46+cos(DTR*360*46/DCPeriod)*nz(sp[46]),ImagPart46) ImagPart48=iff(47<=DCPeriod-1,ImagPart47+cos(DTR*360*47/DCPeriod)*nz(sp[47]),ImagPart47) ImagPart49=iff(48<=DCPeriod-1,ImagPart48+cos(DTR*360*48/DCPeriod)*nz(sp[48]),ImagPart48) ImagPart=iff(49<=DCPeriod-1,ImagPart49+cos(DTR*360*49/DCPeriod)*nz(sp[49]),ImagPart49) DCPhase1 = iff (abs( ImagPart) > 0, atan( RealPart / ImagPart ) * RTD, 0) DCPhase2 = iff (abs( ImagPart) <=0.001, DCPhase1 + 90 * sign( RealPart ), DCPhase1) DCPhase3 = DCPhase2 + 90 DCPhase4 = DCPhase3 + 360 / spp DCPhase5 = iff (ImagPart<0, DCPhase4 + 180,DCPhase4) DCPhase = iff (DCPhase5>315,DCPhase5-360,DCPhase5) Slow = sin(DTR*DCPhase)*100 Fast = sin(DTR*(DCPhase+45))*100 SRLow=iff(crossover(Fast,Slow),low,iff(crossunder(Fast,Slow),na,SRLow[1])) SRHigh=iff(crossunder(Fast,Slow),high,iff(crossover(Fast,Slow),na,SRHigh[1])) bgcolor(close>=SRHigh?green:close<=SRLow?red:yellow) barcolor(close>=SRHigh?green:close<=SRLow?red:yellow) //plot(SRLow,color=blue) //plot(SRHigh,color=red) plot(Slow,color=blue) plot(Fast,color=red) //Slow2=security(ticker,"D",Slow) //Fast2=security(ticker,"D",Fast) //plot(Slow2,color=green) //plot(Fast2,color=orange) //SRLow2=security(ticker,"W",SRLow) //SRHigh2=security(ticker,"W",SRHigh) //plot(SRLow2,color=green) //plot(SRHigh2,color=orange)