5.5 Array functions数组函数

5.5  Array functions数组函数

使用数组的一组函数。

数组限制最大维数为4维,每维元素限制最多50个。调用第一个元素的序列号为「0],最后一个元素的序列号为[49]。

使用这些函数(除那些改变定量和定性的数组外)能够预定义时间系列Tim[]、Open []、High []、Low [], Close []和Volume []。

5.5.1  ArrayBsearch()数组搜索

int ArrayBsearch ( double array [],double value,void count,void start,voiddirection)

如果没有发现事件,值会返回到第一个维度的数组或者最近的一个数组。

此函数不能用在字符型或连续数字的数组上(除打开柱的连续数组)。

注解:二叉查找只能存储数字。存储数字的数组使用ArraySort)函数。

【参量】

array=—需要搜索的数组。

Value—将要搜索的值。

Count—搜索的数量,默认搜索所有的数组。

Start—搜索的开始点,默认从头开始。

Direction—搜索的方向。

MODE_ ASCEND—顺序搜索。

MODE_ DESCEND—倒序搜索。

【示例】

  

5.5.2  ArrayCopy()数组复制

【参数】

lest—目标数组。

source—源数组。

start_ dest—从目标数组的第几位开始写人,默认为零。

start_  source—从源数组的第几位开始读取,默认为零。

count—读取多少位的数组。默认值为WHOLE_ ARRAY常数。

【示例】

   

5.5.3  ArrayCopyRates()数组复制走势

int ArrayCopyRates(  void dest_array「],void symbol,void timeframe)

将一段走势图上的数据复制到一个二维数组,并返回复制柱总量,如果是一1表示失败。数组的第二维只有6个项目,分别是:

0—时间。

1—开盘价格。

2—最低价格。

3—最高价格。

4—收盘价格。

5—成交量。

如果数据(货币对名称/不同于当前的时间周期)拒绝其他图表,在这种情况下相应的图表不能够在客户端内打开,数据自然会拒绝服务器。在这种情况,错误ERR_HISTORY_WILL_UPDATED (4066—拒绝刷新历史数据)将被放置到last_ error变量中,并且将再次拒绝。

注意:此数组通常用到DLL函数的通过数据。

对于数据数组内存没有真正的分配,没有真正地执行复制。当数组访问时,将会改变方向。

【参量】

dest_array } }—在二维数组上的双重目标数组。

symbol—货币对名称。

timeframe—时间周期。可以是列出时间周期的任意值。

【示例】

double arrayl[][6];

ArrayCopyRates( arrayl,”EURUSD",PERIOD_H1);

Print( "当前柱”,TimeToStr( arrayl } 0 } } 0 } ) ,”开盘价格”,arrayl}0}}1});

5.5.4  ArrayCopySeries()数组复制系列走势

int ArrayCopySeries(  void array「〕,int series_ index,void symbol,void time-frame)

复制一个系列的走势图数据到数组上。

对于数据数组内存没有真正的分配,没有真正地执行复制。当数组访问时,将会改变方向。在客户指标内禁止数组作为数组下标分配。在这种情况下,数组被真正复制。

如果数据从不同货币对/时间周期图表复制,数据可能缺乏。在这种情况下,错误ERR_HISTORY WILL_UPDATED (4066—拒绝刷新历史数据)将被放置到last_ error变量中,并且在确定的时间周期内将重新尝试复制。

注解:如果series_ index是MODE_ TIME,那么第一个参量必须是日期型的数组。

【参量】

array——目标第一维数字数组。

series_ index——连续数组识别符。必须是连续数组列表识别符其中的值。

Symbol——当前货币对名称。

Timeframe——图表时间周期。可以是列出时间周期的任意值。

【示例】


5.5.5  ArrayDimension()返回数组维数

int ArrayDimension( object array「」)

返回数组的维数。

【参量】

arra=〕—将要返回的数组。

【示例】

int num  array [10][5];

int dim_ size;

dim  size = ArrayDimension ( num  array );

//dim  size=2

5.5.6  ArrayGetAsSeries()返回数组序列

boot ArrayGetAsSeries( object array)

说明数组是有组织序列的数组(是从最后到最开始排序过的),返回TRUE;否则,返回FALSEo

【参量】

array—需要检查的数组。

【示例】

if( ArrayGetAsSeries( arrayl)==true )

Print ( '‘数组1是作为连续指数被编入索引”); 

else

Print”数组1正常编入索引(从左到右)”);

5.5.7  Arraylnitialize()数组初始化

int ArrayInitialize( void array[],double value)

对数组进行初始化,返回经过初始化的数组项的个数。

注意:在客户指标中的init)函数,不建议使用到初始化缓冲中。在这种函数中自动初始化,“空值”将自动分配和缓冲重新分配。

【参最】

array—需要初始化的数组。

value—新的数组项的值。

【示例】

//---一初始化所有带有2. 1的数组

double myarray [ 10 ];

Arraylnitialize( myarray,2. 1);

5.5.8  ArrayIsSeries()判断数组连续

boot ArrayIsSeries( object array[])

如果检查数组是连续的(Time [  ] , Open [  ] , Close [  ] , High [  ], Low[  ]或Volume,返回TRUE;否则,返回FALSE。

【参最】

array—需要检查的数组。

【示例】

if( ArrayIsSeries( arrayl)==false )

ArrayInitialize( arrayl ,0);

else

Print”连续数组不能被初始化!”);

return(一1);

5.5.9 ArrayMaximum()数组最大值定位

int ArraylVIaximum(  double array「」,void count,void start )找出数组中最大值的定位。在数组中函数返回最大值位置。

【参量】

array[  ]—搜索数字数组。

count—搜索数组中项目的个数。start

搜索的开始指数。

【示例】

double num array[15]={4,1,6,3,9,4,1 ,b,3,9,4,1 ,6,3,9};

int maxValueldx=ArrayMaximum(num_  array);

Print”最大值=' ,num_array( maxValueIdx] ) ;

5.5.10  ArrayMinimum()数组最小值定位

int ArrayMinimum( double array[  ],void count,void start)

找出数组中最小值的定位。在数组中函数返回最小值位置。

【参量】

array[  ]—搜索数字数组。

count—搜索数组中项目的个数。

start—搜索的开始指数。

【示例】

double num_array[15]={4,1 ,6,3,9,4,1,6,3,9,4,1,6,3,9};

int minValueldx=ArrayMinimum(num  array);

Print”最小值=' ,num_  array[ minValueIdx] ) ;

5.5.11  ArrayRange()返回数组指定维数数量

int ArrayRange(  object array[  ],intrange_index)

取数组中指定维数中项目的元素数量。索引以零为基础,维度要大于最大索引1个点。

【参最】

array—需要检查的数组。

range_index—指定的维数。

【示例】

int dim_  size;

double num_array[10,10,10];

dim_  size=ArrayRange( num array,I);

5.5.12  ArrayResize()改变数组维数

int ArrayResize ( void array),int new_size))

设定第一维度的大小。如果成功执行,在重新设定后返回包含的全部个数。如果数组没有重设,返回一1

注意:在函数完成执行后,数组恢复到原先的维数,原有未改变的数值保持不变。

【参量】

array[  ]需要重设的数组。

new一  size—第一维中数组的新大小。

【示例】

double arrayl[  ][4];

int element_count=ArrayResize( arrayl ,20);

//新大小一80个

5.5.13  ArraySetAsSeries()设定系列数组

bool ArraySetAsSeries ( void array),boot set)

设量数组排序方向。第二参数为True,则指定数组按倒序重新排序,最后一个元素序号为零。False则按原顺序排列。

【参量】

array—需要设置的数组。

set—索引数组命令。

【示例】

double macd buffer[ 300 ];

double signal_ buffer [ 300 ];

int i,limit二ArraySize( macd_  buffer);

ArraySetAsSeries ( macd_buffer , true );

for( i=0;i<limit; i++)

macd_buffer[i〕=iMA(NULL,O,12,0,MODE_ EMA,PRICE _ CLOSE,i)一iMA(NULL,0,26,O,MODE_EMA,PRICE_CLOSE,i);

for( i=0;i<limit; i++)

signal_buffer[ i ]=iMAOnArray(macd  buffer,limit,9,0,MODE_ SMA,i);

5.5.14  ArraySize()返回数组项目数

int ArraySize ( [object array])

返回数组的项目数。对于第一维数组,用ArraySize函数返回的ArrayR-ange ( array , 0)。

【参量】

array—任何类型数组。

【示例】

int count=ArraySize( arrayl);

for( int i=0;i<count; i++)

//一些计算

5.5.15  ArraySort()数组排序

int ArraySort ( void array」,void count,void start,void sort dir)

对数组进行排序。系列数组不能使用ArraySort)进行排序。

【参量】

array[]—被排列的数组。

count—对多少个数组项进行排序。

start—排序的开始点。

sort一 dir—排序方式。

MODE_ ASCEND—顺序排列。

MODE_ DESCEND—倒序排列。

【示例】

double num array } 5]={4,1,6,3,9};

//新数组包含值4,1,6,3,9

ArraySort( num_array);

//被排列新数组1,3,4,6,9

ArraySort(num array,WHOLE_ARRAY,O,MODE_DESCEND);

//被排列新数组9,6,4,3,1