Stock Portfolio Organizer
The ultimate porfolio management solution.
Shares, Margin, CFD's, Futures and Forex
EOD and Realtime
Dividends and Trust Distributions
And Much More ....
WiseTrader Toolbox
#1 Selling Amibroker Plugin featuring:
Advanced Adaptive Indicators
Advanced Pattern Exploration
Neural Networks
And Much More ....
oz for Amibroker (AFL)
Copy & Paste Friendly
Back
// AFL code by Edward Pottasch, Jan 2013 procedure alternate_proc(pk,tr,sumpk,sumtr) { global pkg; global trg; pkg=pk;trg=tr; idxpk=0; idxtr=0; flgtr=0; flgpk=0; for(i=1;i<BarCount;i++) { if(pk[i] AND sumpk[i]==1 AND !tr[i] AND flgpk==0) { idxpk=i; flgtr=0; } else if( (pk[i] AND sumpk[i]>1 AND !tr[i]) OR (pk[i] AND flgpk==1) ) { if(H[i]>=H[idxpk]) { pkg[idxpk]=0; idxpk=i; flgpk=0; } else if(H[i]<H[idxpk]) { pkg[i]=0; flgpk=0; } } else if(tr[i] AND sumtr[i]==1 AND !pk[i] AND flgtr==0) { idxtr=i; flgpk=0; } else if( (tr[i] AND sumtr[i]>1 AND !pk[i]) OR (tr[i] AND flgtr==1) ) { if(L[i]<=L[idxtr]) { trg[idxtr]=0; idxtr=i; flgtr=0; } else if(L[i]>L[idxtr]) { trg[i]=0; flgtr=0; } } else if(pk[i] AND tr[i]) { if(sumpk[i-1]>sumtr[i-1]) { pkg[i]=0; flgtr=1; idxtr=i; } else if(sumtr[i-1]>sumpk[i-1]) { trg[i]=0; flgpk=1; idxpk=i; } } } } procedure calculatePivots(tfrm,PivotSymmetry,nbar,CleanPivots,x) { TimeFrameSet(tfrm); global tr;global pk;global px0;global px1;global px2;global ph0;global ph1;global ph2; global trl;global pkh;global tx0;global tx1;global tx2;global tl0;global tl1;global tl2; global fact; if(PivotSymmetry) { fc=1; pk=H>Ref(HHV(H,nbar*fc),-1) AND Ref(HHV(H,nbar),nbar)<=H; tr=L<Ref(LLV(L,nbar*fc),-1) AND Ref(LLV(L,nbar),nbar)>=L; } else { fc=2; pk=H>Ref(HHV(H,nbar*fc),-1) AND Ref(HHV(H,nbar),nbar)<=H; tr=L<Ref(LLV(L,nbar*fc),-1) AND Ref(LLV(L,nbar),nbar)>=L; } px0=ValueWhen(pk,x,0); tx0=ValueWhen(tr,x,0); px1=ValueWhen(pk,x,1); tx1=ValueWhen(tr,x,1); px2=ValueWhen(pk,x,2); tx2=ValueWhen(tr,x,2); ph0=ValueWhen(pk,H,0); tl0=ValueWhen(tr,L,0); ph1=ValueWhen(pk,H,1); tl1=ValueWhen(tr,L,1); ph2=ValueWhen(pk,H,2); tl2=ValueWhen(tr,L,2); sumpk=Sum(pk,BarsSince(tr));sumtr=Sum(tr,BarsSince(pk)); if(CleanPivots) { alternate_proc(pk,tr,sumpk,sumtr); pk=pkg; tr=trg; px0=ValueWhen(pk,x,0); tx0=ValueWhen(tr,x,0); px1=ValueWhen(pk,x,1); tx1=ValueWhen(tr,x,1); px2=ValueWhen(pk,x,2); tx2=ValueWhen(tr,x,2); px3=ValueWhen(pk,x,3); tx3=ValueWhen(tr,x,3); ph0=ValueWhen(pk,H,0); tl0=ValueWhen(tr,L,0); ph1=ValueWhen(pk,H,1); tl1=ValueWhen(tr,L,1); ph2=ValueWhen(pk,H,2); tl2=ValueWhen(tr,L,2); ph3=ValueWhen(pk,H,3); tl3=ValueWhen(tr,L,3); } pkh=IIf(pk,H,Null); trl=IIf(tr,L,Null); TimeFrameRestore(); fact=Nz(Max(tfrm/60,Interval()/60)/(Interval()/60)); if(fact==0)fact=1; Lkbk=Nz(tfrm/Interval()); if(Lkbk>1) { pk=TimeFrameExpand(pk,tfrm,expandFirst); pkh=TimeFrameExpand(pkh,tfrm,expandFirst); pkhs=IIf(!IsEmpty(pkh),1,0);pkhs=pkhs-Ref(pkhs,-1); pk=pk AND H==pkh; cond1=Sum(pk,BarsSince(pkhs==1)+1)==1 AND pk; pk=pk AND cond1; tr=TimeFrameExpand(tr,tfrm,expandFirst); trl=TimeFrameExpand(trl,tfrm,expandFirst); trls=IIf(!IsEmpty(trl),1,0);trls=trls-Ref(trls,-1); tr=tr AND L==trl; cond1=Sum(tr,BarsSince(trls==1)+1)==1 AND tr; tr=tr AND cond1; px0=ValueWhen(pk,x,0); tx0=ValueWhen(tr,x,0); px1=ValueWhen(pk,x,1); tx1=ValueWhen(tr,x,1); px2=ValueWhen(pk,x,2); tx2=ValueWhen(tr,x,2); px3=ValueWhen(pk,x,3); tx3=ValueWhen(tr,x,3); ph0=ValueWhen(pk,H,0); tl0=ValueWhen(tr,L,0); ph1=ValueWhen(pk,H,1); tl1=ValueWhen(tr,L,1); ph2=ValueWhen(pk,H,2); tl2=ValueWhen(tr,L,2); ph3=ValueWhen(pk,H,3); tl3=ValueWhen(tr,L,3); } } function displayLines(pk,tr,lnColorRes,lnColorSup,lnWidthRes,lnWidthSup,displayMode) { for(i=0;i<BarCount;i++) { DisplayRes=1; DisplaySup=1; if(pk[i]) { if(displayMode) { hval=H[i]; for(j=i;j<BarCount;j++) { if(H[j]>hval) { DisplayRes=0; break; } } } if(DisplayRes) { x0=i;y0=H[i];x1=BarCount;y1=H[i]; Plot(LineArray(x0,y0,x1,y1,1),"",lnColorRes,styleLine,0,0,0,0,lnWidthRes); } } if(tr[i]) { if(displayMode) { lval=L[i]; for(j=i;j<BarCount;j++) { if(L[j]<lval) { DisplaySup=0; break; } } } if(DisplaySup) { x0=i;y0=L[i];x1=BarCount;y1=L[i]; Plot(LineArray(x0,y0,x1,y1,1),"",lnColorSup,styleLine,0,0,0,0,lnWidthSup); } } } } function plotPivots(pkh,trl,pk,tr,Lx,nbar,fact,x) { Plot(pkh,"",colorRed,styleThick,0,0,0,-1); Plot(trl,"",colorBrightGreen,styleThick,0,0,0,-1); PlotShapes(shapeSmallCircle*tr,IIf(Lx-ValueWhen(tr,x)>nbar*fact,ColorRGB(0,100,0),colorWhite),0,L,-10); PlotShapes(shapeSmallCircle*pk,IIf(Lx-ValueWhen(pk,x)>nbar*fact,ColorRGB(255,0,0),colorWhite),0,H,10); } // MAIN code RequestTimedRefresh(0.1,True); xx=BarIndex();x=xx;Lx=LastValue(x); nbar=Param("N Pivot Bars",5,2,50,1); CleanPivots=ParamToggle("Use Clean Pivots","Off|On",1); PivotSymmetry=ParamToggle("Use Symmetric Pivots","Off|On",0); displayMode=ParamToggle("Display Mode","Classic|Alternative",1); logscale=ParamToggle("Axis type","Linear|Logarithmic",0); weeklyTF=ParamToggle("WEEKLY timeframe","Off|On",1); weeklyLineColorRes=ParamColor("WEEKLY Line Color (resistance)",ColorRGB(150,0,0)); weeklyLineColorSup=ParamColor("WEEKLY Line Color (support)",ColorRGB(0,0,150)); weeklyBackColorRes=ParamColor("WEEKLY Back Color (resistance)",ColorRGB(250,0,0)); weeklyBackColorSup=ParamColor("WEEKLY Back Color (support)",ColorRGB(0,0,250)); weeklyLineWidth=Param("WEEKLY Line Width",6,1,10,1); dailyTF=ParamToggle("DAILY timeframe","Off|On",1); dailyLineColorRes=ParamColor("DAILY Line Color (resistance)",ColorRGB(50,0,0)); dailyLineColorSup=ParamColor("DAILY Line Color (support)",ColorRGB(0,0,50)); dailyBackColorRes=ParamColor("DAILY Back Color (resistance)",ColorRGB(250,0,0)); dailyBackColorSup=ParamColor("DAILY Back Color (support)",ColorRGB(0,0,250)); dailyLineWidth=Param("DAILY Line Width",2,1,10,1); SetChartOptions(0,chartShowDates); if(logscale) SetChartOptions(2,chartLogarithmic,chartGridMiddle|chartGridMargins); else SetChartOptions(3,chartLogarithmic,!(chartGridMiddle|chartGridMargins)); GraphXSpace=5;SetChartBkColor(ColorRGB(0,0,0)); SetBarFillColor(IIf(C>O,colorGreen,IIf(C<=O,colorRed,colorLightGrey))); Plot(C,"Price",IIf(C>O,colorDarkGreen,IIf(C<=O,colorDarkRed,colorLightGrey)),64,0,0,0,0); // setup for weekly if(weeklyTF) { calculatePivots(inWeekly,PivotSymmetry,nbar,CleanPivots,x); displayLines(pk,tr,weeklyLineColorRes,weeklyLineColorSup,weeklyLineWidth,weeklyLineWidth,displayMode); plotPivots(pkh,trl,pk,tr,Lx,nbar,fact,x); } // setup for daily if(dailyTF) { calculatePivots(inDaily,PivotSymmetry,nbar,CleanPivots,x); displayLines(pk,tr,dailyLineColorRes,dailyLineColorSup,dailyLineWidth,dailyLineWidth,displayMode); plotPivots(pkh,trl,pk,tr,Lx,nbar,fact,x); }