Как правильно применять технические индикаторы вычисляемые от значений массива (iMAOnArray и т.п.)?

 

Господа Программисты, уже давно хочу разобраться с функциями технических индикаторов вычисляемых от массива, вот код который у меня не работает:

 

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Red
//---- indicator parameters 
extern int Period1=7;
extern int Period2=65;
//---- buffers 
double ExtBuffer[], bbb[];
//+------------------------------------------------------------------+ 
//| Custom indicator initialization function                         | 
//+------------------------------------------------------------------+ 
int init()
  {
//---- indicators 
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,bbb);
//---- 
   return(0);
  }
//+------------------------------------------------------------------+ 
//| Custor indicator deinitialization function                       | 
//+------------------------------------------------------------------+ 
int deinit()
  {
//---- TODO: add your code here 
//---- 
   return(0);
  }
//+------------------------------------------------------------------+ 
//| Custom indicator iteration function                              | 
//+------------------------------------------------------------------+ 
int start()
  {
   int    counted_bars=IndicatorCounted();
   int i=0;
   double SMA1,SMA2,result;
//---- TODO: add your code here 
   for(i=0;i<Bars;i++)
     {
      ExtBuffer[i]=(Open[i]+Close[i])*0.5;
     }
   for(i=counted_bars;i>0;i--)
     {
      result = iMAOnArray(ExtBuffer,0,5,0,3,i);
      bbb[i]=result;
     }
//---- 
   return(0);
  }
Что я делаю не так?
 

Вам нужны два индикаторных буфера. В один Вы помещаете исходные данные, во второй выводите результат их обработки функцией iMaOnArray.

#property indicator_buffers 2
//............
double ExtBuffer[], result[];
//............ в инит
SetIndexBuffer(0,result);
SetIndexBuffer(1,ExtBuffer);
SetIndexStyle(0,DRAW_LINE
 
hostvik1:

Господа Программисты, уже давно хочу разобраться с функциями технических индикаторов вычисляемых от массива, вот код который у меня не работает:

Что я делаю не так?
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Red
//---- indicator parameters 
extern int Period1=7;
extern int Period2=65;
//---- buffers 
double ExtBuffer[], bbb[];
//+------------------------------------------------------------------+ 
//| Custom indicator initialization function                         | 
//+------------------------------------------------------------------+ 
int init()
  {
//---- indicators 
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,bbb);
//---- 
   return(0);
  }
//+------------------------------------------------------------------+ 
//| Custor indicator deinitialization function                       | 
//+------------------------------------------------------------------+ 
int deinit()
  {
//---- TODO: add your code here 
//---- 
   return(0);
  }
//+------------------------------------------------------------------+ 
//| Custom indicator iteration function                              | 
//+------------------------------------------------------------------+ 
int start()
  {
   int    counted_bars=IndicatorCounted();
   int i=0;
   double SMA1,SMA2,result;
//---- TODO: add your code here 
   for(i=0;i<Bars;i++)
     {
      ExtBuffer[i]=(Open[i]+Close[i])*0.5;
     }
   for(i=counted_bars;i>0;i--)
     {
      result = iMAOnArray(ExtBuffer,0,5,0,3,i);
      bbb[i]=result;
     }
//---- 
   return(0);
  }

Память под массивы отводить кто будет за Вас ?

Причина обращения: