I took a look inside the mql5 code, and found why this is happening, inside checkBarOpen() function (line 804 in the mql5 code for the attached strategy below), currentBarTime variable is assigned to the previous bar open time, instead of current bar open time, because index value 0 is used for mrate array, instead you should have used index value of 1, mrate array is a dynamic array with length of two FYI.
Arrays in mql5 are not indexed as timeseries by default, rightmost value in an array always gets the latest value.
After changing the index value from 0 to 1, everything works perfectly.
Hope that helps and get fixed in the next build.
Thanks