Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Браво! После исправления пары ошибок Вы меня сбросили с пьедестала даже без применения ArrayCopy. Шах и Мат. :))
for(;;)
на
Все равно выход через break
P.S. Ради интереса прогнал прямое копирование по всему массиву.Стоит наверно поменять
на
Все равно выход через break
Работает медленнее чем:
Если брать участие в этом состязании без правил, то копируем код "лидера" (на данный момент это Kuznetsov) и изменяем его в соответствии с вышеописанным поведением системы.
Получаем стабильный выигрыш порядка 20 мс от изначальных 740 мс времени выполнения:
Кстати любопытно как изменятся результаты, если исходный массив будет как серия. ArraySetAsSeries(arr,true)
Если брать участие в этом состязании без правил, то копируем код "лидера" (на данный момент это Kuznetsov) и изменяем его в соответствии с вышеописанным поведением системы.
Получаем стабильный выигрыш порядка 20 мс от изначальных 740 мс времени выполнения:
Стоит добавить. Если не важна последовательность элементов массива. То да, вариант отличный. Если важно сохранить последовательность, то нужно что-то другое.
Раз пошла такая пьянка, вот мой вариант:
results:
З.ы. В принципе предел скорости достигнут. Дальше только микрооптимизации и шаманство с циклом for:
Думаю результат Николая это умелое использовал таких микрооптимизаций.
Есть массив содержащий набор данных по типу 1,2,3,6,9,5,6,3,25,6,8,7,4 нужно удалить например значения 3 и на выходе получить тот же массив без 3 и пустых мест...
Я ищу самый быстрый способ очистки массива от ненужных значений...
На ум приходит такой пример
Может есть способы экономнее и быстрее ?
Владимир, а зачем такое нужно?
Как я понимаю, такое необходимо проделывать с индикаторным буфером. Но тогда разве не логичнее пустые и (или) "лишние" значения заменять предыдущим значением или, к примеру, средним арифметическим крайних значений? Тогда это будет выполняться гораздо быстрее и размерность массива останется та же.
Владимир, а зачем такое нужно?
Как я понимаю, такое необходимо проделывать с индикаторным буфером. Но тогда разве не логичнее пустые и (или) "лишние" значения заменять предыдущим значением или, к примеру, средним арифметическим крайних значений? Тогда это будет выполняться гораздо быстрее и размерность массива останется та же.
Владимир, а зачем такое нужно?
Как я понимаю, такое необходимо проделывать с индикаторным буфером. Но тогда разве не логичнее пустые и (или) "лишние" значения заменять предыдущим значением или, к примеру, средним арифметическим крайних значений? Тогда это будет выполняться гораздо быстрее и размерность массива останется та же.
Когда предусмотрена работа нескольких советников с большим количеством открытых позиций\ордеров в mql4 на мой взгляд проще держать массив с тикетами и контролировать закрылся-ли ордер перебирая этот массив, вместо перебора всех открытых с проверкой символа и магика. Так вот если ордер закрылся, то его надо из массива "вычеркнуть". В таких случаях я пользовался копированием массива "сам в себя" и сокращением размерности на единицу. Что и предложил Vasiliy Sokolov, за что большое спасибо, буду знать что это не самый тяжёлый вариант, так как я никогда не задумывался о скорости. Почему задача была поставлена удалить несколько равных элементов вопрос ещё тот...
ps пока я писал, ответ уже есть. Выходит что и вопрос уже не тот...))))))Когда предусмотрена работа нескольких советников с большим количеством открытых позиций\ордеров в mql4 на мой взгляд проще держать массив с тикетами и контролировать закрылся-ли ордер перебирая этот массив, вместо перебора всех открытых с проверкой символа и магика. Так вот если ордер закрылся, то его надо из массива "вычеркнуть". В таких случаях я пользовался копированием массива "сам в себя" и сокращением размерности на единицу. Что и предложил Vasiliy Sokolov, за что большое спасибо, буду знать что это не самый тяжёлый вариант, так как я никогда не задумывался о скорости. Почему задача была поставлена удалить несколько равных элементов вопрос ещё тот...
ps пока я писал, ответ уже есть. Выходит что и вопрос уже не тот...))))))тогда примерно понял.
если массив ордеров, то последовательность не важна, поэтому целесообразней использовать вариант Кузнецова с заполнением "дырок" значениями из верхней части массива, чтобы не двигать остальные элементы массива. Так конечно же быстрее.