Скачать MetaTrader 5

iHighest, iLowest

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Евгений
63
Евгений  

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

Код:

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

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

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

Леонид
1782
Леонид  
zIG писал (а) >>

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

Код:

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

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


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

akadex
93
akadex  

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

Солидарен

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


Виктор
Модератор
6559
Виктор  

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

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

Rashid Umarov
Админ
12400
Rashid Umarov  
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);
  }
//+------------------------------------------------------------------+



Евгений
63
Евгений  

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

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

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

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

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

Rashid Umarov
Админ
12400
Rashid Umarov  
marketeer:

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


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

zIG 04.08.2008 17:37


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

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

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

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий