Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1425
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
формат комментария может различаться у разных брокеров.
Не встречал отсутствия "To" и "From"
Всем дорого времени суток!
Подскажите пожалуйста в MQL4(или в MQL5, но работающая на MQL4) есть функция которая преобразует массив LoY[2][7] в массив LoY[7][2] и наоборот. Что то типа транспонирования. Внизу образец нужного мне преобразования. Хотелось бы поиметь именно функцию. Как преобразовать массив в цикле я уже знаю.
Спасибо за помощь.
Всем дорого времени суток!
Подскажите пожалуйста в MQL4(или в MQL5, но работающая на MQL4) есть функция которая преобразует массив LoY[2][7] в массив LoY[7][2] и наоборот. Что то типа транспонирования. Внизу образец нужного мне преобразования.
Спасибо за помощь.
просто для справки : в классике алгоритмов (вообще ИТ) такая операция называется zip,
такой функции в библиотеке объяснимо нет. Она жутко прожорлива и неэффективна. Проще и быстрее менять индексы в алгоритме/программе или использовать косвенные обращения, чем переставлять ВСЕ данные в массивах.
Проще и быстрее менять индексы в алгоритме/программе или использовать косвенные обращения, чем переставлять ВСЕ данные в массивах.
Спасибо большое за ответ. К сожалению, я не настолько продвинут в программировании как Вы. Буду Вам очень признателен если напишете код на mql4 при помощи которого меняются индексы массивов для решения моей задачи . А если дадите пример косвенного обращения - буду признателен вдвойне.
Тогда я более точно пойму ход Вашей мысли и благодаря Вам , научусь чему то новому и полезному для себя.
Спасибо большое за ответ. К сожалению, я не настолько продвинут в программировании как Вы. Буду Вам очень признателен если напишете код на mql4 при помощи которого меняются индексы массивов для решения моей задачи . А если дадите пример косвенного обращения - буду признателен вдвойне.
Тогда я более точно пойму ход Вашей мысли и благодаря Вам , научусь чему то новому и полезному для себя.
void Convert_7x2_2x7 (const double &src[7][2],double &dst[2][7]) {
for(int i=0;i<7;i++)
for(int j=0;j<2;j++) {
dst[j][i]=src[i][j];
}
}
коротко, но это худшее что можно сделать :-) два вложенных цикла и поэлементное копирование массивов.
когда вы внутри своего алгоритма можете просто переименовать индексы. Просто поменять в коде i на j и наоборот..
void Convert_7x2_2x7 (const double &src[7][2],double &dst[2][7]) {
for(int i=0;i<7;i++)
for(int j=0;j<2;j++) {
dst[j][i]=src[i][j];
}
}
коротко, но это худшее что можно сделать :-)
Спасибо большое. А пример лучшего??? :-).... что бы у меня было полное понимание.
Поэлементное копирования - это долго и энергозатратно...особенно для больших массивов......если я не ошибаюсь.
Андрей, зачем Вам это? Если данные уже собраны в массиве, можно найти способ просто их использовать как есть, ничего не двигая. Или заранее собирать в массив в нужном порядке. Что Вы хотите получить?
Вот мой простой код для иллюстрации того что мне нужно.
В блоке 1 выполняется ArrayFill(LoY,0,10,0.5555) и присваивает первым 10 элементам массива значение 0.5555. После этого мне нужно отсортировать всю нулевую строку от столбца 0 до столбца 31.
Отсортировать я хочу в блоке 2 при помощи ArraySort(LoY,WHOLE_ARRAY,0,MODE_ASCEND); Но не могу отсортировать, потому что эта функция сортирует двумерный массив по первому измерению, то есть по строкам. А у меня строка которую нужно сортировать только 1. ArraySort() по второму измерению, то есть по столбцам не сортирует двумерные массивы(только одномерные).
Вот я и подумал о том что может быть стоит преобразовать LoY[2][31] после исполнения первого блока в LoY[31][2] что бы в блоке 2 ArraySort() могла отсортировать нужные мне значения. А мне нужно отсортировать все значения из нулевой строки после того как ArrayFil() изменила первые 10 из них.
Может быть сортировать двумерные массивы по второму измерению , то есть по столбцам, можно при помощи какой то другой функции , или как то еще?
Извините... не знаю как удалить код. Поэтому просто скажу что в нем ошибка в строке 180 вместо LoY[S2][0]=Bid; нужно LoY[0][52]=Bid;
Спасибо за помощь