private void BUYBUT_Click(object sender, EventArgs e) { if (this.STOCKCODE.Text.Length < 6) { MessageBox.Show("查询股票代码应该是6位!"); return;/// 代码错误 } if (0 == m_StockTrade.CurTradeID) { MessageBox.Show("请先登录服务器再操作!"); return;/// 没有登录 } ITradeRecord StockRecord = m_StockTrade.GetStockQuote(m_StockTrade.CurTradeID, this.STOCKCODE.Text); if (null == StockRecord) { MessageBox.Show("获取指定股票实时5档行情失败!"); return;/// 获取指定股票实时5档行情失败 } if (0 == StockRecord.RecordCount) { MessageBox.Show("获取指定股票实时5档行情数据无记录!"); return;/// 没有记录 } /// 弹出JSON格式数据包 MessageBox.Show(StockRecord.GetJsonString()); /// 取当前价 var vBuy4 = StockRecord.GetValueFloat(0, 5); #if SYNC_OPT /// 同步提交委托,知道返回结果 EZMExchangeType eExchangeType = EZMExchangeType.EXCHANGETYPE_UNKNOWN; ITradeRecord OrderRecord = m_StockTrade.SyncCommitOrder(true, EZMStockOrderType.STOCKORDERTYPE_BUY, EZMOrderPriceType.ORDERPRICETYPE_LIMIT, this.STOCKCODE.Text, vBuy4, 500, out eExchangeType); if (null != OrderRecord) { if (OrderRecord.RecordCount > 0) { /// 弹出JSON格式数据包 MessageBox.Show(OrderRecord.GetJsonString()); /// 取消委托,需要获取前面委托成功的ID uint nOrderID = (uint)OrderRecord.GetValueInt(0, 0); m_StockTrade.CancelOrder(eExchangeType, nOrderID); } } #else /// 下面演示批量买入操作,通过AddOrder重复调用可以实现提交多条委托,然后调用CommitOrder一次性提交到服务器 var vBuy5 = StockRecord.GetValueByName(0, "买五价"); /// 限价买 uint nReq1 = m_StockTrade.AddOrder(EZMStockOrderType.STOCKORDERTYPE_BUY, EZMOrderPriceType.ORDERPRICETYPE_LIMIT, this.STOCKCODE.Text, (float)vBuy5, 500); uint nReq2 = m_StockTrade.AddOrder(EZMStockOrderType.STOCKORDERTYPE_BUY, EZMOrderPriceType.ORDERPRICETYPE_LIMIT, this.STOCKCODE.Text, vBuy4, 500); /// 真正提交委托操作,每个委托结果通过事件来通知,通过AddOrder返回的请求ID标识 m_StockTrade.CommitOrder(m_StockTrade.CurTradeID, true, EZMRunPriType.RUNPRITYPE_NORMAL); #endif StockRecord.Clear(); StockRecord = null; }
/// <summary> /// 委托交易提交成功通知 /// </summary> /// <param name="nReqID" Desc="本组件维护的交易请求序列号"></param> /// <param name="eExchangeType Desc="交易市场类型""></param> /// <param name="vRecord" Desc="交易结果对象"></param> public void OrderOKEvent(uint nReqID, EZMExchangeType eExchangeType, object vRecord) { ITradeRecord TradeRecord = (ITradeRecord)vRecord; if (null != TradeRecord) { uint nFieldCount = TradeRecord.FieldCount; uint nRecordCount = TradeRecord.RecordCount; if (nRecordCount > 0) { /// 弹出JSON格式数据包 MessageBox.Show(TradeRecord.GetJsonString()); /// 测试马上取消委托 ITradeRecord CancelRecord = m_spiTrade.CancelOrder(eExchangeType, (uint)TradeRecord.GetValueInt(0, 0)); if (null != CancelRecord) { /// 弹出JSON格式数据包 MessageBox.Show(CancelRecord.GetJsonString()); uint nRC = CancelRecord.RecordCount; /// 判断取消返回记录是否正常取消 CancelRecord.Clear(); CancelRecord = null; } } TradeRecord.Clear(); TradeRecord = null; } }