Рекомендую вернуться к стандартной процедуре обмена с буферами индикаторов, т.е. в процедуре int get_signs(int num) прописать первый кейс:
case 1:
{ // Сигнальный индикатор задается в параметрах и может изменяться
// tmp=iCustom(Пары[num],сигнал_тф,имя_сигнальщика,0,0);
major=(int)iCustom(Пары[num],сигнал_тф,имя_сигнальщика,0,0); // Можно использовать стандартный обмен через опрос буферов
minor=(int)iCustom(Пары[num],сигнал_тф,имя_сигнальщика,1,0); // сигнального индикатора. Буфер "0" - основной, "1" -подтверждающий.
// major=(int)GlobalVariableGet(StringConcatenate("bb_trend_",symbol));
// minor=(int)GlobalVariableGet(StringConcatenate("bb_sign_",symbol));
break;
}
(закомментированное можно удалить вообще),
обмен через глобальные переменные по-прежнему вызывает вопросы. В отладке все ОК, вовремя работы по непонятной причине обновление "зависает".