The context of my question is that I am using an ATI workaround for getting a trackable order ID into my C# application by outputting the order ID from NT8 to CSV, and then reading the CSV file with my application. When I do this, I am using OnExecutionUpdate to grab "Execution.OrderId" and "Execution.ExecutionId".
They appear to be the same number but ExecutionId has a suffixed integer after an underscore (e.g. "123456_1") and I am assuming that if two execution events such as from partial fills were to occur, the suffixed integer would increment to _2, etc.
I can see that the OrderId generated in the ATI changes after execution to become the OrderId that shows in the Orders tab of Ninjatrader desktop, and the CSV output of Execution.OrderId matches what I see in the Orders tab of Ninjatrader desktop.
Although the documentation says OrderId can change / is not persistent, is that only talking about the change that it undergoes up until the execution? I.e., is it the case that Order.OrderId can change but Execution.OrderId (and Execution.ExecutionId) will not ever change for that order once the order has executed? I just need to confirm this point. It makes sense to me but it's already so insane that we aren't provided an easy way to track orders by ID that I don't want to take it for granted that Execution.OrderId won't change (in which case, if it won't change, that order identification string could be used with ATI functions such as Filled(), etc.).
I would be very grateful if anyone can clarify this point for me definitively.

Comment