The spread you get in Trade mode is real. Whereas the spread you set in your asset list is strictly used for Test and Train mode to emulate a spread.
It looks like I will only get price updates at the end of each 1 minute bar, with BarPeriod = 1? So I need Zorro-S to get a stream of tick data?
I believe tick() works for both Zorro and Zorro S. But you can only use BarPeriod 1 or greater in free Zorro. So if you're only using run() and BarPeriod is 1, then you only get price updates once per run(), which is once per minute.