Советник при смене таймфрейма не выгружается: вызывается OnDeinit, потом OnInit, а static сохраняет значение. Дело в другом. Ты сравниваешь с временем нулевого бара текущего таймфрейма графика. Переключил на M15, нулевой бар стал 10:45, а в переменной лежит 10:00 от H1, условие «новый бар» выполнилось, и сигнал посчитан уже по M15. Переключил обратно, снова не совпало, снова новый бар.
Пиши таймфрейм явно, PERIOD_H1, а не PERIOD_CURRENT, тогда советнику всё равно, что показывает график. На четвёрке, кстати, ровно та же история с Period(). И перед входом проверяй, нет ли уже позиции с твоим мэджиком, открытой на этом баре: после перезапуска терминала static будет нулём, и второй вход случится по другой причине. А проще всего график с советником не трогать, для просмотра открой рядом второй)