Советник открывает сделки в первые два часа Лондона, время считаю через TimeGMT(), чтобы не зависеть от сервера брокера. На демо входит ровно в 7:00-9:00 по Гринвичу, как задумано. В тестере все входы сдвинуты на два-три часа раньше, и результат, понятно, совсем другой. Тестер что-то делает с TimeGMT()?
Делает. В тестере TimeGMT() и TimeLocal() не настоящие, насколько помню, оба просто равны модельному серверному времени. Откуда тестеру знать, какое смещение было у брокера в 2019 году. Поэтому советник в тестере считает, что 7:00 по серверу это 7:00 по Гринвичу, отсюда сдвиг на два-три часа в зависимости от сезона. Для тестера смещение придётся задавать самому: входной параметр со смещением сервера и правило перехода на летнее время, а в живой торговле можно сверять его с TimeGMT().