如何在MQL4中编写多维动态数组?我是编写MQL4的新手。目前正在编写我的第一个EA并且刚刚学习了Arrays。我想知道,如何编写动态数组代码?
我尝试做的是当我的EA初始化时,过去100个柱,找出最高的50个柱并保存并相应地命名,然后从50个柱中找出前10个以最高交易量并保存并再次命名。我正在考虑使用动态数组来保存条形图,但我不知道该怎么做。
答案 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