CopyTime 関数
この関数は、指定した通貨ペアと時間軸、バーの範囲の開始時間を、指定した配列へコピーして、コピー先配列の要素数を取得します。
バーのインデックス値は、最新のバーが 0になります。しかし、配列へコピーされた最も古いデータは、コピー先の配列上ではインデックス値が 0となり、最新のバーのデータはインデックス値が最大になります。
データ型と構成・戻り値
この関数には 3つの型があります。
int CopyTime(①, ②, ③, ④, ⑦); // インデックス値とコピー数で実行
int CopyTime(①, ②, ⑤, ④, ⑦); // 開始日時とコピー数で実行
int CopyTime(①, ②, ⑤, ⑥, ⑦); // 開始日時と終了日時で実行 ⑤⑥は入れ替わってもOK
戻り値は、コピー先の配列の要素数を返します。エラーの場合は -1を返します。
要求したデータの範囲がサーバーで利用可能なデータの範囲に収まらない場合、関数は -1を返します。TERMINAL_MAXBARS (チャートのバーの最大数) を超えるデータを要求した場合、関数は -1を返します。要求した時系列がまだ構築されていないか、サーバーからダウンロードする必要がある場合、関数は -1を返します。
引数 [5]
CopyTime関数は 5個の引数で構成されます。
番号 | 引数名 | データ型 | 単位 | 初期値 | 説明 |
---|---|---|---|---|---|
① | symbol_name | string | - | - | 対象とする通貨ペア名。 「NULL」は現在のチャートの通貨ペアを表します。 |
② | timeframe | enum | - | - | 時間軸。ENUM_TIMEFRAMES 列挙値から選択。0は現在のチャートの時間軸を選択したことになります。 |
③ | start_pos | int | - | - | コピーを開始するバーのインデックス値。 |
④ | count | int | - | - | コピーするバーの数。 |
⑤ | start_time | datetime | - | - | コピーを開始するバーの開始日時。 |
⑥ | stop_time | datetime | - | - | コピーを終了するバーの開始日時。 |
⑦ | time_array[] | datetime | - | - | コピー先の配列。 |
引数⑦のコピー先の配列において、不明な量のデータをコピーする場合は、動的配列をコピー先の配列として使用することをお勧めします。コピーするデータ量が分かっている場合は、過剰なメモリの割り当てを防ぐために、静的配列にコピーすることをお勧めします。
使用例
CopyTime関数による各バーの開始時間の取得
CopyTime関数を使って 1時間軸チャートの最新のバーから 5時間分 (5本分) のバーの開始時間をコピー先の配列へ格納します。
コピー先の配列については確認のため格納されているデータを出力します。
コード
// CopyTime関数による各バーの開始時間の取得
#property strict
void OnInit() {
int n, i;
datetime copy_array[]; // コピー先の動的配列
n = CopyTime(NULL, PERIOD_H1, 0, 5, copy_array); // 配列へコピーを実行
// 以下は日時で設定する時の書き方です。
//n = CopyTime(NULL, PERIOD_H1, D'2023.02.10 23:00:00', 5, copy_array);
//n = CopyTime(NULL, PERIOD_H1, D'2023.02.10 19:00:00', D'2023.02.10 23:00:00', copy_array);
for(i=0; i<n; i++) { // 配列のデータを出力
Print(i, ":", copy_array[i]);
}
}
コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)