Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Чтобы что-то тестировать, нужно быть в парадигме происходящего ))
Я понял, что мне легче свою версию набросать, т.к. мне не близок текущий подход. В частности, мне кажется, что класс CIndMSTF какой-то супер класс. Потом на его базе создаётся куча индикаторных классов. Жуть - файл IndMSTF.mqh на 4 тыс. строк кода )) Я пошёл по пути использования в качестве индикаторной коллекции экземпляр класса CIndicators. Очень удобно. Не нужно изобретать велосипед...
Потом зачем в классе CIndMSTF хранить данные по буферам (SBuffer m_buffers[])? Один раз обсчитали их в OnCalculate() и хватит. Т.е. приняли как параметр по ссылке, посчитали и отдали...
Напишу ещё попозже о том, с чем не согласен, как закончу свою версию...
Да, понравилось, что есть вот этот механизм:
Из-за расширяемости - чтобы раз посчитанные данные были в отдельном от расчётной части массиве. CopyBuffer копирует в массив заданное количество баров, и меняет размер принимающего массива под скопированное количество данных. Т.е., если нужны постоянно данные, то постоянно нужно их копировать из буфера расчётной части.
Здесь сделано так, чтобы был постоянно заполненный массив всеми данными, и данные получались из него по индексу. Без копирования. Копирование происходит раз при запуске, а потом только добавление данных по два бара в конец списка. По-моему, в СБ в упомянутом Вами классе такая же логика. Могу и запамятовать - и ошибиться в этом.
Из-за расширяемости - чтобы раз посчитанные данные были в отдельном от расчётной части массиве. CopyBuffer копирует в массив заданное количество баров, и меняет размер принимающего массива под скопированное количество данных. Т.е., если нужны постоянно данные, то постоянно нужно их копировать из буфера расчётной части.
Здесь сделано так, чтобы был постоянно заполненный массив всеми данными, и данные получались из него по индексу. Без копирования. Копирование происходит раз при запуске, а потом только добавление данных по два бара в конец списка. По-моему, в СБ в упомянутом Вами классе такая же логика. Могу и запамятовать - и ошибиться в этом.
Да, там есть заполнение массивов. Но есть и попытка прямого доступа - апи-метод CIndicator::GetData(), вызывающий нативную функцию CopyBuffer() в лоб.
Самая первая ошибка в журнале редактора какая?