示例#1
0
 public static QotCommon.Security MakeSec(QotCommon.QotMarket market, String code)
 {
     QotCommon.Security sec = QotCommon.Security.CreateBuilder().SetCode(code)
                              .SetMarket((int)market)
                              .Build();
     return(sec);
 }
示例#2
0
 internal void RequestContractDetails(QotCommon.QotMarket market, string code)
 {
     QotGetSecuritySnapshot.Request.Builder reqBuilder   = QotGetSecuritySnapshot.Request.CreateBuilder();
     QotGetSecuritySnapshot.C2S.Builder     csReqBuilder = QotGetSecuritySnapshot.C2S.CreateBuilder();
     QotCommon.Security.Builder             stock        = QotCommon.Security.CreateBuilder();
     stock.SetCode(code);
     stock.SetMarket((int)market);
     csReqBuilder.AddSecurityList(stock);
     reqBuilder.SetC2S(csReqBuilder);
     qot.GetSecuritySnapshot(reqBuilder.Build());
 }
示例#3
0
 internal void CancelMarketData(QotCommon.QotMarket market, string code)
 {
     QotSub.Request.Builder     reqBuilder   = QotSub.Request.CreateBuilder();
     QotSub.C2S.Builder         csReqBuilder = QotSub.C2S.CreateBuilder();
     QotCommon.Security.Builder stock        = QotCommon.Security.CreateBuilder();
     stock.SetCode(code);
     stock.SetMarket((int)market);
     csReqBuilder.AddSecurityList(stock);
     csReqBuilder.AddSubTypeList((int)QotCommon.SubType.SubType_Ticker);
     csReqBuilder.SetIsSubOrUnSub(false);
     csReqBuilder.SetIsRegOrUnRegPush(false);
     reqBuilder.SetC2S(csReqBuilder);
     uint serialNo = qot.Sub(reqBuilder.Build());
 }
示例#4
0
 internal void RequestHistoricalData(QotCommon.QotMarket market, string code, DateTime beginTime, DateTime endTime, QotCommon.KLType kLType)
 {
     QotRequestHistoryKL.Request.Builder reqBuilder   = QotRequestHistoryKL.Request.CreateBuilder();
     QotRequestHistoryKL.C2S.Builder     csReqBuilder = QotRequestHistoryKL.C2S.CreateBuilder();
     QotCommon.Security.Builder          stock        = QotCommon.Security.CreateBuilder();
     stock.SetCode(code);
     stock.SetMarket((int)market);
     csReqBuilder.Security  = stock.Build();
     csReqBuilder.KlType    = (int)kLType;
     csReqBuilder.BeginTime = beginTime.ToString("yyyy-MM-dd");
     csReqBuilder.EndTime   = endTime.ToString("yyyy-MM-dd");
     reqBuilder.SetC2S(csReqBuilder);
     qot.RequestHistoryKL(reqBuilder.Build());
 }
示例#5
0
        public void Run(QotCommon.QotMarket market)
        {
            bool ret = InitConnectQotSync("127.0.0.1", (ushort)11111);

            if (ret)
            {
                Console.WriteLine("qot connected");
            }
            else
            {
                Console.WriteLine("fail to connect opend");
                return;
            }

            int[] stockTypes = { (int)QotCommon.SecurityType.SecurityType_Eqty,
                                 (int)QotCommon.SecurityType.SecurityType_Index,
                                 (int)QotCommon.SecurityType.SecurityType_Trust,
                                 (int)QotCommon.SecurityType.SecurityType_Warrant,
                                 (int)QotCommon.SecurityType.SecurityType_Bond };
            List <QotCommon.Security> stockCodes = new List <QotCommon.Security>();

            foreach (int stockType in stockTypes)
            {
                QotGetStaticInfo.C2S c2s = QotGetStaticInfo.C2S.CreateBuilder()
                                           .SetMarket((int)market)
                                           .SetSecType(stockType)
                                           .Build();
                QotGetStaticInfo.Response rsp = GetStaticInfoSync(c2s);
                if (rsp.RetType != (int)Common.RetType.RetType_Succeed)
                {
                    Console.Error.Write("getStaticInfoSync fail: {0}\n", rsp.RetMsg);
                    return;
                }
                foreach (QotCommon.SecurityStaticInfo info in rsp.S2C.StaticInfoListList)
                {
                    stockCodes.Add(info.Basic.Security);
                }
            }

            if (stockCodes.Count == 0)
            {
                Console.Error.Write("Error market:'{0}' can not get stock info ", market);
                return;
            }

            for (int i = 0; i < stockCodes.Count; i += 200)
            {
                int count = i + 200 <= stockCodes.Count ? 200 : stockCodes.Count - i;
                List <QotCommon.Security>       codes = stockCodes.GetRange(i, count);
                QotGetSecuritySnapshot.Response rsp   = GetSecuritySnapshotSync(codes);
                if (rsp.RetType != (int)Common.RetType.RetType_Succeed)
                {
                    Console.Error.Write("getSecuritySnapshotSync err: retType={0} msg={1}\n", rsp.RetType, rsp.RetMsg);
                }
                else
                {
                    foreach (QotGetSecuritySnapshot.Snapshot snapshot in rsp.S2C.SnapshotListList)
                    {
                        Console.WriteLine(snapshot);
                    }
                }
                Thread.Sleep(3000);
            }
        }
        void smartSell(String code, QotCommon.QotMarket qotMarket, TrdCommon.TrdSecMarket secMarket,
                       int volume, TrdCommon.OrderType orderType,
                       TrdCommon.TrdEnv trdEnv,
                       ulong accID,
                       TrdCommon.TrdMarket trdMarket,
                       String trdPwdMD5)
        {
            int lotSize = 0;

            QotCommon.Security sec = MakeSec(qotMarket, code);
            while (true)
            {
                Thread.Sleep(1000);
                if (lotSize == 0)
                {
                    List <QotCommon.Security> secList = new List <QotCommon.Security>();
                    secList.Add(sec);
                    QotGetSecuritySnapshot.Response rsp = GetSecuritySnapshotSync(secList);
                    if (rsp.RetType != (int)Common.RetType.RetType_Succeed)
                    {
                        Console.Error.Write("getSecuritySnapshotSync err; retType={} msg={1}\n", rsp.RetType,
                                            rsp.RetMsg);
                        return;
                    }
                    lotSize = rsp.S2C.SnapshotListList[0].Basic.LotSize;
                    if (lotSize <= 0)
                    {
                        Console.Error.Write("invalid lot size; code={0} lotSize={1}\n", code, lotSize);
                        return;
                    }
                }
                int qty = (volume / lotSize) * lotSize; // 将数量调整为整手的股数

                QotSub.Response subRsp = SubSync(new List <QotCommon.Security>()
                {
                    sec
                },
                                                 new List <QotCommon.SubType>()
                {
                    QotCommon.SubType.SubType_OrderBook
                },
                                                 true,
                                                 false);
                if (subRsp.RetType != (int)Common.RetType.RetType_Succeed)
                {
                    Console.Error.Write("subSync er; retType={0}; msg={1}\n", subRsp.RetType, subRsp.RetMsg);
                    return;
                }

                QotGetOrderBook.Response getOrderBookRsp = GetOrderBookSync(MakeSec(qotMarket, code), 1);
                if (getOrderBookRsp.RetType != (int)Common.RetType.RetType_Succeed)
                {
                    Console.Error.Write("getOrderBookSync er; retType={0}; msg={1}\n", subRsp.RetType, subRsp.RetMsg);
                    return;
                }
                double bid1Price = getOrderBookRsp.S2C.OrderBookBidListList[0].Price;
                TrdCommon.TrdHeader trdHeader = MakeTrdHeader(trdEnv, accID, trdMarket);
                TrdPlaceOrder.C2S   c2s       = TrdPlaceOrder.C2S.CreateBuilder()
                                                .SetHeader(trdHeader)
                                                .SetPacketID(trd.NextPacketID())
                                                .SetTrdSide((int)TrdCommon.TrdSide.TrdSide_Sell)
                                                .SetOrderType((int)orderType)
                                                .SetCode(code)
                                                .SetQty(qty)
                                                .SetPrice(bid1Price)
                                                .SetAdjustPrice(true)
                                                .SetSecMarket((int)secMarket)
                                                .Build();
                TrdPlaceOrder.Response placeOrderRsp = PlaceOrderSync(c2s);
                if (placeOrderRsp.RetType != (int)Common.RetType.RetType_Succeed)
                {
                    Console.Error.Write("placeOrderSync err; retType={0} msg={1}\n", placeOrderRsp.RetType, placeOrderRsp.RetMsg);
                    return;
                }
                else
                {
                    Console.Write("下单成功: {0}\n", placeOrderRsp.S2C);
                }
            }
        }
        void simpleSell(String code, QotCommon.QotMarket qotMarket, TrdCommon.TrdSecMarket secMarket,
                        double price, int volume, TrdCommon.OrderType orderType,
                        TrdCommon.TrdEnv trdEnv,
                        ulong accID,
                        TrdCommon.TrdMarket trdMarket,
                        String trdPwdMD5)
        {
            bool ret = InitConnectQotSync(Config.OpendIP, Config.OpendPort);

            if (!ret)
            {
                Console.Error.WriteLine("Fail to connect opend");
                return;
            }
            ret = InitConnectTrdSync(Config.OpendIP, Config.OpendPort);
            if (!ret)
            {
                Console.Error.WriteLine("Fail to connect opend");
                return;
            }
            int lotSize = 0;

            QotCommon.Security sec = MakeSec(qotMarket, code);
            while (true)
            {
                Thread.Sleep(1000);
                if (lotSize == 0)
                {
                    List <QotCommon.Security> secList = new List <QotCommon.Security>();
                    secList.Add(sec);
                    QotGetSecuritySnapshot.Response rsp = GetSecuritySnapshotSync(secList);
                    if (rsp.RetType != (int)Common.RetType.RetType_Succeed)
                    {
                        Console.Error.Write("getSecuritySnapshotSync err; retType={0} msg={1}\n", rsp.RetType,
                                            rsp.RetMsg);
                        return;
                    }
                    lotSize = rsp.S2C.SnapshotListList[0].Basic.LotSize;
                    if (lotSize <= 0)
                    {
                        Console.Error.Write("invalid lot size; code={0} lotSize={1}\n", code, lotSize);
                        return;
                    }
                }

                int qty = (volume / lotSize) * lotSize; // 将数量调整为整手的股数
                TrdCommon.TrdHeader trdHeader = MakeTrdHeader(trdEnv, accID, trdMarket);
                TrdPlaceOrder.C2S   c2s       = TrdPlaceOrder.C2S.CreateBuilder()
                                                .SetHeader(trdHeader)
                                                .SetPacketID(trd.NextPacketID())
                                                .SetTrdSide((int)TrdCommon.TrdSide.TrdSide_Sell)
                                                .SetOrderType((int)orderType)
                                                .SetCode(code)
                                                .SetQty(qty)
                                                .SetPrice(price)
                                                .SetAdjustPrice(true)
                                                .SetSecMarket((int)secMarket)
                                                .Build();
                TrdPlaceOrder.Response placeOrderRsp = PlaceOrderSync(c2s);
                if (placeOrderRsp.RetType != (int)Common.RetType.RetType_Succeed)
                {
                    Console.Error.Write("placeOrderSync err; retType={0} msg={1}\n", placeOrderRsp.RetType, placeOrderRsp.RetMsg);
                    return;
                }
                else
                {
                    Console.Write("下单成功: {0}\n", placeOrderRsp.S2C);
                }
            }
        }