Всё равно не работает, не выводит Alert...!!! - страница 2

 
Эк Вы его, Андрей... Пусть сначала учебник освоит.
 
Народ, посмотрите пожалуйста вот накатал Индикатор который по моей задумке должен выводить Алерт при пересечении МА... Посмотрите что не так, следовал примерам как описано в Звуковые сигналы в индикаторах ...
//+------------------------------------------------------------------+
//|                                        Custom MS-Signal.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_chart_window
#property indicator_buffers 1
#property indicator_color1 Red
//---- indicator parameters
extern int MA_Period=13;
extern int MA_Shift=0;
extern int MA_Method=0;
//---- indicator buffers
double ExtMapBuffer[];
double SignalBuffer[];
//----
int ExtCountedBars=0;
static int i=0, limit = 0;
#define SIGNAL_BAR 1
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   int    draw_begin;
   string short_name;
//---- drawing settings
   SetIndexStyle(0,DRAW_LINE);
   SetIndexShift(0,MA_Shift);
   IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));
   if(MA_Period<2) MA_Period=13;
   draw_begin=MA_Period-1;
//---- indicator short name
   switch(MA_Method)
     {
      case 1 : short_name="EMA(";  draw_begin=0; break;
      case 2 : short_name="SMMA("; break;
      case 3 : short_name="LWMA("; break;
      default :
         MA_Method=0;
         short_name="SMA(";
     }
   IndicatorShortName(short_name+MA_Period+")");
   SetIndexDrawBegin(0,draw_begin);
//---- indicator buffers mapping
   SetIndexBuffer(0,ExtMapBuffer);
//---- initialization done
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   if(Bars<=MA_Period) return(0);
   ExtCountedBars=IndicatorCounted();
//---- check for possible errors
   if (ExtCountedBars<0) return(-1);
//---- last counted bar will be recounted
   if (ExtCountedBars>0) ExtCountedBars--;
//----
   switch(MA_Method)
     {
      case 0 : sma();  break;
      case 1 : ema();  break;
      case 2 : smma(); break;
      case 3 : lwma();
     }
//---- done
for(i = 0; i < limit; i++)
SignalBuffer[i] = iMAOnArray(ExtMapBuffer,Bars,MA_Period, 0, MA_Method, i);
static int PrevSignal = 0, PrevTime = 0; 
    if(SIGNAL_BAR > 0 && Time[0] <= PrevTime ) 
        return(0);
    //---- Отмечаем, что этот бар проверен
    PrevTime = Time[0];
   if(PrevSignal <= 0)
      {
        //---- Проверяем, не пересеклись ли линии на прошлом баре:
        if(ExtMapBuffer[SIGNAL_BAR] - SignalBuffer[SIGNAL_BAR] > 0 && 
           SignalBuffer[SIGNAL_BAR+1] - ExtMapBuffer[SIGNAL_BAR+1] >= 0)
          {
            //---- Если пересеклись, отмечаем что последний сигнал - бай
            PrevSignal = 1;
            //---- и выводим информацию:
            Alert("sMACD (", Symbol(), ", ", Period(), ")  -  BUY!!!");
//            Print("sMACD (", Symbol(), ", ", Period(), ")  -  BUY!!!");
//            Comment("sMACD (", Symbol(), ", ", Period(), ")  -  BUY!!!");
//            PlaySound("Alert.wav");
          }
      }
      if(PrevSignal >= 0)
      {
        if(SignalBuffer[SIGNAL_BAR] - ExtMapBuffer[SIGNAL_BAR] > 0 && 
           ExtMapBuffer[SIGNAL_BAR+1] - SignalBuffer[SIGNAL_BAR+1] >= 0)
          {
            PrevSignal = -1;
            Alert("sMACD (", Symbol(), ", ", Period(), ")  -  SELL!!!");
//            Print("sMACD (", Symbol(), ", ", Period(), ")  -  SELL!!!");
//            Comment("sMACD (", Symbol(), ", ", Period(), ")  -  SELL!!!");
//            PlaySound("Alert.wav");
          }
      } 
   return(0);
 
дальше я просто обрезал стандартный индикатор МА
...
 
zax:
дальше я просто обрезал стандартный индикатор МА...
А вот этого делать не стоило...
ExtMapBuffer вообще не заполняется, SignalBuffer, соответственно, тоже пустой.

Неужели сложно вставить готовый код? Там же есть пример с МАКД-ом.