Obviously I am less patient than you. In my case the algorithm is simpler:So if I wasn't filled within 2.5 hours, there's a good chance I won't get filled at all and will have to move it.
I have a bunch more stats, but these seem the most interesting. I've also determined that the order size doesn't really have much impact on the execution outcome.
For now, I'll make a change to move the price automatically if I wasn't filled within 2 hours. The thinking is that the price will run away from me less in that case, though obviously I'd need intraday data to prove that, and I don't have that.
If the bid/ask spread is more than one tick I place a limit order halfway between bid and ask. If that order is not filled within one minute then I cross the spread and get the order filled.
If the bid/ask spread is only one tick I can't be bothered and cross the spread, so that my order gets filled immediately.