// Downloaded From https://www.WiseStockTrader.com //============================= _SECTION_BEGIN("Chart Settings"); //============================= Version(5.40); //Original code created by MRTQ13 May,2012 //Modified by D. Keleher May 2012 with following: //1. Clean version of Gordon Rose pivots with modified Fib Retraces //2. Added Loop Price Labels and Lowest / Highest price since last pivots //3. Added TrendLines with selectable Fractal or Zig % settings //4. Provide functionality for extending trendlines beyond last bar //5. Added "Bar Overlay" option for Price plotting //6. Provided Line Colors for Short Bands indicating trend direction //7. Cleaned up code for minor performance improvement // To do list includes explorations and scans for price patterns // and indicator signals SetChartOptions(0,chartShowArrows|chartShowDates); GraphXSpace=Param("GraphXSpace",10,0,300,1); SetChartBkColor(ParamColor("Outer Panel",53)); SetChartBkGradientFill(ParamColor("Upper Chart",16),ParamColor("Lower Chart",16)); //========================== _SECTION_BEGIN("Forex Main"); //========================== global hO,hH,hL,hC,fO,fH,fL,fC,bc,Lx,x; x=BarIndex(); bc=BarCount; Lx=LastValue(x); //Flower OHLC fC=EMA((O+H+L+C)/4,3); fO=EMA((Ref(O,-1)+Ref(fC,-1))/2,3); fH=EMA(Max(Max(H,fO),fC),3); fL=EMA(Min(Min(L,fO),fC),3); //Heiken Ashi OHLC hC=EMA((O+H+L+C)/4,3); hO=AMA(Ref(hC,-1),0.5); hH=Max(H,Max(hC,hO)); hL=Min(L,Min(hC,hO)); function ti3(y,t) { s=0.84; e1=EMA(y,t); e2=EMA(e1,t); e3=EMA(e2,t); e4=EMA(e3,t); e5=EMA(e4,t); e6=EMA(e5,t); c1=-s*s*s; c2=3*s*s+3*s*s*s; c3=-6*s*s-3*s-3*s*s*s; c4=1+3*s+s*s*s+3*s*s; return T3=c1*e6+c2*e5+c3*e4+c4*e3; } _SECTION_END(); //=========================== _SECTION_BEGIN("HEIKIN-ASHI"); //=========================== //by Dan Valcu S&C Traders Tips Feb, 2004 bsl=ParamToggle("Candle Type","HA,Std",0); olb=ParamToggle("Overlay Bars","Off|On",0); sco= ParamToggle("CandleFill Color","Std|Macd",1); r1=5; r2=10; r3=5;//MACD Fast,Slow & Signal Periods ap=4;//ATR & Hi Lo Periods pd=7;//HHV LLV Lookback atv=ATR(ap); sup=HHV(LLV(L,ap)+atv,pd); res=LLV(HHV(H,ap)-atv,pd); fC=EMA((O+H+L+C)/4,3);//Flower Close hC=(O+H+L+C)/4; hO=AMA(Ref(fC,-1),0.5); hH=Max(H,Max(fC,hO)); hL=Min(L,Min(fC,hO)); m1=MACD(r1,r2); s1=Signal(r1,r2,r3); uc=ColorRGB(230,230,0); mco=IIf(m1<0 AND m1>s1,uc,IIf(m1>0 AND m1>s1,55,IIf(m1>0 AND m1O,55,32),64); if(bsl==0)PlotOHLC(hO,hH,hL,fC,"",IIf(C>sup,55,IIf(Cs1,uc,IIf(m1>0 AND m1>s1,43,IIf(m1>0 AND m1Ref(HHV(H,bpd),-1); Sell=C=bc-tbk,EndValue(Top),Null); Plot(yr,"",ParamColor("Line Color",25),s52); //Plot(top,"",11,styleDots+styleLine+styleThick); bot=Ref(hL,-BarsSince(A4)); bbk=Param("Lo Breakout Periods",10,2,30,0.1); ys=IIf(x>=bc-bbk,EndValue(bot),Null); Plot(ys,"",ParamColor("Support Color",43) ,s52); //Plot(bot,"",6,styleDots+styleLine); _SECTION_END(); //============================ _SECTION_BEGIN("Price Line"); //============================ p= ParamField("Price Field",3); bk= Param("Bars Back",500,10,900,1); yy=IIf(x>=bc-bk,EndValue(p),Null); Plot(yy,"Price",colorGrey40,s36); _SECTION_END(); //=========================== _SECTION_BEGIN("MA Averages"); //=========================== if(ParamToggle("Plot MA-21","Off|On",0))Plot(MA(C,21),"",27,s01); if(ParamToggle("Plot MA-55","Off|On",0))Plot(MA(H,55),"",55,s01); if(ParamToggle("Plot MA-233","Off|On",0))Plot(MA(H,233),"",52,s01); _SECTION_END(); //=========================== _SECTION_BEGIN("WMA Averages"); //=========================== if(ParamToggle("Plot WMA-20","Off|On",0))Plot(WMA(C,20),"",26,s08,0,0,1); if(ParamToggle("Plot WMA-60","Off|On",0))Plot(WMA(C,60),"",19,s08,0,0,1); if(ParamToggle("Plot WMA-100","Off|On",0))Plot(WMA(C,100),"",30,s08,0,0,1); if(ParamToggle("Plot WMA-120","Off|On",0))Plot(WMA(C,120),"",12,s08,0,0,1); if(ParamToggle("Plot WMA-180","Off|On",0))Plot(WMA(C,180),"",31,s08,0,0,1); if(ParamToggle("Plot WMA-500","Off|On",0))Plot(WMA(C,500),"",47,s08,0,0,1); //=========================== _SECTION_BEGIN("Avg I Select"); //=========================== s=ParamList("AverageType","Off|DEMA|EMA|HMA|Lagless|LinReg|MA|TEMA|Weighted|Wilders",0); t=Param("Periods",20,2,200); d=Param("Displacement",1,0,50,1); p=hC; m=Null; if(s=="DEMA")m=DEMA(p,t); if(s=="EMA")m=EMA(p,t); if(s=="HMA")m=WMA(2*(WMA(P,t/2))-WMA(p,t),4); if(s=="Lagless")m=2*EMA(p,t)-EMA(EMA(p,t),t); if(s=="LinReg")m=LinearReg(p,t); if(s=="MA")m=MA(p,t); if(s=="TEMA")m=TEMA(P,t); if(s=="Weighted")m=WMA(p,t); if(s=="Wilders")m=Wilders(p,t); Plot(m,"",ParamColor("Color",26),s01,d); _SECTION_END(); //=========================== _SECTION_BEGIN("Avg II Select"); //=========================== s=ParamList("AverageType","Off|DEMA|EMA|HMA|Lagless|LinReg|MA|TEMA|Weighted|Wilders",0); t=Param("Periods",60,2,200); d=Param("Displacement",1,0,50,1); p=hC; m=Null; if(s=="DEMA")m=DEMA(p,t); if(s=="EMA")m=EMA(p,t); if(s=="HMA")m=WMA(2*(WMA(P,t/2))-WMA(p,t),4); if(s=="Lagless")m=2*EMA(p,t)-EMA(EMA(p,t),t); if(s=="LinReg")m=LinearReg(p,t); if(s=="MA")m=MA(p,t); if(s=="TEMA")m=TEMA(P,t); if(s=="Weighted")m=WMA(p,t); if(s=="Wilders")m=Wilders(p,t); Plot(m,"",ParamColor("Color",27),s01,d); _SECTION_END(); //=========================== _SECTION_BEGIN("Bands Short"); //=========================== sb= ParamToggle("Short Bands Cloud","Off|On",1); bl= ParamToggle("Short Bands Lines","Off|On",1); bk= Param("Periods",40,10,900,1); if(sb OR bl) { st=32|512|2048|4096; Hi=HHV(H,bk); Lo=LLV(L,bk); kM=(Hi+Lo)/2; kH=(kM+Hi)/2; kL=(kM+Lo)/2; if(bl) { nhi= IIf(Hi>Ref(Hi,-1),1,IIf(HiRef(Lo,-1),1,IIf(LoRef(kH,-1),1,IIf(kHRef(kM,-1),1,IIf(kMRef(kL,-1),1,IIf(kLRef(kL,-1),1,IIf(kLRef(Lo,-1),1,IIf(Lo=0;i--) { dnc=dn[i]; if(dnc==expD) { expX=i;} } } //======== Initialize Arrays ======== xp= 0; xhp= 0; xlp=0; yr0=0; xr0= 0; ys0= 0; xs0=0; yR=H-H; xR=H-H; yS=L-L; xS=L-L; pk= H-H; xr1=H-H; tr=L-L; xs1=L-L; //====================== HHx= HHVBars(H,nbz); LLx= LLVBars(L,nbz); lvb= LastValue(Highest(IIf(Status("BarVisible"),x,0))); xx= IIf(lvb>0 AND ulv,lvb,IIf(Status("action")==4 AND expX>0,expX,LastValue(x))); dir= ""; if(LLx[xx]=lbk) { for(i=0; i=lbk insures enough bars exist xx= IIf(lvb>0 AND ulv,lvb-i,IIf(Status("action")==4 AND expX>0,expX-i,LastValue(x)-i)); if(LLx[xx]0 AND ulv,lvb,IIf(Status("action")==4 AND expX>0,expX,LastValue(x))); if(xhp>= 2 AND xlp>= 2) { //at least two of each must exist. xs0= xS[0]; ys0=yS[0]; xr0=xR[0]; yr0=yR[0]; xmx=Max(xs0,xr0); cbz=xx-xmx; LLy=LLV(L,cbz); LLb=LLVBars(L,cbz); yLo=LLy[xx]; xLo=xx-LLb[xx]; HHy=HHV(H,cbz); HHb=HHVBars(H,cbz); yHi=HHy[xx]; xHi=xx-HHb[xx]; if(xr0>xs0) { if (yR[0]=xMn AND xLo!=xx) { tr[xLo]=1; xs1[xLo]=1; for(j=0; jyS[0] AND (xLo-xr0-1)>=xMn AND xLo!= xx) { tr[xLo]=1; xs1[xLo]=1; for(j=0; j=xMn AND xHi!= xx) { pk[xHi]=1; xr1[xHi]=1; for(j=0;jyR[0] AND (xHi-xs0-1)>=xMn AND xHi!=xx) { pk[xHi]=1; xr1[xHi]=1; for(j=0; j=2 AND xlp>=2 AND yR[0]>yR[1] AND yS[0]>yS[1]) { i50=(yR[0]-(0.50*(yR[0]-yS[1]))); i62=(yR[0]-(0.62*(yR[0]-yS[1]))); i78=(yR[0]-(0.79*(yR[0]-yS[0]))); bars=xx-xR[0]; prcR=LLV(L,bars); retB=LLVBars(L,bars); retP=prcR[xx]; retX=xx-retB[xx]; retC=retY[retX]; Long=(i50>=(i78*(1-tpr))AND i62<=(i78*(1+tpr))AND retC >=((1-tol)*i62)AND retP<=((1+tol)*i50)); } //Lower Highs and Lower Lows else if(xhp>=2 AND xlp>=2 AND yR[0]= Low of Ret range //Risk is top of zone - low of signal bar Shrt=( i50<=(i78*(1+tpr))AND i62>=(i78*(1-tpr))AND retC<=((1+tol)*i62)AND retP>=((1-tol)*i50)); } if(Shrt OR Long) { // Show zone if present if(Shrt) { // Check Symmetry if(xS[0]>xR[0]) { rt0Pts=yR[0]-yS[1]; rt0brz=xR[0]-xS[1]+1; rt1Pts=retP-yS[0]; rt1brz=retX-xS[0]+1; } else { rt0Pts=yR[1]-yS[1]; rt0brz=xR[1]-xS[1]+1; rt1Pts=yR[0]-yS[0]; rt1brz=xR[0]-xS[0]+1; } } else { // Long Setup if(xS[0]>xR[0]) { rt0Pts=yR[0]-yS[1]; rt0brz=xR[0]-xS[1]+1; rt1Pts=retP-yS[0]; rt1brz=retX-xS[0]+1; } else { rt0Pts=yR[1]-yS[0]; rt0brz=xS[0]-xR[1]+1; rt1Pts=yR[0]-yS[0]; rt1brz=xS[0]-xR[0]+1; } } } if(plf) { // .50 is above .786 & .62 is below .786 for long setups // .50 is below .786 & .62 is above .786 for short setups Plot(LineArray(IIf(Long,xR[0],xS[0]),i50,xx,i50,0),"i50",11,1|2048,0,0,0,1); Plot(LineArray(IIf(Long,xR[0],xS[0]),i62,xx,i62,0),"i62",43,1|2048,0,0,0,1); Plot(LineArray(IIf(Long,xR[0],xS[0]),i78,xx,i78,0),"i78",41,1|2048,0,0,0,1); PlotText(StrRight(NumToStr(i50,td),stn)+ " - 50%",xx+2,i50,11,1); PlotText(StrRight(NumToStr(i62,td),stn)+ " - 62%",xx+2,i62,43,1); PlotText(StrRight(NumToStr(i62,td),stn)+ " - 78%",xx+2,i78,41,1); } if(plb) { for(i=LastValue(BarIndex()); i>=0;i--) { if(tr[i] )PlotText("\n\n"+ StrRight(NumToStr(L[i],td),5),i-1,L[i],43,1); if(pk[i])PlotText(StrRight(NumToStr(H[i],td),5),i-1,H[i]+th,42,1); } } if(plf) { sq=shapeHollowSmallSquare; da=shapeDownArrow; ua=shapeUpArrow; PlotShapes(pk*sq,11,0,H,8); PlotShapes(xr1*sq,42,0,H,8); PlotShapes(tr*sq,10,0,L,-8); PlotShapes(xs1*sq,43,0,L,-8); } if(txl) { pb=LastValue(BarsSince(pk)); tb=LastValue(BarsSince(tr)); fL=LastValue(LowestSince(pk,L)); xL=LastValue(ValueWhen(L==fL,x)); fH=LastValue(HighestSince(tr,H)); xH=LastValue(ValueWhen(H==fH,x)); Plot(LineArray(xL-3,fL,Lx,fL),"",43,36|4096|2048,0,0,2,1); Plot(LineArray(xH-3,fH,Lx,fH),"",40,36|4096|2048,0,0,2,1); PlotText(StrRight(NumToStr(fH,td),stn),Lx+2,fH,40,1); PlotText(StrRight(NumToStr(fL,td),stn),Lx+2,fL,43,1); } Filter= (Shrt OR Long); AddColumn(C, "Close"); AddColumn(IIf(Long,76,83),"L/S",formatChar); rTitle="\\c55\nRtrc 0/1 Pts: " + WriteVal(rt0Pts,2.1) + "\\c42 / \\c55" + WriteVal(rt1Pts,2.1)+ " Rtrc 0/1 Bars: " + WriteVal(rt0brz, 2.0) + " \\c42/ \\c55" + WriteVal(rt1brz,2.0); } _SECTION_END(); //==================================== //====== Fractal Peak Trough ====== //Peak Trough Id By D. Keleher 2008 x= BarIndex(); function PkID(nn) { pk=H==HHV(H,2*nn) AND Ref(HHV(H,nn),nn)nn; } function TrID(nn) { tr=L==LLV(L,2*nn) AND Ref(LLV(L,nn),nn)>L; return tr AND LastValue(x)-ValueWhen(tr,x)>nn; } //====== Selected Value Function ====== function svp(y,x,Lb){ return SelectedValue(ValueWhen(y,x,Lb)); } //====== Extended Line Function ====== function exln(x1,y1,x0,y0,ex,co,st) { Plot(la=LineArray(x1-ex,y1,x0-ex,y0,1),"",co,st,0,0,ex,1); return la; } //=========================== _SECTION_BEGIN("Fractal Wedge"); //=========================== //original by Dimitris Tsokakis 2003 //versions by D. Keleher 2004 - 2008 pl= ParamToggle("Wedge Lines","Off|On",0); pvt=ParamToggle("Pivot Types","Fractal|Zig %",0); pct=Param("Percent",0.20,0.01,5,0.01); nb= Param("Fractal Bars",5,2, 200,1); ex= Param("Extend Right",1,0,50,1); rs= ParamToggle("No Rescale ","Off|On",1)*2048; st= ParamStyle("Style",4|4096)|rs; s32=36|2048; if(pl) { S=L; R=H; if(pvt==0) { pS=TrID(nb); pR=PkID(nb); } if(pvt==1) { pS=TroughBars(S,pct,1)==0; pR=PeakBars(R,pct,1)==0; } xs1=svp(pS,x,1); xs2=svp(pS,x,2); xs3=svp(pS,x,3); xr1=svp(pR,x,1); xr2=svp(pR,x,2); xr3=svp(pR,x,3); ys1=svp(pS,L,1); ys2=svp(pS,L,2); ys3=svp(pS,L,3); yr1=svp(pR,H,1); yr2=svp(pR,H,2); yr3=svp(pR,H,3); exln(xs2,ys2,xs1,ys1,2,34,st); exln(xr2,yr2,xr1,yr1,2,32,st); exln(xs3,ys3,xs1,ys1,2,55,st); exln(xr3,yr3,xr1,yr1,2,55,st); exln(xs3,ys3,xs2,ys2,2,27,st); exln(xr3,yr3,xr2,yr2,2,25,st); } _SECTION_END(); //============================= _SECTION_BEGIN("Daily Trend"); //============================= GfxSelectFont("Arial",10,100); GfxSetBkMode(1); GfxSetTextColor(42); tf=5; ts=8; TimeFrameSet (inDaily); tf=ti3(C,tf); ts=ti3(C,ts); TimeFrameRestore(); Bear= WriteIf(Cts,"revD",""); Bull= WriteIf(C>tf AND C>ts,"Bull",""); revU= WriteIf(C>tf AND Csa,"Reverse Dn",""); Bull= WriteIf(C>fa AND C>sa,"Bullish",""); revU= WriteIf(C>fa AND CMDI()AND Signal()PDI()AND Signal()>MACD(); uw=WriteIf(Up,"Up",""); dw=WriteIf(Dn,"Dn",""); if(uw=="Up") { GfxSelectSolidBrush( ColorRGB(0,70,0)); } else if(dw=="Dn") { GfxSelectSolidBrush( ColorRGB(70,0,0)); } else if(dw=="") { GfxSelectSolidBrush(colorPaleBlue); } GfxSelectPen(16,0); GfxCircle(70,90,54); TimeFrameRestore(); //GfxRoundRect(15,305,135,215,5,5); RequestTimedRefresh(0); _SECTION_END(); //============================== _SECTION_BEGIN("ti3 Flower Trends"); //============================== ti5=ti3(fC,5); ti7=ti3(fC,7); ti9=ti3(fC,9);//Trend Averages upC5= WriteIf(fC>ti5,"upC5",""); dnC5= WriteIf(fCti7,"Up57",""); Dn57= WriteIf(ti7>ti5,"Dn57",""); Up79= WriteIf(ti7>ti9,"Up79",""); Dn79= WriteIf(ti9>ti7,"Dn79",""); xxC5= WriteIf(Cross(fC,ti5),"xxC5",""); xx75= WriteIf(Cross(ti7,ti5),"xx75",""); //======== Slow Trend ======== if(Up79=="Up79") { GfxSelectSolidBrush(ColorRGB(0,90,0)); } else if(Dn79=="Dn79") { GfxSelectSolidBrush(ColorRGB(90,0,0)); } else if(Dn79=="") { GfxSelectSolidBrush(colorYellow); } GfxSelectPen(16,1); GfxCircle(70,90,48); //======== Mid Trend ======== if(Up57=="Up57") { GfxSelectSolidBrush(ColorRGB(0,120,0)); } else if(Dn57=="Dn57") { GfxSelectSolidBrush(ColorRGB(120,0,0)); } else if(xx75=="xx75") { GfxSelectSolidBrush(colorYellow); } GfxSelectPen(16,1); GfxCircle(70,90,42); //======== Fast Trend ======== if(upC5=="upC5") { GfxSelectSolidBrush( ColorRGB(0,150,0)); } else if(dnC5=="dnC5") { GfxSelectSolidBrush(ColorRGB(150,0,0)); } else if(xxC5=="xxC5") { GfxSelectSolidBrush(colorYellow); } GfxSelectPen(16,1); GfxCircle(70,90,36); _SECTION_END(); //============================= _SECTION_BEGIN("Rays"); //============================= pd=3; ap=2; su=LLV(fH,pd); av=ATR(ap); upATR= WriteIf(fC>HHV(su-av,4),"upATR",""); dnATR= WriteIf(HHV(su-av,4)>fC,"dnATR",""); if(upATR=="upATR") { GfxSelectSolidBrush(ColorRGB(0,180,0)); } else if(dnATR=="dnATR"){ GfxSelectSolidBrush(ColorRGB(180,0,0)); } else if(upATR=="") { GfxSelectSolidBrush(colorGrey40); } GfxSelectPen(16,1); GfxCircle(70,90,30); _SECTION_END(); //============================= _SECTION_BEGIN("Profit Taker"); //============================= pds=10; atv=1.9*ATR(10); Ent= C>(LLV(fL,pds)+atv); Xit= C<(HHV(fH,pds)-atv); EntU= WriteIf(Ent,"Ent",""); XitD= WriteIf(Xit,"Xit",""); if(EntU=="Ent") { GfxSelectSolidBrush(ColorRGB(0,210,0)); } else if(XitD=="Xit") { GfxSelectSolidBrush(ColorRGB(210,0,0)); } else if(XitD=="") { GfxSelectSolidBrush(colorGrey40); } GfxSelectPen(16,1); GfxCircle(70,90,24); RequestTimedRefresh(0); _SECTION_END(); //============================= _SECTION_BEGIN("CCI 9-2 Trend"); //============================= up=WriteIf(CCI(9)>0,"upCCI",""); dn=WriteIf(CCI(8)<0,"dnCCI",""); if(up=="upCCI") { GfxSelectSolidBrush(ColorRGB(0,240,0)); } else if(dn=="dnCCi") { GfxSelectSolidBrush(ColorRGB(240,0,0)); } else if(dn=="") { GfxSelectSolidBrush(colorGrey40); } GfxSelectPen(16,1); GfxCircle(70,90,18); RequestTimedRefresh(0); _SECTION_END(); //============================= _SECTION_BEGIN("% Bol Bands 7"); //============================= GfxSelectFont("Tahoma",12,100); GfxSetBkMode(1); GfxSetTextColor(55); GfxSelectFont("Arial",10,100); GfxSetBkMode(1); GfxSetTextColor(16); p=7; dv=((C+2*StDev(C,p)-MA(C,p))/(4*StDev(C,p)))*100; upBB=WriteIf(dv>40,"upBB",""); dnBB=WriteIf(dv<40,"dnBB",""); if(upBB=="upBB") { GfxSelectSolidBrush(ColorRGB(62,255,62)); } else if(dnBB=="bd") { GfxSelectSolidBrush(ColorRGB(255,62,62)); } else if(dnBB=="") { GfxSelectSolidBrush(colorGrey40); } GfxSelectPen( 16,1); GfxCircle(70,90,12); RequestTimedRefresh(0); _SECTION_END(); up=C> Ref(C, -1); df=C-Ref(C,-1); Title= "\\c55" + Name () + " | \\c42" + Date() + "\\c55 | Open: \\c10" + O + "\\c55 | Hi: \\c43 " + H + "\\c55 | Close: \\c42 " + C + "\\c55 | Change: ("+ WriteIf(up,"\\c43 ","\\c32 ") + df + "\\c55 /" + WriteIf(up,"\\c43","\\c32") + WriteVal(ROC(C,1)) + "\\c55 % ) | Volume: " + WriteIf(V>Ref(V,-1),"\\c43 ","\\c32 ") + WriteVal(V,1) + rTitle;