Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Почитай интервью участников Automated Trading Championship
Forex Trader
114257
Forex Trader 2007.01.10 09:15 
Индюк призван просто рисовать на графика отношение текущей цены к 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));}
Forex Trader
114257
Forex Trader 2007.01.10 10:31  
Оригинальное прочтенение функций iHigh() и iClose() . Читайте справку.
Forex Trader
114257
Forex Trader 2007.01.10 13:39  
всмысле "Оригинальное прочтенение" - вы хотите сказать что эти объекты встроенного языка несовместимы с другими однотипными объектами в контексте одного модуля? их что в отдельной библиотеке объявлять?
Forex Trader
114257
Forex Trader 2007.01.10 13:57  
Вы думаете, что выражение
iHigh(Symbol(),Period(),CountLevel)


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

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

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

Forex Trader
114257
Forex Trader 2007.01.10 14:20  
Вы думаете, что выражение
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)) ; 
   }



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

Forex Trader
114257
Forex Trader 2007.01.11 13:44  
Спасибо Registr это я как раз и упустил :]
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий