CopyTicks
从 MqlTick 结构获取跳价数据并存储到矩阵或向量当中。元素顺序从过去到现在计数,这意味着索引为 0 的刻度是最久远的。 若要分析跳价,检查 flags 字段,其显示跳价中的确切变化。
bool matrix::CopyTicks(
string symbol, // 品名
ulong ticks_mask, // 指示欲接收跳价类型的掩码
uint flags=COPY_TICKS_ALL, // 指示欲接收跳价类型的标志
ulong from_msc=0, // 欲请求跳价的起始时间
ulong count=0 // 欲接收跳价的数量
);向量方法
bool vector::CopyTicks(
string symbol, // 品名
ulong ticks_mask, // 指示欲接收跳价类型的掩码
uint flags=COPY_TICKS_ALL, // 指示欲接收跳价类型的标志
ulong from_msc=0, // 欲请求跳价的起始时间
ulong count=0 // 欲接收跳价的数量
);参数
symbol
[输入] 品种。
ticks_mask
[输入] ENUM_COPY_TICKS 枚举中的标志组合,指示所请求数据的内容。当复制到向量时,只能从 ENUM_COPY_TICKS 枚举中指定一个值,否则会发生错误。
flags
[输入] 定义所请求跳价类型的标志。 COPY_TICKS_INFO 表示跳价全由买入价和/或卖出价变化构成,COPY_TICKS_TRADE — 跳价由最后成交价和交易量变化构成,COPY_TICKS_ALL — 全部的跳价。 对于任何类型的请求,前一次跳价的值都会添加到 MqlTick 结构的剩余字段之中。
from_msc
[输入] 请求跳价的开始时间。 自 1970 年 01 月 01 日起,时间以毫秒为单位指定。 如果 from_msc=0,则返回等于 'count' 的最后跳价数字。
count
[输入] 所请求跳价的数量。 如果参数 'from_msc' 和 'count' 未指定,则将写入所有可用的跳价,但不超过 2000。
返回值
成功时返回 true,如果发生错误则 false。
注意
首次调用 CopyTicks() 会启动硬盘驱动器上存储的相关品种跳价数据库的同步。 如果本地数据库没有提供全部请求的跳价,则缺失的跳价将自动从交易服务器下载。 跳价的同步自 CopyTicks() 中指定的 from_msc 到当前时刻。 之后,该品种所有到达的跳价都将添加到跳价数据库之中,从而使其保持同步状态。
如果 from_msc 和 count 参数未指定,则把全部可用跳价,但不超过 2000 个,写入矩阵/向量之中。
在指标中,CopyTicks() 方法立即返回结果:当从指标调用时,CopyTick() 会立即返回品种的所有可用跳价,如果可用数据不足,则启动跳价数据库的同步。 同一品种上的所有指标都在一个公用线程中运行,因此指标不能等待同步完成。 同步后,CopyTicks() 将在下一次调用期间返回所有请求的跳价。 在指标中,OnCalculate() 函数在每次跳价到达后调用。
在智能系统和脚本中,CopyTicks() 可以等待结果 45 秒:与指标不同,每个智能系统或脚本都在单独的线程中运行,因此为完成同步最多可以等待 45 秒。 如果在此期间无法同步所需数量的跳价,CopyTicks() 将在超时后返回可用的跳价,并继续同步。 智能系统里的 OnTick() 并非每次跳价都会处理,它只通知智能系统行情有所变化。 这可能是一批变化:终端可以同时接收多次跳价,而 OnTick() 只会调用一次,通知智能系统最新的行情状态。
数据返回率:终端在高速访问缓存中为每个金融产品存储了 4096 个最后的跳价(市场深度为运营品种存储 65536 个跳价)。 有关此数据的请求执行速度最快。 如果当前交易时段请求的跳价超出缓存,CopyTicks() 将调用存储在终端内存中的跳价。 这些请求需要更多时间才能完成。 最慢的请并非那些请求其它日期的跳价,因为在这种情况下,数据是从驱动器读取的。
ENUM_COPY_TICKS
ENUM_COPY_TICKS 枚举包含指定要传递给矩阵或数组的数据类型的标志。 标志组合允许在一个请求中从历史记录中获取多个序列。 矩阵中行的顺序将与 ENUM_COPY_TICKS 枚举中数值的顺序相对应。 换言之,含有最高价数据的行在矩阵中将始终高于含有最低价数据的行。
| ID | 值 | 说明 |
|---|---|---|
| COPY_TICKS_TIME_MS | 1 | 跳价时间(以毫秒为单位) |
| COPY_TICKS_BID | 2 | 出价(Bid) |
| COPY_TICKS_ASK | 4 | 要价(Ask) |
| COPY_TICKS_LAST | 8 | 最后价(最后成交价) |
| COPY_TICKS_VOLUME | 16 | 最后价交易量 |
| COPY_TICKS_FLAGS | 32 | 跳价标志 |
分析跳价标志以便找出哪些数据已变化:
- TICK_FLAG_BID — 跳价改变了出价
- TICK_FLAG_ASK — 跳价改变了要价
- TICK_FLAG_LAST — 跳价改变了最后成交价
- TICK_FLAG_VOLUME — 跳价改变了交易量
- TICK_FLAG_BUY — 跳价是买入成交的结果
- TICK_FLAG_SELL — 跳价是卖出成交的结果