CopyRates
获取 MqlRates 结构的历史序列,按指定品种-周期,按指定数量,并存储到矩阵或向量当中。 元素顺序倒计时,从现在到过去,这意味着起始位置等于 0 表示当前柱线。
复制数据,以便将最久远的元素放置在矩阵/向量的开头。 有三个函数选项。
依据初始位置和所需元素的数量进行访问
bool matrix::CopyRates(
|
按初始日期和所需元素的数量进行访问
bool matrix::CopyRates(
|
按所需时间间隔的初始日期和最终日期进行访问
bool matrix::CopyRates(
|
向量方法
依据初始位置和所需元素的数量进行访问
bool vector::CopyRates(
|
按初始日期和所需元素的数量进行访问
bool vector::CopyRates(
|
按所需时间间隔的初始日期和最终日期进行访问
bool vector::CopyRates(
|
参数
symbol
[输入] 品种。
period
[输入] 周期。
rates_mask
[输入] 指定所请求序列类型的标志的 ENUM_COPY_RATES 枚举组合。 当复制到向量时,只能指定来自 ENUM_COPY_RATES 枚举中的一个值,否则会发生错误。
start
[输入] 第一个复制的元素索引。
count
[输入] 复制的元素数量。
from
[输入] 对应于第一个元素的柱线时间。
to
[输入] 对应于最后一个元素的柱线时间。
返回值
如果成功则返回 true,否则返回 false(如果出现错误)。
注意
如果所请求数据的区间完全超出服务器上的可用数据,则该函数返回 false。 如果数据超出 TERMINAL_MAXBARS 之外(图表上的最大柱数),则该函数也会返回 false。
当请求数据来自 EA 或脚本时,如果终端在本地没有相应的数据,则启动从服务器下载,或者如果可以从本地历史构建数据但尚未准备好,则开始构建必要的时间序列。 该函数按时间返回准备好的直至期满的数据量,然而历史记录下载将继续,并且在下一个类似请求期间,该函数会返回更多数据。
按开始日期和所需项目数量请求数据时,仅返回日期小于(之前)或等于指定日期的数据。 设置间隔时要考虑多一秒。 换句话说,返回值的任何柱线的开盘日期(交易量、点差、开盘价、最高价、最低价、收盘价或时间)始终等于或小于指定的日期。
当请求给定日期范围内的数据时,仅返回请求间隔内的数据。 设置间隔时要考虑多一秒。 换句话说,返回的任何柱线的开盘时间(交易量、点差、指标缓冲区值、开盘价、最高价、最低价、收盘价或时间)始终位于请求的区间内。
例如,如果当日是一周中的星期六,则当尝试设置 start_time=Last_Tuesday 和 stop_time=Last_Friday 复制周线时间帧数据时,函数会返回 0,因为周线时间帧的开盘时间始终落在星期日,故没有一个周线柱线落在指定范围内。
如果您需要获取对应于当前未完成柱线的数值,那么您可以采用第一种调用形式指示 start_pos=0 和 count=1。
ENUM_COPY_RATES 枚举包含指定要传递给矩阵或数组的数据类型的标志。 标志组合允许在一个请求中从历史记录中获取多个序列。 矩阵中行的顺序将与 ENUM_COPY_RATES 枚举中值的顺序相对应。 换言之,含有最高价数据的行在矩阵中将始终高于含有最低价数据的行。
ID |
值 |
说明 |
---|---|---|
COPY_RATES_OPEN |
1 |
开盘价序列 |
COPY_RATES_HIGH |
2 |
最高价序列 |
COPY_RATES_LOW |
4 |
最低价序列 |
COPY_RATES_CLOSE |
8 |
收盘价序列 |
COPY_RATES_TIME |
16 |
时间序列(柱线开盘时间)
获取向量和矩阵(vectord 和 matrixf)的浮点型的时间会导致 ~100 秒的缺失,因为浮点精度受到严重限制,并且大于1<<24 的整数无法在浮点数中准确表示。 |
COPY_RATES_VOLUME_TICK |
32 |
跳价的成交量 |
COPY_RATES_VOLUME_REAL |
64 |
交易成交量 |
COPY_RATES_SPREAD |
128 |
点差 |
组合 |
|
|
COPY_RATES_OHLC |
15 |
开盘价、最高价、最低价、和收盘价序列 |
COPY_RATES_OHLCT |
31 |
开盘价、最高价、最低价、收盘价、和时间序列 |
数据排列 |
|
|
COPY_RATES_VERTICAL |
32768 |
序列沿垂直轴复制到矩阵中。接收到的序列值将在矩阵中垂直排列,即最早的数据将位于第一行,而最新的数据将位于矩阵的最后一行。
使用默认复制时,序列会沿水平轴添加到矩阵中。
该标识仅在复制到矩阵时适用。 |
示例:
//+------------------------------------------------------------------+
|
参见