Example #1
0
        public QuoteOrderItem Add(SingleOrder order, TextQuote t)
        {
            if (item == null || item.IsDone())
            {
                item = new QuoteOrderItem(t);
            }

            item.Add(order, t);

            if (item.IsDone())
            {
                return(item);
            }

            return(null);
        }
Example #2
0
        public QuoteOrderItem Add(SingleOrder order, TextQuote t)
        {
            if(item == null || item.IsDone())
            {
                item = new QuoteOrderItem(t);
            }

            item.Add(order, t);

            if (item.IsDone())
            {                
                return item;
            }

            return null;
        }
        private void Send(QuoteOrderItem item)
        {
            if (item == null)
            {
                return;
            }

            SingleOrder AskOrder = item.Sell.Order;
            SingleOrder BidOrder = item.Buy.Order;

            string symbol = item.Buy.Order.Symbol;

            double AskPrice  = AskOrder.Price;
            double BidPrice  = BidOrder.Price;
            int    AskVolume = (int)AskOrder.OrderQty;
            int    BidVolume = (int)BidOrder.OrderQty;

            TThostFtdcOffsetFlagType AskOffsetFlag = CTPAPI.ToCTP(item.Sell.OpenClose);
            TThostFtdcOffsetFlagType BidOffsetFlag = CTPAPI.ToCTP(item.Buy.OpenClose);

            TThostFtdcHedgeFlagType AskHedgeFlag = HedgeFlagType;
            TThostFtdcHedgeFlagType BidHedgeFlag = HedgeFlagType;

            int nRet = 0;

#if CTP
            nRet = TraderApi.TD_SendQuote(m_pTdApi,
                                          -1,
                                          symbol,
                                          AskPrice,
                                          BidPrice,
                                          AskVolume,
                                          BidVolume,
                                          AskOffsetFlag,
                                          BidOffsetFlag,
                                          AskHedgeFlag,
                                          BidHedgeFlag);
#endif
            if (nRet > 0)
            {
                orderMap.CreateNewOrder(string.Format("{0}:{1}:{2}", _RspUserLogin.FrontID, _RspUserLogin.SessionID, nRet), item);
            }
        }
Example #4
0
        private void Send(NewOrderSingle order)
        {
            if (!_bTdConnected)
            {
                EmitError(-1, -1, "交易服务器没有连接,无法报单");
                tdlog.Error("交易服务器没有连接,无法报单");
                return;
            }

            // 表示特殊的Json格式
            if (order.Text.StartsWith("{") && order.Text.EndsWith("}"))
            {
                TextParameter parameter = JsonConvert.DeserializeObject <TextParameter>(order.Text);
                switch (parameter.Type)
                {
                case EnumGroupType.COMMON:
                {
                    TextCommon      t    = JsonConvert.DeserializeObject <TextCommon>(order.Text);
                    CommonOrderItem item = CommonOrderCombiner.Add(order as SingleOrder, t);
                    Send(item);
                }
                break;

                case EnumGroupType.QUOTE:
                {
                    TextQuote      t    = JsonConvert.DeserializeObject <TextQuote>(order.Text);
                    QuoteOrderItem item = QuoteOrderCombiner.Add(order as SingleOrder, t);
                }
                break;

                case EnumGroupType.SP:
                {
                    TextSP      t    = JsonConvert.DeserializeObject <TextSP>(order.Text);
                    SPOrderItem item = SPOrderCombiner.Add(order as SingleOrder, t);
                    Send(item);
                }
                break;

                case EnumGroupType.SPC:
                {
                    TextSPC      t    = JsonConvert.DeserializeObject <TextSPC>(order.Text);
                    SPCOrderItem item = SPCOrderCombiner.Add(order as SingleOrder, t);
                    Send(item);
                }
                break;

                case EnumGroupType.SPD:
                {
                    TextSPD      t    = JsonConvert.DeserializeObject <TextSPD>(order.Text);
                    SPDOrderItem item = SPDOrderCombiner.Add(order as SingleOrder, t);
                    Send(item);
                }
                break;
                }
            }
            else
            {
                // 无法识别的格式,直接发送报单,只开仓
                TextCommon t = new TextCommon()
                {
                    Type      = EnumGroupType.COMMON,
                    OpenClose = EnumOpenClose.OPEN
                };
                CommonOrderItem item = CommonOrderCombiner.Add(order as SingleOrder, t);
                Send(item);
            }
        }