MQL4 - automated forex trading   /  

Документация

Справочник MQL4  Операции с массивами  ArrayBsearch

 
Используй возможности
MQL5 в MetaTrader 5
Learn possibilities of the new MQL5
Интересуешься новым?
Доступна справка по MQL5
int ArrayBsearch( double array[], double value, int count=WHOLE_ARRAY, int start=0, int direction=MODE_ASCEND)
Возвращает индекс первого найденного элемента в первом измерении массива.
Если элемент с указанным значением в массиве отсутствует, функция вернет индекс ближайшего меньшего по значению из элементов, между которыми расположено искомое значение.
Функция не может применяться к массивами строк и таймсериям (исключение составляет таймсерия времени открытия бара).

Замечание: двоичный поиск обрабатывает только сортированные массивы. Для сортировки числового массива используется функция ArraySort().
Параметры:
array[]   -   Числовой массив для поиска.
value   -   Значение для поиска.
count   -   Количество элементов для поиска. По умолчанию, ищется в целом массиве.
start   -   Начальный индекс для поиска. По умолчанию, поиск начинается с первого элемента.
direction   -   Направление поиска. Может быть любой из следующих величин:
MODE_ASCEND поиск в направлении возрастания,
MODE_DESCEND поиск в направлении убывания.
Пример:
datetime daytimes[];
int      shift=10,dayshift;
// Все Time[] серии времени отсортировано в направлении убывания
ArrayCopySeries(daytimes,MODE_TIME,Symbol(),PERIOD_D1);
if(Time[shift]>=daytimes[0]) dayshift=0;
else
  {
   dayshift=ArrayBsearch(daytimes,Time[shift],WHOLE_ARRAY,0,MODE_DESCEND);
   if(Period()<PERIOD_D1) dayshift++;
  }
Print(TimeToStr(Time[shift])," corresponds to ",dayshift," day bar opened at ",
      TimeToStr(daytimes[dayshift]));