ArrayCopyRates()関数は、配列RateInfo[][6]に含まれるレート情報を、指定したdouble型の二次元配列にコピーするために使用します。
ArrayCopyRates()関数は、以下のように定義されています。
int ArrayCopyRates(
void& dest_array[][],
string symbol=NULL,
int timeframe=0
);
各引数の意味は、以下のとおりです。
- void& dest_array[][]
レート情報のコピー先となるdouble型の二次元配列を指定します。 - string symbol
レート情報を取得したい通貨ペア名を指定します。 - int timeframe
以下の表に従って、レート情報を取得したい時間軸を指定します。種 類 定 数 内 容 PERIOD_CURRENT 0 現在の時間足 PERIOD_M1 1 1分足 PERIOD_M5 5 5分足 PERIOD_M15 15 15分足 PERIOD_M30 30 30分足 PERIOD_H1 60 1時間足 PERIOD_H4 240 4時間足 PERIOD_D1 1440 日 足 PERIOD_W1 10080 週 足 PERIOD_MN1 43200 月 足
戻り値
以下の値を返します。
- 関数が正常に実行された場合
レート情報がコピーされたバーの本数 - 関数の実行に失敗した場合
-1
チャートを開いていない通貨ペアや時間軸のレート情報をコピーしようとすると、「ERR_HISTORY_WILL_UPDATED」(=エラーコード「4066」:ヒストリーデータを更新中)が生じ、定義済み変数「_LastError」(詳細は「こちら」を参照してください。)に当該情報が格納されます。
この場合は、後で再試行する必要があります(例えば、ArrayCopySeries()関数の場合(詳細は「こちら」)を参照してください。)。
注意点
ArrayCopyRates()関数によってコピーされたレート情報を格納する配列は、通常、DLL関数にデータを渡すために使用されます。
コピー先の配列は、静的配列として宣言されたものであっても、時系列配列のサイズにリサイズされます。
RateInfo配列の最初の次元にはバーの総数が格納されており、2番目の次元には以下の6つの要素が格納されています。
- 0-時間
- 1-始値
- 2-安値
- 3-高値
- 4-終値
- 5-出来高
具体例
「ターミナルウィンドウ」のエキスパートタブに、ユーロドルの1時間足チャートにおける、現在のバーの形成開始時刻と始値を表示させたい場合は、以下のように記述します。
int start()
{
double array[][6];
ArrayCopyRates(array,”EURUSD”,PERIOD_H1);
Print(“Current Bar “,TimeToStr(array[0][0]),
” Open “,array[0][1]);
return(0);
}