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)); } }
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) })); } } } }
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); }
//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); }
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); }
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); }
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); } } } }
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); } }
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; } }
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; }