この関数は、指定された数量の選択されたシンボルと期間のペアのバー始値の履歴データをopen_arrayに取得します。要素の順序は現在から過去への順序であることに注意してください。つまり、開始位置0は現在のバーを意味します。
要求されたデータ数がターゲット配列の長さより少ない(または多い)場合、関数はメモリを再割り当てしようとするため、まだ未知の量のデータをコピーするときは、動的配列をターゲット配列として使用することをお勧めします要求されたデータは完全に適合します。
コピーする必要のあるデータの量がわかっている場合、過剰なメモリの割り当てを防ぐために、静的に割り当てられたバッファに行う方が良いでしょう。
ターゲット配列のプロパティに関係なく-as_series = trueまたはas_series = false。データはコピーされ、最も古い要素がアレイに割り当てられた物理メモリの先頭に配置されます。関数呼び出しには3つのバリアントがあります。
最初の位置と必要な要素の数で呼び出す
int CopyOpen( |
開始日と必要な要素の数までに呼び出します
int CopyOpen( |
必要な時間間隔の開始日と終了日までに呼び出します
int CopyOpen( |
パラメーター
symbol_name
[in]シンボル名。
時間枠
[in]期間。
start_pos
[入力]コピーする最初の要素の開始位置。
カウント
[in]コピーするデータ数。
始まる時間
[入力]コピーする最初の要素の開始時間。
停止時間
[入力]コピーする最後の要素の開始時間。
open_array []
[out] double型の配列。
戻り値
配列内の要素の数を返します。エラーの場合は-1を返します。
注意
要求されたデータの間隔全体がサーバー上の使用可能なデータを超えている場合、関数は-1を返します。TERMINAL_MAXBARS(チャート上のバーの最大数)外のデータが要求された場合、関数は-1を返します。
要求された時系列がまだ構築されていない場合、またはサーバーからダウンロードする必要がある場合、関数はすぐに-1を返します。
開始日と必要な要素の数でデータを要求する場合、指定された日付よりも小さい(早い)または等しい日付のデータのみが返されます。つまり、値が返されるバーのオープン時間(ボリューム、スプレッド、インディケーターバッファーの値、オープン、ハイ、ロー、クローズまたはオープンタイムの価格)は常に指定された時間以下です。
指定された日付範囲のデータを要求すると、この間隔のデータのみが返されます。間隔が設定され、数秒までカウントされます。つまり、値が返されるバーのオープン時間(ボリューム、スプレッド、インディケーターバッファーの値、オープン、ハイ、ロー、クローズ、またはオープンタイムの価格)は常に要求された間隔内にあります。
このように、現在の日は土曜日は、指定週間のタイムフレームにデータをコピーしようとする試みである場合に=がLast_Tuesdayのstart_time とSTOP_TIME = Last_Friday 週間の時間枠のオープン時間は、常に日曜日であるため、関数は、0を返しますが、1週間バーはありません指定された間隔に該当しません。
現在の未完了のバーに対応する値を返す必要がある場合は、start_pos = 0およびcount = 1を指定する最初の形式の呼び出しを使用できます。