public virtual FIXCommissionData GetCommissionData(FIXExecutionReport report) { FIXCommissionData fIXCommissionData = new FIXCommissionData(); fIXCommissionData.CommType = FIXCommType.ToFIX(this.fCommType); fIXCommissionData.Commission = this.fCommission; if (this.fMinCommission != 0.0) { double num; switch (this.fCommType) { case CommType.PerShare: num = this.fCommission * report.CumQty; break; case CommType.Percent: num = this.fCommission * report.CumQty * report.AvgPx; break; case CommType.Absolute: num = this.fCommission; break; default: throw new NotSupportedException("Commission type is not supported : " + this.fCommType); } if (num < this.fMinCommission) { fIXCommissionData.CommType = '3'; fIXCommissionData.Commission = this.fMinCommission; } } return(fIXCommissionData); }
private void D35FmNWSPm(double obj0, double obj1) { SingleOrder singleOrder = this.PYBF7sahqY as SingleOrder; if (singleOrder.IsDone) { return; } if (obj1 < singleOrder.LeavesQty) { this.aXtFGP76FH = false; ExecutionReport report = new ExecutionReport(); report.TransactTime = Clock.Now; report.ClOrdID = singleOrder.ClOrdID; report.ExecType = ExecType.PartialFill; report.OrdStatus = OrdStatus.PartiallyFilled; report.Symbol = singleOrder.Symbol; report.Side = singleOrder.Side; report.OrdType = singleOrder.OrdType; report.AvgPx = (singleOrder.AvgPx * singleOrder.CumQty + obj0 * obj1) / (singleOrder.CumQty + obj1); report.OrderQty = singleOrder.OrderQty; report.LastQty = obj1; report.CumQty = singleOrder.CumQty + obj1; report.LeavesQty = singleOrder.LeavesQty - obj1; report.LastPx = obj0; report.Price = singleOrder.Price; report.StopPx = singleOrder.StopPx; report.SecurityType = singleOrder.SecurityType; report.SecurityExchange = singleOrder.SecurityExchange; report.Currency = singleOrder.Currency; report.Text = singleOrder.Text; FIXCommissionData commissionData = this.A8bFJItyyx.CommissionProvider.GetCommissionData((FIXExecutionReport)report); report.CommType = FIXCommType.FromFIX(commissionData.CommType); report.Commission = commissionData.Commission; report.AvgPx = this.A8bFJItyyx.SlippageProvider.GetExecutionPrice(report); this.A8bFJItyyx.JPVPJSWclF(report); } else { this.D7GFelmgQp(); this.A8bFJItyyx.MyIPdEI7fi.Remove((object)this.PYBF7sahqY.ClOrdID); this.aXtFGP76FH = true; obj1 = singleOrder.LeavesQty; ExecutionReport report = new ExecutionReport(); report.TransactTime = Clock.Now; report.ClOrdID = singleOrder.ClOrdID; report.ExecType = ExecType.Fill; report.OrdStatus = OrdStatus.Filled; report.Symbol = singleOrder.Symbol; report.Side = singleOrder.Side; report.OrdType = singleOrder.OrdType; report.AvgPx = (singleOrder.AvgPx * singleOrder.CumQty + obj0 * obj1) / (singleOrder.CumQty + obj1); report.OrderQty = singleOrder.OrderQty; report.LastQty = singleOrder.LeavesQty; report.CumQty = singleOrder.OrderQty; report.LeavesQty = 0.0; report.LastPx = obj0; report.Price = singleOrder.Price; report.StopPx = singleOrder.StopPx; report.SecurityType = singleOrder.SecurityType; report.SecurityExchange = singleOrder.SecurityExchange; report.Currency = singleOrder.Currency; report.Text = singleOrder.Text; FIXCommissionData commissionData = this.A8bFJItyyx.CommissionProvider.GetCommissionData((FIXExecutionReport)report); report.CommType = FIXCommType.FromFIX(commissionData.CommType); report.Commission = commissionData.Commission; report.AvgPx = this.A8bFJItyyx.SlippageProvider.GetExecutionPrice(report); this.A8bFJItyyx.JPVPJSWclF(report); } }
private void Execute(double price, double qty) { SingleOrder singleOrder = this.fOrder as SingleOrder; if (singleOrder.IsDone) { return; } if (qty < singleOrder.LeavesQty) { this.fExecuted = false; ExecutionReport executionReport = new ExecutionReport(); executionReport.TransactTime = Clock.Now; executionReport.ClOrdID = singleOrder.ClOrdID; executionReport.ExecType = ExecType.PartialFill; executionReport.OrdStatus = OrdStatus.PartiallyFilled; executionReport.Symbol = singleOrder.Symbol; executionReport.Side = singleOrder.Side; executionReport.OrdType = singleOrder.OrdType; executionReport.AvgPx = (singleOrder.AvgPx * singleOrder.CumQty + price * qty) / (singleOrder.CumQty + qty); executionReport.OrderQty = singleOrder.OrderQty; executionReport.LastQty = qty; executionReport.CumQty = singleOrder.CumQty + qty; executionReport.LeavesQty = singleOrder.LeavesQty - qty; executionReport.LastPx = price; executionReport.Price = singleOrder.Price; executionReport.StopPx = singleOrder.StopPx; executionReport.SecurityType = singleOrder.SecurityType; executionReport.SecurityExchange = singleOrder.SecurityExchange; executionReport.Currency = singleOrder.Currency; executionReport.Text = singleOrder.Text; FIXCommissionData commissionData = this.fProvider.CommissionProvider.GetCommissionData(executionReport); executionReport.CommType = FIXCommType.FromFIX(commissionData.CommType); executionReport.Commission = commissionData.Commission; executionReport.AvgPx = this.fProvider.SlippageProvider.GetExecutionPrice(executionReport); this.fProvider.EmitExecutionReport(executionReport); return; } this.Disconnect(); this.fProvider.fProcessors.Remove(this.fOrder.ClOrdID); this.fExecuted = true; qty = singleOrder.LeavesQty; ExecutionReport executionReport2 = new ExecutionReport(); executionReport2.TransactTime = Clock.Now; executionReport2.ClOrdID = singleOrder.ClOrdID; executionReport2.ExecType = ExecType.Fill; executionReport2.OrdStatus = OrdStatus.Filled; executionReport2.Symbol = singleOrder.Symbol; executionReport2.Side = singleOrder.Side; executionReport2.OrdType = singleOrder.OrdType; executionReport2.AvgPx = (singleOrder.AvgPx * singleOrder.CumQty + price * qty) / (singleOrder.CumQty + qty); executionReport2.OrderQty = singleOrder.OrderQty; executionReport2.LastQty = singleOrder.LeavesQty; executionReport2.CumQty = singleOrder.OrderQty; executionReport2.LeavesQty = 0.0; executionReport2.LastPx = price; executionReport2.Price = singleOrder.Price; executionReport2.StopPx = singleOrder.StopPx; executionReport2.SecurityType = singleOrder.SecurityType; executionReport2.SecurityExchange = singleOrder.SecurityExchange; executionReport2.Currency = singleOrder.Currency; executionReport2.Text = singleOrder.Text; FIXCommissionData commissionData2 = this.fProvider.CommissionProvider.GetCommissionData(executionReport2); executionReport2.CommType = FIXCommType.FromFIX(commissionData2.CommType); executionReport2.Commission = commissionData2.Commission; executionReport2.AvgPx = this.fProvider.SlippageProvider.GetExecutionPrice(executionReport2); this.fProvider.EmitExecutionReport(executionReport2); }