CopyTicks
CopyTicks
从 MqlTick结构获取跳价数据并存储到矩阵或向量当中。元素顺序从过去到现在计数,这意味着索引为 0 的刻度是最久远的。 若要分析跳价,检查 flags 字段,其显示跳价中的确切变化。
bool matrix::CopyTicks(
string symbol, // 品名
ulong flags, // 指示欲接收跳价类型的标志
ulong from_msc, // 欲请求跳价的起始时间
ulong count // 欲接收跳价的数量
);向量方法
bool vector::CopyTicks(
string symbol, // 品名
ulong flags, // 指示欲接收跳价类型的标志
ulong from_msc, // 欲请求跳价的起始时间
ulong count // 欲接收跳价的数量
);参数
- symbol
[输入] 品种。
- flags
[输入] ENUM_COPY_TICKS 枚举中的标志组合,指示所请求数据的内容。当复制到向量时,只能从 ENUM_COPY_TICKS 枚举中指定一个值,否则会发生错误。
- 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_INFO | 1 | 包含卖价(Bid)和/或买价(Ask)价格变化的报价 |
| COPY_TICKS_TRADE | 2 | 包含最后价(Last)和/或交易量(Volume)价格变化的报价 |
| COPY_TICKS_ALL | 3 | 所有报价 |
| COPY_TICKS_TIME_MS | 1«8 | 跳价时间(以毫秒为单位) |
| COPY_TICKS_BID | 1«9 | 出价(Bid) |
| COPY_TICKS_ASK | 1«10 | 要价(Ask) |
| COPY_TICKS_LAST | 1«11 | 最后价(最后成交价) |
| COPY_TICKS_VOLUME | 1«12 | 最后价交易量 |
| COPY_TICKS_FLAGS | 1«13 | 跳价标志 |
| 数据排列 | ||
| COPY_TICKS_VERTICAL | 32768 | 报价沿垂直轴复制到矩阵中。接收到的报价将在矩阵中垂直排列,即最早的报价将位于第一行,而最新的报价将位于矩阵的最后一行。 使用默认复制时,报价会沿水平轴添加到矩阵中。 该标识仅在复制到矩阵时适用。 |
分析跳价标志以便找出哪些数据已变化:
- TICK_FLAG_BID — 跳价改变了出价
- TICK_FLAG_ASK — 跳价改变了要价
- TICK_FLAG_LAST — 跳价改变了最后成交价
- TICK_FLAG_VOLUME — 跳价改变了交易量
- TICK_FLAG_BUY — 跳价是买入成交的结果
- TICK_FLAG_SELL — 跳价是卖出成交的结果