MQL4MQL5 配列
ArrayBsearch()
- できること
- 並べ替えた配列から値を高速に探す
- 対応
- MQL4・MQL5
ArrayBsearch() とは
昇順に並んだ配列から、指定した値(またはそれに最も近い値)の位置を二分探索で探す関数です。時刻の配列から特定の時刻の位置を探すときなどに使います。
ArrayBsearch() の書式と引数
MQL4 の場合MT4
int ArrayBsearch(
const double &array[],
double value,
int count=WHOLE_ARRAY,
int start=0,
int direction=MODE_ASCEND
)| 引数 | 型 | 省略時 | 説明 |
|---|---|---|---|
array | const double &[] | 必須 | 昇順に並んだ配列(MQL5 はどの数値型の配列でも可)。 |
value | double | 必須 | 探す値。 |
count | int | WHOLE_ARRAY | MQL4:探す要素数。 |
start | int | 0 | MQL4:探し始める位置。 |
direction | int | MODE_ASCEND | MQL4:配列の並び。MODE_ASCEND(昇順)または MODE_DESCEND(降順)。 |
戻り値(MQL4)
見つかった位置。ちょうどの値がなければ、最も近い値の位置。
MQL5 の場合MT5
int ArrayBsearch(const void &array[], void value)| 引数 | 型 | 省略時 | 説明 |
|---|---|---|---|
array | const void &[] | 必須 | 昇順に並んだ配列(MQL5 はどの数値型の配列でも可)。 |
value | void | 必須 | 探す値。 |
戻り値(MQL5)
見つかった位置。ちょうどの値がなければ、最も近い値の位置。
ArrayBsearch() の使い方(コード例)
MQL4・MQL5 共通
double a[] = {1.0, 2.5, 4.0, 7.5};
Print(ArrayBsearch(a, 4.0)); // 2OnTick()・OnStart() などの関数の中に書いて使う例です。MetaEditor でコンパイルできることを確認済みです。
ArrayBsearch() の注意点
- 配列が昇順に並んでいないと、正しい位置は返りません。先に ArraySort() で並べ替えます。












