Подскажите, в чем может быть дело.
.......................
.......................
Вы не выделили память под массив. В индикаторе Вы связали указатель на массив (это то, что описано как double bbMacd[]; с одним из индикаторных буферов, память под которые выделена.
SetIndexBuffer(...);
В советнике буферов нет и просто некуда записывать данные.
Странно, что терминал не "падает" с крэшем - это наверное было бы полезнее.
Для того, чтобы память была выделена статически под N элементов нужно описывать double bbMacd[ N]; где N - заданное число, например. double bbMacd[ 100]; выделит память под 100 элементов типа double.
Для динамического размещения - функция ArrayResize :
int ArrayResize( object&array[], int new_size)
Устанавливает новый размер в первом измерении массива. При успешном выполнении функция возвращает количество всех элементов, содержащихся в массиве после изменения размера, в противном случае возвращает -1, и массив не меняет размеры.
Замечание: массив, объявленный на локальном уровне в какой-либо функции, у которого был изменен размер, останется неизменным после завершения работы функции. При повторном вызове функции такой массив будет иметь размер, отличный от объявленного.
Успехов.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
В индикаторе этот код работает, а когда я запускаю этот же код в эксперте в тестере стратегий, то увы :((
Проблема, в том, что массив bbMacd получается нулевым, т.е. все элементы массива равны 0, хотя должен был рассчитаться MACD.
Ниже проблемный код: