数组函数

  • int ArrayBsearch(double array[],double value,int count=WHOLE_ARRAY,int start=0,int direction=MODE_ASCEND)
    搜索一个值在数组中的位置
    此函数不能用在字符型或连续数字的数组上.

[输入参数]
array[] -需要搜索的数组
value -将要搜索的值 
count -搜索的数量,默认搜索所有的数组
start -搜索的开始点,默认从头开始
direction -搜索的方向,MODE_ASCEND顺序搜索MODE_DESCEND倒序搜索

示例:

datetime daytimes[];
int shift=10,dayshift;
// All the Time[] timeseries are sorted in descendant mode
ArrayCopySeries(daytimes,MODE_TIME,Symbol(),PERIOD_D1);
if(Time[shift]&gt>=daytimes[0]) dayshift=0;
else
{
dayshift=ArrayBsearch(daytimes,Time[shift],WHOLE_ARRAY,0,MODE_DESCEND);
if(Period()<PERIOD_D1)
dayshift++;
}
Print(TimeToStr(Time[shift])," corresponds to ",dayshift," day bar opened at ",
TimeToStr(daytimes[dayshift]));


  • int ArrayCopy(object &dest[], object source[], int start_dest=0, int start_source=0, int count=WHOLE_ARRAY)
    复制一个数组到另外一个数组。
    只有double[], int[], datetime[], color[],和bool[]这些类型的数组可以被复制。

[输入参数]
dest[] -目标数组
source[] -源数组
start_dest -从目标数组的第几位开始写入,默认为0
start_source -从源数组的第几位开始读取,默认为0
count -读取多少位的数组

示例:

double array1[][6];
double array2[10][6];
// fill array with some data
ArrayCopyRates(array1);
ArrayCopy(array2, array1,0,Bars-9,10);
// now array2 has first 10 bars in the history


  • int ArrayCopyRates(double &dest_array[], string symbol=NULL, int timeframe=0)
    复制一段走势图上的数据到一个二维数组,数组的第二维只有6个项目分别是:
    0 -时间,
    1 -开盘价,
    2 -最低价,
    3 -最高价,
    4 -收盘价,
    5 -成交量.

[输入参数]
dest_array[] -目标数组
symbol -标示,当前所需要的通货的标示
timeframe -图表的时间线

示例:

double array1[][6];
ArrayCopyRates(array1,"EURUSD", PERIOD_H1);
Print("Current bar ",TimeToStr(array1[0][0]),"Open", array1[0][1]);


  • int ArrayCopySeries(double &array[], int series_index, string symbol=NULL, int timeframe=0)
    复制一个系列的走势图数据到数组上
    注:如果series_index是MODE_TIME,那么第一个参数必须是日期型的数组

[输入参数]

dest_array[] -目标数组
series_index -想要取的系列的名称或编号,0-5
symbol -标示,当前所需要的通货的标示
timeframe -图表的时间线

示例:

datetime daytimes[];
int shift=10,dayshift;
// All the Time[] timeseries are sorted in descendant mode
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()
}
Print(TimeToStr(Time[shift])," corresponds to ",dayshift," day bar opened at ", TimeToStr(daytimes[dayshift]));


  • int ArrayDimension( int array[])
    返回数组的维数

::输入参数
array[] -需要检查的数组

示例:

int num_array[10][5];
int dim_size;
dim_size=ArrayDimension(num_array);
// dim_size is 2


  • bool ArrayGetAsSeries(object array[])
    检查数组是否是有组织序列的数组(是否从最后到最开始排序过的),如果不是返回否

::输入参数
array[] -需要检查的数组

示例:

if(ArrayGetAsSeries(array1)==true)
Print("array1 is indexed as a series array");
else
Print("array1 is indexed normally (from left to right)");


  • int ArrayInitialize( double &array[], double value)
    对数组进行初始化,返回经过初始化的数组项的个数

[输入参数]
array[] -需要初始化的数组
value -新的数组项的值

示例:

//----把所有数组项的值设置为2.1
double myarray[10];
ArrayInitialize(myarray,2.1);


  • bool ArrayIsSeries( object array[])
    检查数组是否连续的(time,open,close,high,low, or volume).

[输入参数]
array[] -需要检查的数组

示例:

if(ArrayIsSeries(array1)==false)
ArrayInitialize(array1,0);
else
{
Print("Series array cannot be initialized!");
return(-1);
}


  • int ArrayMaximum( double array[], int count=WHOLE_ARRAY, int start=0)
    找出数组中最大值的定位

[输入参数]

array[] -需要检查的数组
count -搜索数组中项目的个数
start -搜索的开始点

示例:

double num_array[15]={4,1,6,3,9,4,1,6,3,9,4,1,6,3,9};
int maxValueIdx=ArrayMaximum(num_array);
Print("Max value = ", num_array[maxValueIdx]);


  • int ArrayMinimum( double array[], int count=WHOLE_ARRAY, int start=0)
    找出数组中最小值的定位

[输入参数]
array[] -需要检查的数组
count -搜索数组中项目的个数
start -搜索的开始点

示例:

double num_array[15]={4,1,6,3,9,4,1,6,3,9,4,1,6,3,9};
double minValueidx=ArrayMinimum(num_array);
Print("Min value = ", num_array[minValueIdx]);


  • int ArrayRange( object array[], int range_index)
    取数组中指定维数中项目的数量。

[输入参数]
array[] -需要检查的数组
range_index -指定的维数

示例:

int dim_size;
double num_array[10,10,10];
dim_size=ArrayRange(num_array, 1);


  • int ArrayResize( object & array[], int new_size)
    重定义数组大小

[输入参数]
array[] -需要检查的数组
new_size -第一维中数组的新大小

示例:

double array1[][4];
int element_count=ArrayResize(array, 20);
//数组中总项目数为80


  • bool ArraySetAsSeries( double & array[], bool set)
    设置指数数组为系列数组,数组0位的值是最后的值。返回之前的数组状态

[输入参数]
array[] -需要处理的数组
set -是否是设置为系列数组,true或者false

示例:

double macd_buffer[300];
double signal_buffer[300];
int i,limit=ArraySize(macd_buffer);
ArraySetAsSeries(macd_buffer,true);
for(i=0; i
macd_buffer[i]=iMA(NULL,0,12,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,26,0,MODE_EMA,PRICE_CLOSE,i);
for(i=0; i
signal_buffer[i]=iMAOnArray(macd_buffer,limit,9,0,MODE_SMA,i);


  • int ArraySize(object array[])
    返回数组的项目数

[输入参数]
array[] -需要处理的数组

示例:

int count=ArraySize(array1);
for(int i=0; i
{
// do some calculations.
}


  • int ArraySort( double &array[], int count=WHOLE_ARRAY, int start=0, int sort_dir=MODE_ASCEND)
    对数组进行排序,系列数组不可进行排序

[输入参数]
array[] -需要处理的数组
count -对多少个数组项进行排序
start -排序的开始点
sort_dir -排序方式,MODE_ASCEND顺序排列MODE_DESCEND倒序排列

示例:

double num_array[5]={4,1,6,3,9};
// now array contains values 4,1,6,3,9
ArraySort(num_array);
// now array is sorted 1,3,4,6,9
ArraySort(num_array,MODE_DESCEND);

// now array is sorted 9,6,4,3,1



本博客所有文章如无特别注明均为原创。作者:天泓评测
分享到:更多

相关推荐

发表评论

路人甲 表情
Ctrl+Enter快速提交

网友评论(0)