求大神帮忙将此指标添加上金叉死叉上穿20下穿80的报警,谢谢。 
//+------------------------------------------------------------------+ 
//|                                                       SlowKD.mq4 | 
//|                       Copyright ?2004, MetaQuotes Software Corp. | 
//|                                        http://www.metaquotes.net | 
//+------------------------------------------------------------------+ 
#property copyright "Copyright ?2004, MetaQuotes Software Corp." 
#property link      "http://www.metaquotes.net" 
#property indicator_separate_window 
#property indicator_minimum 0 
#property indicator_maximum 100 
#property indicator_buffers 2 
#property indicator_color1 LightSeaGreen 
#property indicator_color2 Red 
//---- input parameters 
extern int       KPeriod=5; 
extern int       DPeriod=3; 
extern int       Slowing=3; 
//---- buffers 
double KBuffer[]; 
double DBuffer[]; 
double MainBuffer[]; 
double SignalBuffer[]; 
double HighesBuffer[]; 
double LowesBuffer[]; 
//---- 
int draw_begin1=0; 
int draw_begin2=0; 
//+------------------------------------------------------------------+ 
//| Custom indicator initialization function                         | 
//+------------------------------------------------------------------+ 
int init() 
  { 
   string short_name; 
//---- 2 additional buffers are used for counting. 
   IndicatorBuffers(6); 
   SetIndexBuffer(2, HighesBuffer); 
   SetIndexBuffer(3, LowesBuffer); 
   SetIndexBuffer(4, MainBuffer); 
   SetIndexBuffer(5, SignalBuffer); 
//---- indicator lines 
   SetIndexStyle(0,DRAW_LINE); 
   SetIndexBuffer(0, KBuffer); 
   SetIndexStyle(1,DRAW_LINE); 
   SetIndexBuffer(1, DBuffer); 
//---- name for DataWindow and indicator subwindow label 
   short_name="SlowKD("+KPeriod+","+DPeriod+","+Slowing+")"; 
   IndicatorShortName(short_name); 
   SetIndexLabel(4,short_name); 
   SetIndexLabel(5,"Signal"); 
//---- 
   draw_begin1=KPeriod+Slowing; 
   draw_begin2=draw_begin1+DPeriod; 
   SetIndexDrawBegin(0,draw_begin1); 
   SetIndexDrawBegin(1,draw_begin2); 
//---- 
   return(0); 
  } 
//+------------------------------------------------------------------+ 
//| Stochastic oscillator                                            | 
//+------------------------------------------------------------------+ 
int start() 
  { 
   int    i,k; 
   int    counted_bars=IndicatorCounted(); 
   double price; 
//---- 
   if(BarsKPeriod) i=Bars-counted_bars-1; 
   while(i>=0) 
     { 
      double min=1000000; 
      k=i+KPeriod-1; 
      while(k>=i) 
        { 
         price=Low[k]; 
         if(min>price) min=price; 
         k--; 
        } 
      LowesBuffer[i]=min; 
      i--; 
     } 
//---- maximums counting 
   i=Bars-KPeriod; 
   if(counted_bars>KPeriod) i=Bars-counted_bars-1; 
   while(i>=0) 
     { 
      double max=-1000000; 
      k=i+KPeriod-1; 
      while(k>=i) 
        { 
         price=High[k]; 
         if(maxdraw_begin1) i=Bars-counted_bars-1; 
   while(i>=0) 
     { 
      double sumlow=0.0; 
      double sumhigh=0.0; 
      for(k=(i+Slowing-1);k>=i;k--) 
        { 
         sumlow+=Close[k]-LowesBuffer[k]; 
         sumhigh+=HighesBuffer[k]-LowesBuffer[k]; 
        } 
      if(sumhigh==0.0) MainBuffer[i]=100.0; 
      else MainBuffer[i]=sumlow/sumhigh*100; 
      i--; 
     } 
//---- last counted bar will be recounted 
   if(counted_bars>0) counted_bars--; 
   int limit=Bars-counted_bars; 
//---- signal line is simple movimg average 
   for(i=0; i<limit; i++) 
      KBuffer[i]=iMAOnArray(MainBuffer,Bars,Slowing,0,MODE_SMA,i); 
   for(i=0; i<limit; i++) 
      DBuffer[i]=iMAOnArray(KBuffer,Bars,DPeriod,0,MODE_SMA,i); 
//---- 
   return(0); 
  } 
//+------------------------------------------------------------------+ 
 |