Example #1
0
 private void UpdateTrade(TradeOrderData tradeOrderData)
 {
     DispatcherHelper.CheckBeginInvokeOnUI(() =>
     {
         TradeOrderDataList.Insert(0, tradeOrderData);
     });
 }
 public void BroadcastTradeDataToClient(TradeOrderData eventData)
 {
     if (eventData != null)
     {
         Task.Run(() => Messenger.Default.Send(eventData, MessengerToken.BROADCASTTRADEDATA));
     }
 }
Example #3
0
        public void ProcessNewComeTradeInfo(TradeOrderData trade, bool isInited = true)
        {
            //Add for GHS 5.0.2
            if (trade == null)
            {
                return;
            }

            //Synchronizing the trading info when initialized
            List <TradeOrderData> removeItems = new List <TradeOrderData>();

            if (!isInited)
            {
                foreach (TradeOrderData item in QryTradeDataLst)
                {
                    if (trade.TradeID != "" && item.TradeID == trade.TradeID && item.OrderID == trade.OrderID && item.Exchange == trade.Exchange)
                    {
                        removeItems.Add(item);
                    }
                }
                foreach (TradeOrderData rItem in removeItems)
                {
                    QryTradeDataLst.Remove(rItem);
                }
            }
        }
        /// <summary>
        /// 埋单提交(选中)
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void MaiDanHandle(object sender, RoutedEventArgs e)
        {
            List <TradeOrderData> selectedOrder = new List <TradeOrderData>();

            foreach (var item in dgMaiConditionOrder.SelectedItems)
            {
                selectedOrder.Add((TradeOrderData)item);
            }

            foreach (var item in selectedOrder)
            {
                TradeOrderData o = (TradeOrderData)item;
                if (o != null)
                {
                    //对o撤单
                    if (IsMaiDanHandlable(o))
                    {
                        TradeDataClient.GetClientInstance().RequestOrder(o.InvestorID, BACKENDTYPE.CTP, new RequestContent("NewOrderSingle", new List <object>()
                        {
                            CodeSetManager.GetContractInfo(o.Code, CodeSetManager.ExNameToCtp(o.Exchange)), SIDETYPE.BUY, PosEffect.Close, 0, 0, 0, o.OrderID, CommonUtil.GetHedgeType(o.Hedge)
                        }));
                    }
                }
            }
        }
Example #5
0
        private void AddSystemMessage(TradeOrderData orderInfo)
        {
            string title     = string.Empty;
            string code      = orderInfo.Code;//orderInfo.legs[0] != null ? orderInfo.legs[0].Code : "";
            string buySell   = orderInfo.BuySell;
            string openClose = orderInfo.OpenClose;
            string message   = string.Empty;

            if (CommonUtil.GetOrderStatus(orderInfo.OrderStatus) == OrderStatus.Queued)
            {
                message = string.Format("报单号:{0} 下单成功:{1},{2},{3},{4}手,委托价{5}, {6}",
                                        orderInfo.OrderID.Trim(), code, buySell, openClose, orderInfo.CommitHandCount, orderInfo.CommitPrice, orderInfo.Hedge);
            }
            else if (CommonUtil.GetOrderStatus(orderInfo.OrderStatus) == OrderStatus.Chengjiao)
            {
                message = string.Format("报单号:{0} 成交通知:{1},{2},{3},{4}手,委托价{5}, {6}",
                                        orderInfo.OrderID.Trim(), code, buySell, openClose, orderInfo.CommitHandCount, orderInfo.CommitPrice, orderInfo.Hedge);//成交价
            }
            else if (CommonUtil.GetOrderStatus(orderInfo.OrderStatus) == OrderStatus.Cancelled)
            {
                message = string.Format("撤单通知:{0},{1},{2},{3}手,委托价{4}, {5}",
                                        code, buySell, openClose, orderInfo.CommitHandCount, orderInfo.CommitPrice, orderInfo.Hedge);
            }
            else if (CommonUtil.GetOrderStatus(orderInfo.OrderStatus) == OrderStatus.Failed)
            {
                message = string.Format("下单失败:{0},{1},{2},{3}手,委托价{4}, {5}",
                                        code, buySell, openClose, orderInfo.CommitHandCount, orderInfo.CommitPrice, orderInfo.Hedge);
            }
            if (!string.IsNullOrEmpty(message))
            {
                _MainWindow.AddSystemMessage(DateTime.Now, message, "信息", "ORDER");
            }
        }
 /// <summary>
 /// 埋单能够提交
 /// </summary>
 /// <param name="o"></param>
 /// <returns></returns>
 private Boolean IsMaiDanHandlable(TradeOrderData o)
 {
     if (o.OrderStatus == "预置单有效")
     {
         return(true);
     }
     return(false);
 }
Example #7
0
        //public void SendOneOrderTest(string symbol,bool sell)
        //{
        //    IOrdersManager ordersManager = ((UNLManager) UNLManagerDic[symbol]).OrdersManager;
        //    ordersManager.TestTrading(true);
        //}
        public void SendOneOrderTest(TradeOrderData tradeOrderData)
        {
            //IOrdersManager ordersManager = ((UNLManager)UNLManagerDic[tradeOrderData.Symbol]).OrdersManager;
            //ordersManager.TestTrading(tradeOrderData);
            ITradingManager tradeManager = ((UNLManager)UNLManagerDic[tradeOrderData.Symbol]).TradingManager;

            tradeManager.TestTrading(tradeOrderData);
        }
Example #8
0
        public bool AddOrderInfo(TradeOrderData orderInfo)
        {
            bool canAdd = false;

            if (CommonUtil.GetOrderStatus(orderInfo.OrderStatus) == OrderStatus.Queued)
            {
                if (Settings.Default.ConfirmForOrderSubmit == true)
                {
                    canAdd = true;
                }
            }
            else if (CommonUtil.GetOrderStatus(orderInfo.OrderStatus) == OrderStatus.Chengjiao)
            {
                if (Settings.Default.ConfirmForOrderTransact == true)
                {
                    canAdd = true;
                }
            }
            else if (CommonUtil.GetOrderStatus(orderInfo.OrderStatus) == OrderStatus.Cancelled)
            {
                if (Settings.Default.ConfirmForOrderCancel == true)
                {
                    canAdd = true;
                }
            }
            else if (CommonUtil.GetOrderStatus(orderInfo.OrderStatus) == OrderStatus.Failed)
            {
                if (Settings.Default.ConfirmForOrderCancel == true)
                {
                    canAdd = true;
                }
            }

            if (canAdd)
            {
                _LstOrders.Add(orderInfo);
                btnNext.Visibility = Visibility.Visible;
                string title = (this.Parent as Window).Title;
                if (title.Length > 4)
                {
                    title = title.Substring(title.Length - 4);
                    title = "TradingMaster:" + title;
                    (this.Parent as Window).Title = string.Format("({0}/{1}) {2}", index + 1, _LstOrders.Count, title);
                }
            }
            AddSystemMessage(orderInfo);
            return(canAdd);
        }
Example #9
0
        public OrderData TestTrading(TradeOrderData tradeOrderData)
        {
            string     optionKey  = GetOptionKey(tradeOrderData.ExpiryDate, tradeOrderData.OptionType, tradeOrderData.Strike);
            OptionData optionData = UNLManager.OptionsManager.GetOptionData(optionKey);

            if (optionData == null)
            {
                throw new Exception("The Option doesn't exist in the Option list!!!");
            }

            OrderData orderData = tradeOrderData.OrderAction == OrderAction.SELL ?
                                  SellOption(optionData, 1) :
                                  BuyOption(optionData, 1);

            DefaultOrderType = tradeOrderData.OrderType;
            return(orderData);
        }
Example #10
0
 public void BroadCastTradeData(TradeOrderData data,
                                IReadOnlyDictionary <int, IBroadcastorCallBack> clients)
 {
     foreach (var client in clients)
     {
         //BroadCast Trade Update to all Client
         //if(data.BuyUserId == client.Key || data.SellUserId == client.Key)
         {
             try
             {
                 client.Value.BroadcastTradeDataToClient(data);
             }
             catch
             {
                 ObjFactory.Instance.CreateLogger()
                 .Log("BroadCastTradeData =" + client, this.GetType().Name);
             }
         }
     }
 }
Example #11
0
        private void btnSendOrder_Click(object sender, EventArgs e)
        {
            try
            {
                //Create the object:
                TradeOrderData tradeOrderData = new TradeOrderData()
                {
                    OrderType      = OrderType.MKT,
                    OptionTypeText = txtType.Text,
                    ExpiryDate     = dateTimePicker1.Value,
                    OrderAction    = cbxSell.Checked ? OrderAction.SELL : OrderAction.BUY,
                    Strike         = Convert.ToDouble(txtStrike.Text),
                    Symbol         = txtSymbol.Text
                };

                _appManager.SendOneOrderTest(tradeOrderData);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Example #12
0
        public void TestTrading(TradeOrderData tradeOrderData)
        {
            string     optionKey  = GetOptionKey(tradeOrderData.ExpiryDate, tradeOrderData.OptionType, tradeOrderData.Strike);
            OptionData optionData = UNLManager.OptionsManager.GetOptionData(optionKey);

            if (optionData == null)
            {
                throw new Exception("The Option doesn't exist in the Option list!!!");
            }

            OrderData orderData;

            if (tradeOrderData.OrderAction == OrderAction.SELL)
            {
                orderData = OrderManager.SellOption(optionData, 1);
                _pendingSellDic[orderData.OrderId] = orderData;
            }
            else
            {
                orderData = OrderManager.BuyOption(optionData, 1);
                _pendingCloseDic[orderData.OrderId] = orderData;
            }
        }
Example #13
0
        private void ShowOrderInfo()
        {
            HideCheckBox();
            string title   = string.Empty;
            string message = "";

            if (_LstOrders[index] is TradeOrderData)
            {
                TradeOrderData orderInfo = _LstOrders[index] as TradeOrderData;
                string         code      = orderInfo.Code;      //orderInfo.legs[0] != null ? orderInfo.legs[0].Code : "";
                string         buySell   = orderInfo.BuySell;
                string         openClose = orderInfo.OpenClose; // JYDataServer.getServerInstance().GetPosEffect(orderInfo.posEffect);

                message = string.Format("报单号 :{0}", orderInfo.OrderID);
                message = message + string.Format("\n合约:{0}", code);
                message = message + string.Format("\n买卖:{0}", buySell);
                message = message + string.Format("\n开平:{0}", openClose);
                message = message + string.Format("\n委托量:{0}", orderInfo.CommitHandCount);
                message = message + string.Format("\n委托价:{0}", orderInfo.CommitPrice);
                message = message + string.Format("\n备注:{0}", orderInfo.FeedBackInfo);


                if (CommonUtil.GetOrderStatus(orderInfo.OrderStatus) == OrderStatus.Queued)
                {
                    title = "下单成功";
                    chkConfirmSubmit.Visibility = Visibility.Visible;
                }
                else if (CommonUtil.GetOrderStatus(orderInfo.OrderStatus) == OrderStatus.Chengjiao)
                {
                    title = "成交通知";
                    chkConfirmTransact.Visibility = Visibility.Visible;
                }
                else if (CommonUtil.GetOrderStatus(orderInfo.OrderStatus) == OrderStatus.Cancelled)
                {
                    title = "撤单成功";
                    chkConfirmCancel.Visibility = Visibility;
                }
                else if (CommonUtil.GetOrderStatus(orderInfo.OrderStatus) == OrderStatus.Failed)
                {
                    title = "下单失败";
                    chkConfirmCancel.Visibility = Visibility;
                }
            }
            else if (_LstOrders[index] is QuoteOrderData)
            {
                QuoteOrderData orderInfo    = _LstOrders[index] as QuoteOrderData;
                string         code         = orderInfo.Code;//orderInfo.legs[0] != null ? orderInfo.legs[0].Code : "";
                string         bidOpenClose = orderInfo.BidOpenClose;
                string         askOpenClose = orderInfo.AskOpenClose;
                // JYDataServer.getServerInstance().GetPosEffect(orderInfo.posEffect);

                message = string.Format("报价号 :{0}", orderInfo.QuoteOrderID);
                message = message + string.Format("\n合约:{0}", code);
                message = message + string.Format("\n买开平:{0}", bidOpenClose);
                message = message + string.Format("\n买量:{0}", orderInfo.BidHandCount);
                message = message + string.Format("\n买价:{0}", orderInfo.BidPrice);
                message = message + string.Format("\n买套保:{0}", orderInfo.BidHedge);
                message = message + string.Format("\n卖开平:{0}", askOpenClose);
                message = message + string.Format("\n卖量:{0}", orderInfo.AskOpenClose);
                message = message + string.Format("\n卖价:{0}", orderInfo.AskPrice);
                message = message + string.Format("\n卖套保:{0}", orderInfo.AskHedge);
                message = message + string.Format("\n备注:{0}", orderInfo.StatusMsg);

                if (CommonUtil.GetOrderStatus(orderInfo.QuoteStatus) == OrderStatus.Queued)
                {
                    title = "报价成功";
                    chkConfirmSubmit.Visibility = Visibility.Visible;
                }
                else if (CommonUtil.GetOrderStatus(orderInfo.QuoteStatus) == OrderStatus.Chengjiao)
                {
                    title = "成交通知";
                    chkConfirmTransact.Visibility = Visibility.Visible;
                }
                else if (CommonUtil.GetOrderStatus(orderInfo.QuoteStatus) == OrderStatus.Cancelled)
                {
                    title = "撤单成功";
                    chkConfirmCancel.Visibility = Visibility;
                }
                else if (CommonUtil.GetOrderStatus(orderInfo.QuoteStatus) == OrderStatus.Failed)
                {
                    title = "报价失败";
                    chkConfirmCancel.Visibility = Visibility;
                }
            }
            else if (_LstOrders[index] is ExecOrderData)
            {
                ExecOrderData orderInfo = _LstOrders[index] as ExecOrderData;
                string        code      = orderInfo.Code;      //orderInfo.legs[0] != null ? orderInfo.legs[0].Code : "";
                string        openClose = orderInfo.OpenClose; // JYDataServer.getServerInstance().GetPosEffect(orderInfo.posEffect);

                message = string.Format("执行号 :{0}", orderInfo.ExecOrderID);
                message = message + string.Format("\n合约:{0}", code);
                message = message + string.Format("\n开平:{0}", openClose);
                message = message + string.Format("\n委托量:{0}", orderInfo.HandCount);
                message = message + string.Format("\n备注:{0}", orderInfo.StatusMsg);

                if (CommonUtil.GetOrderStatus(orderInfo.ExecStatus) == OrderStatus.Queued)
                {
                    title = "指令成功";
                    chkConfirmSubmit.Visibility = Visibility.Visible;
                }
                else if (CommonUtil.GetOrderStatus(orderInfo.ExecStatus) == OrderStatus.Chengjiao)
                {
                    title = "成交通知";
                    chkConfirmTransact.Visibility = Visibility.Visible;
                }
                else if (CommonUtil.GetOrderStatus(orderInfo.ExecStatus) == OrderStatus.Cancelled)
                {
                    title = "撤单成功";
                    chkConfirmCancel.Visibility = Visibility;
                }
                else if (CommonUtil.GetOrderStatus(orderInfo.ExecStatus) == OrderStatus.Failed)
                {
                    title = "指令失败";
                    chkConfirmCancel.Visibility = Visibility;
                }
            }
            else
            {
                title   = "提示数据不合法!";
                message = "提示数据不合法!";
            }
            (this.Parent as Window).Title = string.Format("({0}/{1}) {2}", index + 1, _LstOrders.Count, "TradingMaster:" + title);
            tbMessage.Text = message;
        }