private void OnOrderReply(OrderProcessor.Capital.ReplyType ReplyType, OrderProcessor.Capital.Order Ord) { if (Ord.ComID != OrderPID) { return; } if (Ord.Price > MaxTick || Ord.Price < MinTick) { if (Ord.BuySell == OrderProcessor.Side.B) { cStatistics_Buy.SetValue(Core.Instance.OrderStatus(OrderPID, OrderProcessor.Side.B, MaxTick, MinTick)); } else { cStatistics_Sell.SetValue(Core.Instance.OrderStatus(OrderPID, OrderProcessor.Side.S, MaxTick, MinTick)); } } else { foreach (var cell in m_OrderCell.Keys) { //if ((double)cell.Value != Ord.Price) { continue; } //m_OrderCell[cell][Ord.BuySell].SetValue(Core.Instance.OrderStatus(OrderPID, Ord.BuySell, Ord.Price)); foreach (double price in Core.Instance.Order.PriceByOrderNo(Ord.ComID, Ord.OrdNo)) { if (((double)cell.Value) == price) { m_OrderCell[cell][Ord.BuySell].SetValue(Core.Instance.OrderStatus(OrderPID, Ord.BuySell, price)); } } } } //UpdateAllStatus(); }
/// <summary> /// 成交寫入資料庫 /// </summary> /// <param name="o"></param> private void Match2SQL(OrderProcessor.Capital.Order o) { string date = DateTime.Now.ToString("yyyy/MM/dd"); string qrysql = $"SELECT COUNT(*) FROM CAPITALMATCH WHERE DATE='{date}' AND ORDNO='{ o.OrdNo}'"; DataTable dt = m_SQL.DoQuery(qrysql); if (dt.Rows[0][0].ToInt() <= 0) { string sql = $"INSERT INTO CAPITALMATCH ([DATE],ORDNO,CUSTNO,COMID,SIDE,LOTS,PRICE,TIME) VALUES ('{date}','{o.OrdNo}','{o.CustNo}','{o.ComID}',{(o.BuySell == OrderProcessor.Side.B ? 0 : 1)},{o.Qty},{o.Price},'{o.Time}')"; try { m_SQL.DoExecute(sql); } catch (Exception) { } } }
private void SelectedOrder(Notification n) { OrderProcessor.Capital.Order o = (OrderProcessor.Capital.Order)n.Message; cboAccount.Text = o.BrokerID + o.CustNo; txtKeyNo.Text = o.KeyNo; }
private void OnMatchReply(OrderProcessor.Capital.ReplyType ReplyType, OrderProcessor.Capital.Order ord) { Utility.Log(this, "MatchToSQL", ord.ToString()); Match2SQL(ord); }
private void OnErrorReply(OrderProcessor.Capital.Order Ord, string Msg) { _Error(); }