配列、バッファ及び時系列における索引付けの方向
全ての配列及び指標バッファの索引付けはデフォルトでは左から右です。最初の要素のインデックスは常にゼロに等しいです。従って、インデックス 0 の配列または指標バッファの最初の要素は一番左にあり、最後の要素は一番右にあるのがデフォルトです。
指標バッファは double 型の動的配列で、サイズは、常に指標が計算されているバーの数に等しいようにクライアント端末で管理されています。通常の double 型の動的配列は SetIndexBuffer() 関数を使用して指標バッファとして割り当てられます。指標バッファのサイズの設定は端末の実行システムによって行われるので ArrayResize() 関数を使用する必要はありません。
時系列は逆方向の索引付けを持つ配列です。 時系列の最初の要素は一番右、最後の要素は一番左にあります。履歴価格データの格納に使用される時系列には時間情報が含まれているので、最も古いデータが一番左にあって最新のデータが一番右にあると言えます。
従って、時系列のインデックス0 の要素は、シンボルの最新の相場に関する情報を含んでいます。時系列が 1 日の時間軸のデータを含んでいる場合は、まだ未完了の今日のデータがゼロの位置に配置されていて、インデックス1の位置には昨日のデータが含まれています。
索引付けの方向の変更
ArraySetAsSeries() 関数は、動的配列の要素にアクセスする方法を変更することが出来ます。コンピュータメモリに格納されるデータの物理的な順序は変更されません。この関数は、単に配列要素のアドレス指定する方法を変更するので、ArrayCopy() を使用して 1 つの配列をもう 1 つに複製する際には、受け取り側の配列の内容は元の配列に索引付け方向に依存しません。
索引付けの方向は静的配列では変更することは出来ません。配列を関数にパラメータとして渡す場合も、関数内での索引付けの方向を変更する試みは、何の効果ももたらしません。
指標バッファは、通常の配列の場合と同様に、索引付けの方向も反対に(時系列のように)設定出来ます。指標バッファでのゼロ位置への参照は対応する指標バッファの最後の値への参照を意味し最新のバーの指標値に対応します。それでも、指標バーの物理的な位置は変更されません。
指標の価格データの受け取り
カスタム指標は、指示バッファ内の値の計算に必要な価格データが渡されるOnCalculate() 関数を含まなければなりません。渡された配列内のインデックス方向は ArrayGetAsSeries() 関数を使用して見つけることが出来ます。
関数に渡された配列は価格データで時系列であるのでArrayIsSeries() でのチェックは true を返します。しかし、いずれの場合、インデックス方向のチェックは ArrayGetAsSeries() 関数で行われるべきです。
初期値に依存しないために ArraySetAsSeries() を作業する配列に無条件に呼び出し、必要な方向を設定するべきです。
価格データと指標値の受け取り
エキスパートアドバイザーの全ての配列、指標及びスクリプトの索引付けはデフォルトでは左から右です。MQL5 プログラムでは、必要に応じて、シンボル及び時間軸で計算された指標値、またその時系列値をリクエストすることが出来ます。
この目的には Copy…() 関数群を使用します。
- CopyBuffer – 指標バッファの値をdouble 型の配列に複製する
- CopyRates – 価格履歴を MqlRates 構造体の配列に複製する
- CopyTime – Time 値をdatetime 型の配列に複製する
- CopyOpen – Open 値をdouble 型の配列に複製する
- CopyHigh – High 値をdouble 型の配列に複製する
- CopyLow – Low 値をdouble 型の配列に複製する
- CopyClose – Close 値をdouble 型の配列に複製する
- CopyTickVolume – ティックボリュームを long 型の配列に複製する
- CopyRealVolume – 資本金ボリュームを long 型の配列に複製する
- CopySpread – スプレッド履歴を int 型の配列に複製する
これらの関数は全て同様の方法で動作します。CopyBuffer() の例でデ ータ取得メカニズムを考えてみましょう。リクエストされたデータの索引付け方向が時系列と同じであることを暗示し、現在まだ完了していないバーはインデックス0 (ゼロ)でデータを格納しています。これらのデータへのアクセスを取得するにはデータの必要量を受け取り側の配列バッファに複製する必要があります。
複製時には、データが受け取り側の配列に複製され始める元の配列内の開始位置を指定する必要があります。成功した場合には、指定された数の要素が元の配列(ここでは指標バッファ( Indicator buffer ))から受け取り側の配列に複製されます。受け取り側の配列に設定された値の索引付けにかかわらず、コピーは常に上図に示されたように実行されます。
価格データが繰り返しの数が多いループ内で処理されることが期待されている場合 IsStopped() 関数を使用して強制的なプログラム終了を確認することをお勧めします。
int copied=CopyBuffer(ma_handle,// 指標値 |
例:
input int per=10; // 指数の期間 |
参照
データアクセスの整理
データアクセスの整理
このセクションでは、価格データ(時系列)の取得、格納、及びリクエストに関する質問が考慮されます。
取引サーバからのデータ受信
価格データは、MetaTrader 5 端末で使用可能になる前に受信されて処理されなければなりません。データを受信するには MetaTrader 5 取引サーバへの接続が必要です。データは、端末のリクエストに応じてサーバから分足のパックブロックの形式で受信されます。
サーバのデータ参照メカニズムは、リクエストがチャートをナビゲートしているユーザによって送られたか MQL5 言語のプログラムで送られたかなどの方法には依存しません。
中間データの格納
サーバーから受信されたデータは自動的に解凍されてHCC 中間形式で格納されます。各シンボルのデータは terminal_directorybasesserver_namehistorysymbol_name の別々のフォルダに書き入れられます。例えば MetaQuotes-Demo サーバから受信された EURUSD データは terminal_directorybasesMetaQuotes-DemohistoryEURUSD に格納されます。
データは .hcc 拡張子を持つファイルに書き込まれます。各ファイルは一年分の分足を格納します。例えば EURUSD フォルダの 2009.hcc ファイルは 2009 年の EURUSD 分足を含みます。これらのファイルは全ての時間軸の価格データを準備するために使用され、直接アクセスは意図されていません。
中間データからの必要な時間軸のデータの取得
中間 HCC ファイルは、リクエストされた時間軸の価格データをHC 形式で構築するためのデータ元として使用されます。HC 形式のデータは最大限に迅速なアクセスのために用意された時系列です。これらは MQL5 プログラムチャートのリクエストに応じて作成されます。データ量は「チャートでのバーの最大数」パラメータの値を超えてはいけません。データは更に使用されるために hc 拡張子を持つファイルに格納されます。
システムリソース節約のために、時間軸のデータは必要時のみに RAM に格納されて保存されます。データは長時間呼び出されない場合には RAM から解放されてファイルに保存されます。データは、他の時間軸かの準備ができたデータがあるかどうかにかかわらず各時間軸で用意されます。データ形成及びアクセスのルールは全ての時間軸で同じです。HCC に分足 (M1)データが格納されていても、同じボリュームの M1 軸のデータの HC としての可用性があるわけではありません。
サーバからの新規データの受信によって、全ての時間軸で使用された価格データの HC 形式での自動更新が呼び出されます。また、それらのデータを計算の入力データとして暗黙的に使用する指標全ての再計算につながります。
「チャートのバーの最大数」パラメータ
「チャートのバーの最大数」パラメータはチャート、指標、及び MQL5 プログラムで使用可能な HC 形式のバーの数を制限します。これは全ての利用可能な時間軸のために有効であり、コンピュータリソースを節約するために提供されています。
このパラメータに大きな値を設定する場合は、小さな時間軸で多くの履歴の価格データが利用可能であると、時系列と指標バッファ格納に使用されるメモリは数百メガバイトになってクライアント端末プログラムのRAMの制限(MS Windows の32 ビットアプリケーション).に達することがあるので注意が必要です。
「チャートのバーの最大数」の変更はクライアント端末の再起動の際に有効になります。このパラメータの変更は、サーバでの追加データの自動や時系列の追加のバーの形成にはつながりません。チャートがデータのない領域にスクロールするかデータが MQL5 プログラムによってリクエストされた場合は、追加の価格データがサーバからリクエストされ、時系列は新しい制限をもって更新されます。
サーバから要求されたデータの量は「チャートのバーの最大数」パラメータを考慮した上のこの時間軸のバーの必要な数に相当します。このパラメータで設定された制限は厳密ではなく、時間軸で利用可能なバーの数が現在のパラメータ値を少し上回る場合があります。
データの可用性
HCC 形式でのデータの可用性または HC 形式での使用が準備中のデータの可用性は、これらのデータの絶対的な可用性を意味するものではありません。
MQL5 プログラムから価格データや指標値にアクセスする場合、それらの特定の瞬間、また特定の開始時間での可用性が保証されていないことを忘れてはなりません。これは、リソース節約の目的で、MQL5 プログラムに必要なデータの完全なコピーは MetaTrader 5 に格納されず、端末データベースへの直接アクセスのみが与えられているという事実と関係しています。
全ての時間軸の価格履歴が HCC 形式の共通のデータから構築され、サーバからのデータの更新は、全ての時間軸データの更新及び指標の再計算ににつながります。そのために、データは少し前に利用可能であったとしても利用不可能になることがあります。
端末データとサーバデータの同期化 #
MQL5 プログラムは任意のシンボルと時間軸のデータを呼び出すことが出来るので、必要な時系列のデータが端末にまだ形成されていないまたは必要な価格データが取引サーバと同期されていない可能性があります。この場合、待ち時間を予測するのは難しいです。
「無演算」ループを使用したアルゴリズムは最善の解決策ではありません。スクリプトは、イベント処理を持たないため代替アルゴリズムの選択肢がないので、唯一の例外です。カスタム指標では、このようなアルゴリズムや他の「無演算」ループは、全ての指標の計算と他のシンボルの価格データの処理の終了につながるため、推奨出来ません。
エキスパートアドバイザーと指標ではハンドルのイベントモデルが使用されるべきです。OnTick() または OnCalculate() イベントの取り扱い中に必要な時系列のデータの受信に失敗した場合、ハンドラの次の呼び出しの間にアクセスの可用性に依存してイベントハンドラを終了する必要があります。
履歴追加スクリプトの例
選択されたシンボルの履歴を取引サーバから受信するためのリクエストを実行するスクリプトの例を考えてみましょう。このスクリプトは、選択したシンボルのチャートで実行するためのものです。前述したように、価格データは取引サーバからパック化された 1分間のデータとして受信され、事前定義された時系列はそれから構築されるので、時間軸は重要ではありません。
データ受信に関する全てのアクションは別の関数 CheckLoadHistory(symbol, timeframe, start_date) として書きます。
int CheckLoadHistory(string symbol,ENUM_TIMEFRAMES period,datetime start_date) |
CheckLoadHistory() 関数は、任意のプログラム(エキスパートアドバイザー、スクリプトまたは指標)から呼び出すことが出来る普遍的な機能として設計されており、銘柄名、期間、必要な価格履歴の始まりを示す開始日の3つの入力パラメータを必要とします。
不足している履歴をリクエストする前に、関数コードに必要なチェックを挿入します。まず第一に、銘柄名と期間値が正しいことの確認が必要です。
if(symbol==NULL || symbol==“”) symbol=Symbol(); |
取引サーバにリクエストを送信する時にシンボルの履歴が利用出来る用、シンボルが 「気配値表示」 ウィンドウで利用可能であることを確認します。シンボルが 「気配値表示」 にない場合 SymbolSelect() 関数で追加します。
if(!SymbolInfoInteger(symbol,SYMBOL_SELECT)) |
示された銘柄/期間のペアで利用可能な履歴の開始日を受信する必要があります。CheckLoadHistory() に渡された startdate 入力パラメータの値が利用可能な履歴の範囲内にあるなら、その後取引サーバリクエストは必要ありません。現時点での銘柄/期間のペアの最初の日を取得するには、SeriesInfoInteger() 関数と SERIES_FIRSTDATE 修飾子が使用されます。
SeriesInfoInteger(symbol,period,SERIES_FIRSTDATE,first_date); |
次の重要なチェックは、関数が呼び出されるプログラムの種類のチェックです。指標と同じ期間を持つ時系列の更新リクエストを送信することは望ましくありません。指標と同じシンボル期間のデータのリクエストが望ましくないのは、履歴データの更新が指標が作動するのと同じスレッドで実行されるという事実があるからです。従ってデッドロックが発生する可能性が高いです。これをチェックするには MQL5InfoInteger() 関数を MQL5_PROGRAM_TYPE 修飾子と使用します。
if(MQL5InfoInteger(MQL5_PROGRAM_TYPE)==PROGRAM_INDICATOR && Period()==period && Symbol()==symbol) |
全てのチェックが成功した場合、もう1 回取引サーバにリクエストを送らないですむか見てみます。初めに HCC 形式でのデータが使用可能な初めの日を見つけます。この値を SeriesInfoInteger() 関数と SERIES_TERMINAL_FIRSTDATE 修飾子でリクエストし start_date パラメータ値と比べます。
if(SeriesInfoInteger(symbol,PERIOD_M1,SERIES_TERMINAL_FIRSTDATE,first_date)) |
全てのチェック後に実行スレッドが CheckLoadHistory() 関数の本体に残っている場合、取引サーバから欠落している価格データをリクエストする必要があります。初めに TerminalInfoInteger() 関数を使用して「チャートでのバーの最大数」値を返します。
int max_bars=TerminalInfoInteger(TERMINAL_MAXBARS); |
これは、余分なデータのリクエストを防止するのに必要です。次に、取引サーバでの(期間に関係ない)シンボル履歴の初日を SeriesInfoInteger() 関数とSERIES_SERVER_FIRSTDATE 修飾子を使用して見つけます。
datetime first_server_date=0; |
リクエストは非同期動作なので、この関数は first_server_date 変数が値を受け取るまでの遅延の5ミリ秒の小さい枠で呼び出されます。サイクルの実行がユーザによって終了された場合 IsStopped() は true を返します。取引サーバからの価格データリクエストを開始する日付けの正しい値を示してみましょう。
if(first_server_date>start_date) start_date=first_server_date; |
サーバの開始日である first_server_date が HCC 形式のシンボルの開始日である first_date より早い場合、対応するエントリーが操作ログに出力されます。
欠落した価格データを取引サーバからリクエストする準備ができました。ループ形式でリクエストを作成し本体に記入を開始します。
while(!IsStopped()) |
初めの 3 点は、すでに知られている手段によって実施されます。
while(!IsStopped()) |
最後の4 番目のポイントが残っています。履歴のリクエストです。サーバに直接参照することは出来ません。が、HCC 形式の履歴が充分でない場合 コピー関数 は自動的にサーバリクエストの送信を開始します。first_date 変数で表される初日の時刻がリクエストの実行度を評価するためのシンプルで自然な基準なので CopyTime() 関数の使用が一番容易です。
時系列からデータを複製する関数を呼び出す際には、start パラメータ(価格データコピーの開始点からのバーの数)は端末で利用可能な履歴の範囲からとられなければなりません。例えば、100 足しかない時に、インデックス 500 から始まって 300 足を複製する試みは無意味です。このような要求は誤ったものとして理解されて処理されず、追加の履歴は取引サーバから読み込まれません。
これが bars インデックスから始めて 100 足を複製する理由です。これは、欠落している履歴の取引サーバからのスムーズな読み込みを提供します。サーバは余分の履歴を送るので、実際にはリクエストされた 100 より少し大きい数の足が読み込まれます。
int copied=CopyTime(symbol,period,bars,100,times); |
コピー操作の後では、複製された要素の数が分析されるべきです。試みが失敗した場合 copied の値は null に等しくfail_cnt カウンタの値は 1 で増えます。100 の試行失敗の後、関数の動作が停止されます。
int fail_cnt=0; |
従って、各瞬間における現在の状況の正しい処理が関数内で実装されているだけではなく、CheckLoadHistory() 関数の呼び出し後に処理出来る追加情報を取得するための終了コードも戻されます。例えばこのようにです。
int res=CheckLoadHistory(InpLoadedSymbol,InpLoadedPeriod,InpStartDate); |
この関数の完全なコードは、リクエスト結果の取り扱いを持つ任意のデータへのアクセスの正しい構成を示すスクリプトの例に記載されています。
コード:
//+——————————————————————+ |
SeriesInfoInteger
履歴データの状態情報を返します。この関数の呼び出し方は 2 つあります。
直接プロパティ値を返します。
long SeriesInfoInteger( |
関数実行の成功に応じて true または false を返します。
bool SeriesInfoInteger( |
パラメータ
symbol_name
[in] 銘柄名
timeframe
[in] 期間
prop_id
[in] リクエストされたプロパティの識別子。 ENUM_SERIES_INFO_INTEGER 列挙の値
long_var
[out] リクエストされたプロパティの値が配置される変数
戻り値
1 番目の呼び方では long 型の値。
2 番目の呼び方では、指定されたプロパティが利用可能で値が long_var 変数に置かれてい場合には true それ以外の場合は false 。エラーの詳細については GetLastError() を呼びます。
例:
void OnStart() Print(“The first date for the symbol-period at this moment = “, Print(“The first date in the history for the symbol-period on the server = “, Print(“Symbol data are synchronized = “, |
Bars
指定された銘柄と期間の履歴内のバーの数を返します。この関数の呼び出し方は 2 つあります。
履歴内のバーを全てリクエスト
int Bars( |
選択された時間間隔内の履歴内のバーをリクエスト
int Bars( |
パラメータ
symbol_name
[in] 銘柄名
timeframe
[in] 期間
start_time
[in] 最初の要素に対応するバーの時刻
stop_time
[in] 最後の要素に対応するバーの時刻
戻り値
start_time 及び stop_time パラメータが定義された場合、指定された時間間隔でのバーの数。その他の場合、全部のバーの数。
注意事項
Bars() 関数の呼び出しまでに指定されたパラメータで時系列のデータが端末に形成されていない場合、または時系列のデータが関数呼び出しまでに取引サーバと同期化されていない場合、この関数はゼロ値を返します。
指定した範囲の日付でバーの数をリクエストする際は、その範囲に入る開始時刻のバーのみが含まれます。例えば、現在の曜日が土曜日で、start_time=最後の_火曜日とstop_time=最後の_金曜日と指定してバーの週あたりの数をリクエストすると関数は0を返します。これは週の時間軸の開始時刻が常に日曜日になっていて、1つの週足バーもこの指定した範囲に入らない為です。
履歴の中の全てのバーの数をリクエストする例:
int bars=Bars(_Symbol,_Period); |
指定したインターバルでのバーの数をリクエストする例:
int n; |
参照
イベント処理の関数
BarsCalculated
指定された指標の計算されたデータ数を返します。
int BarsCalculated( |
パラメータ
indicator_handle
[in] 対応する指標関数によって戻された指標ハンドル
戻り値
指標バッファで計算されたデータの量。エラーの場合(データはまだ計算されていない)-1 。
注意事項
この関数は、作成後すぐに指標データを取得することが必要な場合に便利です(指標ハンドルが利用可能)。
例:
void OnStart() |
IndicatorCreate
この関数は iMqlParam 型のパラメータの配列に基づいて作成された特殊のテクニカル指標のハンドルを返します。
int IndicatorCreate( |
パラメータ
symbol
[in] 指標計算が基づいているデータを持つシンボルの名称。NULL は現在のシンボルです。
period
[in] 時間軸。 ENUM_TIMEFRAMES 列挙のいずれかの値。0 は現在の時間軸。
indicator_type
[in] 指標の種類。ENUM_INDICATOR 列挙のいずれかの値。
parameters_cnt
[in] parameters_array[] 配列に渡されるパラメータ数。配列の要素は特殊な MqlParam 構造体型です。デフォルトではゼロで、パラメタ—が受け渡されません。 1 つ以上のパラメータが指定された場合 parameters_array は必須です。パラメータ数は 64 を超すことは出来ません。
parameters_array[]=NULL
[in] MqlParam 型の配列。要素はテクニカル指標の入力パラメータの型と値を含みます。
戻り値
指定されたテクニカル指標のハンドル。失敗の場合 INVALID_HANDLE。
注意事項
IND_CUSTOM 型の指標ハンドルが作成された場合、tparameters_array 入力パラメータ配列の初めの要素のtype フィールドは tENUM_DATATYPE 列挙の TYPE_STRING 値を持ち、string_value フィールドはカスタム指標の名称を含まなければいけません。カスタム指標は(EX5拡張子を持つファイルに)コンパイルし、クライアント端末の MQL5/Indicators ディレクトリまたはサブディレクトリ内に配置される必要があります。
テストが必要な指標は、パラメータが文字列定数で設定されていれば、iCustom() 関数の呼び出しから自動的に定義されています。他の全ての場合(IndicatorCreate() 関数の使用や指標名を設定するパラメータでの非定数文字列の使用)#property tester_indicator プロパティが必要です。
#property tester_indicator “indicator_name.ex5” |
カスタム指標が最初の呼び出し形式を使用する場合、入力パラメータを受け渡す際に最後のパラメータで計算されるデータを示すことも出来ます。「適用価格」パラメータが明確に選択されていない場合、デフォルト計算は PRICE_CLOSE 値に基づきます。
例:
void OnStart() |
IndicatorParameters
指定されたハンドルに基づいて、指標の入力パラメータの数、値と型を返します。
int IndicatorParameters( |
パラメータ
indicator_handle
[in] 計算されたパラメータの数を知る必要のある指標のハンドル
indicator_type
[out] 指標の種類が書き入れられる ENUM_INDICATOR 型の変数
parameters[]
[out] 指標パラメータのリストが書き入れられる MqlParam 型の値を受け取る動的配列。配列サイズは IndicatorParameters() 関数で返されます。
戻り値
指定されたハンドルを持つ指標の入力パラメータの数。エラーの場合は -1。エラーの詳細については GetLastError() を呼びます。
例:
//+——————————————————————+ //— チャート上のウィンドウの数(少なくとも1つのメインウィンドウは常に存在する) |
参照
ChartIndicatorGet()
IndicatorRelease
この関数は、指標ハンドルを削除し、誰によっても使用されていない場合は指標の計算ブロックを解放します。
bool IndicatorRelease( |
戻り値
成功の場合は true、それ以外の場合は false
注意事項
この関数は不要になった指標ハンドルを削除しメモリを節約します。ハンドルがすぐに削除され演算ブロックは(もはや呼び出されていない場合)しばらくたって削除されます。
ストラテジーテスタでの作業ではIndicatorRelease() 関数は実行されません。
例:
//+——————————————————————+ |
CopyBuffer
指標の指定されたバッファデータを取得します。
複製されたデータの要素は、開始位置から現在から過去に向かって数えられます(インデックス buffer_num を持つ指標バッファ)。すなわち、0 の開始位置は現在足(の指標値)を意味します。
CopyBuffer() 関数は受け取り側の配列のサイズの複製されたデータへの割り当てを試みるので、複製するデータ量が不明の場合、受け取り側の buffer[] 配列としての動的配列の使用が推奨されます。指標バッファ(SetIndexBufer() 関数で指標値を格納するために事前に割り当てられる配列)が受け取り側の buffer[] 配列として使用された場合、部分的な複製が許可されています。例は標準端末パッケージの Awesome_Oscillator.MQL5 カスタム指標に見られます。
別の配列(非指標バッファ)に指示値の部分的なコピーを作成する必要がある場合は、所望の数が複製される中間配列を使用する必要があります。その後、この中間配列から受け取り側の配列の必要な場所に必要な数の値の要素ごとのコピーを行います。
複製する必要があるデータの量がわかっている場合は、過剰なメモリの割り当てを防止するために静的に割り当てられたバッファを受け取り側の配列として使用するべきです。
受け取り側の配列が as_series=true であるか as_series=false であるかは関係ありません。データは、一番古い要素が配列に割り当てられた物理メモリの先頭に配置されるように複製されます。この関数の呼び出し方は 3 つあります。
1 番目の位置と必要な要素数によっての呼び出し
int CopyBuffer( |
開始日と必要な要素数によっての呼び出し
int CopyBuffer( |
必要な時間間隔の開始日と終了日によっての呼び出し
int CopyBuffer( |
パラメータ
indicator_handle
[in] 対応する指標関数によって戻された指標ハンドル
buffer_num
[in] 指標バッファの番号
start_pos
[in] 1 番目の複製される要素の位置
count
[in] 複製する日数
start_time
[in] 最初の要素に対応するバーの時刻
stop_time
[in] 最後の要素に対応するバーの時刻
buffer[]
[out] double 型の配列
戻り値
複製されたデータ数(エラーの場合は -1 )
注意事項
指標からデータがリクエストされて、リクエストされた時系列がまだ構築されていないかサーバからダウンロードされる必要がある場合、この関数はすぐに -1 を返し、ダウンロード/構築のプロセスが開始されます。
エキスパートアドバイザーやスクリプトからデータがリクエストされて、端末が必要なデータをローカルに持っていない場合サーバからのダウンロードが開始されます。データがローカル履歴から構築することが出来るがまだされていない場合、必要な時系列の構築が開始します。この関数は、タイムアウトの有効期限までに準備されるデータの量を返します。
例:
//+——————————————————————+ #property indicator_separate_window |
上記の例は、指標バッファが同じ銘柄/期間の指標から作られた別の指標バッファの値で記入される方法を示しています。
履歴データリクエストの詳細な例はオブジェクト結合の方法で参照出来ます。そのセクションで使用可能なスクリプトは iFractals 指標の最後の 1,000 足の値を取得して最後の各 10 の上向きと下向きのフラクタルをチャートに表示する方法を示しています。データ欠落時には、同様の技術が通常次のスタイルを使用して描画されている指標全てで使用することが出来ます。
- DRAW_SECTION
- DRAW_ARROW
- DRAW_ZIGZAG
- DRAW_COLOR_SECTION
- DRAW_COLOR_ARROW
- DRAW_COLOR_ZIGZAG
参照
カスタム指標のプロパティ、SetIndexBuffer
CopyRates
指定された銘柄と期間の MqlRates 構造体の指定された量の履歴データを rates_array 配列に配置します。 要素は現在から過去の順に並べられ、インデックス0が現在足です。
リクエストされたデータ数が受け取り側の配列の長さよりも小さい(または大きい)と、この関数はリクエストされたデータが完全に収まるようにメモリを再割り当てしようとするので、複製するデータ量が不明の場合、受け取り側の配列に動的配列を使用することが推奨されます。
複製する必要があるデータの量がわかっている場合は、過剰なメモリの割り当てを防止するために静的に割り当てられたバッファを受け取り側の配列として使用するべきです。
受け取り側の配列が as_series=true であるか as_series=false であるかは関係ありません。データは、一番古い要素が配列に割り当てられた物理メモリの先頭に配置されるように複製されます。この関数の呼び出し方は 3 つあります。
1 番目の位置と必要な要素数によっての呼び出し
int CopyRates( |
開始日と必要な要素数によっての呼び出し
int CopyRates( |
必要な時間間隔の開始日と終了日によっての呼び出し
int CopyRates( |
パラメータ
symbol_name
[in] 銘柄名
timeframe
[in] 期間
start_time
[in] 複製される最後の要素のバーの時刻
start_pos
[in] 1 番目の複製される要素の開始位置
count
[in] 複製する日数
stop_time
[in] 複製される最後の要素に対応するバーの時刻
rates_array[]
[out] MqlRates 型の配列
戻り値
複製された要素数(エラーの場合は -1 )
注意事項
リクエストされたデータがサーバ上で利用可能なデータに含まれていない場合、この関数は -1 を返します。TERMINAL_MAXBARS(チャートでのバーの最大数)以外のデータがリクエストされた場合も、この関数は -1を返します。
指標からデータがリクエストされて、リクエストされた時系列がまだ構築されていないかサーバからダウンロードされる必要がある場合、この関数はすぐに -1 を返し、ダウンロード/構築のプロセスが開始されます。
エキスパートアドバイザーやスクリプトからデータがリクエストされて、端末が必要なデータをローカルに持っていない場合サーバからのダウンロードが開始されます。データがローカル履歴から構築することが出来るがまだされていない場合、必要な時系列の構築が開始します。この関数は、タイムアウトの有効期限までに準備されるデータの量を返します。が、履歴ダウンロードは続き、次に似たようなリクエストがされた際に、もっとデータを返します。
開始日及び必要な要素の数によってデータがリクエストされる場合、指定された日付とそれ以前のデータのみが戻されます。これは、値(指標バッファのボリューム、スプレッド、値、始値、高値、安値、終値、開始時刻、決済時刻)が返されたバーの開始時刻は常に指定されたもの以下だということです。
日付の指定された範囲のデータを要求する場合、この区間からのデータのみが返されます。間隔が設定され秒まで数えられます。これは、値(指標バッファのボリューム、スプレッド、値、始値、高値、安値、終値、開始時刻、決済時刻)が返されたバーの開始時刻は常に指定された区間内にあるということです。
今日が土曜日で一週間の時間軸で start_time=Last_Tuesday 及び stop_time=Last_Friday を指定してデータを複製する試みに、この関数は 0 を返します。一週間の時間軸が開くのは常に日曜日ですが、一週間バーは指定された間隔にはまらないからです。
現在の未完成のバーに対応する値を返す必要がある場合 start_pos=0 及び count=1 を指定して1 番目の呼び出しの方法を用います。
例:
void OnStart() |
履歴データリクエストの詳細な例はオブジェクト結合の方法で参照出来ます。そのセクションで使用可能なスクリプトは iFractals 指標の最後の 1,000 足の値を取得して最後の各 10 の上向きと下向きのフラクタルをチャートに表示する方法を示しています。データ欠落時には、同様の技術が通常次のスタイルを使用して描画されている指標全てで使用することが出来ます。
- DRAW_SECTION
- DRAW_ARROW
- DRAW_ZIGZAG
- DRAW_COLOR_SECTION
- DRAW_COLOR_ARROW
- DRAW_COLOR_ZIGZAG
参照
構造体とクラス、TimeToString、StringFormat
CopyTime
この関数は選択された銘柄/期間ペアのバーの開始時刻の指定された量の履歴データをtime_array に配置します。要素が現在から過去の順に並べられており、インデックス0が現在足であることにご注意下さい
リクエストされたデータ数が受け取り側の配列の長さよりも小さい(または大きい)と、この関数はリクエストされたデータが完全に収まるようにメモリを再割り当てしようとするので、複製するデータ量が不明の場合、受け取り側の配列に動的配列を使用することが推奨されます。
複製する必要があるデータの量がわかっている場合は、過剰なメモリの割り当てを防止するために静的に割り当てられたバッファを受け取り側の配列として使用するべきです。
受け取り側の配列が as_series=true であるか as_series=false であるかは関係ありません。データは、一番古い要素が配列に割り当てられた物理メモリの先頭に配置されるように複製されます。この関数の呼び出し方は 3 つあります。
1 番目の位置と必要な要素数によっての呼び出し
int CopyTime( |
開始日と必要な要素数によっての呼び出し
int CopyTime( |
必要な時間間隔の開始日と終了日によっての呼び出し
int CopyTime( |
パラメータ
symbol_name
[in] 銘柄名
timeframe
[in] 期間
start_pos
[in] 1 番目の複製される要素の開始位置
count
[in] 複製する日数
start_time
[in] 1 番目の複製される要素の開始時刻
stop_time
[in] 複製される最後の要素に対応するバーの時刻
time_array[]
[out] datetime 型の配列
戻り値
複製されたデータ数(エラーの場合は -1 )
注意事項
リクエストされたデータがサーバ上で利用可能なデータに含まれていない場合、この関数は -1 を返します。TERMINAL_MAXBARS(チャートでのバーの最大数)以外のデータがリクエストされた場合も、この関数は -1を返します。
指標からデータがリクエストされて、リクエストされた時系列がまだ構築されていないかサーバからダウンロードされる必要がある場合、この関数はすぐに -1 を返し、ダウンロード/構築のプロセスが開始されます。
エキスパートアドバイザーやスクリプトからデータがリクエストされて、端末が必要なデータをローカルに持っていない場合サーバからのダウンロードが開始されます。データがローカル履歴から構築することが出来るがまだされていない場合、必要な時系列の構築が開始します。この関数は、タイムアウトの有効期限までに準備されるデータの量を返します。が、履歴ダウンロードは続き、次に似たようなリクエストがされた際に、もっとデータを返します。
開始日及び必要な要素の数によってデータがリクエストされる場合、指定された日付とそれ以前のデータのみが戻されます。これは、値(指標バッファのボリューム、スプレッド、値、始値、高値、安値、終値、開始時刻、決済時刻)が返されたバーの開始時刻は常に指定されたもの以下だということです。
日付の指定された範囲のデータを要求する場合、この区間からのデータのみが返されます。間隔が設定され秒まで数えられます。これは、値(指標バッファのボリューム、スプレッド、値、始値、高値、安値、終値、開始時刻、決済時刻)が返されたバーの開始時刻は常に指定された区間内にあるということです。
今日が土曜日で一週間の時間軸で start_time=Last_Tuesday 及び stop_time=Last_Friday を指定してデータを複製する試みに、この関数は 0 を返します。一週間の時間軸が開くのは常に日曜日ですが、一週間バーは指定された間隔にはまらないからです。
現在の未完成のバーに対応する値を返す必要がある場合 start_pos=0 及び count=1 を指定して1 番目の呼び出しの方法を用います。
履歴データリクエストの詳細な例はオブジェクト結合の方法で参照出来ます。そのセクションで使用可能なスクリプトは iFractals 指標の最後の 1,000 足の値を取得して最後の各 10 の上向きと下向きのフラクタルをチャートに表示する方法を示しています。データ欠落時には、同様の技術が通常次のスタイルを使用して描画されている指標全てで使用することが出来ます。
- DRAW_SECTION
- DRAW_ARROW
- DRAW_ZIGZAG
- DRAW_COLOR_SECTION
- DRAW_COLOR_ARROW
- DRAW_COLOR_ZIGZAG
CopyOpen
この関数は選択された銘柄/期間ペアのバーの始値の指定された量の履歴データをopen_array に配置します。要素が現在から過去の順に並べられており、インデックス0が現在足であることにご注意下さい。
リクエストされたデータ数が受け取り側の配列の長さよりも小さい(または大きい)と、この関数はリクエストされたデータが完全に収まるようにメモリを再割り当てしようとするので、複製するデータ量が不明の場合、受け取り側の配列に動的配列を使用することが推奨されます。
複製する必要があるデータの量がわかっている場合は、過剰なメモリの割り当てを防止するために静的に割り当てられたバッファを受け取り側の配列として使用するべきです。
受け取り側の配列が as_series=true であるか as_series=false であるかは関係ありません。データは、一番古い要素が配列に割り当てられた物理メモリの先頭に配置されるように複製されます。この関数の呼び出し方は 3 つあります。
1 番目の位置と必要な要素数によっての呼び出し
int CopyOpen( |
開始日と必要な要素数によっての呼び出し
int CopyOpen( |
必要な時間間隔の開始日と終了日によっての呼び出し
int CopyOpen( |
パラメータ
symbol_name
[in] 銘柄名
timeframe
[in] 期間
start_pos
[in] 1 番目の複製される要素の開始位置
count
[in] 複製する日数
start_time
[in] 1 番目の複製される要素の開始時刻
stop_time
[in] 最後に複製される要素の開始時刻
open_array[]
[out] double 型の配列
戻り値
配列の要素数(エラーの場合は -1)
注意事項
リクエストされたデータがサーバ上で利用可能なデータに含まれていない場合、この関数は -1 を返します。TERMINAL_MAXBARS(チャートでのバーの最大数)以外のデータがリクエストされた場合も、この関数は -1を返します。
指標からデータがリクエストされて、リクエストされた時系列がまだ構築されていないかサーバからダウンロードされる必要がある場合、この関数はすぐに -1 を返し、ダウンロード/構築のプロセスが開始されます。
エキスパートアドバイザーやスクリプトからデータがリクエストされて、端末が必要なデータをローカルに持っていない場合サーバからのダウンロードが開始されます。データがローカル履歴から構築することが出来るがまだされていない場合、必要な時系列の構築が開始します。この関数は、タイムアウトの有効期限までに準備されるデータの量を返します。が、履歴ダウンロードは続き、次に似たようなリクエストがされた際に、もっとデータを返します。
開始日及び必要な要素の数によってデータがリクエストされる場合、指定された日付とそれ以前のデータのみが戻されます。これは、値(指標バッファのボリューム、スプレッド、値、始値、高値、安値、終値、開始時刻、決済時刻)が返されたバーの開始時刻は常に指定されたもの以下だということです。
日付の指定された範囲のデータを要求する場合、この区間からのデータのみが返されます。間隔が設定され秒まで数えられます。これは、値(指標バッファのボリューム、スプレッド、値、始値、高値、安値、終値、開始時刻、決済時刻)が返されたバーの開始時刻は常に指定された区間内にあるということです。
今日が土曜日で一週間の時間軸で start_time=Last_Tuesday 及び stop_time=Last_Friday を指定してデータを複製する試みに、この関数は 0 を返します。一週間の時間軸が開くのは常に日曜日ですが、一週間バーは指定された間隔にはまらないからです。
現在の未完成のバーに対応する値を返す必要がある場合 start_pos=0 及び count=1 を指定して1 番目の呼び出しの方法を用います。
履歴データリクエストの詳細な例はオブジェクト結合の方法で参照出来ます。そのセクションで使用可能なスクリプトは iFractals 指標の最後の 1,000 足の値を取得して最後の各 10 の上向きと下向きのフラクタルをチャートに表示する方法を示しています。データ欠落時には、同様の技術が通常次のスタイルを使用して描画されている指標全てで使用することが出来ます。
- DRAW_SECTION
- DRAW_ARROW
- DRAW_ZIGZAG
- DRAW_COLOR_SECTION
- DRAW_COLOR_ARROW
- DRAW_COLOR_ZIGZAG
CopyHigh
この関数は選択された銘柄/期間ペアのバーの終値の指定された量の履歴データをclose_array に配置します。要素が現在から過去の順に並べられており、インデックス0が現在足であることにご注意下さい。
リクエストされたデータ数が受け取り側の配列の長さよりも小さい(または大きい)と、この関数はリクエストされたデータが完全に収まるようにメモリを再割り当てしようとするので、複製するデータ量が不明の場合、受け取り側の配列に動的配列を使用することが推奨されます。
複製する必要があるデータの量がわかっている場合は、過剰なメモリの割り当てを防止するために静的に割り当てられたバッファを受け取り側の配列として使用するべきです。
受け取り側の配列が as_series=true であるか as_series=false であるかは関係ありません。データは、一番古い要素が配列に割り当てられた物理メモリの先頭に配置されるように複製されます。この関数の呼び出し方は 3 つあります。
1 番目の位置と必要な要素数によっての呼び出し
int CopyHigh( |
開始日と必要な要素数によっての呼び出し
int CopyHigh( |
必要な時間間隔の開始日と終了日によっての呼び出し
int CopyHigh( |
パラメータ
symbol_name
[in] 銘柄名
timeframe
[in] 期間
start_pos
[in] 1 番目の複製される要素の開始位置
count
[in] 複製する日数
start_time
[in] 1 番目の複製される要素の開始時刻
stop_time
[in] 複製される最後の要素に対応するバーの時刻
high_array[]
[out] double 型の配列
戻り値
複製されたデータ数(エラーの場合は -1 )
注意事項
リクエストされたデータがサーバ上で利用可能なデータに含まれていない場合、この関数は -1 を返します。TERMINAL_MAXBARS(チャートでのバーの最大数)以外のデータがリクエストされた場合も、この関数は -1を返します。
指標からデータがリクエストされて、リクエストされた時系列がまだ構築されていないかサーバからダウンロードされる必要がある場合、この関数はすぐに -1 を返し、ダウンロード/構築のプロセスが開始されます。
エキスパートアドバイザーやスクリプトからデータがリクエストされて、端末が必要なデータをローカルに持っていない場合サーバからのダウンロードが開始されます。データがローカル履歴から構築することが出来るがまだされていない場合、必要な時系列の構築が開始します。この関数は、タイムアウトの有効期限までに準備されるデータの量を返します。が、履歴ダウンロードは続き、次に似たようなリクエストがされた際に、もっとデータを返します。
開始日及び必要な要素の数によってデータがリクエストされる場合、指定された日付とそれ以前のデータのみが戻されます。これは、値(指標バッファのボリューム、スプレッド、値、始値、高値、安値、終値、開始時刻、決済時刻)が返されたバーの開始時刻は常に指定されたもの以下だということです。
日付の指定された範囲のデータを要求する場合、この区間からのデータのみが返されます。間隔が設定され秒まで数えられます。これは、値(指標バッファのボリューム、スプレッド、値、始値、高値、安値、終値、開始時刻、決済時刻)が返されたバーの開始時刻は常に指定された区間内にあるということです。
今日が土曜日で一週間の時間軸で start_time=Last_Tuesday 及び stop_time=Last_Friday を指定してデータを複製する試みに、この関数は 0 を返します。一週間の時間軸が開くのは常に日曜日ですが、一週間バーは指定された間隔にはまらないからです。
現在の未完成のバーに対応する値を返す必要がある場合 start_pos=0 及び count=1 を指定して1 番目の呼び出しの方法を用います。
例:
#property copyright “2009, MetaQuotes Software Corp.” #property description “An example for output of the High[i] and Low[i]” double High[],Low[]; |
履歴データリクエストの詳細な例はオブジェクト結合の方法で参照出来ます。そのセクションで使用可能なスクリプトは iFractals 指標の最後の 1,000 足の値を取得して最後の各 10 の上向きと下向きのフラクタルをチャートに表示する方法を示しています。データ欠落時には、同様の技術が通常次のスタイルを使用して描画されている指標全てで使用することが出来ます。
- DRAW_SECTION
- DRAW_ARROW
- DRAW_ZIGZAG
- DRAW_COLOR_SECTION
- DRAW_COLOR_ARROW
- DRAW_COLOR_ZIGZAG
CopyLow
この関数は選択された銘柄/期間ペアの足の安値の指定された量の履歴データをlow_array に配置します。要素が現在から過去の順に並べられており、インデックス0が現在足であることにご注意下さい。
リクエストされたデータ数が受け取り側の配列の長さよりも小さい(または大きい)と、この関数はリクエストされたデータが完全に収まるようにメモリを再割り当てしようとするので、複製するデータ量が不明の場合、受け取り側の配列に動的配列を使用することが推奨されます。
複製する必要があるデータの量がわかっている場合は、過剰なメモリの割り当てを防止するために静的に割り当てられたバッファを受け取り側の配列として使用するべきです。
受け取り側の配列が as_series=true であるか as_series=false であるかは関係ありません。データは、一番古い要素が配列に割り当てられた物理メモリの先頭に配置されるように複製されます。この関数の呼び出し方は 3 つあります。
1 番目の位置と必要な要素数によっての呼び出し
int CopyLow( |
開始日と必要な要素数によっての呼び出し
int CopyLow( |
必要な時間間隔の開始日と終了日によっての呼び出し
int CopyLow( |
パラメータ
symbol_name
[in] シンボル
timeframe
[in] 期間
start_pos
[in] 1 番目の複製される要素の開始位置
count
[in] 複製する日数
start_time
[in] 複製される最初の要素に対応するバーの時刻
stop_time
[in] 複製される最後の要素に対応するバーの時刻
low_array[]
[out] double 型の配列
戻り値
複製されたデータ数(エラーの場合は -1 )
注意事項
リクエストされたデータがサーバ上で利用可能なデータに含まれていない場合、この関数は -1 を返します。TERMINAL_MAXBARS(チャートでのバーの最大数)以外のデータがリクエストされた場合も、この関数は -1を返します。
指標からデータがリクエストされて、リクエストされた時系列がまだ構築されていないかサーバからダウンロードされる必要がある場合、この関数はすぐに -1 を返し、ダウンロード/構築のプロセスが開始されます。
エキスパートアドバイザーやスクリプトからデータがリクエストされて、端末が必要なデータをローカルに持っていない場合サーバからのダウンロードが開始されます。データがローカル履歴から構築することが出来るがまだされていない場合、必要な時系列の構築が開始します。この関数は、タイムアウトの有効期限までに準備されるデータの量を返します。が、履歴ダウンロードは続き、次に似たようなリクエストがされた際に、もっとデータを返します。
開始日及び必要な要素の数によってデータがリクエストされる場合、指定された日付とそれ以前のデータのみが戻されます。これは、値(指標バッファのボリューム、スプレッド、値、始値、高値、安値、終値、開始時刻、決済時刻)が返されたバーの開始時刻は常に指定されたもの以下だということです。
日付の指定された範囲のデータを要求する場合、この区間からのデータのみが返されます。間隔が設定され秒まで数えられます。これは、値(指標バッファのボリューム、スプレッド、値、始値、高値、安値、終値、開始時刻、決済時刻)が返されたバーの開始時刻は常に指定された区間内にあるということです。
今日が土曜日で一週間の時間軸で start_time=Last_Tuesday 及び stop_time=Last_Friday を指定してデータを複製する試みに、この関数は 0 を返します。一週間の時間軸が開くのは常に日曜日ですが、一週間バーは指定された間隔にはまらないからです。
現在の未完成のバーに対応する値を返す必要がある場合 start_pos=0 及び count=1 を指定して1 番目の呼び出しの方法を用います。
履歴データリクエストの詳細な例はオブジェクト結合の方法で参照出来ます。そのセクションで使用可能なスクリプトは iFractals 指標の最後の 1,000 足の値を取得して最後の各 10 の上向きと下向きのフラクタルをチャートに表示する方法を示しています。データ欠落時には、同様の技術が通常次のスタイルを使用して描画されている指標全てで使用することが出来ます。
- DRAW_SECTION
- DRAW_ARROW
- DRAW_ZIGZAG
- DRAW_COLOR_SECTION
- DRAW_COLOR_ARROW
- DRAW_COLOR_ZIGZAG
参照
CopyHigh
CopyClose
この関数は選択されたシンボル期間のペアのバーの終値の指定された量の履歴データをclose_array に配置します。要素が現在から過去の順に並べられており、インデックス0が現在足であることにご注意下さい。
リクエストされたデータ数が受け取り側の配列の長さよりも小さい(または大きい)と、この関数はリクエストされたデータが完全に収まるようにメモリを再割り当てしようとするので、複製するデータ量が不明の場合、受け取り側の配列に動的配列を使用することが推奨されます。
複製する必要があるデータの量がわかっている場合は、過剰なメモリの割り当てを防止するために静的に割り当てられたバッファを受け取り側の配列として使用するべきです。
受け取り側の配列が as_series=true であるか as_series=false であるかは関係ありません。データは、一番古い要素が配列に割り当てられた物理メモリの先頭に配置されるように複製されます。この関数の呼び出し方は 3 つあります。
1 番目の位置と必要な要素数によっての呼び出し
int CopyClose( |
開始日と必要な要素数によっての呼び出し
int CopyClose( |
必要な時間間隔の開始日と終了日によっての呼び出し
int CopyClose( |
パラメータ
symbol_name
[in] 銘柄名
timeframe
[in] 期間
start_pos
[in] 1 番目の複製される要素の開始位置
count
[in] 複製する日数
start_time
[in] 1 番目の複製される要素の開始時刻
stop_time
[in] 複製される最後の要素に対応するバーの時刻
close_array[]
[out] double 型の配列
戻り値
複製されたデータ数(エラーの場合は -1 )
注意事項
リクエストされたデータがサーバ上で利用可能なデータに含まれていない場合、この関数は -1 を返します。TERMINAL_MAXBARS(チャートでのバーの最大数)以外のデータがリクエストされた場合も、この関数は -1を返します。
指標からデータがリクエストされて、リクエストされた時系列がまだ構築されていないかサーバからダウンロードされる必要がある場合、この関数はすぐに -1 を返し、ダウンロード/構築のプロセスが開始されます。
エキスパートアドバイザーやスクリプトからデータがリクエストされて、端末が必要なデータをローカルに持っていない場合サーバからのダウンロードが開始されます。データがローカル履歴から構築することが出来るがまだされていない場合、必要な時系列の構築が開始します。この関数は、タイムアウトの有効期限までに準備されるデータの量を返します。が、履歴ダウンロードは続き、次に似たようなリクエストがされた際に、もっとデータを返します。
開始日及び必要な要素の数によってデータがリクエストされる場合、指定された日付とそれ以前のデータのみが戻されます。これは、値(指標バッファのボリューム、スプレッド、値、始値、高値、安値、終値、開始時刻、決済時刻)が返されたバーの開始時刻は常に指定されたもの以下だということです。
日付の指定された範囲のデータを要求する場合、この区間からのデータのみが返されます。間隔が設定され秒まで数えられます。これは、値(指標バッファのボリューム、スプレッド、値、始値、高値、安値、終値、開始時刻、決済時刻)が返されたバーの開始時刻は常に指定された区間内にあるということです。
今日が土曜日で一週間の時間軸で start_time=Last_Tuesday 及び stop_time=Last_Friday を指定してデータを複製する試みに、この関数は 0 を返します。一週間の時間軸が開くのは常に日曜日ですが、一週間バーは指定された間隔にはまらないからです。
現在の未完成のバーに対応する値を返す必要がある場合 start_pos=0 及び count=1 を指定して1 番目の呼び出しの方法を用います。
履歴データリクエストの詳細な例はオブジェクト結合の方法で参照出来ます。そのセクションで使用可能なスクリプトは iFractals 指標の最後の 1,000 足の値を取得して最後の各 10 の上向きと下向きのフラクタルをチャートに表示する方法を示しています。データ欠落時には、同様の技術が通常次のスタイルを使用して描画されている指標全てで使用することが出来ます。
- DRAW_SECTION
- DRAW_ARROW
- DRAW_ZIGZAG
- DRAW_COLOR_SECTION
- DRAW_COLOR_ARROW
- DRAW_COLOR_ZIGZAG
CopyTickVolume
この関数は選択された銘柄/期間ペアのバーのティックボリュームの指定された量の履歴データをvolume_arrayy に配置します。要素が現在から過去の順に並べられており、インデックス0が現在足であることにご注意下さい。
リクエストされたデータ数が受け取り側の配列の長さよりも小さい(または大きい)と、この関数はリクエストされたデータが完全に収まるようにメモリを再割り当てしようとするので、複製するデータ量が不明の場合、受け取り側の配列に動的配列を使用することが推奨されます。
複製する必要があるデータの量がわかっている場合は、過剰なメモリの割り当てを防止するために静的に割り当てられたバッファを受け取り側の配列として使用するべきです。
受け取り側の配列が as_series=true であるか as_series=false であるかは関係ありません。データは、一番古い要素が配列に割り当てられた物理メモリの先頭に配置されるように複製されます。この関数の呼び出し方は 3 つあります。
1 番目の位置と必要な要素数によっての呼び出し
int CopyTickVolume( |
開始日と必要な要素数によっての呼び出し
int CopyTickVolume( |
必要な時間間隔の開始日と終了日によっての呼び出し
int CopyTickVolume( |
パラメータ
symbol_name
[in] 銘柄名
timeframe
[in] 期間
start_pos
[in] 1 番目の複製される要素の開始位置
count
[in] 複製する日数
start_time
[in] 1 番目の複製される要素の開始時刻
stop_time
[in] 複製される最後の要素に対応するバーの時刻
volume_array[]
[out] long 型の配列
戻り値
複製されたデータ数(エラーの場合は -1 )
注意事項
リクエストされたデータがサーバ上で利用可能なデータに含まれていない場合、この関数は -1 を返します。TERMINAL_MAXBARS(チャートでのバーの最大数)以外のデータがリクエストされた場合も、この関数は -1を返します。
指標からデータがリクエストされて、リクエストされた時系列がまだ構築されていないかサーバからダウンロードされる必要がある場合、この関数はすぐに -1 を返し、ダウンロード/構築のプロセスが開始されます。
エキスパートアドバイザーやスクリプトからデータがリクエストされて、端末が必要なデータをローカルに持っていない場合サーバからのダウンロードが開始されます。データがローカル履歴から構築することが出来るがまだされていない場合、必要な時系列の構築が開始します。この関数は、タイムアウトの有効期限までに準備されるデータの量を返します。が、履歴ダウンロードは続き、次に似たようなリクエストがされた際に、もっとデータを返します。
開始日及び必要な要素の数によってデータがリクエストされる場合、指定された日付とそれ以前のデータのみが戻されます。これは、値(指標バッファのボリューム、スプレッド、値、始値、高値、安値、終値、開始時刻、決済時刻)が返されたバーの開始時刻は常に指定されたもの以下だということです。
日付の指定された範囲のデータを要求する場合、この区間からのデータのみが返されます。間隔が設定され秒まで数えられます。これは、値(指標バッファのボリューム、スプレッド、値、始値、高値、安値、終値、開始時刻、決済時刻)が返されたバーの開始時刻は常に指定された区間内にあるということです。
今日が土曜日で一週間の時間軸で start_time=Last_Tuesday 及び stop_time=Last_Friday を指定してデータを複製する試みに、この関数は 0 を返します。一週間の時間軸が開くのは常に日曜日ですが、一週間バーは指定された間隔にはまらないからです。
現在の未完成のバーに対応する値を返す必要がある場合 start_pos=0 及び count=1 を指定して1 番目の呼び出しの方法を用います。
例:
#property indicator_separate_window |
履歴データリクエストの詳細な例はオブジェクト結合の方法で参照出来ます。そのセクションで使用可能なスクリプトは iFractals 指標の最後の 1,000 足の値を取得して最後の各 10 の上向きと下向きのフラクタルをチャートに表示する方法を示しています。データ欠落時には、同様の技術が通常次のスタイルを使用して描画されている指標全てで使用することが出来ます。
- DRAW_SECTION
- DRAW_ARROW
- DRAW_ZIGZAG
- DRAW_COLOR_SECTION
- DRAW_COLOR_ARROW
- DRAW_COLOR_ZIGZAG
CopyRealVolume
この関数は選択された銘柄/期間ペアのバーの取引高の指定された量の履歴データをvolume_arrayy に配置します。要素が現在から過去の順に並べられており、インデックス0が現在足であることにご注意下さい。
リクエストされたデータ数が受け取り側の配列の長さよりも小さい(または大きい)と、この関数はリクエストされたデータが完全に収まるようにメモリを再割り当てしようとするので、複製するデータ量が不明の場合、受け取り側の配列に動的配列を使用することが推奨されます。
複製する必要があるデータの量がわかっている場合は、過剰なメモリの割り当てを防止するために静的に割り当てられたバッファを受け取り側の配列として使用するべきです。
受け取り側の配列が as_series=true であるか as_series=false であるかは関係ありません。データは、一番古い要素が配列に割り当てられた物理メモリの先頭に配置されるように複製されます。この関数の呼び出し方は 3 つあります。
1 番目の位置と必要な要素数によっての呼び出し
int CopyRealVolume( |
開始日と必要な要素数によっての呼び出し
int CopyRealVolume( |
必要な時間間隔の開始日と終了日によっての呼び出し
int CopyRealVolume( |
パラメータ
symbol_name
[in] 銘柄名
timeframe
[in] 期間
start_pos
[in] 1 番目の複製される要素の開始位置
count
[in] 複製する日数
start_time
[in] 1 番目の複製される要素の開始時刻
stop_time
[in] 複製される最後の要素に対応するバーの時刻
volume_array[]
[out] long 型の配列
戻り値
複製されたデータ数(エラーの場合は -1 )
注意事項
リクエストされたデータがサーバ上で利用可能なデータに含まれていない場合、この関数は -1 を返します。TERMINAL_MAXBARS(チャートでのバーの最大数)以外のデータがリクエストされた場合も、この関数は -1を返します。
指標からデータがリクエストされて、リクエストされた時系列がまだ構築されていないかサーバからダウンロードされる必要がある場合、この関数はすぐに -1 を返し、ダウンロード/構築のプロセスが開始されます。
エキスパートアドバイザーやスクリプトからデータがリクエストされて、端末が必要なデータをローカルに持っていない場合サーバからのダウンロードが開始されます。データがローカル履歴から構築することが出来るがまだされていない場合、必要な時系列の構築が開始します。この関数は、タイムアウトの有効期限までに準備されるデータの量を返します。が、履歴ダウンロードは続き、次に似たようなリクエストがされた際に、もっとデータを返します。
開始日及び必要な要素の数によってデータがリクエストされる場合、指定された日付とそれ以前のデータのみが戻されます。これは、値(指標バッファのボリューム、スプレッド、値、始値、高値、安値、終値、開始時刻、決済時刻)が返されたバーの開始時刻は常に指定されたもの以下だということです。
日付の指定された範囲のデータを要求する場合、この区間からのデータのみが返されます。間隔が設定され秒まで数えられます。これは、値(指標バッファのボリューム、スプレッド、値、始値、高値、安値、終値、開始時刻、決済時刻)が返されたバーの開始時刻は常に指定された区間内にあるということです。
今日が土曜日で一週間の時間軸で start_time=Last_Tuesday 及び stop_time=Last_Friday を指定してデータを複製する試みに、この関数は 0 を返します。一週間の時間軸が開くのは常に日曜日ですが、一週間バーは指定された間隔にはまらないからです。
現在の未完成のバーに対応する値を返す必要がある場合 start_pos=0 及び count=1 を指定して1 番目の呼び出しの方法を用います。
履歴データリクエストの詳細な例はオブジェクト結合の方法で参照出来ます。そのセクションで使用可能なスクリプトは iFractals 指標の最後の 1,000 足の値を取得して最後の各 10 の上向きと下向きのフラクタルをチャートに表示する方法を示しています。データ欠落時には、同様の技術が通常次のスタイルを使用して描画されている指標全てで使用することが出来ます。
- DRAW_SECTION
- DRAW_ARROW
- DRAW_ZIGZAG
- DRAW_COLOR_SECTION
- DRAW_COLOR_ARROW
- DRAW_COLOR_ZIGZAG
CopySpread
この関数は選択された銘柄/期間ペアのバーのスプレッド値の指定された量の履歴データをspread_array に配置します。要素が現在から過去の順に並べられており、インデックス0が現在足であることにご注意下さい。
リクエストされたデータ数が受け取り側の配列の長さよりも小さい(または大きい)と、この関数はリクエストされたデータが完全に収まるようにメモリを再割り当てしようとするので、複製するデータ量が不明の場合、受け取り側の配列に動的配列を使用することが推奨されます。
複製する必要があるデータの量がわかっている場合は、過剰なメモリの割り当てを防止するために静的に割り当てられたバッファを受け取り側の配列として使用するべきです。
受け取り側の配列が as_series=true であるか as_series=false であるかは関係ありません。データは、一番古い要素が配列に割り当てられた物理メモリの先頭に配置されるように複製されます。この関数の呼び出し方は 3 つあります。
1 番目の位置と必要な要素数によっての呼び出し
int CopySpread( |
開始日と必要な要素数によっての呼び出し
int CopySpread( |
必要な時間間隔の開始日と終了日によっての呼び出し
int CopySpread( |
パラメータ
symbol_name
[in] 銘柄名
timeframe
[in] 期間
start_pos
[in] 1 番目の複製される要素の開始位置
count
[in] 複製する日数
start_time
[in] 1 番目の複製される要素の開始時刻
stop_time
[in] 複製される最後の要素に対応するバーの時刻
spread_array[]
[out] int 型の配列
戻り値
複製されたデータ数(エラーの場合は -1 )
注意事項
リクエストされたデータがサーバ上で利用可能なデータに含まれていない場合、この関数は -1 を返します。TERMINAL_MAXBARS(チャートでのバーの最大数)以外のデータがリクエストされた場合も、この関数は -1を返します。
指標からデータがリクエストされて、リクエストされた時系列がまだ構築されていないかサーバからダウンロードされる必要がある場合、この関数はすぐに -1 を返し、ダウンロード/構築のプロセスが開始されます。
エキスパートアドバイザーやスクリプトからデータがリクエストされて、端末が必要なデータをローカルに持っていない場合サーバからのダウンロードが開始されます。データがローカル履歴から構築することが出来るがまだされていない場合、必要な時系列の構築が開始します。この関数は、タイムアウトの有効期限までに準備されるデータの量を返します。が、履歴ダウンロードは続き、次に似たようなリクエストがされた際に、もっとデータを返します。
開始日及び必要な要素の数によってデータがリクエストされる場合、指定された日付とそれ以前のデータのみが戻されます。これは、値(指標バッファのボリューム、スプレッド、値、始値、高値、安値、終値、開始時刻、決済時刻)が返されたバーの開始時刻は常に指定されたもの以下だということです。
日付の指定された範囲のデータを要求する場合、この区間からのデータのみが返されます。間隔が設定され秒まで数えられます。これは、値(指標バッファのボリューム、スプレッド、値、始値、高値、安値、終値、開始時刻、決済時刻)が返されたバーの開始時刻は常に指定された区間内にあるということです。
今日が土曜日で一週間の時間軸で start_time=Last_Tuesday 及び stop_time=Last_Friday を指定してデータを複製する試みに、この関数は 0 を返します。一週間の時間軸が開くのは常に日曜日ですが、一週間バーは指定された間隔にはまらないからです。
現在の未完成のバーに対応する値を返す必要がある場合 start_pos=0 及び count=1 を指定して1 番目の呼び出しの方法を用います。
例:
#property indicator_separate_window |
履歴データリクエストの詳細な例はオブジェクト結合の方法で参照出来ます。そのセクションで使用可能なスクリプトは iFractals 指標の最後の 1,000 足の値を取得して最後の各 10 の上向きと下向きのフラクタルをチャートに表示する方法を示しています。データ欠落時には、同様の技術が通常次のスタイルを使用して描画されている指標全てで使用することが出来ます。
- DRAW_SECTION
- DRAW_ARROW
- DRAW_ZIGZAG
- DRAW_COLOR_SECTION
- DRAW_COLOR_ARROW
- DRAW_COLOR_ZIGZAG
CopyTicks
この関数はティックをMqlTick形式でticks_arrayに受け取ります。この場合、ティックの索引付けは過去から現在に向かうため、0 インデックスを持ったティックは配列で一番古いものとなります。ティックの分析にはflagsフィールドをチェックします。このフィールドはティックで何が変わったのかを正確に示します。
int CopyTicks( |
パラメータ
symbol_name
[in] 銘柄。
ticks_array
[out] ティックを受け取る MqlTick 型の配列。
フラグ
[in] 受け取るティックの種類を定義するフラグ。COPY_TICKS_INFO – 買値及び/または売値の変更を持つティック、COPY_TICKS_TRADE – ラストとボリュームの変更を持つティック、COPY_TICKS_ALL – すべてのティック。リクエストのタイプにかかわらず、以前のティックの値はMqlTick構造体の残りのフィールドに追加されます。
from
[in] ティックをリクエストしたい日。1970.01.01 から経過したミリ秒。from=0の場合は直近のcountティックが戻されます。
count
[in] リクエストされたティックの数。「from」及び 「count」パラメータが指定されない場合は全てのティック(2000個以下)がticks_array[]に書き込まれます。
戻り値
複製されたティック数(エラーの場合は -1 )。
更なる注意事項
CopyTicks() 関数は受け取られた全てのティックのリクエストと分析を可能にします。CopyTicks()の初めの呼び出しによって、ハードディスクに保存されている銘柄のティックデータベースの同期が開始されます。リクエストされたティックのすべてがローカルデータベースに存在しない場合は、不足しているティックは自動的に取引サーバからダウンロードされます。CopyTicks() で指定されたfromの日付から現時点のティックがすべて同期されます。その後、この銘柄に到着するすべてのティックはデータベースに追加され、同期された状態が保たれます。
from及びcountパラメータが指定されない場合は、全てのティック(2000個以下)がticks_array[]に書き込まれます。flagsパラメータは、リクエストされたティックの種類の設定を可能にします。
COPY_TICKS_INFO – 買値及び/または売値の変更を持つティックが戻されます。他のフィールドのデータもまた追加されます。例えば、買値のみが変わった場合売値とボリュームフィールドは最後に知られている値で書き込まれます。何が変更されたかを正確に調べるにはflagsフィールドを分析します。このフィールドはTICK_FLAG_BID及び/または TICK_FLAG_ASK値を持ちます。ティックの買値と売値がゼロでフラグがこれらのデータの変更を示す場合は(flags=TICK_FLAG_BID|TICK_FLAG_ASK)、オーダーブック(板情報)が空です。つまり、買い注文も売り注文も存在しないということです。
COPY_TICKS_TRADE – ラスト価格とボリュームの変更を持つティックが戻されます。他のフィールドのデータも追加されます。すなわち買値と売値の最後に知られている値がそれぞれのフィールドで指定されます。何が変更されたかを正確に調べるにはflagsフィールドを分析します。このフィールドはTICK_FLAG_LAST及び TICK_FLAG_VOLUME値を持ちます。
COPY_TICKS_ALL – 変更を持つ全てのティックが戻されます。変更されていないフィールドには最後の既知の値が入力されます。
CopyTicks()のCOPY_TICKS_ALLフラグでの呼び出しはリクエストされた間隔からのすべてのティックを戻します。一方、他のモードでの呼び出しはティックの処理と選択にいくらかの時間を要するので、速度面の利点を提供しません。
すべてのティックは、リクエストされた(COPY_TICKS_INFOまたはCOPY_TICKS_TRADE)時点での完全な価格情報を含みます(買値、売値、ラスト価格、及びボリューム)。この機能は、各ティックの時点での取引状態を簡単に分析するために設けられているので、長いティック履歴をリクエストして他のフィールドの値を検索する必要はありません。
インディケータではCopyTicks()関数は結果を戻します:インディケータから呼び出されると、CopyTick()は即時、銘柄のティックをすべて戻し、使えるデータが十分でない場合にはティックデータベースを同期します。1銘柄のすべてのインディケータは1つの共通のスレッドで動作するので、インディケータは同期の完了を待つことはできません。CopyTicks() は同期後に次に呼び出された時に、リクエストされたティックをすべて返します。インディケータではOnCalculate()関数は各ティックの到着後に呼び出されます。
エキスパートアドバイザー及びスクリプトでは、CopyTicks()は45秒間結果を待つことがあります。これに対して、インディケータではエキスパートアドバイザーとスクリプトはそれぞれのスレッドで実行されるので、同期が終了するまで45秒間待つことがあります。この期間中に必要なティックの量の同期が失敗した場合は、 CopyTicks() はタイムアウトして使用可能なティックを返して同期を続けます。エキスパートアドバイザーのOnTick()は1つごとのティックのハンドラではなく、市場の変更についてのみをエキスパートアドバイザーに通知します。変化は単一でないかもしれません。端末では複数のティックが同時に出現することがありますが、OnTick() は最新の市場状態をエキスパートアドバイザーに通知するために一度だけ呼び出されます。
データリターンの速度:端末の高速アクセスキャッシュには、各製品の直近の4096ティックが格納されます(板情報で実行中の銘柄の場合は65536ティック)。現在の取引セッションのためにリクエストされたティックがキャッシュに存在しない場合は、CopyTicks() は端末のメモリに保存されているティックを呼び出します。これらのリクエストは、実行のためのより多くの時間を必要とします。データがディスクから読み込まれるため、一番時間のかかるリクエストは、他の日からのティックのリクエストです。
例:
#property copyright “Copyright 2016, MetaQuotes Software Corp.” //— |
参照
SymbolInfoTick、現在価格の構造体、OnTick()
CopyTicksRange
この関数は指定された期間内のティックをMqlTick形式で ticks_arrayで受け取ります。インデックスは過去に始まって現在に終わるので、インデックス 0 を持つティックが配列で一番古いものです。ティックの分析のためにはflagsフィールドを確認します。これは何が変わったのかを正確に示します。
int CopyTicksRange( |
パラメータ
symbol_name
[in] シンボル
ticks_array
[out] ティックを受け取る MqlTick 型の静的もしくは動的配列。静的配列が要求された時間間隔のすべてのティックを保持できない場合、可能な最大量のティックが受信されます。この場合、この関数はERR_HISTORY_SMALL_BUFFER (4407) エラーを生成します。
フラグ
[in] 要求されたティックのタイプを定義するフラグCOPY_TICKS_INFO – 買値と売値の変更でのティック、COPY_TICKS_TRADE –ラストと数量の変更でのティック、COPY_TICKS_ALL – 全てのティック。任意のタイプの要求に対して、前のティックの値がMqlTick構造体の残りのフィールドに追加されます。
from_msc
[in] ティックリクエストの初めの日。1970.01.01 から経過したミリ秒。from_mscパラメータが指定されていない場合、履歴の先頭からのティックが送信されます。time >= from_msc を持つティックが送信されます。
to_msc
[in] ティックリクエストの最後の日。1970.01.01 から経過したミリ秒。time <= to_msc を持つティックが送信されます。to_mscパラメータが指定されていない場合、履歴の最後までのティックが送信されます。
戻り値
複製されたティック数(エラーの場合は -1 )GetLastError()は下記のエラーを返します。
- ERR_HISTORY_TIMEOUT – ティック同期の待機時間が終わり、関数はすべてのものを送信しました。
- ERR_HISTORY_SMALL_BUFFER – 静的バッファーが小さすぎます。配列が格納できる量だけが送信されました。
- ERR_NOT_ENOUGH_MEMORY – 指定された範囲から動的ティック配列に履歴を受け取るためのメモリが不十分です。ティック配列に十分なメモリを割り当てられませんでした。
注意事項
CopyTicksRange() 関数は、指定された範囲(例えば履歴の特定の日など)から厳密にティックを要求するために使用されます。同時に、CopyTicks()では開始日のみを指定することができます。例えば、月の初めから現在の瞬間までのすべてのティックを受け取ります。
参照
SymbolInfoTick、現在価格の構造体、OnTick、CopyTicks
iBars
該当する銘柄と期間の履歴内のバーの数を返します。
int iBars( |
パラメータ
symbol
[in] 金融商品の名前です。NULL は現在のシンボルです。
timeframe
[in] 期間です。ENUM_TIMEFRAMES列挙体の値の1つです。0は現在のチャート期間を意味します。
戻り値
プラットフォーム設定の「チャートでのバーの最大数」パラメータで許容される値を超えない、該当する銘柄と期間の履歴内のバーの数を返します。
例:
Print(“Bar count on the ‘EURUSD,H1’ is “,iBars(“EURUSD”,PERIOD_H1)); |
参照
Bars
iBarShift
バーを時刻によって検索します。この関数は、指定された時刻に対応するバーのインデックスを返します。
int iBarShift( |
パラメータ
symbol
[in] 金融商品の名前です。NULL は現在のシンボルです。
timeframe
[in] 期間です。ENUM_TIMEFRAMES列挙体の値の1つです。PERIOD_CURRENTは現在のチャート期間を意味します。
time
[in] 検索する時間の値
exact=false
[in] 指定された時間のバーが見つからない場合の戻り値です。. exact=falseの場合、iBarShiftは、開始時間が指定された時刻より早い(time_open<time)一番近くのバーのインデックスを返します。 そのようなバーが見つからない場合(指定された時間前の履歴が使用できない)、関数は-1を返します。exact=trueの場合、iBarShiftは一番近いバーを検索せずにすぐに-1を返します。
戻り値
指定された時刻に対応するバーのインデックスを返します。指定された時間に対応するバーが見つからない場合(履歴にギャップがある場合)、関数は‘exact’に応じて、-1または最も近いバーのインデックスを返します。
例:
//+——————————————————————+ |
iClose
対応するチャートのバー( ‘shift’パラメータで示される)の終値を返します。
double iClose( |
パラメータ
symbol
[in] 金融商品の名前です。NULL は現在のシンボルです。
timeframe
[in] 期間です。ENUM_TIMEFRAMES列挙体の値の1つです。0は現在のチャート期間を意味します。
shift
[in] 時系列から受け取った値のインデックス(現在のバーに対する指定された数のバーによる後方シフト
戻り値
対応するチャートのバー( ‘shift’パラメータで示される)の終値、またはエラー発生時には0を返します。エラーの詳細はGetLastError()関数を呼び出して取得できます。
注意事項
この関数は常に実際のデータを返します。この目的のために、それは各呼び出しの間に指定された銘柄/期間を時系列から要求します。これは、最初の関数呼び出し中に準備のできたデータが存在しない場合、結果を準備するのに時間がかかることを意味します。
この関数は以前の呼び出しの結果を格納しません。また、即時値を返すためのローカルキャッシュはありません。
例:
input int shift=0; Comment(Symbol(),“,”,EnumToString(Period()),“n”, |
参照
CopyClose、CopyRates
iHigh
対応するチャートのバー( ‘shift’パラメータで示される)の高値を返します。
double iHigh( |
パラメータ
symbol
[in] 金融商品の名前です。NULL は現在のシンボルです。
timeframe
[in] 期間です。ENUM_TIMEFRAMES列挙体の値の1つです。0は現在のチャート期間を意味します。
shift
[in] 時系列から受け取った値のインデックス(現在のバーに対する指定された数のバーによる後方シフト
戻り値
対応するチャートのバー( ‘shift’パラメータで示される)の高値、またはエラー発生時には0を返します。エラーの詳細はGetLastError()関数を呼び出して取得できます。
注意事項
この関数は常に実際のデータを返します。この目的のために、それは各呼び出しの間に指定された銘柄/期間を時系列から要求します。これは、最初の関数呼び出し中に準備のできたデータが存在しない場合、結果を準備するのに時間がかかることを意味します。
この関数は以前の呼び出しの結果を格納しません。また、即時値を返すためのローカルキャッシュはありません。
例:
input int shift=0; Comment(Symbol(),“,”,EnumToString(Period()),“n”, |
参照
CopyHigh、CopyRates
iHighest
対応するチャート上で見つかった最大値のインデックスを返します(現在のバーとの相対的なシフト)。
int iHighest( |
パラメータ
symbol
[in] 検索される銘柄です。NULL は現在のシンボルです。
timeframe
[in] 期間です。ENUM_TIMEFRAMES列挙体の値の1つです。0は現在のチャート期間を意味します。
型
[in] 検索される時系列の識別子です。ENUM_SERIESMODE列挙体の任意の値に等しくなれます。
count=WHOLE_ARRAY
[in] 検索を実行する時系列内の要素の数(現在のバーからインデックスの増加方向に向かって)。
start=0
[in] 最大値の検索が開始される最初のバーのインデックス(現在のバーに対する相対的なシフト)。負の値は無視され、ゼロの値に置き換えられます。
戻り値
対応するチャート上で見つかった最大値のインデックス(現在のバーとの相対的なシフト)またはエラー発生時には-1を返します。エラーの詳細はGetLastError()関数を呼び出して取得できます。
例:
double val; |
iLow
対応するチャートのバー( ‘shift’パラメータで示される)の安値を返します。
double iLow( |
パラメータ
symbol
[in] 金融商品の名前です。NULL は現在のシンボルです。
timeframe
[in] 期間です。ENUM_TIMEFRAMES列挙体の値の1つです。0は現在のチャート期間を意味します。
shift
[in] 時系列から受け取った値のインデックス(現在のバーに対する指定された数のバーによる後方シフト
戻り値
対応するチャートのバー( ‘shift’パラメータで示される)の安値、またはエラー発生時には0を返します。エラーの詳細はGetLastError()関数を呼び出して取得できます。
注意事項
この関数は常に実際のデータを返します。この目的のために、それは各呼び出しの間に指定された銘柄/期間を時系列から要求します。これは、最初の関数呼び出し中に準備のできたデータが存在しない場合、結果を準備するのに時間がかかることを意味します。
この関数は以前の呼び出しの結果を格納しません。また、即時値を返すためのローカルキャッシュはありません。
例:
input int shift=0; Comment(Symbol(),“,”,EnumToString(Period()),“n”, |
参照
CopyLow、CopyRates
iLowest
該当するチャート上で見つかった最小値のインデックスを返します(現在のバーとの相対的なシフト)。
int iLowest( |
パラメータ
symbol
[in] 検索される銘柄です。NULL は現在のシンボルです。
timeframe
[in] 期間です。ENUM_TIMEFRAMES列挙体の値の1つです。(0 は現在のチャート期間)
型
[in] 検索される時系列の識別子です。ENUM_SERIESMODE列挙体の任意の値に等しくなれます。
count=WHOLE_ARRAY
[in] 検索を実行する時系列内の要素の数(現在のバーからインデックスの増加方向に向かって)。
start=0
[in] 最小値の検索が開始される最初のバーのインデックス(現在のバーに対する相対的なシフト)。負の値は無視され、ゼロの値に置き換えられます。
戻り値
該当するチャート上で見つかった最小値のインデックス(現在のバーとの相対的なシフト)またはエラー発生時には-1を返します。エラーの詳細はGetLastError()関数を呼び出して取得できます。
例:
double val; |
iOpen
対応するチャートのバー( ‘shift’パラメータで示される)の始値を返します。
double iOpen( |
パラメータ
symbol
[in] 金融商品の名前です。NULL は現在のシンボルです。
timeframe
[in] 期間です。ENUM_TIMEFRAMES列挙体の値の1つです。0は現在のチャート期間を意味します。
shift
[in] 時系列から受け取った値のインデックス(現在のバーに対する指定された数のバーによる後方シフト
戻り値
対応するチャートのバー( ‘shift’パラメータで示される)の始値、またはエラー発生時には0を返します。エラーの詳細はGetLastError()関数を呼び出して取得できます。
注意事項
この関数は常に実際のデータを返します。この目的のために、それは各呼び出しの間に指定された銘柄/期間を時系列から要求します。これは、最初の関数呼び出し中に準備のできたデータが存在しない場合、結果を準備するのに時間がかかることを意味します。
この関数は以前の呼び出しの結果を格納しません。また、即時値を返すためのローカルキャッシュはありません。
例:
input int shift=0; Comment(Symbol(),“,”,EnumToString(Period()),“n”, |
参照
CopyOpen、CopyRates
iTime
対応するチャートのバー( ‘shift’パラメータで示される)の時間を返します。
datetime iTime( |
パラメータ
symbol
[in] 金融商品の名前です。NULL は現在のシンボルです。
timeframe
[in] 期間です。ENUM_TIMEFRAMES列挙体の値の1つです。0は現在のチャート期間を意味します。
shift
[in] 時系列から受け取った値のインデックス(現在のバーに対する指定された数のバーによる後方シフト
戻り値
対応するチャートのバー( ‘shift’パラメータで示される)の開始時間、またはエラー発生時には0を返します。エラーの詳細はGetLastError()関数を呼び出して取得できます。
注意事項
この関数は常に実際のデータを返します。この目的のために、それは各呼び出しの間に指定された銘柄/期間を時系列から要求します。これは、最初の関数呼び出し中に準備のできたデータが存在しない場合、結果を準備するのに時間がかかることを意味します。
この関数は以前の呼び出しの結果を格納しません。また、即時値を返すためのローカルキャッシュはありません。
例:
//+——————————————————————+ |
参照
CopyTime、CopyRates
iTickVolume
対応するチャートのバー( ‘shift’パラメータで示される)のティックボリュームを返します。
long iTickVolume( |
パラメータ
symbol
[in] 金融商品の名前です。NULL は現在のシンボルです。
timeframe
[in] 期間です。ENUM_TIMEFRAMES列挙体の値の1つです。0は現在のチャート期間を意味します。
shift
[in] 時系列から受け取った値のインデックス(現在のバーに対する指定された数のバーによる後方シフト
戻り値
対応するチャートのバー( ‘shift’パラメータで示される)のティックボリューム、またはエラー発生時には0を返します。エラーの詳細はGetLastError()関数を呼び出して取得できます。
注意事項
この関数は常に実際のデータを返します。この目的のために、それは各呼び出しの間に指定された銘柄/期間を時系列から要求します。これは、最初の関数呼び出し中に準備のできたデータが存在しない場合、結果を準備するのに時間がかかることを意味します。
この関数は以前の呼び出しの結果を格納しません。また、即時値を返すためのローカルキャッシュはありません。
例:
input int shift=0; Comment(Symbol(),“,”,EnumToString(Period()),“n”, |
参照
CopyTickVolume、CopyRates
iRealVolume
対応するチャートのバー( ‘shift’パラメータで示される)の実ボリュームを返します。
long iRealVolume( |
パラメータ
symbol
[in] 金融商品の名前です。NULL は現在のシンボルです。
timeframe
[in] 期間です。ENUM_TIMEFRAMES列挙体の値の1つです。0は現在のチャート期間を意味します。
shift
[in] 時系列から受け取った値のインデックス(現在のバーに対する指定された数のバーによる後方シフト
戻り値
対応するチャートのバー( ‘shift’パラメータで示される)の実ボリューム、またはエラー発生時には0を返します。エラーの詳細はGetLastError()関数を呼び出して取得できます。
注意事項
この関数は常に実際のデータを返します。この目的のために、それは各呼び出しの間に指定された銘柄/期間を時系列から要求します。これは、最初の関数呼び出し中に準備のできたデータが存在しない場合、結果を準備するのに時間がかかることを意味します。
この関数は以前の呼び出しの結果を格納しません。また、即時値を返すためのローカルキャッシュはありません。
例:
input int shift=0; nbsp; Comment(Symbol(),“,”,EnumToString(Period()),“n”, |
参照
CopyRealVolume、CopyRates
iVolume
対応するチャートのバー( ‘shift’パラメータで示される)のティックボリュームを返します。
long iVolume( |
パラメータ
symbol
[in] 金融商品の名前です。NULL は現在のシンボルです。
timeframe
[in] 期間です。ENUM_TIMEFRAMES列挙体の値の1つです。0は現在のチャート期間を意味します。
shift
[in] 時系列から受け取った値のインデックス(現在のバーに対する指定された数のバーによる後方シフト
戻り値
対応するチャートのバー( ‘shift’パラメータで示される)のティックボリューム、またはエラー発生時には0を返します。エラーの詳細はGetLastError()関数を呼び出して取得できます。
注意事項
この関数は常に実際のデータを返します。この目的のために、それは各呼び出しの間に指定された銘柄/期間を時系列から要求します。これは、最初の関数呼び出し中に準備のできたデータが存在しない場合、結果を準備するのに時間がかかることを意味します。
この関数は以前の呼び出しの結果を格納しません。また、即時値を返すためのローカルキャッシュはありません。
例:
input int shift=0; Comment(Symbol(),“,”,EnumToString(Period()),“n”, |
参照
CopyTickVolume、CopyRates
iSpread
対応するチャートのバー( ‘shift’パラメータで示される)のスプレッドを返します。
long iSpread( |
パラメータ
symbol
[in] 金融商品の名前です。NULL は現在のシンボルです。
timeframe
[in] 期間です。ENUM_TIMEFRAMES列挙体の値の1つです。0は現在のチャート期間を意味します。
shift
[in] 時系列から受け取った値のインデックス(現在のバーに対する指定された数のバーによる後方シフト
戻り値
対応するチャートのバー( ‘shift’パラメータで示される)のスプレッド、またはエラー発生時には0を返します。エラーの詳細はGetLastError()関数を呼び出して取得できます。
注意事項
この関数は常に実際のデータを返します。この目的のために、それは各呼び出しの間に指定された銘柄/期間を時系列から要求します。これは、最初の関数呼び出し中に準備のできたデータが存在しない場合、結果を準備するのに時間がかかることを意味します。
この関数は以前の呼び出しの結果を格納しません。また、即時値を返すためのローカルキャッシュはありません。
例:
input int shift=0; Comment(Symbol(),“,”,EnumToString(Period()),“n”, |
参照
CopySpread、CopyRates
Originally posted 2019-07-29 23:26:55.