Неужели нужно на другую среду программирования переносить, или это общая не задача для всех типов языков? Какие могут быть методы решения по ускорению?
если тупо один цикл и в нем увеличивать значение переменной из удаленного цикла ускорится?
Мог бы проверить, но не хочу комп мучить, если не ускорится, опять на жесткий лишнее напряжение)))
А записать массив после цикла - никак? Только на каждой строке можно? Это я к первому варианту, где цикл в цикле.
Vitalie Postolache: А записать массив после цикла - никак? Только на каждой строке можно? Это я к первому варианту, где цикл в цикле.
Массив такого размера не влезет в выделенную оперативную память.
Конечно можно дополнительно всунуть счётчик и производить запись по этому счётчику, а не каждую строку отдельно, но это вряд-ли ускорит процесс на столько что будет заметно без замеров.
Alexey Viktorov: Массив такого размера не влезет в выделенную оперативную память.
Конечно можно дополнительно всунуть счётчик и производить запись по этому счётчику, а не каждую строку отдельно, но это вряд-ли ускорит процесс на столько что будет заметно без замеров.
Подскажите, документация гласит, да и компилятор тоже), что: "Флаг AS_SERIES не может быть установлен у многомерных массивов"
void BySort(double &mas[][3]) { // Сортируем по размеру лота от большего к меньшему ArraySort(mas); ArraySetAsSeries(mas,true); // при такой записи mql5 ругается, в mql4 работает
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);
Как теперь его перевернуть? Нужно по порядку убывания, это сортировка лотов.
Как теперь его перевернуть? Нужно по порядку убывания, это сортировка лотов.
Ух-ты. Я первый раз смотрю сортировку в mql5. Отвечал ориентируясь на mql4 по памяти. Раз такое дело, можно перевернуть цикл чтения. Если нужен поиск конкретного значения, то он возвращает индекс массива, хоть как его сортируй.
Ну и самый тупой вариант в цикле переписать весь массив в обратном порядке. А оно того стоит???
Неужели нужно на другую среду программирования переносить, или это общая не задача для всех типов языков? Какие могут быть методы решения по ускорению?
если тупо один цикл и в нем увеличивать значение переменной из удаленного цикла ускорится?
Мог бы проверить, но не хочу комп мучить, если не ускорится, опять на жесткий лишнее напряжение)))
А записать массив после цикла - никак? Только на каждой строке можно? Это я к первому варианту, где цикл в цикле.
Конечно можно дополнительно всунуть счётчик и производить запись по этому счётчику, а не каждую строку отдельно, но это вряд-ли ускорит процесс на столько что будет заметно без замеров.
Массив такого размера не влезет в выделенную оперативную память.
Конечно можно дополнительно всунуть счётчик и производить запись по этому счётчику, а не каждую строку отдельно, но это вряд-ли ускорит процесс на столько что будет заметно без замеров.
Подскажите, документация гласит, да и компилятор тоже), что: "Флаг 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 работает
... здесь работа с массивом и основной код
}Подскажите, документация гласит, да и компилятор тоже), что: "Флаг AS_SERIES не может быть установлен у многомерных массивов"
Вопрос: каким образом отсортировать массив:
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); // а при такой записи ругается // это тоже лишнее
}
1 - меняет направление индексации ячеек массива не меняя их содержимое, а 2 - не меняя индексацию меняет содержимое ячеек так, что они отсортированы по возрастания или по убыванию.
Дополнительно в документации сказано что сортировать массив можно только по первому измерению.
AS_SERIES и сортировка совершенно разные понятия.
1 - меняет направление индексации ячеек массива не меняя их содержимое, а 2 - не меняя индексацию меняет содержимое ячеек так, что они отсортированы по возрастания или по убыванию.
Дополнительно в документации сказано что сортировать массив можно только по первому измерению.
Вот тут сортирует по порядку возрастания
Как теперь его перевернуть? Нужно по порядку убывания, это сортировка лотов.
Вот тут сортирует по порядку возрастания
Как теперь его перевернуть? Нужно по порядку убывания, это сортировка лотов.
Ну и самый тупой вариант в цикле переписать весь массив в обратном порядке. А оно того стоит???
Вот тут сортирует по порядку возрастания
Как теперь его перевернуть? Нужно по порядку убывания, это сортировка лотов.
А если после сортировки поменять порядок индексации с помощью ArraySetAsSeries?
Тогда получается вот так:
А если после сортировки поменять порядок индексации с помощью ArraySetAsSeries?
ArraySetAsSeries не применяется к многомерным массивам.
Да, не применяется. А кто знает что применяется, ответьте пожалуйста.