Обсуждение статьи "Готовим мультисимвольные мультипериодные индикаторы" - страница 3

 
Denis Kirichenko #:

Чтобы что-то тестировать, нужно быть в парадигме происходящего ))

Я понял, что мне легче свою версию набросать, т.к. мне не близок текущий подход. В частности, мне кажется, что класс CIndMSTF какой-то супер класс. Потом на его базе создаётся куча индикаторных классов. Жуть - файл IndMSTF.mqh на 4 тыс. строк кода )) Я пошёл по пути использования в качестве индикаторной коллекции экземпляр класса CIndicators. Очень удобно. Не нужно изобретать велосипед... 

Потом зачем в классе CIndMSTF хранить данные по буферам (SBuffer m_buffers[])? Один раз обсчитали их в OnCalculate() и хватит. Т.е. приняли как параметр по ссылке, посчитали и отдали...

Напишу ещё попозже о том, с чем не согласен, как закончу свою версию...

Да, понравилось, что есть вот этот механизм:

Из-за расширяемости - чтобы раз посчитанные данные были в отдельном от расчётной части массиве. CopyBuffer копирует в массив заданное количество баров, и меняет размер принимающего массива под скопированное количество данных. Т.е., если нужны постоянно данные, то постоянно нужно их копировать из буфера расчётной части.

Здесь сделано так, чтобы был постоянно заполненный массив всеми данными, и данные получались из него по индексу. Без копирования. Копирование происходит раз при запуске, а потом только добавление данных по два бара в конец списка. По-моему, в СБ в упомянутом Вами классе такая же логика. Могу и запамятовать - и ошибиться в этом.

 
Artyom Trishkin #:

Из-за расширяемости - чтобы раз посчитанные данные были в отдельном от расчётной части массиве. CopyBuffer копирует в массив заданное количество баров, и меняет размер принимающего массива под скопированное количество данных. Т.е., если нужны постоянно данные, то постоянно нужно их копировать из буфера расчётной части.

Здесь сделано так, чтобы был постоянно заполненный массив всеми данными, и данные получались из него по индексу. Без копирования. Копирование происходит раз при запуске, а потом только добавление данных по два бара в конец списка. По-моему, в СБ в упомянутом Вами классе такая же логика. Могу и запамятовать - и ошибиться в этом.

Да, там есть заполнение массивов. Но есть и попытка прямого доступа - апи-метод CIndicator::GetData(), вызывающий нативную функцию CopyBuffer() в лоб.

 
100 errors, 6 warnings 100 7. Почему при компиляции 100 ошибок. Что я делаю неправильно?

 
StohanoV #:
100 errors, 6 warnings 100 7. Почему при компиляции 100 ошибок. Что я делаю неправильно?

Самая первая ошибка в журнале редактора какая?

Причина обращения: