I'm not quite sure I understand the situation entirely, so let me ask some questions if I may. Has this code been run in the debugger line by line? What exactly is not in the desired order? The 'trade results' list may not be in the order in which the orders were issued, if I understand what is happening.
(Don't mind me if I have gone off on a tangent --- just trying to understand in more detail. It seems like an interesting problem to solve.)