I was thinking about it and I think that I can answer the question:

Zorro manual: "The strategy script is run at the end of every bar, and buy or sell commands are executed at the price of the begin of the next bar."

And BarOffset: "Bar start time offset in minutes. For daily bars, BarOffset determines the UTC minute into the day when the candle opens, and can be used to shift the bar begin to a certain local or global time."

I believe that the thing I am trying to do (trade few minutes _before_ the end of every bar, not after the bar) might work by setting the BarOffset.

Something like this (for SPY):
BarPeriod = 1440; // 1 bar is 24 hours
BarZone = ET; // SPY is located in New York
BarOffset = 15*60 + 50; // set the bar end to 15:50, 10 minutes before the market close

I think that this solves the problem with live trading, but I don't think it solves the problem with backtesting. I think that when backtesting, Zorro starts the trade at the open price of the next bar. I am going to test it. Anyway, it is probably good enough for testing and trading.