如何编写多维动态数组?

时间:2016-09-24 05:28:18

标签: arrays multidimensional-array mql4

如何在MQL4中编写多维动态数组?我是编写MQL4的新手。目前正在编写我的第一个EA并且刚刚学习了Arrays。我想知道,如何编写动态数组代码?

我尝试做的是当我的EA初始化时,过去100个柱,找出最高的50个柱并保存并相应地命名,然后从50个柱中找出前10个以最高交易量并保存并再次命名。我正在考虑使用动态数组来保存条形图,但我不知道该怎么做。

2 个答案:

答案 0 :(得分:1)

没什么特别的,只需使用常规工具:

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() 仅针对第一个元素运行;或者 - 按元素复制到{{1} }但是new50Array[][]在第一个位置和iVolume()在第二个,而不是'复制',然后再次致电iHigh()

答案 1 :(得分:-1)

定义多维数组: double array[][2];

检查数组函数ArrayCopySeries()ArraySort()

ArrayCopyRates() 非常有用,如果您需要使用某些内容进行排序,而不是拳头尺寸,我担心。

所有文档均为queryselectorAll - find an element with more than one matching class