Для работы с графикой в MQL5 создана специальная библиотека Graphic.mqh. В статье описан пример ее практического применения и поясняется сама суть сортировок. По каждой сортировке существует как минимум отдельная статья, а по ряду из них уже опубликованы целые исследования, поэтому здесь описывается лишь общая идея.
//--- переменные для идентификаторов графиковlong currChart,prevChart=ChartFirst();
int i=0,limit=100;
Print("ChartFirst = ",ChartSymbol(prevChart)," ID = ",prevChart);
while(i<limit)// у нас наверняка не больше 100 открытых графиков
{
currChart=ChartNext(prevChart); // на основании предыдущего получим новый графикif(currChart<0) break; // достигли конца списка графиковPrint(i,ChartSymbol(currChart)," ID =",currChart);
prevChart=currChart;// запомним идентификатор текущего графика для ChartNext()
i++;// не забудем увеличить счетчик
}
一个关于mql4的问题,更具体的是关于ArraySort()函数的问题
这是我的代码
当LoY[0][0]在开单后得到Bid( 1.6134)的值时,ArraySort(LoY,WHOLE_ARRAY,0,MODE_ASCEND)函数已经将数组按第一维升序排序,并将数值最大的数组元素 移到数组的顶部。所以,LoY[0][0] 和它的值一起成为阵列中按升序排序的LoY[30][0]。这是符合逻辑的,因此我同意它。
在我看来,什么是不符合逻辑或不被我接受的?为什么ArraySort()LoY[15][0]将0放在索引下面,尽管它的值(1.61040)等于除第30个以外所有其他数组项的值。同样不清楚的是,为什么ArraySort()LoY[30][0]的索引是15,尽管它的值(1.61040)等于数组中除第30个元素外的所有其他元素的值。
一个问题:如何使一个索引为0的元素在这个tick上成为LoY[1][0],索引为15的元素成为LoY[15][0],索引为29的元素成为LoY[30][0]
。换句话说,如何使一个函数不对具有相同值的元素进一步排序? 这是不符合逻辑的,也是毫无意义的。
谢谢你的帮助。
这可能是排序算法。有一些数组元素的排列组合。
尝试其他排序选项。
这可能是排序算法。有一些数组元素的排列组合。
尝试其他排序选项。
非常感谢您的建议。请告诉我mql4中是否有其他排序选项?如果是这样,在哪里可以找到它们的目录?
试试吧。
虽然该函数是针对一维数组的,但也可以重新设计
试试吧。
的确,这个函数是针对一维数组的,但它可以被重新加工。
非常感谢你。
请给我一个忠告。
代码寻找开放的图表 并创建一个带有符号名称的标签,但如果两个图表有相同的符号。
那么它只在一个图表上创建一个标签。我做错了什么?
请给我一个忠告。
代码寻找开放的图表 并创建一个带有符号名称的标签,但如果两个图表有相同的符号。
它只在一个图表上创建标签。我做错了什么?
同一符号的图表ID(ChartID())是不同的。使用它们。
同一符号的ChartID()标识符是不同的。使用它们。
ChartFirst()+i
即翻阅所有开放的图表
还是我误解了你的意思?有没有办法以代码的形式把它说清楚呢?
非常奇怪,在所有新开的图表 上都放了一个标记,只有一个图表被忽略了(
仔细阅读文档和示例代码。你的循环没有正确组织起来。
不要告诉我for和while循环的工作方式是一样的。这不是问题,问题是突出的线条。