Функция - Метод сортировки массива структур. Приз 10$ - страница 4

 
Sergey Dzyublik:

А в чем проблема???

в том что кроме собственно функции надо обязательно делать на нее typedef и создавать переменную, просто чтобы передать функцию как параметр. что собственно и делается у вас под макросом лямбды.

 
fxsaber:

Проверил, работает.

К сожалению нет (((


 
Vladimir Pastushak:

К сожалению нет (((

У вас не работает сортировка в МТ4.
Вот туда и вставляйте в условную компиляцию вызов предложенной сортировки для МТ4, а код для МТ5 не трогайте.

 
Vladimir Pastushak:

К сожалению нет (((


Обновите MT4.

 

проверил код в МТ4, все работает

2020.04.21 23:27:35.728 Script t EURUSD,H1: removed

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:00:001.0843 1.085271.084291.085172020.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: 

Сортируем по high-цене.

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: 

Сортируем по open-цене.

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: initialized

2020.04.21 23:27:34.279 Script t EURUSD,H1: loaded successfully

билд  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 делал. Летало. 

до слез! )))

вспомнил первый семестр 1-го курса и первые пары практики по алгоритмам и программированию.... даже не помню, что учили, кажется Паскаль сначала,НО занятия были на БЭВМ в терминальных классах, компиляция программы на 15-20 строк...ну сначала по 2-3 минуты, потом до 20 минут когда народ массово код допечатал и синтаксические ошибки устранил

со второго семестра уже на 486-х занимались


летало! ))))


ЗЫ: если не ошибаюсь то это были ЕС-1035 ....летало! 

 
Igor Makanu:

до слез! )))

вспомнил первый семестр 1-го курса и первые пары практики по алгоритмам и программированию.... даже не помню, что учили, кажется Паскаль сначала,НО занятия были на БЭВМ в терминальных классах, компиляция программы на 15-20 строк...ну сначала по 2-3 минуты, потом до 20 минут когда народ массово код допечатал и синтаксические ошибки устранил

со второго семестра уже на 486-х занимались


летало! ))))


ЗЫ: если не ошибаюсь то это были ЕС-1035 ....летало! 

Я начинал на первой в мире персональной электронной цифровой вычислительной машине в 1976. МИР называлась (машина для инженерных работников), разработка Киевского института кибернетики АН УССР. После был Минск-32, ну а дальше - ЕС. 

Причина обращения: