int ArrayCopySeries( void& array[], // コピー先配列 int series_index, // 時系列配列ID string symbol = NULL, // 通貨ペア int timeframe = 0 // 時間軸 );
引数名 | 初期値 | I/O | 詳細 |
array[] | - | Out | double型のコピー先配列 |
series_index | - | In | 時系列配列ID。
時系列配列IDの列挙の値を指定します。 |
symbol | NULL | In | 通貨ペア名 |
timeframe | 0 | In | 時間軸。
時間軸列挙の値を指定します。省略した場合は現在の時間軸になります。 |
#property strict //+------------------------------------------------------------------+ //| 初期化 | //+------------------------------------------------------------------+ void OnInit(){ datetime daytimes[]; int shift=10,dayshift,error; // Time[]配列(日足)をコピー ArrayCopySeries(daytimes, MODE_TIME, Symbol(), PERIOD_D1); error = GetLastError(); if( error == ERR_HISTORY_WILL_UPDATED) { // ヒストリーデータが更新中の場合 for(int i=0; i < 2 ; i++) { Sleep(5000); // 5sec待ち ArrayCopySeries(daytimes,MODE_TIME,Symbol(),PERIOD_D1); // Time[]配列(日足)を再コピー datetime last_day=daytimes[0]; // コピーした日足の時間をチェック if( Year() == TimeYear(last_day) && Month() == TimeMonth(last_day) && Day() == TimeDay(last_day)) { break; // コピーした日足の年月日と、サーバー時間の年月日が一致したら終了(再コピーしない) } } } if(Time[shift] >= daytimes[0]) { dayshift=0; } else { dayshift = ArrayBsearch(daytimes, Time[shift], WHOLE_ARRAY, 0, MODE_DESCEND); // コピーした配列 } if(Period() > PERIOD_D1) { dayshift++; } // 日足以外のチャートを表示している場合は、最も近いデータを表示 printf( "サーバー時間:%s, コピーした配列daytimes[%d] = %s", TimeToStr(Time[shift]), dayshift, TimeToStr(daytimes[dayshift])); }
EURUSD,H1: サーバー時間:2015.04.21 12:00, コピーした配列daytimes[1] = 2015.04.20 00:00