It is a US-traded asset, so use AssetMarket=ET - which will take care of DST.
In your example, StartMarket=2300 (why 23??). Since market() does not work correctly when Start>End, you will have to dynamically change StartMarket depending on the hour/minute.
I did not test if suspended() would do the trick in such a case.

Also, be aware that in Zorro EndMarket=2159 excludes 2159 (despite the whole world around works otherwise). You will have to set it to +1min to make it work as expected.
This will be important to handle bar construction around weekend.

If you use the same BarPeriod across assets, then working with AssetMarket/AssetFrame will be ok.
However, since your data contains gaps, standard frame construction(which just counts bars) will produce incorrect frames (unless you use full-hour frames and framesync() them to start from the same hour every 24-hrs).

If different StartMarket/EndMarket per asset in the same zone will work correctly - I am not sure; probably not.

If end of your Bar/Frame falls onto the gap - you will then have to use lhour() and minute(). What's wrong with it?