//+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ #property copyright "lowphat" #property link "forextrash@yahoo.com" #property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 Lime #property indicator_color2 Red //---- input parameters extern int ForcedZigTime=60; extern int ExtDepth=15; extern int ExtDeviation=5; extern int ExtBackstep=3; extern bool ShowSettingsOnChart=false; //---- buffers double ExtMapBuffer1[]; double ExtMapBuffer2[]; datetime daytimes[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexStyle(0,DRAW_ARROW); SetIndexArrow(0,163); SetIndexBuffer(0,ExtMapBuffer1); SetIndexStyle(1,DRAW_ARROW,EMPTY,0); SetIndexArrow(1, 163); SetIndexBuffer(1,ExtMapBuffer2); SetIndexEmptyValue(0,0.0); IndicatorShortName("ZigZagPhat ("+ForcedZigTime+")"); if (ShowSettingsOnChart==true){ Comment("\nZigZag Forced Time ("+ForcedZigTime+")\nZigZag Exit Depth ("+ExtDepth+")\nZigZag Exit Deviation ("+ExtDeviation+")\nZigZag Exit Backstep ("+ExtBackstep+")"); } ArrayCopySeries(daytimes,MODE_TIME,Symbol(),ForcedZigTime); return(0); } //+------------------------------------------------------------------+ //| Custor indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int limit, bigshift; int counted_bars=IndicatorCounted(); //---- if (counted_bars<0) return(-1); if (counted_bars>0) counted_bars--; limit=Bars-counted_bars; for (int i=0; i=daytimes[0]) bigshift=0; else { bigshift = ArrayBsearch(daytimes,Time[i-1],WHOLE_ARRAY,0,MODE_DESCEND); if(Period()<=ForcedZigTime) bigshift++; } ExtMapBuffer1[i]=iCustom(NULL,ForcedZigTime,"ZigZag",ExtDepth,ExtDeviation,ExtBackstep,0,bigshift); ExtMapBuffer2[i]=iCustom(NULL,ForcedZigTime,"ZigZag",ExtDepth,ExtDeviation,ExtBackstep,1,bigshift); } return(0); }