功能 - 对一个结构数组进行排序的方法。奖金10元 - 页 4

 
Sergey Dzyublik:

有什么问题呢?

除了函数本身,你还必须对它做一个类型化的定义,并创建一个变量,只是为了把函数作为一个参数传递,这就是你在lambda宏下做的事情。

 
fxsaber:

检查过了,它在工作。

不幸的是,没有()。


 
Vladimir Pastushak:

遗憾的是没有()。

你没有在MT4中工作的排序。
因此,在条件编译中插入对MT4的建议排序的调用,而对MT5的代码则不做任何改动。

 
Vladimir Pastushak:

遗憾的是没有()。


更新你的MT4。

 

在MT4中检查了代码,一切正常

2020.04.21 23:27:35.728 Script t EURUSD,H1: 删除

2020.04.21 23:27:35.726 t EURUSD,H1: uninit reason 0

2020.04.21 23:27:35.726 t EURUSD,H1: 1.08685 1.087231.085271.08542020.04.21 18:00:001.08518 1.087021.084561.086842020.04.21 19:00:001。0843 1.085271.084291.085172020.04.21 20:00:001.08503 1.085061.08411.084292020.04.21 21:00:001.08535 1.08551.084971.085022020.04.21 22:00:00

2020.04.21 23:27:35.726 t EURUSD,H1。

按时间排序。

2020.04.21 23:27:35.726 t EURUSD,H1: 1.08503 1.085061.08411.084292020.04.21 21 21:00:001.0843 1.085271.084291.0851720.04.21 20:00:001。08535 1.08551.084971.085022020.04.21 22:00:001.08518 1.087021.084561.086842020.04.21 19:00:001.08685 1.087231.085271.08542020.04.21 18:00:00

2020.04.21 23:27:35.726 t EURUSD,H1。

按高价值进行分类。

2020.04.21 23:27:35.726 t EURUSD,H1: 1.08503 1.085061.08411.084292020.04.21 21:00:001.08535 1.08551.084971.085022020.04.21 22:00:001.0843 1.085271.084291.085172020.04.21 20:00:001.08685 1.087231.085271.08542020.04.21 18:00:001.08518 1.087021.084561.086842020.04.21 19:00:00

2020.04.21 23:27:35.726 t EURUSD,H1。

按公开价格排序。

2020.04.21 23:27:35.726 t EURUSD,H1: 1.08685 1.087231.085271.08542020.04.21 18:00:001.08518 1.087021.084561.086842020.04.21 19:00:001。0843 1.085271.084291.085172020.04.21 20:00:001.08503 1.085061.08411.084292020.04.21 21:00:001.08535 1.08551.084971.085022020.04.21 22:00:00

2020.04.21 23:27:35.726 t EURUSD,H1。

没有分类的条状物--按收到的情况。

2020.04.21 23:27:35.726 t EURUSD,H1:初始化

2020.04.21 23:27:34.279 脚本t EURUSD,H1:加载成功

MT4 build 1262

像这样解压。

string MqlRatesToStr(MqlRates &arr[])
{
   string result = "";
   for(int i = 0; i < ArraySize(arr); ++i)
   {
      result += (string)(arr[i].close) + " " + (string)(arr[i].high) +(string)(arr[i].low) +(string)(arr[i].open) +(string)(arr[i].time);
   }
   return result;
}
 
Vladimir Pastushak:

提供的代码 中,我忘了将主函数ArraySortStruct包回宏中,这样就可以指定排序字段。
但这个话题的作者却固执地保持沉默,显然我是唯一需要它的人......

 

算法。

1.结构=字符串。第一环。

2. 字符串的数组进行排序。第二环路(复杂,有气泡)。

3.字符串=结构。第三个循环。

几乎没有任何速度。

原因是什么?

1.结构在系统中被表示为字符串,只有对齐方式必须被考虑在内(逐个字节)。

2.字符串的处理速度远远高于其他数据类型的处理速度。

3.在一个循环中只进行一次两行比较的操作。字段值不需要进行比较。

在90年代初,我曾经在Clarion上做过这件事。它起作用了。

Документация по MQL5: Операции с массивами / ArraySort
Документация по MQL5: Операции с массивами / ArraySort
  • www.mql5.com
//| Получение значений границ для тиковых объемов                    | //| Custom indicator initialization function                         | //| Custom indicator iteration function                              | //
 
Sergey Dzyublik:

提供的代码 中,我忘了将主函数ArraySortStruct包回宏中,这样就可以指定排序字段。
但这个话题的作者却固执地保持沉默,显然我是唯一需要它的人......

我还没看呢。我不明白宏的含义。如果能提供完整的代码,我将不胜感激。
 
Алексей Тарабанов:

我在90年代初在Clarion上做过这个工作。它飞起来了。

泪流满面!)))

我记得第一学期的第一门课程和第一门实践课的算法和编程....。我甚至不记得我们学了什么,我想我们一开始学的是pascal,但课程是在IBM的终端课堂上进行的,我在15-20行的时候编译程序......好吧,最初是2-3分钟,然后到20分钟,当人们做了大量的输入和语法错误的时候

从第二学期开始,我们在486s上工作。


它在飞!))))


SZS: 如果我没记错的话,是EC-1035 ....,它飞过了!

 
Igor Makanu:

泪流满面!)))

我记得一年级的第一个学期,以及关于算法和编程的第一次实践课....。我甚至不记得我们学的是什么,我想一开始是Pascal,但课程是在终端班的IBM电脑上进行的,编译15-20行的程序......嗯,一开始我们学习了2-3分钟,后来到了20分钟,当时人们做了很多打字和语法错误的工作。

从第二学期开始,我们在486s上工作。


它飞起来了!))))


SZY:如果我没记错的话,它飞的是EC-1035 ....!

我在1976年开始使用世界上第一台个人电子数字计算机。它是由乌克兰苏维埃社会主义共和国科学院基辅网络学研究所设计的。然后是明斯克-32协议,然后是欧共体。