Because today, the offset to GMT is +3 with daylight saving adjustment, so last week, when broker was in standard time, the offset was +2.
The only difference is daylight saving time.
The common sense approach would be for MT4 server to use GMT all the time but you know they aren't going to do that.
 how . . . do you know that the broker moved to DST on the US schedule rather than the European schedule (or not at all)?
... Taking us back to the OP, how do you propose to give them a code sample which will reliably run on whichever broker server he/she is using in order to determine London times and London prices?
The only point I have been trying to make all along is that, yes you can do conversions to GMT or other timezones if you know the origin offset, but MT4 provides no reliable alternative to asking for some sort of user input about the broker's time settings.
You can get the local GMT offset from Windows. Simple comparison will give you the brokers offset without asking for user inputs.
datetime some_time=D'2004.03.21 12:00';
Print("shift of bar with open time ",TimeToStr(some_time)," is ",shift);
when does London open what timezone is that ??
What was the brokertime today at opening time London ?? some_time= .................
What time did your broker had that moment....