ArrayBsearch

2019/07/17 19:00
321

int ArrayBsearch(double array[], double value, int count=WHOLE_ARRAY, int start=0, int direction=MODE_ASCEND)

配列の最初の次元において、一致した値がある場合はそのインデックスを、一致した値が無い場合は最も近い値のインデックスを返す。 この関数は文字列配列、直列配列で使うことはできない (足の開始時間配列は除く)。
Note:二分探索法ではソート済み配列しか処理できない。数値配列をソートするにはArraySort()関数を用いる。

Parameters:
array[] - 検索する配列
value - 検索する値
count - 検索する要素の数。デフォルトでは、全要素
start - 検索する最初のインデックス。デフォルトでは最初の要素から検索
direction - 検索方向。以下の値をとる:
MODE_ASCEND:順方向
MODE_DESCEND:逆方向
Sample:
datetime daytimes[];
int shift=10,dayshift;
// All the Time[] series are sorted in descendant mode
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]));

コメント