#property indicator_separate_window #property indicator_buffers 4 #property indicator_color1 Green #property indicator_width1 2 #property indicator_color2 YellowGreen #property indicator_width2 2 #property indicator_color3 Red #property indicator_width3 2 #property indicator_color4 DarkOrange #property indicator_width4 2 #property indicator_minimum -0.5 #property indicator_maximum 0.5 #property indicator_level1 -0.3 #property indicator_level2 0 #property indicator_level3 0.3 #property indicator_levelcolor DimGray extern int Dem_Period = 14; double dem[]; double ind_buffer1[]; double ind_buffer2[]; double ind_buffer1s[]; double ind_buffer2s[]; //+------------------------------------------------------------------+ int init() { IndicatorBuffers(5); SetIndexStyle(0,DRAW_HISTOGRAM); SetIndexStyle(1,DRAW_HISTOGRAM); SetIndexStyle(2,DRAW_HISTOGRAM); SetIndexStyle(3,DRAW_HISTOGRAM); SetIndexBuffer(0,ind_buffer1); SetIndexBuffer(1,ind_buffer1s); SetIndexBuffer(2,ind_buffer2); SetIndexBuffer(3,ind_buffer2s); SetIndexBuffer(4,dem); IndicatorShortName("Dem("+Dem_Period+")"); return(0); } //+------------------------------------------------------------------+ int start() { int limit; int counted_bars=IndicatorCounted(); double prev,current; if(counted_bars<0) return(-1); if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; for(int i=0; i=0; i--) { current=dem[i]; prev=dem[i+1]; if (((current<0)&&(prev>0))||(current<0)) up= false; if (((current>0)&&(prev<0))||(current>0)) up= true; if(!up) { if(current > prev) { ind_buffer2s[i]=current; ind_buffer2[i]=0.0; ind_buffer1[i]=0.0; ind_buffer1s[i]=0.0; } else { ind_buffer2[i]=current; ind_buffer2s[i]=0.0; ind_buffer1[i]=0.0; ind_buffer1s[i]=0.0; } } else { if(current < prev) { ind_buffer1s[i]=current; ind_buffer1[i]=0.0; ind_buffer2[i]=0.0; ind_buffer2s[i]=0.0; } else { ind_buffer1[i]=current; ind_buffer1s[i]=0.0; ind_buffer2[i]=0.0; ind_buffer2s[i]=0.0; } } } return(0); } //+------------------------------------------------------------------+