#property indicator_chart_window #property indicator_buffers 4 #property indicator_color1 DodgerBlue #property indicator_color2 HotPink #property indicator_color3 Blue #property indicator_color4 Red double BufMA01[]; double BufMA02[]; double BufBuy[]; double BufSell[]; extern int MA01_Period = 20; extern int MA02_Period = 100; int init() { SetIndexBuffer(0,BufMA01); SetIndexBuffer(1,BufMA02); SetIndexBuffer(2,BufBuy); SetIndexBuffer(3,BufSell); SetIndexStyle(2,DRAW_ARROW,STYLE_SOLID,5,Blue); SetIndexArrow(2,233); SetIndexStyle(3,DRAW_ARROW,STYLE_SOLID,5,Red); SetIndexArrow(3,234); return(0); } int start() { int counted_bar = IndicatorCounted(); int limit = Bars-counted_bar; if(counted_bar == 0) limit -= MA02_Period-1; for (int i = limit-1; i>=0; i--) { BufMA01[i] = iMA(NULL,0,MA01_Period,0,MODE_EMA,PRICE_CLOSE,i); BufMA02[i] = iMA(NULL,0,MA02_Period,0,MODE_EMA,PRICE_CLOSE,i); } if(counted_bar == 0) limit -= 2; for (i = limit-1; i>=0; i--) { BufBuy[i] = EMPTY_VALUE; if(BufMA01[i+2] <= BufMA02[i+2] && BufMA01[i+1] > BufMA02[i+1]) BufBuy[i] = Low[i]-10*Point; BufSell[i] = EMPTY_VALUE; if(BufMA01[i+2] >= BufMA02[i+2] && BufMA01[i+1] < BufMA02[i+1]) BufSell[i] = High[i]+10*Point; } return(0); }