#property indicator_separate_window
 #property indicator_buffers 4
 #property indicator_color1 Green
 #property indicator_width1 5
 #property indicator_style1 0
 #property indicator_color2 Red
 #property indicator_width2 5
 #property indicator_style2 0
 #property indicator_color3 LightGray
 #property indicator_width3 1
 #property indicator_style3 2
 #property indicator_color4 LightGray
 #property indicator_width4 1
 #property indicator_style4 2

 extern int Ticks=50;  // Глубина истории тиков
 extern int Levels=5;  // Величина сигнальных уровней
 extern int Alarm=1;   // "1" - включить сигнал, "0" - выключить

 double BufTick[100000], BufResult[1000], BufSum[], BufH[], BufL[];
 int n;

 int init()
  {
  SetIndexBuffer(0,BufResult);
  SetIndexStyle(0,DRAW_HISTOGRAM);
  SetIndexBuffer(1,BufSum);
  SetIndexStyle(1,DRAW_HISTOGRAM);
  SetIndexBuffer(2,BufH);
  SetIndexStyle(2,DRAW_LINE);
  SetIndexBuffer(3,BufL);
  SetIndexStyle(3,DRAW_LINE);
  return(0);
  }

 int start()
  {
  ArrayInitialize(BufResult,0);
  ArrayInitialize(BufSum,0);
  n++;
  BufTick[n]=iClose(Symbol(),0,0);
  for(int i=n-1;i>=n-Ticks;i--)
   {
    if (BufTick[i]!=0) BufResult[n-i]=(BufTick[i+1]-BufTick[i])/Point;
    BufSum[0]=BufSum[0]+BufResult[n-i]/MathSqrt(n-i+2);
    BufH[n-i]=Levels; BufL[n-i]=-Levels;
   }
  if (Alarm==1 && MathAbs(BufSum[0])>=Levels) PlaySound("alert.wav");
  if (n>=100000) n=0;
 return(0);
 }