Beispiel #1
0
        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;
        }
Beispiel #2
0
            /// <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;
                }
            }