I can at least imagine why you got a problem with that:

if(hour(0) < hour(1)) ....

When you have a daily time frame, hour(0) is _always_ identical to hour(1) _unless_ your asset had by chance some gaps in the price data, so that the previous day ended at a different hour. With daily time frames, I would use dow() for checking a day change, or set TimeFrame=1 before the day change detection.

I'll check the other problem also. Theoretically, you can use even a daily bar period for trading assets from 2 different time zones when you use the EntryDelay in live trading for delaying the trade entry until the markets open.