Ejemplo n.º 1
0
        public void CancelOrder(OrderVM orderVM)
        {
            var sendobjBld = new PBOrderRequest();

            sendobjBld.Exchange   = orderVM.Exchange;
            sendobjBld.Contract   = orderVM.Contract;
            sendobjBld.OrderID    = orderVM.OrderID;
            sendobjBld.OrderSysID = orderVM.OrderSysID;
            MessageWrapper.SendMessage((uint)BusinessMessageID.MSG_ID_ORDER_CANCEL, sendobjBld);
        }
Ejemplo n.º 2
0
        public void CreateOrder(OrderVM orderVM)
        {
            if (orderVM == null)
            {
                OnOrderError?.Invoke(new Exception("订单对象异常"));
                return;
            }

            if (orderVM.Contract == null)
            {
                OnOrderError?.Invoke(new Exception("订单合约不能为空"));
                return;
            }

            if (orderVM.Volume <= 0)
            {
                OnOrderError?.Invoke(new Exception("订单数量不正确"));
                return;
            }


            double price = 0;

            var contractInfo = ClientDbContext.FindContract(orderVM.Contract);

            if (contractInfo != null)
            {
                price = Math.Round(orderVM.LimitPrice / contractInfo.PriceTick) * contractInfo.PriceTick;
            }
            else
            {
                OnOrderError?.Invoke(new Exception("输入合约不存在"));
                return;
            }

            var pb = new PBOrderRequest();

            pb.Contract   = orderVM.Contract;
            pb.LimitPrice = orderVM.LimitPrice;
            pb.Tif        = (int)orderVM.TIF;
            pb.VolCond    = (int)orderVM.VolCondition;
            pb.Volume     = orderVM.Volume;
            pb.ExecType   = (int)orderVM.ExecType;
            pb.Direction  = (int)orderVM.Direction;
            pb.Openclose  = (int)orderVM.OpenClose;
            if (orderVM.Portfolio != null)
            {
                pb.Portfolio = orderVM.Portfolio;
            }

            MessageWrapper.SendMessage((uint)BusinessMessageID.MSG_ID_ORDER_NEW, pb);
        }