iHighest, iLowest

 

Приветствую !

Код:

int start()
 {
//----
 int res=iHighest(Symbol(),Period(),MODE_HIGH,0,0);
 Comment(res);  
//----
 return(0);
 }

Предполагал, что результатом будет 0.. Т.е. будет обработан только текущий бар, ибо если "Число элементов таймсерии,среди которых должен быть произведен поиск" поставить =1, то поиск будет и на нулевом и на первом баре.

Но получают какое-то странное число, скорее всего индекс хая, за всю историю.. Почему ?

 
zIG писал (а) >>

Приветствую !

Код:

Предполагал, что результатом будет 0.. Т.е. будет обработан только текущий бар, ибо если "Число элементов таймсерии,среди которых должен быть произведен поиск" поставить =1, то поиск будет и на нулевом и на первом баре.

Но получают какое-то странное число, скорее всего индекс хая, за всю историю.. Почему ?


Мне тоже интересно. Знающие безмолствуют.

 

Приветсствую Вас!

Солидарен

выдает значение бредовое какое-то :(


 

Можно предположить, что count=0 равнозначно count=WHOLE_ARRAY (весь массив).

Это может означать, что int WHOLE_ARRAY=0.

 
granit77 писал (а) >>

Можно предположить, что count=0 равнозначно count=WHOLE_ARRAY (весь массив).

Это может означать, что int WHOLE_ARRAY=0.

А можно и проверить :)

//+------------------------------------------------------------------+
//|                                             CheckWHOLE_ARRAY.mq4 |
//|                      Copyright © 2008, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"
 
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
   Print("WHOLE_ARRAY = ", WHOLE_ARRAY);
//----
   return(0);
  }
//+------------------------------------------------------------------+



 

Тогда, имхо, разумно предположить, что при значении = 1, поиск будет только на первом баре, исключая текущий, т.к. текущий бар обыскать нельзя..

Но обыскиваются оба бара...

 
Круто! Элементарные баги 2008 года в МТ4 так и не исправлены. ;-)
 
Видимо, при поиске максимального значения из двух проще использовать "больше" или "меньше".
 

Поиск максимального (минимального) выполняется не их двух, а из произвольного N. Баг в функции вынуждает обкладывать if-ом и особым образом обрабатывать N = 0. Правильное решение: функция на любом допустимом диапазоне параметра работает единообразно (включая 0, т.к. нулевой бар еще никто не отменял), а для константы WHOLE_ARRAY используется значение вне этого диапазона, например, -1 или EMPTY_VALUE. То, что это баг (баг проектирования) - можно доказать формально (по сути тут выше уже это сделали частично).

Раз это не было исправлено в 4-ке в течение 2 лет, то аналогичный подход видимо будет и в 5-ке? пусть миллионы прикладников каждый по отдельности фиксят кривости API, вместо того, чтобы один раз правильно реализовать в самом терминале.

 
marketeer:

Поиск максимального (минимального) выполняется не их двух, а из произвольного N. Баг в функции вынуждает обкладывать if-ом и особым образом обрабатывать N = 0. Правильное решение: функция на любом допустимом диапазоне параметра работает единообразно (включая 0, т.к. нулевой бар еще никто не отменял), а для константы WHOLE_ARRAY используется значение вне этого диапазона, например, -1 или EMPTY_VALUE. То, что это баг (баг проектирования) - можно доказать формально (по сути тут выше уже это сделали частично).


Много слов. Я говорил о случае:

zIG 04.08.2008 17:37


Тогда, имхо, разумно предположить, что при значении = 1, поиск будет только на первом баре, исключая текущий, т.к. текущий бар обыскать нельзя..

Но обыскиваются оба бара...
 

Слов ровно столько, чтобы вы полняли, что неправы. Однако судя по последнему комменту (относительно того, что ваш случай какой-то другой, а не тот, о котором говорил я) вы просто издеваетесь. Я просто не могу допустить, что вы не поняли: N - любое, в том числе и 1 (частный случай; он ничем не отличается от 2, 3 и т.д. с точки зрения алгоритма). Строка с вызовом функции должна работать одинаково на всей области определения. Предложение создавать специфическую обработку для выявления максимального из двух чисел (в обход функции) не упрощает, а усложняет.

Я не собирался в общем-то устраивать обсуждение. Править баг нужно было 2 года назад. То, что его не только не исправили, но продолжают демонстративно прикрывать до сих пор, сулит похожие перспективы для МТ5.

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