Помощь в написании индикатора. - страница 2

 
kenas:
А через индексный буффер не смог сделать, если честно доконца ещё не разобрался что это такое.
А что там разбираться? Это буфер значений индикатора которые на графике отображаются. Так как у тебя получаются значения далекие от отображаемой на графике цены (да и нужны тебе тольцо цифры в "окне данных"), то буфер делаем неотображаемым на графике SetIndexStyle(0,DRAW_NONE), а сами значения при этом будут в "окне данных" отображаться.

В общем-то делов тут ровно на пару минут. Если хочешь видеть "тело" свечи (разница между открытием и закрытием) в абсолютный величинах, то индюк такой будет:
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Black
 
double Body[];
 
int init()
  {
   SetIndexStyle(0,DRAW_NONE);
   SetIndexLabel(0,"Body");
   SetIndexBuffer(0,Body);
   return(0);
  }
 
int start()
  {
   for(int i=Bars-IndicatorCounted()-1; i>=0; i--) Body[i]=Close[i]-Open[i];
   return(0);
  }

Если хочешь видеть размер "тела" в пипсах с учетом "разрядности" валютной пары, то надо значение на Point поделить, ну и отображаемую разрядность после запятой ограничить IndicatorDigits(0). Получим следующее:
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Black
 
double Body[];
 
int init()
  {
   IndicatorDigits(0);
   SetIndexStyle(0,DRAW_NONE);
   SetIndexLabel(0,"Body");
   SetIndexBuffer(0,Body);
   return(0);
  }
 
int start()
  {
   for(int i=Bars-IndicatorCounted()-1; i>=0; i--) Body[i]=NormalizeDouble((Close[i]-Open[i])/Point,0);
   return(0);
  }

Вот собственно и вся задачка. Тут и писать-то нечего.
 
Спасибо, большое что рассказал как работать с буффером, просто я только учусь программировать в MQ4 и не во всём ещё до конца разобрался.