运用数组的一组函数。
数组的最大维数为四维。每个维数被索引编为从0至维度-1。
实际上,第一维数组的50个,在调用时第一个数组表明为[0],最后一个数组表明为[49]。
运用这些函数(除那些更改定量和定性的数组外)
能够预定义时间系列
Time[],Open[],High[],Low[],Close[],Volume[]
ArrayBsearchArrayCopyArrayCopyRatesArrayCopySeriesArrayDimensionArrayGetAsSeriesArrayInitializeArrayIsSeriesArrayMaximumArrayMinimumArrayRangeArrayResizeArraySetAsSeriesArraySizeArraySortintArrayBsearch(doublearray[],doublevalue,voidcount,voidstart,voiddirection)
假使没有发现事件,值会返回到第一个维度的数组或者近期的一个数组。
此函数不能用在字符型或接连数字的数组上(除打开柱的接连数组)。
注解:双元查找只能够存储数。存储数字数组运用ArraySort()函数。
参数:
array[]-需要搜索的数组.
value-将要搜索的值count-搜索的数量,默认搜索所有的数组.start-搜索的开始点,默认从头开始.direction-搜索的方向:MODE_ASCEND顺序搜索,MODE_DESCEND倒序搜索.示例:datetimedaytimes[];
intshift=10,dayshift;//全部Time[]数组被排列在后面的形式ArrayCopySeries(daytimes,MODE_TIME,Symbol(),PERIOD_D1);if(Time[shift]>=daytimes[0])dayshift=0;else{dayshift=ArrayBsearch(daytimes,Time[shift],WHOLE_ARRAY,0,MODE_DESCEND);if(Period()复制一个数组到此外一个数组。只有double[],int[],datetime[],color[],和bool[]这些类型的数组可以被复制。
返回复制元素总量。
参数:
dest[]-目标数组。
source[]-源数组。start_dest-从目标数组的第几位开始写入,默觉得0。start_source-从源数组的第几位开始读取,默觉得0。count-读取多少位的数组。默认值为WHOLE_ARRAY常数。示例:doublearray1[][6];
doublearray2[10][6];//数组2被相同报告添满ArrayCopyRates(array1);ArrayCopy(array2,array1,0,0,60);//当下数组2的前10个柱来自历史(前10个柱包含索引[Bars-1])ArrayCopy(array2,array1,0,Bars*6-60,60);//当下数组2的后10个柱来自历史(后10个柱包含索引[0])ArrayCopyRatesintArrayCopyRates(voiddest_array[],voidsymbol,voidtimeframe)复制一段行情图上的报告到一个二维数组,并返回复制柱总量,假使是-1表明失利。数组的第二维只有6个项目分别是:
0-时间,
1-开盘价格,2-最低价格,3-最高价格,4-收盘价格,5-成交量.假使报告(货币对名称/不同于目前的时间周期)婉拒其余图表,该种情形下相应的图表不能够在客户端内打开,报告自然会婉拒服务器。该种情形,错误ERR_HISTORY_WILL_UPDATED(4066-婉拒创下历史报告)将被放置到last_error变量中,而且将又一次婉拒(查看范例ArrayCopySeries()).注解:此数组一般用于到DLL函数的通过报告。对于报告数组内存没有真正的分配,没有真正地实施复制。当数组访问时,将令更改方向。
参数:
dest_array[]-在二维数组上的双重目标数组。
symbol-货币对名称timeframe-时间周期.可以是列出时间周期的任意值。示例:doublearray1[][6];
ArrayCopyRates(array1,"欧元兑美元",PERIOD_H1);Print("目前柱",TimeToStr(array1[0][0]),"开盘价格",array1[0][1]);ArrayCopySeries
intArrayCopySeries(voidarray[],intseries_index,voidsymbol,voidtimeframe)复制一个系列的行情图报告到数组上.
参数:
array[]-目标第一维数字数组。
series_index-接连数组识别符。务必是接连数组列表识别符其中的值。symbol-目前货币对名称timeframe-图表时间周期。可以是列出时间周期的任意值。示例:datetimedaytimes[];
intshift=10,dayshift,error;//----此Time[]数组被排列在后面的命令ArrayCopySeries(daytimes,MODE_TIME,Symbol(),PERIOD_D1);error=GetLastError();if(error==4066){//----使两个以上接受只读for(inti=0;i<2;i++){Sleep(5000);ArrayCopySeries(daytimes,MODE_TIME,Symbol(),PERIOD_D1);//----检查但前每日柱时间datetimelast_day=daytimes[0];if(Year()==TimeYear(last_day)&&Month()==TimeMonth(last_day)&&Day()==TimeDay(last_day))break;}}if(Time[shift]>=daytimes[0])dayshift=0;else{dayshift=ArrayBsearch(daytimes,Time[shift],WHOLE_ARRAY,0,MODE_DESCEND);if(Period()返回数组的多元维数
参数:
array[]-将要返回的数组。
示例:intnum_array[10][5];
intdim_size;dim_size=ArrayDimension(num_array);//dim_size=2ArrayGetAsSeriesboolArrayGetAsSeries(objectarray[])返回TRUE,假使数组有组织序列的数组(能否从最后到最开始排序过的),否则返回FALSE。
参数:
array[]-需要检查的数组。
示例:if(ArrayGetAsSeries(array1)==true)
Print("数组1是作为接连指数被编入索引");elsePrint("数组1正常编入索引(从左到右)");ArrayInitializeintArrayInitialize(voidarray[],doublevalue)对数组执行初始化,返回经历初始化的数组项的个数。
注解:在客户指标中的init()函数不提倡运用到初始化缓冲,在该种函数自动初始化"空值"将自动分配和缓冲从新分配。
参数:
array[]-需要初始化的数组。
value-新的数组项的值。示例://----初始化所有带有2.1的数组
doublemyarray[10];ArrayInitialize(myarray,2.1);ArrayIsSeriesboolArrayIsSeries(objectarray[])假使检查数组是接连的(Time[],Open[],Close[],High[],Low[],orVolume[]),返回TRUE,否则返回FALSE。
参数:
array[]-需要检查的数组。
示例:if(ArrayIsSeries(array1)==false)
ArrayInitialize(array1,0);else{Print("接连数组不能被初始化!");return(-1);}ArrayMaximumintArrayMaximum(doublearray[],voidcount,voidstart)找出数组中最大值的定位。在数组中函数返回最大值位置。
参数:
array[]-搜索数字数组。
count-搜索数组中项目的个数。start-搜索的开始指数。示例:doublenum_array[15]={4,1,6,3,9,4,1,6,3,9,4,1,6,3,9};
intmaxValueIdx=ArrayMaximum(num_array);Print("最大值=",num_array[maxValueIdx]);ArrayMinimum
intArrayMinimum(doublearray[],voidcount,voidstart)找出数组中最小值的定位。在数组中函数返回最小值位置。
参数:
array[]-搜索数字数组。
count-搜索数组中项目的个数。start-搜索的开始指数。示例:doublenum_array[15]={4,1,6,3,9,4,1,6,3,9,4,1,6,3,9};
intminValueidx=ArrayMinimum(num_array);Print("最小值=",num_array[minValueIdx]);ArrayRangeintArrayRange(objectarray[],intrange_index)取数组中指定维数中项目的数量。索引以零为基础,维度的大小要大于最大索引1个点。
参数:
array[]-需要检查的数组。
range_index-指定的维数。示例:intdim_size;
doublenum_array[10,10,10];dim_size=ArrayRange(num_array,1);ArrayResizeintArrayResize(voidarray[],intnew_size)设定第一维度的大小。假使成功实施,在从新设定后返回包含的全部个数。假使数组没有重设,返回-1。
注解:在函数完成实施后,在函数内数组地方水平化而且重设将保留不变。在函数被从新调用后,一部分数组将不同于显示的数组。
参数:
array[]-需要重设的数组。
new_size-第一维中数组的新大小。示例:doublearray1[][4];
intelement_count=ArrayResize(array1,20);//新大小-80个ArraySetAsSeriesboolArraySetAsSeries(voidarray[],boolset)设定指数数组为系列数组。假使设置参数值为TRUE,数组将被编入索引。数组0名的值是最后的值。其FALSE值设定一个标准的索引命令。此函数返回先前状态。
参数:
array[]-需要设置的数组。
set-索引数组命令。示例:doublemacd_buffer[300];
doublesignal_buffer[300];inti,limit=ArraySize(macd_buffer);ArraySetAsSeries(macd_buffer,true);for(i=0;i返回数组的项目数。对于第一维数组,用ArraySize函数返回的ArrayRange(array,0)。
参数:
array[]-任何类型数组。
示例:intcount=ArraySize(array1);
for(inti=0;i对数组执行排序,系列数组不能ArraySort()运用执行排序。
参数:
array[]-被排列的数组。
count-对多少个数组项执行排序。start-排序的开始点。sort_dir-排序方式,MODE_ASCEND顺序排列,MODE_DESCEND倒序排列。示例:doublenum_array[5]={4,1,6,3,9};
//新数组包含值4,1,6,3,9ArraySort(num_array);//被排列新数组1,3,4,6,9ArraySort(num_array,WHOLE_ARRAY,0,MODE_DESCEND);//被排列新数组9,6,4,3,1