Скачать MetaTrader 5

iHighest, iLowest

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Скачай MetaTrader 5 и начни торговать уже сегодня!
Евгений
63
Евгений 2008.08.04 14:36 

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

Код:

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

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

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

Леонид
1782
Леонид 2008.08.04 14:45  
zIG писал (а) >>

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

Код:

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

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


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

akadex
93
akadex 2008.08.04 14:52  

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

Солидарен

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


Виктор
Модератор
6559
Виктор 2008.08.04 15:16  

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

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

Rashid Umarov
Админ
11821
Rashid Umarov 2008.08.04 15:23  
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
Евгений 2008.08.04 15:37  

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

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

Stanislav Korotky
17924
Stanislav Korotky 2010.10.12 11:53  
Круто! Элементарные баги 2008 года в МТ4 так и не исправлены. ;-)
Rashid Umarov
Админ
11821
Rashid Umarov 2010.10.12 13:40  
Видимо, при поиске максимального значения из двух проще использовать "больше" или "меньше".
Stanislav Korotky
17924
Stanislav Korotky 2010.10.14 11:25  

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

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

Rashid Umarov
Админ
11821
Rashid Umarov 2010.10.14 12:33  
marketeer:

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


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

zIG 04.08.2008 17:37


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

Но обыскиваются оба бара...
Stanislav Korotky
17924
Stanislav Korotky 2010.10.15 14:32  

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

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

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