ArrayBsearch

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

ArrayBsearch

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検索する値
countWHOLE_ARRAYIN検索対象の要素数。
省略した場合は配列全体で検索します。
start0IN検索対象のインデックス開始位置。
省略した場合は最初の要素が開始位置になります。
directionMODE_ASCENDIN検索方向。設定する値は次のいずれかになります。
 ・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]) );
}

Twitterでフォローしよう

おすすめの記事