Нанести метку

 

Извините меня. Может быть это слишком просто. но у меня не рисуется метка в окне индикатора. И второй индикатор "ma2"  не прорисовывается. Дальше я все вычислю, чтобы отслеживалось. Но мне нужно увидеть свою метку и индикатор  "ma2' Спасибо!   В.Пет.

Пишу:

//+------------   i_MA   -------------+ 

#property indicator_chart_window         //-- отрисовка индикатора в основном окне 
#property indicator_buffers 6            //-- использован 1 буфер   
#property indicator_plots   4            //-- использовано всего одно графическое построение 

#property indicator_type1   DRAW_LINE    //-- отрисовка индикатора в виде линии   
#property indicator_type2   DRAW_LINE    //-- отрисовка индикатора в виде линии   
#property indicator_type3   DRAW_LINE    //-- отрисовка индикатора в виде линии   
#property indicator_type4   DRAW_LINE    //-- отрисовка индикатора в виде линии   
input int MAPer30 = 13;                  //-- входные параметры индикатора 
input int MAPer2  = 64;                  //-- входные параметры индикатора 
input int MAShift = 0;                   //-- период мувинга   //-- сдвиг мувинга по горизонтали 
   double ma30[], ma2[]; 
//+------------------------------------------------------------------+ 
//| Custom indicator initialization function                         |
 //+------------------------------------------------------------------+ 
void OnInit()   { 
//---- превращение динамического массива ma30 в индикаторный буфер 

SetIndexBuffer(0, ma30, INDICATOR_DATA);   
PlotIndexSetInteger(0,PLOT_LINE_STYLE,STYLE_DOT);     // задание стиля DOT(Пунктир)  
PlotIndexSetInteger(0,PLOT_LINE_WIDTH,1);             // Толщина   
PlotIndexSetInteger(0,PLOT_LINE_COLOR,Brown);         // Color   
PlotIndexSetInteger(0,PLOT_SHIFT, MAShift);           // сдвига MA на MAShift  
PlotIndexSetInteger(0,PLOT_DRAW_BEGIN, MAPer30 - 1); // сдвиг начала отрисовки MAPeriod 

SetIndexBuffer(1, ma2, INDICATOR_DATA);   
PlotIndexSetInteger(1,PLOT_LINE_STYLE,STYLE_SOLID);   // задание стиля DOT(Пунктир)  
PlotIndexSetInteger(1,PLOT_LINE_WIDTH,2);             // Толщина   
PlotIndexSetInteger(1,PLOT_LINE_COLOR,Blue);          // Color   
PlotIndexSetInteger(1,PLOT_SHIFT, MAShift);           // сдвига MA на MAShift  
PlotIndexSetInteger(1,PLOT_DRAW_BEGIN, MAPer2 - 1); // сдвиг начала отрисовки MAPeriod 
 } 
//+------------------------------------------------------------------+ 
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+ 
    int OnCalculate(
      const int rates_total,    // количество истории в барах на текущем тике                 
      const int prev_calculated,// количество истории в барах на предыдущем тике                 
      const int begin,          // номер начала достоверного отсчёта баров                 
      const double &price[] )   // ценовой массив для расчёта индикатора      
                                             {
//---- проверка количества баров на достаточность для расчёта  
//  if(rates_total < MAPeriod - 1 + begin)     return(0);     
     int first, bar, ii;              //---- объявления локальных переменных  
  double Sum30, Sum2, SMA;      
  
  if(prev_calculated30 == 0)           //---- расчёт стартового номера first для цикла пересчёта баров   
    first = MAPer30 - 1 + begin;       // проверка на первый старт расчёта индикатора   
    else first = prev_calculated30-1;  // стартовый номер для расчёта всех баров  
  if(prev_calculated2 == 0)            //---- расчёт стартового номера first для цикла пересчёта баров   
    first = MAPer2 - 1 + begin;        // проверка на первый старт расчёта индикатора   
    else first = prev_calculated2-1;   // стартовый номер для расчёта всех баров  

  for(bar = first; bar < rates_total; bar++)  {  // стартовый номер для расчёта новых баров   
    Sum30 = 0.0;                      //---- основной цикл расчёта индикатора  
    Sum2 = 0.0;                       //---- основной цикл расчёта индикатора  
    for(ii = 0; ii < MAPer30; ii++)   //---- цикл суммирования значений цены для усреднения на текущем баре   
      Sum30 += price[bar - ii]; 
    for(ii = 0; ii < MAPer2; ii++)    //---- цикл суммирования значений цены для усреднения на текущем баре   
      Sum2 += price[bar - ii]; 
// Sum = Sum + price[bar - ii]        Эквивалент строки      
    ma30[bar] = Sum30 / MAPer30;      //---- Инициализация ячейки индикаторного буфера полученным значением SMA  
    ma2[bar] =  Sum2 / MAPer2;        //---- Инициализация ячейки индикаторного буфера полученным значением SMA  
     } 

  ObjectDelete(0,"stt");  
  ObjectCreate(0,"as",OBJ_TEXT,0,0,0); 
  ObjectCreate(0,"as",OBJ_LABEL,0,0,0);            
  ObjectSetInteger(0,"as",OBJPROP_XDISTANCE,200); 
  ObjectSetInteger(0,"as",OBJPROP_YDISTANCE,300); 
  ObjectSetInteger(0,"as",OBJPROP_COLOR,clrWhite); 
  ObjectSetString(0,"as",OBJPROP_TEXT,"= A S =");              // ObjectSetInteger 136,138
  ObjectSetString(0,"as",OBJPROP_FONT,"Arial"); 
  ObjectSetInteger(0,"as",OBJPROP_FONTSIZE,48); 
 ObjectCreate(0,"txt",OBJ_TEXT,0,D'01.01.2004 00:00:00',1.20590);

  Print(" = = i_MA");   
     return(rates_total);   
    }    




Файлы:
f_mql5.png  66 kb
 
Вам просто нужно учиться. Помощь не нужна.