トップ  >  リファレンス  >  配列関数  >  ArrayBsearch
スポンサーリンク
検索
カスタム検索
リファレンスツリー
オススメ

天才数学者のエドワード・オークリー・ソープの物語とジョン・ケリーの公式は必見です。
ArrayBsearch


ArrayBsearch


指定した値で1次元配列内を検索します。



関数書式:(double配列の検索用)
int  ArrayBsearch(
   const double&  array[],                    // 検索する配列
   double          value,                      // 検索する値
   int             count    = WHOLE_ARRAY,   // 検索対象の要素カウント
   int             start    = 0,               // 開始位置
   int             direction= MODE_ASCEND    // 検索方向
   );


関数書式:(float配列の検索用)
int  ArrayBsearch(
   const float&   array[],                    // 検索する配列
   float           value,                      // 検索する値
   int             count    = WHOLE_ARRAY,   // 検索対象の要素カウント
   int             start    = 0,               // 開始位置
   int             direction= MODE_ASCEND    // 検索方向
   );


関数書式:(long配列の検索用)
int  ArrayBsearch(
   const long&    array[],                    // 検索する配列
   long            value,                      // 検索する値
   int             count    = WHOLE_ARRAY,   // 検索対象の要素カウント
   int             start    = 0,               // 開始位置
   int             direction= MODE_ASCEND    // 検索方向
   );


関数書式:(int配列の検索用)
int  ArrayBsearch(
   const int&     array[],                    // 検索する配列
   int             value,                      // 検索する値
   int             count    = WHOLE_ARRAY,   // 検索対象の要素カウント
   int             start    = 0,               // 開始位置
   int             direction= MODE_ASCEND    // 検索方向
   );


関数書式:(short配列の検索用)
int  ArrayBsearch(
   const short&   array[],                    // 検索する配列
   short           value,                      // 検索する値
   int             count    = WHOLE_ARRAY,   // 検索対象の要素カウント
   int             start    = 0,               // 開始位置
   int             direction= MODE_ASCEND    // 検索方向
   );


関数書式:(char配列の検索用)
int  ArrayBsearch(
   const char&    array[],                    // 検索する配列
   char            value,                      // 検索する値
   int             count    = WHOLE_ARRAY,   // 検索対象の要素カウント
   int             start    = 0,               // 開始位置
   int             direction= MODE_ASCEND    // 検索方向
   );




■引数
引数名 初期値 I/O 詳細
array[] - In 検索する数値配列
value - In 検索する値
count WHOLE_ARRAY In 検索対象の要素数。
省略した場合は配列全体で検索します。
start 0 In 検索対象のインデックス開始位置。
省略した場合は最初の要素が開始位置になります。
direction MODE_ASCEND In 検索方向。設定する値は次のいずれかになります。
 ・MODE_ASCEND:順方向検索
 ・MODE_DESCEND:逆方向検索

省略した場合は、順方向で検索します。


■戻り値
見つかった要素のインデックスを返します。
見つからなかった場合は、値が最も近い要素のインデックスを返します。


■備考
ソートされた配列のみバイナリ検索処理します。
数値配列をソースするには、 ArraySort()関数を使用します。


サンプルソース:
#property strict

void OnInit(){

    datetime daytimes[];              // 検索するデータ配列
    int      get_index;                // 検索結果のインデックス
    datetime checktime;               // 検索する値

    if ( Period() != PERIOD_D1 ) {  // 現在のチャートが日足以外の場合は終了
        return;
    }
    
    ArrayCopySeries( daytimes, MODE_TIME, Symbol(), PERIOD_D1); // daytimes配列に時系列配列情報をコピー
    
    checktime = Time[14]; // 14営業日前の日足オープン時間を取得
    
    // 時系列配列のTime[]は全て降順でソートされています
    get_index = ArrayBsearch( daytimes, checktime, WHOLE_ARRAY, 0, MODE_DESCEND); 

    Print( "検索値:"                  ,TimeToStr(checktime),
            " 見つかったインデックス:",get_index,
            " 見つかったデータ:"      ,TimeToStr(daytimes[get_index]) );



    checktime =  Time[14];    // 14営業日前の日足オープン時間を取得
    checktime -= (36 * 3600); // 検索値を1.5日オフセット(15.5日前の時間)
    
    get_index = ArrayBsearch( daytimes, checktime, WHOLE_ARRAY, 0, MODE_DESCEND);

    Print( "検索値:"                  ,TimeToStr(checktime),
            " 見つかったインデックス:",get_index,
            " 見つかったデータ:"      ,TimeToStr(daytimes[get_index]) );
}

結果:
検索値:2015.03.31 00:00 見つかったインデックス:14 見つかったデータ:2015.03.31 00:00
検索値:2015.03.29 12:00 見つかったインデックス:15 見つかったデータ:2015.03.30 00:00





スポンサーリンク



Copyright ©2015 MT4でEA自作しちゃお〜 All Rights Reserved.


Top

inserted by FC2 system