FastQuant.ExecutionSimulator.Fill C# (CSharp) Méthode

Fill() public méthode

public Fill ( Order order, double price, int size ) : void
order Order
price double
size int
Résultat void
        public void Fill(Order order, double price, int size)
        {
            if (!PartialFills)
            {
                this.orders.Add(order);
                var report = new ExecutionReport
                {
                    DateTime = this.framework.Clock.DateTime,
                    Order = order,
                    OrderId = order.Id,
                    OrdType = order.Type,
                    Side = order.Side,
                    Instrument = order.Instrument,
                    InstrumentId = order.InstrumentId,
                    OrdQty = order.Qty,
                    Price = order.Price,
                    StopPx = order.StopPx,
                    TimeInForce = order.TimeInForce,
                    ExecType = ExecType.ExecTrade,
                    OrdStatus = OrderStatus.Filled,
                    CurrencyId = order.Instrument.CurrencyId,
                    CumQty = order.LeavesQty,
                    LastQty = order.LeavesQty,
                    LeavesQty = 0.0,
                    LastPx = price,
                    Text = order.Text
                };
                report.Commission = CommissionProvider.GetCommission(report);
                report.LastPx = SlippageProvider.GetPrice(report);
                this.summariesByOrderId[order.Id] = new ReportSummary(report);
                EmitExecutionReport(report, Queued);
                return;
            }
            if (size <= 0)
            {
                Console.WriteLine("ExecutionSimulator::Fill Error - using partial fills, size can not be zero");
                return;
            }
            var report2 = new ExecutionReport
            {
                DateTime = this.framework.Clock.DateTime,
                Order = order,
                OrderId = order.Id,
                OrdType = order.Type,
                Side = order.Side,
                Instrument = order.Instrument,
                InstrumentId = order.InstrumentId,
                OrdQty = order.Qty,
                Price = order.Price,
                StopPx = order.StopPx,
                TimeInForce = order.TimeInForce,
                ExecType = ExecType.ExecTrade,
                CurrencyId = order.Instrument.CurrencyId
            };

            if (size >= order.LeavesQty)
            {
                this.orders.Add(order);
                report2.OrdStatus = OrderStatus.Filled;
                report2.CumQty = order.CumQty + order.LeavesQty;
                report2.LastQty = order.LeavesQty;
                report2.LeavesQty = 0.0;
                report2.LastPx = price;
                report2.Text = order.Text;
                order.LeavesQty = report2.LeavesQty;
            }
            else if (size < order.LeavesQty)
            {
                report2.OrdStatus = OrderStatus.PartiallyFilled;
                report2.CumQty = order.CumQty + size;
                report2.LastQty = size;
                report2.LeavesQty = order.LeavesQty - size;
                report2.LastPx = price;
                report2.Text = order.Text;
                order.LeavesQty = report2.LeavesQty;
            }
            report2.Commission = CommissionProvider.GetCommission(report2);
            report2.LastPx = SlippageProvider.GetPrice(report2);
            this.summariesByOrderId[order.Id] = new ReportSummary(report2);
            EmitExecutionReport(report2, Queued);
        }