Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
если считать ваш массив кольцевым буфером, то индекс высчитывается через модуль по размеру - и ненадо ничего наместе копировать
Сдвигать массивы нельзя, на то они и массивы. Для экономного использования процессорного времени, Вы должны научится пользоваться классами, в частности списком CList, где добавление нового элемента происходит практически мгновенно. Если Вам также важен быстрый доступ по индексу, советую присмотреться в сторону CDictionary. В нем в качестве ключа можно указать сам индекс, при этом доступ к элементу будет таким же быстрым, как в массиве, а добавление нового элемента - таким же быстрым как в CList.
Спасибо!
Посмотрел CList Add - Добавляет элемент в конец списка, а мне нужно в начало (arr[0] или arr[0][0][0] для многомерного массива), со смещением всех остальных значений на 1 позицию назад.
Просто вычислять индекс. Новые элементы добавлять в конец, а чтобы обращаться к индексу 0, вычислять - количество минус 1 и минус 0.
Каждый раз (возможно на каждом тике) при считывании значения вычислять индекс, это наверное дольше, чем 1 раз сместить все на новом баре
То же самое отностся и к кольцевому индексу(
Кстати это самое быстрое решение какое может быть. На практике реализовать его не так просто, т.к. придется закопаться в индексную арифметику.
Каждый раз (возможно на каждом тике) при считывании значения вычислять индекс, это наверное дольше, чем 1 раз сместить все на новом баре
Одно арифметическое действие. Будет значительно быстрее, чем сдвигать.
оно одно, на надо делать на каждом тике. Хотя и массив надо 1 раз но много элементов сдвинуть)) Возможно получится фифти / фифти оба варианта при равном времени вычислений
оно одно, на надо делать на каждом тике. Хотя и массив надо 1 раз но много элементов сдвинуть)) Возможно получится фифти / фифти оба варианта при равном времени вычислений
Нет. Не верите, попробуйте.
Вы правы!
Но в текущем проекте, весь код уже ведет счет от 0 и далее сложением, теперь надо все переделывать на индекс вместо 0 и вычитание. Еще один минус - размеры массива будут разрастаться по полмиллиона минутных баров в год. Впрочем для ОЗУ на 8 Гг это мелочи))
Надо будет подумать о переделке...
Спасибо!
Кольцевой вариант тоже хорош, т.к. размеры массива не будут разрастаться, но в нем надо каждый раз сравнивать индекс с размером массива, и при превышении - вычитать его из индекса.
Нет. Не верите, попробуйте.
Хотя в моем случае возможно индекс вместо 0 будет сложно внедрить, т.к. тот массив вычисляется из других, которые получаются копированием CopyClose и индикаторов, а все они счет ведут от 0.
Боюсь, что количество вычислений все таки сильно возрастет. Да и понимание сути программы усложнится. А это тоже важный момент. Видимо все таки придется оставить смещение массива в цикле от 0.