- 数组,缓冲器和时序列中索引方向
- 组织数据存储
- SeriesInfoInteger
- Bars
- BarsCalculated
- IndicatorCreate
- IndicatorParameters
- IndicatorRelease
- CopyBuffer
- CopyRates
- CopySeries
- CopyTime
- CopyOpen
- CopyHigh
- CopyLow
- CopyClose
- CopyTickVolume
- CopyRealVolume
- CopySpread
- CopyTicks
- CopyTicksRange
- iBars
- iBarShift
- iClose
- iHigh
- iHighest
- iLow
- iLowest
- iOpen
- iTime
- iTickVolume
- iRealVolume
- iVolume
- iSpread
CopyBuffer
在需要数量中,获得确定指标指定缓冲区的数据。
从一开始执行位置计算复制数据元素(指标缓冲区标引buffer_num)到当前传递位置。例如,起始位置是0代表当前字节(当前字节指标值)。
当复制位置数量的数据时,推荐使用动态数组和buffer[]容器缓冲区,因为函数试图分配复制数据的接收数组的大小。如果指标缓冲区(通过使用SetIndexBufer() 函数将数组再分配给存储指标值)以buffer[]容量数组来使用,就允许局部复制。示例可以在标准客户端包自定义指标Awesome_Oscillator.mql5中找到。
如果需要局部复指标值到另一数组(没有指标缓冲区),应该使用媒介数组,这样可以复制预期数量。如果从中间接收数组,可以管理复制所需元素值的管理之后加到要求的位置。
如果知道所需复制数据的数量,为了阻止过多分配内存,最好操作静态分配缓冲区 。
无论目标数组- as_series=true or as_series=false的属性是什么。数据都需要复制,因为最旧的元素放置在数组的记忆内存存储位置,有3种变体可以实现函数调用。
第一位置调用和所需元素数量
int CopyBuffer(
|
开始日期调用和所需元素的数量
int CopyBuffer(
|
开始调用和要求时间间隔的最后日期
int CopyBuffer(
|
参量
indicator_handle
[in] 指标处理,通过类似指标函数返回。
buffer_num
[in] 指标缓冲区数量。
start_pos
[in] 第一复制元素位置。
count
[in] 复制结算数据。
start_time
[in] 字节时间,与第一元素相一致。
stop_time
[in] 字节时间,与最后元素相一致。
buffer[]
[out] 双精度 类型数组。
返回值
返回计算的复制数据或者错误时是-1。
注释
当向指标要求数据,如果要求的时序列没有建立或者需要从服务器上下载,函数很快会返回-1,但是下载/建立的过程将会开始。
当EA交易或脚本要求数据时,来自服务器的下载 会开始,如果终端本地没有这些数据,要求建立的时序列就会开始,如果数据可以从本地历史建立但尚未准备好。函数在超时期满时,会返回一定数量的准备好的数据,但是历史下载会继续,在下一个类似要求函数中会返回更多数据。
示例:
//+------------------------------------------------------------------+
|
以上示例表明在相同交易品种周期中,指标缓冲区填满另一指标缓冲区的值。
请见对象绑定方法部分请求数据历史记录的详细示例。该部分可用的脚本显示了如何获得最近1000柱上指标iFractals的值和如何显示过去10的上下分形图。类似的技术可以用于所有丢失数据的指标并通常使用以下类型绘制:
另见