Example #1
0
        static void testMM1()
        {
            string acc   = "1104";
            string combi = "11040201";

            List <ASecurity> underlyinglist = new List <ASecurity>();

            //underlyinglist.Add(new ETF("510050", Exchange.SHE));
            underlyinglist.Add(new ETF("510180", Exchange.SHE));
            underlyinglist.Add(new Stock("601318", Exchange.SHE));
            //underlyinglist.Add(new Stock("600104", Exchange.SHE));

            AMarket       mkt        = AMarket.GetInstance(MarketVendor.Exchange);
            List <Option> optionlist = mkt.GetOptionSet(underlyinglist);

            foreach (Option o in optionlist)
            {
                QueryPara param = new QueryPara();
                param.fundcode     = acc;
                param.portfolio    = combi;
                param.securitycode = o.code;

                AEntrust et = AEntrust.GetInstance(EntrustVendor.Hundsun);
                et.OptionEntrustQuery(param, o.entrustbook);
                bool flg = o.makemarketstat.IsValid();

                if (o.entrustbook != null && o.entrustbook.Count > 0)
                {
                    foreach (EntrustBook eb in o.entrustbook)
                    {
                        eb.DebugPrint();
                    }
                }

                //Debug.Print(string.Format("spread, code={2},name={3},价差={0},{1}", o.makemarketstat.currminspreadpct.ToString("P2"), o.makemarketstat.message, o.code,o.name));
            }
        }
Example #2
0
        protected virtual void sendorder(Option o, double askpx, double bidpx, QueryPara param)
        {
            if (askpx == bidpx)
            {
                MessageManager.GetInstance().Add(MessageType.Warning, string.Format("买价不能和卖价一样:{0},{1}", o.code, bidpx));
                return;
            }

            //查询委托和持仓信息
            _entrustengine.OptionEntrustQuery(param, o.entrustbook);
            _entrustengine.OptionPositionQuery(param, o.positionbook);

            //撤销现有委托
            List <int> entrustnolist = new List <int>();

            if (o.entrustbook.Count > 0)
            {
                entrustnolist.Clear();
                foreach (EntrustBook eb in o.entrustbook)
                {
                    entrustnolist.Add(eb.entrustno);
                }

                _entrustengine.OptionWithdraw(entrustnolist);
            }

            //查询持仓情况
            int longposition = 0, shortposition = 0;

            if (o.positionbook.Count > 0)
            {
                foreach (PositionBook pb in o.positionbook)
                {
                    if (pb.positiondirection == PostionDerection.LONG)
                    {
                        longposition = pb.volume;
                    }
                    else if (pb.positiondirection == PostionDerection.SHORT)
                    {
                        shortposition = pb.volume;
                    }
                }
            }

            //委托参数
            List <EntrustPara> paramlist = new List <EntrustPara>();
            //卖出
            EntrustPara paraAsk = new EntrustPara();

            paraAsk.portfolio        = param.portfolio;
            paraAsk.securitycode     = param.securitycode;
            paraAsk.exchange         = o.exchange;
            paraAsk.price            = askpx;               //Ask
            paraAsk.entrustdirection = TradeDirection.SELL; //卖出
            paraAsk.volume           = c_min_entrust_volume;
            if (longposition >= c_min_entrust_volume * 2)   //开平
            {
                paraAsk.futuredirection = FutureDirection.COVER;
                paraAsk.volume          = c_min_entrust_volume * 2;
            }
            else if (longposition >= c_min_entrust_volume)
            {
                paraAsk.futuredirection = FutureDirection.COVER;
            }
            else
            {
                paraAsk.futuredirection = FutureDirection.OPEN;
            }

            //买入
            EntrustPara paraBid = new EntrustPara();

            paraBid.portfolio        = param.portfolio;
            paraBid.securitycode     = param.securitycode;
            paraBid.exchange         = o.exchange;
            paraBid.price            = bidpx;               //Bid
            paraBid.entrustdirection = TradeDirection.BUY;  //买入
            paraBid.volume           = c_min_entrust_volume;
            if (shortposition >= c_min_entrust_volume * 2)  //开平
            {
                paraBid.futuredirection = FutureDirection.COVER;
                paraBid.volume          = c_min_entrust_volume * 2;
            }
            else if (shortposition >= c_min_entrust_volume)
            {
                paraBid.futuredirection = FutureDirection.COVER;
            }
            else
            {
                paraBid.futuredirection = FutureDirection.OPEN;
            }

            //篮子委托
            paramlist.Add(paraAsk);
            paramlist.Add(paraBid);
            _entrustengine.OptionBasketEntrust(paramlist);
        }