ArrayCopyRates 関数
この関数は、価格データを指定した配列にコピーします。コピーが成功するとコピーしたバーの数を取得します。
価格データとは各バーの
①開始時間 ②始値 ③高値 ④安値 ⑤終値 ⑥Tick数 ⑦スプレッド ⑧出来高
のことです。MQL4では⑦⑧は取得できません。
データ型と構成・戻り値
この関数には 2つの型があります。
int ArrayCopyRates(①, ③, ④); // コピー先がMqlRates型の1次元配列
int ArrayCopyRates(②, ③, ④); // コピー先が double 型の2次元配列
MqlRates型の 1次元配列には、各要素に複数の値を持つことになります。例えば、0番目の要素に価格データの開始時刻、始値、高値、安値、終値、Tick数 の 6個の値を持ちます。
double型の 2次元配列には、2次元目に複数の値を持つことになります。例えば、1次元 0番目の要素に対応する 2次元のデータに価格データの開始時刻、始値、高値、安値、終値、Tick数 の 6個の値を持ちます。
戻り値は、コピーしたバーの数を返します。失敗した場合は -1を返します。
引数 [3]
ArrayCopyRates関数は 3個の引数で構成されます。
番 号 |
引数名 | データ型 | 単位 | 初期値 | 説明 |
---|---|---|---|---|---|
① | rates_array[] | void& | - | - | コピー先の MqlRates型の 1次元配列。 |
② | dest_array[][] | int | - | - | コピー先の double型の 2次元配列。 |
③ | symbol | string | - | NULL | 通貨ペア名。 「NULL」は現在のチャートの通貨ペアです。 |
④ | timeframe | int | - | 0 | 時間軸。Timeframe列挙値から選択。 「0」は現在のチャートの時間軸です。 |
使用例
ArrayCopyRates関数による配列への価格データのコピー
価格データを MqlRates型の 1次元配列と ouble型の 2次元配列の 2つの配列へそれぞれコピーします。
コピーした結果を Print関数を使って表示させます。
コード
// ArrayCopyRates関数による時系列配列のコピー
#property strict
void OnInit() {
int e,n,i;
string element;
MqlRates mqlrates_data[]; // コピー先のMqlRates型の1次元配列
double double_data[][6]; // コピー先の double型の2次元配列
n=3; // Printで表示する1次元の要素数
e = ArrayCopyRates(mqlrates_data); // 価格データをMqlRates型配列へコピーを実行
Print("コピーしたMqlRates型配列の1次元要素数:", e);
for(i=0; i<n; i++) { // 要素の内容を抽出
element = " ①" + (string)mqlrates_data[i].time + " ②" + (string)mqlrates_data[i].open +
" ③" + (string)mqlrates_data[i].high + " ④" + (string)mqlrates_data[i].low +
" ⑤" + (string)mqlrates_data[i].close + " ⑥" + (string)mqlrates_data[i].tick_volume;
Print(i, "番目の要素={", element, " }");
}
e = ArrayCopyRates(double_data); // 価格データをdouble型配列へコピーを実行
Print("コピーしたdouble型配列の1次元要素数:", e);
for(i=0; i<n; i++) { // 要素の内容を抽出
element =" ①" + (string)(datetime)double_data[i][0] + " ②" + (string)double_data[i][1] +
" ③" + (string)double_data[i][2] + " ④" + (string)double_data[i][3] +
" ⑤" + (string)double_data[i][4] + " ⑥" + (string)double_data[i][5];
Print("double型配列1次元", i, "番目の2次元の要素={", element, " }");
}
}
コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)