コード例 #1
0
        private void OrderManager_ExecutionReport(object sender, ExecutionReportEventArgs args)
        {
            FreeQuant.FIX.ExecutionReport executionReport = args.ExecutionReport;
            if (executionReport.ExecType == ExecType.PartialFill)
            {
                SingleOrder    order          = ((InstrumentOrderListTable)OrderManager.Orders).All[executionReport.ClOrdID] as SingleOrder;
                StrategyRunner strategyRunner = (StrategyRunner)null;
                if (this.strategies.TryGetValue(order.Strategy, out strategyRunner) && strategyRunner.Enabled)
                {
                    strategyRunner.SetPartiallyFilled(order);
                }
            }
            if ((executionReport.ExecType == ExecType.Fill || executionReport.ExecType == ExecType.Trade) && executionReport.LeavesQty > 0.0)
            {
                SingleOrder    order          = ((InstrumentOrderListTable)OrderManager.Orders).All[executionReport.ClOrdID] as SingleOrder;
                StrategyRunner strategyRunner = (StrategyRunner)null;
                if (this.strategies.TryGetValue(order.Strategy, out strategyRunner) && strategyRunner.Enabled)
                {
                    strategyRunner.SetPartiallyFilled(order);
                }
            }
            if (executionReport.ExecType != ExecType.Replace)
            {
                return;
            }
            SingleOrder    order1          = ((InstrumentOrderListTable)OrderManager.Orders).All[executionReport.ClOrdID] as SingleOrder;
            StrategyRunner strategyRunner1 = (StrategyRunner)null;

            if (!this.strategies.TryGetValue(order1.Strategy, out strategyRunner1) || !strategyRunner1.Enabled)
            {
                return;
            }
            strategyRunner1.SetOrderReplaced(order1);
        }
コード例 #2
0
        private void OrderManager_OrderDone(OrderEventArgs args)
        {
            StrategyRunner strategyRunner = (StrategyRunner)null;

            if (!this.strategies.TryGetValue(args.Order.Strategy, out strategyRunner) || !strategyRunner.Enabled)
            {
                return;
            }
            strategyRunner.SetOrderDone(args.Order);
        }
コード例 #3
0
        private void SQ_OrderManager_OrderCancelReject(object sender, OrderCancelRejectEventArgs args)
        {
            SingleOrder    order          = ((InstrumentOrderListTable)OrderManager.Orders).All[args.OrderCancelReject.OrigClOrdID] as SingleOrder;
            StrategyRunner strategyRunner = (StrategyRunner)null;

            if (!this.strategies.TryGetValue(order.Strategy, out strategyRunner) || !strategyRunner.Enabled)
            {
                return;
            }
            if (args.OrderCancelReject.CxlRejResponseTo == CxlRejResponseTo.CancelReplaceRequest)
            {
                strategyRunner.SetOrderReplaceReject(order);
            }
            else
            {
                strategyRunner.SetOrderCancelReject(order);
            }
        }