ArrayCopySeries()関数は、指定した通貨ペアのレート情報を、他の配列にコピーするために使用します。
ArrayCopySeries()関数は、以下のように定義されています。
int ArrayCopySeries(
void& array[],
int series_index,
string symbol=NULL,
int timeframe=0
);
各引数の意味は、以下のとおりです。
- void& array[]
コピー先のdouble型(第二引数に「MODE_TIME」を指定する場合はdatetime型)の配列名を指定します。 - int series_index
以下の表に従って、コピーするレート情報を指定します。種 類 定数 内 容 MODE_OPEN 0 始 値 MODE_LOW 1 安 値 MODE_HIGH 2 高 値 MODE_CLOSE 3 終 値 MODE_VOLUME 4 出来高
iLowest()関数とiHighest()関数で使用 MODE_TIME 5 バーの形成開始時刻
ArrayCopySeries()関数で使用 - string symbol=NULL
レート情報をコピーしたい通貨ペア名を指定します。
特定の通貨ペア名を指定せず、EA等を適用したチャートの通貨ペアのレート情報をコピーしたい場合は、「NULL」と記述します。 - int timeframe=0
以下の表に従って、コピーするレート情報の時間軸を指定します。種 類 定 数 内 容 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」が返されます。
注意点
レート情報を、EA等を適用した通貨ペアとは異なる通貨ペアや時間軸からコピーした場合は、必要なデータが欠落する場合があります。その場合は、「ERR_HISTORY_WILL_UPDATED」(=ヒストリーデータを更新中)が生じ、定義済み変数「_LastError」に当該情報が格納される場合があります。
この場合は、一定時間を置いて、コピーを再試行する必要があります。
第二引数(=int series_index)が「MODE_TIME」の場合は、コピー先の配列はdatetime型でなければなりません。
- _LastErrorの詳細については「こちら」を参照してください。
具体例
「USD/JPY」(=ドル/円)の1時間足のバーの形成開始時刻、及び始値のデータをコピーしたい場合は、以下のように記述します。
//配列の宣言
datetime Time_Info[]; //バーの形成開始時刻を格納
double Open_Info[]; //始値を格納
//変数の宣言
int Count = 0; //ArrayCopySeries()関数の戻り値を格納
//バーの形成開始時刻をコピー
Count
= ArrayCopySeries(Time_Info,MODE_TIME,”USDJPY”,60);
//始値をコピー
Count
= ArrayCopySeries(Open_Info,MODE_OPEN,”USDJPY”,60);
なお、ArrayCopySeries()関数の第三引数(=string symbol)に特定の通貨ペア名を指定する場合は、「気配値表示ウィンドウ」に表示されている通貨ペア名のとおりに記述してください。