//Gann level Plotter //Abnash Singh 5-11-2011 //Updated on 12-11-2011 to include context based Gann levels and days highs and lows //abnash1978@yahoo.co.uk //You can do any of the following: //Suppress candle or bar plotting //Choose to plot candle or bar //Choose to plot 0/90 deg levels or also 45/225 and 135/315 deg levels //Clip plotting from 15:25-15:30 to avoid clutter on day change //Clip Gann lines outside the price range. //Gann logic begin SetBarsRequired( 5000, 0 ); showcandlechart=ParamList("Show Candle chart","YES|NO"); stylecndl=ParamList("Bar/Candle chart","BAR|CANDLE"); PlotGann=ParamList("Show Gann Lines","Yes|No",0); PlotGannBlue=ParamList("Show Gann Blue Lines","Yes|No",0); PlotGannRed=ParamList("Show Gann Red Lines","Yes|No",0); PlotGannodd=ParamList("Show Gann Odd Angle Lines","Yes|No",1); ClipGann=ParamList("Clip Gann Lines above High/Low","Yes|No",1); Clip1530=ParamList("Clip Lines at time 1530","Yes|No",1); GannProx=ParamList("Gann to Mid price < 5 pts","Yes|No",1); BarColor = IIf(Close > Open, colorGreen, colorRed); SetBarFillColor(BarColor); if (stylecndl=="BAR")stylec=styleBar; else stylec=styleCandle; if (showcandlechart=="YES") { Plot(C, "Close", colorWhite, styleNoTitle | stylec); } avp=(O+C)/2; tn=TimeNum(); Datey=DateNum(); gannh0=gannh1=gannh2=gannh3=gannh4=gannh5=gannh6=gannh7=gannh8=Null; gannl0=gannl1=gannl2=gannl3=gannl4=gannl5=gannl6=gannl7=gannl8=Null; gannmin=0;basec=basenoh=basenol=0; gannmin=0; Dayhigh=Daylow=Dayopen=Dayclose=0; uptarget=lotarget=0; for (i=1;iDayhigh[i])Dayhigh[i]=H[i]; if (Daylow[i]==0)Daylow[i]=L[i]; if (L[i]Dayhigh[i]+dnn OR gannh0[i]Dayhigh[i]+dnn OR gannh1[i]Dayhigh[i]+dnn OR gannh2[i]Dayhigh[i]+dnn OR gannh3[i]Dayhigh[i]+dnn OR gannh4[i]Dayhigh[i]+dnn OR gannh5[i]Dayhigh[i]+dnn OR gannh6[i]Dayhigh[i]+dnn OR gannh7[i]Dayhigh[i]+dnn OR gannh8[i]Dayhigh[i]+dnn OR gannl0[i]Dayhigh[i]+dnn OR gannl1[i]Dayhigh[i]+dnn OR gannl2[i]Dayhigh[i]+dnn OR gannl3[i]Dayhigh[i]+dnn OR gannl4[i]Dayhigh[i]+dnn OR gannl5[i]Dayhigh[i]+dnn OR gannl6[i]Dayhigh[i]+dnn OR gannl7[i]Dayhigh[i]+dnn OR gannl7[i]=153000 AND tn[i]<=153500) gannh0[i]= gannh1[i]= gannh2[i]= gannh3[i]= gannh4[i]= gannh5[i]= gannh6[i]= gannh7[i]= gannh8[i]= gannl0[i]= gannl1[i]= gannl2[i]= gannl3[i]= gannl4[i]= gannl5[i]= gannl6[i]= gannl7[i]= gannl8[i]= Null; //Gann logic end // is price close to a Gann Line? gannmin[i]=100000; if (!IsNull(gannh0[i])) gannmin[i]=Min (gannmin[i], abs(gannh0[i]-avp[i])); if (!IsNull(gannh2[i])) gannmin[i]=Min (gannmin[i], abs(gannh2[i]-avp[i])); if (!IsNull(gannh4[i])) gannmin[i]=Min (gannmin[i], abs(gannh4[i]-avp[i])); if (!IsNull(gannh6[i])) gannmin[i]=Min (gannmin[i], abs(gannh6[i]-avp[i])); if (!IsNull(gannh8[i])) gannmin[i]=Min (gannmin[i], abs(gannh8[i]-avp[i])); if (!IsNull(gannl0[i])) gannmin[i]=Min (gannmin[i], abs(gannl0[i]-avp[i])); if (!IsNull(gannl2[i])) gannmin[i]=Min (gannmin[i], abs(gannl2[i]-avp[i])); if (!IsNull(gannl4[i])) gannmin[i]=Min (gannmin[i], abs(gannl4[i]-avp[i])); if (!IsNull(gannl6[i])) gannmin[i]=Min (gannmin[i], abs(gannl6[i]-avp[i])); if (!IsNull(gannl8[i])) gannmin[i]=Min (gannmin[i], abs(gannl8[i]-avp[i])); if (gannprox=="Yes" AND gannmin[i]<5 AND gannmin[i]gannh7[i]){uptarget[i]=gannh8[i]; Lotarget[i]=gannh7[i];} if (avp[i]gannh6[i]){uptarget[i]=gannh7[i]; Lotarget[i]=gannh6[i];} if (avp[i]gannh5[i]){uptarget[i]=gannh6[i]; Lotarget[i]=gannh5[i];} if (avp[i]gannh4[i]){uptarget[i]=gannh5[i]; Lotarget[i]=gannh4[i];} if (avp[i]gannh3[i]){uptarget[i]=gannh4[i]; Lotarget[i]=gannh3[i];} if (avp[i]gannh2[i]){uptarget[i]=gannh3[i]; Lotarget[i]=gannh2[i];} if (avp[i]gannh1[i]){uptarget[i]=gannh2[i]; Lotarget[i]=gannh1[i];} if (avp[i]gannh0[i]){uptarget[i]=gannh1[i]; Lotarget[i]=gannh0[i];} if (avp[i]gannl7[i]){uptarget[i]=gannh0[i]; Lotarget[i]=gannl7[i];} if (avp[i]gannl7[i]){uptarget[i]=gannl8[i]; Lotarget[i]=gannl7[i];} if (avp[i]gannl6[i]){uptarget[i]=gannl7[i]; Lotarget[i]=gannl6[i];} if (avp[i]gannl5[i]){uptarget[i]=gannl6[i]; Lotarget[i]=gannl5[i];} if (avp[i]gannl4[i]){uptarget[i]=gannl5[i]; Lotarget[i]=gannl4[i];} if (avp[i]gannl3[i]){uptarget[i]=gannl4[i]; Lotarget[i]=gannl3[i];} if (avp[i]gannl2[i]){uptarget[i]=gannl3[i]; Lotarget[i]=gannl2[i];} if (avp[i]gannl1[i]){uptarget[i]=gannl2[i]; Lotarget[i]=gannl1[i];} if (avp[i]gannl0[i]){uptarget[i]=gannl1[i]; Lotarget[i]=gannl0[i];} } if (Plotgannodd=="No" AND PlotGannRed=="Yes" AND PlotGannBlue=="Yes" AND PlotGann=="Yes") { if (avp[i]gannh6[i]){uptarget[i]=gannh8[i]; Lotarget[i]=gannh6[i];} if (avp[i]gannh4[i]){uptarget[i]=gannh6[i]; Lotarget[i]=gannh4[i];} if (avp[i]gannh2[i]){uptarget[i]=gannh5[i]; Lotarget[i]=gannh2[i];} if (avp[i]gannh0[i]){uptarget[i]=gannh4[i]; Lotarget[i]=gannh0[i];} if (avp[i]gannl6[i]){uptarget[i]=gannh0[i]; Lotarget[i]=gannl6[i];} if (avp[i]gannl6[i]){uptarget[i]=gannl8[i]; Lotarget[i]=gannl6[i];} if (avp[i]gannl4[i]){uptarget[i]=gannl6[i]; Lotarget[i]=gannl4[i];} if (avp[i]gannl2[i]){uptarget[i]=gannl4[i]; Lotarget[i]=gannl2[i];} if (avp[i]gannl0[i]){uptarget[i]=gannl2[i]; Lotarget[i]=gannl0[i];} } if (Plotgannodd=="No" AND PlotGannRed=="No" AND PlotGannBlue=="Yes" AND PlotGann=="Yes") { if (avp[i]gannh4[i]){uptarget[i]=gannh8[i]; Lotarget[i]=gannh4[i];} if (avp[i]gannh0[i]){uptarget[i]=gannh4[i]; Lotarget[i]=gannh0[i];} if (avp[i]gannl4[i]){uptarget[i]=gannh0[i]; Lotarget[i]=gannl4[i];} if (avp[i]gannl4[i]){uptarget[i]=gannl8[i]; Lotarget[i]=gannl4[i];} if (avp[i]gannl0[i]){uptarget[i]=gannl4[i]; Lotarget[i]=gannl0[i];} } if (Plotgannodd=="No" AND PlotGannRed=="No" AND PlotGannBlue=="No" AND PlotGann=="Yes") { if (avp[i]gannh0[i]){uptarget[i]=gannh8[i]; Lotarget[i]=gannh0[i];} if (avp[i]gannl0[i]){uptarget[i]=gannh0[i]; Lotarget[i]=gannl0[i];} } } } if (Plotgann=="Yes") { for (i=0;i<=8;i++) { if (i==0 OR i==8) { Plot(VarGet("gannh"+i),"Gannh"+i,colorWhite,styleLine|styleDashed|styleNoTitle); Plot(VarGet("gannl"+i),"Gannl"+i,colorWhite,styleLine|styleDashed|styleNoTitle); } if ((i==2 OR i==6) AND PlotGannRed=="Yes") { Plot(VarGet("gannh"+i),"Gannh"+i,colorRed,styleLine|styleDashed|styleNoTitle); Plot(VarGet("gannl"+i),"Gannl"+i,colorRed,styleLine|styleDashed|styleNoTitle); } if (i==4 AND PlotGannBlue=="Yes") { Plot(VarGet("gannh"+i),"Gannh"+i,colorBlue,styleLine|styleDashed|styleNoTitle); Plot(VarGet("gannl"+i),"Gannl"+i,colorBlue,styleLine|styleDashed|styleNoTitle); } if (Plotgannodd=="Yes") { if (i==1 OR i==3 OR i==5 OR i==7) { Plot(VarGet("gannh"+i),"Gannh"+i,colorGreen,styleLine|styleDashed|styleNoTitle); Plot(VarGet("gannl"+i),"Gannl"+i,colorGreen,styleLine|styleDashed|styleNoTitle); } } } } Title = Date()+" Gann Levels "+ Interval(format=2)+" "+Name()+" O "+WriteVal(O,1.2)+" H "+WriteVal(H,1.2)+" L "+WriteVal(L,1.2)+" C "+WriteVal(C,1.2)+" "+EncodeColor(colorYellow)+" Dayhigh " +WriteVal(dayHigh,1.2)+" Daylow "+WriteVal(Daylow,1.2) +"\n"+EncodeColor(colorGreen)+"Nearest Upper Gann Level "+WriteVal(uptarget,1.2)+EncodeColor(colorRed)+" Nearest Lower Gann Level "+WriteVal(Lotarget,1.2);