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);
        }
Esempio n. 2
0
        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);
            }
        }
Esempio n. 3
0
        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);
        }