Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 731

 
Top2n:

Неужели нужно на другую среду программирования переносить, или это общая не задача для всех типов языков? Какие могут быть методы решения по ускорению?

если тупо один цикл и в нем увеличивать значение переменной из удаленного цикла ускорится?

Мог бы проверить, но не хочу комп мучить, если не ускорится, опять на жесткий лишнее напряжение)))

А записать массив после цикла - никак? Только на каждой строке можно? Это я к первому варианту, где цикл в цикле.
 
Vitalie Postolache:
А записать массив после цикла - никак? Только на каждой строке можно? Это я к первому варианту, где цикл в цикле.
Массив такого размера не влезет в выделенную оперативную память.

Конечно можно дополнительно всунуть счётчик и производить запись по этому счётчику, а не каждую строку отдельно, но это вряд-ли ускорит процесс на столько что будет заметно без замеров.
 
Alexey Viktorov:
Массив такого размера не влезет в выделенную оперативную память.

Конечно можно дополнительно всунуть счётчик и производить запись по этому счётчику, а не каждую строку отдельно, но это вряд-ли ускорит процесс на столько что будет заметно без замеров.

Подскажите, документация гласит, да и компилятор тоже), что: "Флаг AS_SERIES не может быть установлен у многомерных массивов"

Вопрос: каким образом  отсортировать массив в mql5

void Func()
{
double m[][3];

if(условия)
  {
   // много кода
         c++;
         ArrayResize(m, c);
         m[c-1][0]= Lots();
         m[c-1][1]= Ticket();
         m[c-1][2]= Profit();
  }
 BySort(m); // передаём в функцию "BySort"
}

void BySort(double &mas[][3])
{
// Сортируем по размеру лота от большего к меньшему
  ArraySort(mas);
  ArraySetAsSeries(mas,true); // при такой записи mql5 ругается, в mql4 работает

 ... здесь работа с массивом и основной код 

}
 
Vitaly Muzichenko:

Подскажите, документация гласит, да и компилятор тоже), что: "Флаг AS_SERIES не может быть установлен у многомерных массивов"

Вопрос: каким образом  отсортировать массив:

double m[][3];

if(условия)
 {
// много кода
         c++;
         ArrayResize(m, c);
         m[c-1][0]= Lots();
         m[c-1][1]= Ticket();
         m[c-1][2]= Profit();
 }

void BySort(double &mas[][3])// выделенное лишнее
 {
// Сортируем по размеру от большего к меньшему
  ArraySort(mas, WHOLE_ARRAY, 0, MODE_DESCEND); // вот это не работает в mql5

  ArraySort(mas);
  ArraySetAsSeries(mas,true);
// а при такой записи ругается // это тоже лишнее
 }
AS_SERIES и сортировка совершенно разные понятия.

1 - меняет направление индексации ячеек массива не меняя их содержимое, а 2 - не меняя индексацию меняет содержимое ячеек так, что они отсортированы по возрастания или по убыванию.

Дополнительно в документации сказано что сортировать массив можно только по первому измерению.
 
Alexey Viktorov:
AS_SERIES и сортировка совершенно разные понятия.

1 - меняет направление индексации ячеек массива не меняя их содержимое, а 2 - не меняя индексацию меняет содержимое ячеек так, что они отсортированы по возрастания или по убыванию.

Дополнительно в документации сказано что сортировать массив можно только по первому измерению.

Вот тут сортирует по порядку возрастания

ArraySort(mas);

Как теперь его перевернуть? Нужно по порядку убывания, это сортировка лотов.

 
Vitaly Muzichenko:

Вот тут сортирует по порядку возрастания

ArraySort(mas);

Как теперь его перевернуть? Нужно по порядку убывания, это сортировка лотов.

Ух-ты. Я первый раз смотрю сортировку в mql5. Отвечал ориентируясь на mql4 по памяти. Раз такое дело, можно перевернуть цикл чтения. Если нужен поиск конкретного значения, то он возвращает индекс массива, хоть как его сортируй.

Ну и самый тупой вариант в цикле переписать весь массив в обратном порядке. А оно того стоит???
 
Vitaly Muzichenko:

Вот тут сортирует по порядку возрастания

ArraySort(mas);

Как теперь его перевернуть? Нужно по порядку убывания, это сортировка лотов.

А если после сортировки поменять порядок индексации с помощью ArraySetAsSeries?
 
Vitalie Postolache:
А если после сортировки поменять порядок индексации с помощью ArraySetAsSeries?

Тогда получается вот так:

 

 

 
Vitalie Postolache:
А если после сортировки поменять порядок индексации с помощью ArraySetAsSeries?
ArraySetAsSeries не применяется к многомерным массивам.
 
Alexey Viktorov:
ArraySetAsSeries не применяется к многомерным массивам.

Да, не применяется. А кто знает что применяется, ответьте пожалуйста.