MT4 MT5外汇EA编程函数
一般使用函数。
数组的最大维数为四维。
每个维数被索引编为从0 至维度-1。
事实上,第一维数组的50 个,在调用时第一个数组显示为[0], 最后一个数组显示为[49]。
使用这些函数(除那些改变定量和定性的数组外)
能够预定义时间系列
Time[], Open[], High[], Low[], Close[], Volume[]
ArrayBsearch
ArraySize
ArraySort
ArrayCopy
ArrayCopyRates
ArrayCopySeries
ArrayDimension
ArrayGetAsSeries
ArrayInitialize
ArrayIsSeries
ArrayMaximum
ArrayMinimum
ArrayRange
ArrayResize
ArraySetAsSeries
int ArrayBsearch( double array[], double value, void count, void start, void direction)
如果没有发现事件,值会返回到第一个维度的数组或者最近的一个数组。
此函数不能用在字符型或连续数字的数组上(除打开柱的连续数组)。
注解: 双元查找只能够存储数。存储数字数组使用ArraySort() 函数。
参量:
array[] - 需要搜索的数组.
value - 将要搜索的值
count - 搜索的数量,默认搜索所有的数组.
start - 搜索的开始点,默认从头开始.
direction - 搜索的方向:
MODE_ASCEND 顺序搜索,
MODE_DESCEND 倒序搜索.
示例:
datetime daytimes[];
int shift=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()<PERIOD_D1) dayshift++;
}
Print(TimeToStr(Time[shift])," corresponds to ",dayshift," day bar opened at ",
TimeToStr(daytimes[dayshift]));
ArrayCopy
int ArrayCopy( void dest[], object source[], void start_dest, void start_source, void count)
复制一个数组到另外一个数组。 只有double[], int[], datetime[], color[], 和 bool[] 这些类型的数组可以被复制。
返回复制元素总量。
参量:
dest[] - 目标数组 。
source[] - 源数组 。
start_dest - 从目标数组的第几位开始写入,默认为0 。
start_source - 从源数组的第几位开始读取,默认为0 。
count - 读取多少位的数组 。默认值为WHOLE_ARRAY常数。
示例:
double array1[][6];
double array2[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]) |
|