如何在MQL4中编写多维动态数组?我对编写MQL4相当陌生。目前正在编写我的第一个EA,刚刚学习了Arrays。我想知道,如何编码一个动态数组?
我要做的是当我的EA初始化时,对于过去的100条,找出最高的50条并保存并命名它们,然后从50条中找出交易量最高的前10条并保存并再次命名它们。我在考虑使用动态数组来保存栏,但我不知道怎么做。
没有什么特别的,只是使用常规工具:
double array[][2];
int size = 100;
void FunctionArray(){
ArrayResize( array, size );
for( int i = 0; i < size; i++ ){
array[i][0] = iHigh( _Symbol, 0, i );
array[i][1] = (double) iVolume( _Symbol, 0, i );
}
// Print( __LINE__, " ", array[0][0], " ", array[1][0], " ", array[2][0], " ", array[3][1], " ", array[size-1][0], " ", array[size-1][1] );
ArraySort( array, WHOLE_ARRAY, 0, MODE_DESCEND );
// Print( __LINE__, " ", array[0][0], " ", array[0][1] );
double new50Array[50][2];
ArrayCopy( new50Array, array, 0, 0, size ); // block-copying
// Print( __LINE__, " ", array[0][0], " ", array[0][1], " ", array[1][0], " ", array[1][1], " ", array[49][0], " ", array[49][1] );
}
和相同的卷-您需要开发自己的工具,因为 ArraySort()
仅为第一个元素运行;
或者-逐个元素复制到new50Array[][]
,但iVolume()
在第一位
和iHigh()
在第二位,
而不是'复制',然后再次调用ArraySort()
一个更动态的解决方案…
struct grouptype
{
string elements[];
};
grouptype Groups[2];
定义多维数组: double array[][2];
检查数组函数ArrayCopySeries()
, ArraySort()
。
ArrayCopyRates()
是不是有用的,如果你需要排序使用一些,不是第一个维度,我担心。
所有文档都在这里