Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 731
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
А 10000 х 10000 разве не двумерный?
и всё такое...
Ну да это двумерный же, как то не так излагаюсь, видимо не матрица, а массив. Матрица, что ли подразумевает многомерность?
Тормозит в этом коде не запись массива, а цикл в цикле.
Согласен. Не так было сказано, да плюс не так было понято.
Тормозит в этом коде не запись массива, а цикл в цикле.
Неужели нужно на другую среду программирования переносить, или это общая не задача для всех типов языков? Какие могут быть методы решения по ускорению?
если тупо один цикл и в нем увеличивать значение переменной из удаленного цикла
{
int arr++
if(arr=ARRAY_SIZE_X) {z++;arr=0;}
arra[q]=sm.d[q].m[nBar-z]; // M(I) SMA
}
//--- запишем данные массива в конец файла FileTell IsFileLineEnded
FileSeek(handle,0,SEEK_END);
FileWriteArray(handle,arra);
Мог бы проверить, но не хочу комп мучить, если не ускорится, опять на жесткий лишнее напряжение)))
Неужели нужно на другую среду программирования переносить, или это общая не задача для всех типов языков? Какие могут быть методы решения по ускорению?
если тупо один цикл и в нем увеличивать значение переменной из удаленного цикла ускорится?
Мог бы проверить, но не хочу комп мучить, если не ускорится, опять на жесткий лишнее напряжение)))
А записать массив после цикла - никак? Только на каждой строке можно? Это я к первому варианту, где цикл в цикле.
Конечно можно дополнительно всунуть счётчик и производить запись по этому счётчику, а не каждую строку отдельно, но это вряд-ли ускорит процесс на столько что будет заметно без замеров.
Массив такого размера не влезет в выделенную оперативную память.
Конечно можно дополнительно всунуть счётчик и производить запись по этому счётчику, а не каждую строку отдельно, но это вряд-ли ускорит процесс на столько что будет заметно без замеров.
Подскажите, документация гласит, да и компилятор тоже), что: "Флаг 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?
Тогда получается вот так: