Новая версия платформы MetaTrader 5 build 3490: мобильная версия веб-терминала и новые методы матриц в MQL5 - страница 12

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Сломались текстовые метки!!!! OBJ_TEXT
При сдвиге графика, метка привязанная к цене и времени, не смещается!!!!
Кстати, в вебтерминале изменение масштаба нажатием на "+" или "-" имеет больше градаций, чем в приложении МТ5. А нельзя ли так же сделать и в приложении?
Спасибо.
Сломались текстовые метки!!!! OBJ_TEXT
При сдвиге графика, метка привязанная к цене и времени, не смещается!!!!
Уже исправили, будет в сегодняшем релизе.
Обмен кусками памяти.
Так нельзя сделать :))
Так нельзя сделать :))
Бессмысленное сообщение.
Просьба подумать о возможности добавления штатной сортировки структур по числовым полям, подобно этому.
Только при этом игнорировать возможные операторы присваивания. Т.е. делать сортировку на уровне памяти, как это сделано с ArraySwap для массивов.
Строка для поиска: Uluchshenie 050.Если произовдительность - главный критерий, то, как вариант, можно не использовать стандартную функцию ArraySort(), а написать свою.
Используя эту функцию как шаблон, можно создавать специализированные функции, в которых уже можно сортировать по втутренним параметрам объекта.
Сейчас набросал функцию сортировки по первому попавшемуся методу слияния, и неожиданно для себя эта функция работает быстрее штатной ArraySort() на процентов 15-20%
Прикрепляю два примера
Первый пример (MySort.mq5) использует функцию сортировки void MergeSort(T &arr[]) и сравнивает по производительности с методом ArraySort(). Массив из 1000000 элементов формируется из цены Ask последних 1000000 тиков.
Второй пример (МуSortMqlTick.mq5) уже использует функцию void MergeSortMqlTickByAsk(MqlTick &arr[]) и сортирует массив MqlTick по цене Ask:
ЗЫ Функция получилась раздутой, т.к. не нашел способа создать несколько переменных, которые ссылаются на один массив в памяти. Может кто подскажет? Возможно туплю. Загонять массив в объект структуры или класса не хочется. Неужели нет вариантов? Тогда ужас!Если честно, то я не понимаю зачем при сортировке массива сложных объектов, необходимо их свопить.
Мне кажется более разумнее с точки зрения производительности сам массив объектов не трогать, а формировать массив индексов, который представляет собой последовательность индексов к элементам массива объектов, упорядоченных по заданному критерию.
Мне кажется более разумнее с точки зрения производительности сам массив объектов не трогать, а формировать массив индексов, который представляет собой последовательность индексов к элементам массива объектов, упорядоченных по заданному критерию.
Есть подобная функция MathOrder(), правда только для целых и вещественных массивов. Было бы неплохо иметь более полный аналог функции order() из языка R, который может принимать в аргументах произвольное количество массивов. Ну и конечно, чтобы можно было подавать массивы структур.
Сортировка согласно подсказке Алексея:
Это изменение кода Николая MySortMqlTick.mq5, убрал лишнее, мой код между ///////////
Результаты в сравнении:
Это основной принцип сортировки структур, который уменьшает количество перемещений данных в памяти, это основная оптимизация
Так как тема о вчерашнем обновлении терминала самоликвидировалась пока я писал сообщение, то спрошу тут.
Итак, в последнем обновлении появилась возможность выбирать устройства для работы с OpenCL в терминале, в частности разрешать их продавать в клауд и использовать для оптимизации на локальных компьютерах и в своей сети, в связи с этим вопросы:
1. Как программе на MQL5 принудительно указать, какое устройство использовать для вычислений?
2. Как привязать устройство к конкретному агенты? Ведь очевидно, что при оптимизации только один агент будет рационально использовать устройство, в противном случае будет большая очередь.
3. Как в клауде рассчитывается стоимость устройства - на скринах видел там на порядок другой оценочный коэффициент?
4. Как в клауде выбрать агентов с нужным мне устройством - ведь у карт разная архитектура, и возможно, что мне достаточно старого и дешёвого поколения для вычислений, так как в моих задачах прирост будет минимален.
И тут же спрошу, если при отправке кода на исполнение в OpenCL через стандартный класс указать число задач в локальной группе более 10 то вычисления не происходят - возвращается массив с нулями, при этом этот показатель влияет на точность расчетов, что как то не логично.
Какое там значение ставиться по умолчанию, зависит ли оно как то от архитектуры самой карты?
Если произовдительность - главный критерий, то, как вариант, можно не использовать стандартную функцию ArraySort(), а написать свою.
Radix уверенно опережает.