
MQL5 時系列データ(バー・価格)
CopyTicks()
- できること
- 過去のティックデータを配列に取得する
- 対応
- MQL5
CopyTicks() とは
MQL5 で、指定した時刻以降のティック(Bid・Ask の更新の記録)を MqlTick 構造体の配列にコピーする関数です。スプレッドの変化を調べたり、ティック単位で分析したりするときに使います。
CopyTicks() の書式と引数
int CopyTicks(
string symbol_name,
MqlTick &ticks_array[],
uint flags=COPY_TICKS_ALL,
ulong from=0,
uint count=0
)| 引数 | 型 | 省略時 | 説明 |
|---|---|---|---|
symbol_name | string | 必須 | 銘柄名。 |
ticks_array | MqlTick &[] | 必須 | ティックを受け取る MqlTick の配列。 |
flags | uint | COPY_TICKS_ALL | 取得するティックの種類。COPY_TICKS_ALL(すべて)、COPY_TICKS_INFO(Bid・Ask の変化)、COPY_TICKS_TRADE(最終価格・出来高の変化)。 |
from | ulong | 0 | 取得を始める時刻(1970年1月1日からのミリ秒)。0 なら直近のティック。 |
count | uint | 0 | 取得する数。0 にすると、ターミナルが決めた数(直近の分)を取得します。 |
戻り値
コピーできたティックの数。失敗したら -1。
CopyTicks() の使い方(コード例)
// 直近100ティックの平均スプレッド
MqlTick ticks[];
int n = CopyTicks(_Symbol, ticks, COPY_TICKS_INFO, 0, 100);
if(n > 0)
{
double sum = 0;
for(int i = 0; i < n; i++) sum += ticks[i].ask - ticks[i].bid;
Print("平均スプレッド:", DoubleToString(sum / n / _Point, 1), "ポイント");
}OnTick()・OnStart() などの関数の中に書いて使う例です。MetaEditor でコンパイルできることを確認済みです。
CopyTicks() の注意点
- from はミリ秒単位です。datetime(秒)から変換するときは (ulong)時刻 * 1000 とします。












