yyyy

 
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
#property indicator_buffers 3
#property indicator_color1 Blue
#property indicator_color2 Green
#property indicator_color3 Red

// Input parameters
input int MA_Period = 14; // Moving Average Period

// Buffers for signals
double BuySignal[];
double SellSignal[];
double MA[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   // Set Buffers
   SetIndexBuffer(0, MA);
   SetIndexBuffer(1, BuySignal);
   SetIndexBuffer(2, SellSignal);

   PlotIndexSetString(0, PLOT_LABEL, "SMA");
   PlotIndexSetString(1, PLOT_LABEL, "Buy Signal");
   PlotIndexSetString(2, PLOT_LABEL, "Sell Signal");

   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   // Calculate the moving average
   for(int i = 0; i < rates_total; i++)
     {
      MA[i] = iMA(NULL, 0, MA_Period, 0, MODE_SMA, PRICE_CLOSE, i);
     }

   // Clear previous signals
   ArraySetAsSeries(BuySignal, true);
   ArraySetAsSeries(SellSignal, true);
   ArrayInitialize(BuySignal, 0);
   ArrayInitialize(SellSignal, 0);

   // Buy/Sell signal generation
   for(int i = 1; i < rates_total; i++)
     {
      if(close[i] > MA[i] && close[i-1] <= MA[i-1])
         BuySignal[i] = low[i] - 10 * _Point; // Buy signal below the bar
      else if(close[i] < MA[i] && close[i-1] >= MA[i-1])
         SellSignal[i] = high[i] + 10 * _Point; // Sell signal above the bar
     }

   return(rates_total);
  }
//+------------------------------------------------------------------+

 
Это что? Супериндикатор?