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


ArraySetAsSeries


動的配列にAS_SERIESを設定し、配列要素を時系列配列の様にインデックス付けします。


関数書式:
bool  ArraySetAsSeries(
   const void&  array[],    // 配列(参照渡し)
   bool          flag        // true設定でインデックスを逆順にします
   );



■引数
引数名 初期値 I/O 詳細
array[] - In/Out 数値配列
flag - In 配列のインデックス方向(trueで逆方向)


■戻り値
成功した場合はtrue、失敗した場合はfalseを返します。


■備考
AS_SERIESフラグは、多次元配列や静的配列に設定する事は出来ません。
時系列のインデックスは一般的な配列とは異なります。
時系列のインデックスは最新のデータから最も古いデータに向かってインデックス付けされます。


例:データウインドウにカーソルで選択したバーインデックスを表示しています。



サンプルソース:
#property strict

#property indicator_chart_window
#property indicator_buffers 1

double     NumerationBuffer[];  // インジケータバッファ

//+------------------------------------------------------------------+
//| 初期化                         
//|------------------------------------------------------------------|
int OnInit()
{
    SetIndexBuffer(0,NumerationBuffer,INDICATOR_DATA);   // インジケータバッファセット
    SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1,CLR_NONE); // インジケータスタイル設定

    ArraySetAsSeries(NumerationBuffer,true);               // 時系列配列インデックス付け

    IndicatorSetInteger(INDICATOR_DIGITS,0);            // データウインドウ表示の精度設定
    IndicatorShortName("バーインデックス");                // データウインドウに表示するインジケータ名

    return(INIT_SUCCEEDED);
}

//+------------------------------------------------------------------+
//| インジケータ算出                         
//|------------------------------------------------------------------|
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{

    static datetime currentBarTimeOpen=0;    // 現在のオープン時間
    
    ArraySetAsSeries(time,true);             // 引数のtime[]を時系列配列化
    if ( currentBarTimeOpen != time[0]) {      // 現在のオープン時間と引数のオープン時間に変化があった
        for( int i=rates_total-1; i>=0 ;i--) { // インジケータバッファにチャートのインデックスを代入
            NumerationBuffer[i]=i;
        }
        currentBarTimeOpen=time[0];            // 引数のオープン時間を、現在のオープン時間に保存
    }
    
    return(rates_total);
}



スポンサーリンク



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


Top

inserted by FC2 system