如何编写多维动态数组



如何在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()不是有用的,如果你需要排序使用一些,不是第一个维度,我担心。

所有文档都在这里

相关内容

  • 没有找到相关文章

最新更新