Al_key:
Массив для индикаторного буфера может быть публичным членом класса или структуры.
...Но как я понимаю, SetIndexBuffer принимает только явно объявленные массивы даблов...
Не совсем то, что нужно. Нужно чтобы имеющийся буфер можно было связать с классом динамически, а не переписывать весь класс для конкретного индюка. Типа как-то так:
#include <Arrays/ArrayDouble.mqh> CArrayDouble * check; //--- input parameters input int Input1; //--- indicator buffers double Label1Buffer[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping check = new CArrayDouble(); SetIndexBuffer(0,check,INDICATOR_DATA); //--- return(INIT_SUCCEEDED); }
Al_key:
Не совсем то, что нужно. Нужно чтобы имеющийся буфер можно было связать с классом динамически, а не переписывать весь класс для конкретного индюка. Типа как-то так:
Вроде понял: нужно примерно так это делать. Не знаю, правда, всплывут ли подводные камни от таких финтов.
class DynaMicDoubleByf { public: double m_data[]; DynaMicDoubleByf(void){}; ~DynaMicDoubleByf(void); }; CArrayDouble * check; DynaMicDoubleByf *test; //--- input parameters input int Input1; //--- indicator buffers double Label1Buffer[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping check = new CArrayDouble(); test = new DynaMicDoubleByf(); SetIndexBuffer(0, test.m_data,INDICATOR_DATA); //--- return(INIT_SUCCEEDED); }
Al_key:
Не всплывают. Несколько раз использовал такие конструкции, всё работает.
Вроде понял: нужно примерно так это делать. Не знаю, правда, всплывут ли подводные камни от таких финтов.
Sergei Vladimirov:
Не всплывают. Несколько раз использовал такие конструкции, всё работает.
Спасибо!
Не всплывают. Несколько раз использовал такие конструкции, всё работает.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Пишу что-то типа универсального "расшаривателя данных", который можно было бы легко цеплять к любому индикатору. В общем, нужен доступ к буферам. Ищу вариант как сделать:
1. Рассматриваю вариант создание объекта CArrayDouble через new в качестве буфера. Но как я понимаю, SetIndexBuffer принимает только явно объявленные массивы даблов. Или можно ли как-то привязывать к буферу индикатора массив созданный через new?
2. "Регистрировать" имеющиеся буферы по ссылкам. В принципе годный вариант, только уточнить хотел бы. Можно ли как-то эти ссылки хранить внутри объекта, в который их передали? Желательно без DLL.