CopyTicks
从 MqlTick 结构获取跳价数据并存储到矩阵或向量当中。元素顺序从过去到现在计数,这意味着索引为 0 的刻度是最久远的。 若要分析跳价,检查 flags 字段,其显示跳价中的确切变化。
bool matrix::CopyTicks(
|
向量方法
bool vector::CopyTicks(
|
参数
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 枚举中数值的顺序相对应。 换言之,含有最高价数据的行在矩阵中将始终高于含有最低价数据的行。
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 |
最后价交易量 |
1<<13 |
跳价标志 |
|
数据排列 |
|
|
COPY_TICKS_VERTICAL |
32768 |
报价沿垂直轴复制到矩阵中。接收到的报价将在矩阵中垂直排列,即最早的报价将位于第一行,而最新的报价将位于矩阵的最后一行。
使用默认复制时,报价会沿水平轴添加到矩阵中。
该标识仅在复制到矩阵时适用。 |
分析跳价标志以便找出哪些数据已变化:
- TICK_FLAG_BID ― 跳价改变了出价
- TICK_FLAG_ASK ― 跳价改变了要价
- TICK_FLAG_LAST ― 跳价改变了最后成交价
- TICK_FLAG_VOLUME ― 跳价改变了交易量
- TICK_FLAG_BUY ― 跳价是买入成交的结果
- TICK_FLAG_SELL ― 跳价是卖出成交的结果
参见