価格データを配列へコピー ArrayCopyRates 関数

関数

配列関数

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, " }");
}
}

コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)

結果

タイトルとURLをコピーしました