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