подскажите почему не работает вот этот простой индикатор? :(

 
Индюк призван просто рисовать на графика отношение текущей цены к High за всю историю графика, а в итоге ничего вообще не отображает, хотя в комменты выводятся значения заполнения основного буфера. в чем может быть дело?

#property copyright "Other price"
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red

double ExtMapBuffer1[];

int init()
  {
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,ExtMapBuffer1);
   return(0);
  }

int deinit(){return(0);}
  
   
  

int start()
  {
   
   int CountLevel=Bars-1, i,j,limit,counted_bars=IndicatorCounted();
   
   
   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
   
   for(i=0; i<limit; i++)
   {
     ExtMapBuffer1[i]= ND(iClose(Symbol(),Period(),0))/ND(iHigh(Symbol(),Period(),CountLevel)) ; 
   }
   
   return(0);
  }

double ND(double var){return(NormalizeDouble(var,Digits+3));}
 
Оригинальное прочтенение функций iHigh() и iClose() . Читайте справку.
 
всмысле "Оригинальное прочтенение" - вы хотите сказать что эти объекты встроенного языка несовместимы с другими однотипными объектами в контексте одного модуля? их что в отдельной библиотеке объявлять?
 
Вы думаете, что выражение
iHigh(Symbol(),Period(),CountLevel)


возвращает Вам максимальное значение High на всей истории, на самом деле оно должно вернуть High самого левого бара на графике.

Вот что у Вас написано:

Индюк призван просто рисовать на графика отношение текущей цены к High за всю историю графика

 
Вы думаете, что выражение
iHigh(Symbol(),Period(),CountLevel)


возвращает Вам максимальное значение High на всей истории, на самом деле оно должно вернуть High самого левого бара на графике.

Вот что у Вас написано:

Индюк призван просто рисовать на графика отношение текущей цены к High за всю историю графика



Да тут все просто на самом деле.. :) Не знаю что он там должен показывать, но нашел явную ошибку:

   for(i=0; i<limit; i++)
   {
     ExtMapBuffer1[i]= ND(iClose(Symbol(),Period(),0))/ND(iHigh(Symbol(),Period(),CountLevel)) ; 
   }



а должно быть..

   for(i=0; i<limit; i++)
   {
     ExtMapBuffer1[i]= ND(iClose(Symbol(),Period(),i))/ND(iHigh(Symbol(),Period(),CountLevel)) ; 
   }



.. после этого он что-то показывает.. :)

 
Спасибо Registr это я как раз и упустил :]
Причина обращения: