SmartQuant Discussion
http://www.smartquant.com/forums/

Provider Code Order updates vs fills
http://www.smartquant.com/forums/viewtopic.php?f=86&t=14837
Page 1 of 1

Author:  azuric [ Fri Jun 15, 2018 10:13 am ]
Post subject:  Provider Code Order updates vs fills

Hi,

My ISV Stellar separates out fills and order updates very similarly to OQ.

Whats the best way to deal with this in Provider code I do this:

Code:
        private void Tcallback_TradeTransactionEvent(object sender, TradeTransactionEventArgs e)
        {
            string productId = e.TradeTransctions[0].GetTrade().GetProductID();

            if (instrument.GetSymbol(this.id) == productId)
            {
                foreach (TradeTransaction tt in e.TradeTransctions)
                {
                    Stellar.Trade t = tt.GetTrade();

                    OrderRecord record;
                    var id = Convert.ToInt32(t.GetUserString1());

                    if (workingOrders.TryGetValue(id, out record))
                    {
                        var price = (double)t.GetPrice().GetValue();
                        var quantity = (Int32)t.GetVolume().GetValue();
                        record.AddFill(price, quantity);

                        ExecType execType = ExecType.ExecTrade;

                        OrderStatus orderStatus = (record.LeavesQty > 0) ? OrderStatus.PartiallyFilled : OrderStatus.Filled;
                        //OrderStatus orderStatus = record.Order.Status;

                        ExecutionReport report = CreateReport(record, execType, orderStatus);

                        report.LastPx = price;
                        report.LastQty = quantity;

                        EmitExecutionReport(report);
                    }
                    else
                        EmitError(string.Format("OnTrade: Unknown trade, id={0}", id));
                }
            }
        }


but in order updates I will also get:

Code:
               if (status == OrderStatusEnum.NX_ORDER_STATUS_FILLED)
                        {
                            execType = ExecType.ExecTrade;
                            orderStatus = OrderStatus.Filled;

                            createReport = true;
                        }

should I bother doing anything with this at all or should ignore in favour of OQ handling the completion of an order or is there a more elegant solution?

Page 1 of 1 All times are UTC + 3 hours
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/