예제 #1
0
        public void Entrust(EntrustPara param)
        {
            Debug.Print(string.Format("正在下单:c={0},p={1},v={2}", param.stockcode, param.price, param.volume));
            CT2Packer packer = new CT2Packer(2);

            packer.BeginPack();
            packer.AddField("user_token", Convert.ToSByte('S'), 512, 4);
            packer.AddField("combi_no", Convert.ToSByte('S'), 8, 4);
            packer.AddField("market_no", Convert.ToSByte('S'), 3, 4);
            packer.AddField("stock_code", Convert.ToSByte('S'), 16, 4);
            packer.AddField("entrust_direction", Convert.ToSByte('S'), 3, 4);
            packer.AddField("futures_direction", Convert.ToSByte('S'), 1, 4);
            packer.AddField("price_type", Convert.ToSByte('S'), 1, 4);
            packer.AddField("entrust_price", Convert.ToSByte('F'), 11, 4);
            packer.AddField("entrust_amount", Convert.ToSByte('F'), 16, 2);
            packer.AddField("covered_flag", Convert.ToSByte('S'), 1, 2);

            packer.AddStr(this.token);
            packer.AddStr(this.currcombino);
            packer.AddStr(param.marketno);
            packer.AddStr(param.stockcode);
            packer.AddStr(param.entrustdirection);
            packer.AddStr(param.futuredirection); //futrue direction  '1'-开仓; '2'-平仓。
            packer.AddStr("0");                   //0=限价
            packer.AddDouble(param.price);
            packer.AddDouble(param.volume);
            packer.AddStr("0");                   //covered_flag,备兑标志,0=非备兑

            packer.EndPack();

            this.sendpacker(OptionFunctionCode.Entrust, packer);
        }
예제 #2
0
파일: Program.cs 프로젝트: cjzj884/HFTP
        static void testHundsun1()
        {
            string user    = "******";
            string pwd     = "Abc123456";
            string combino = "1101_001";  //11040201

            EntrustHundsun eh = new EntrustHundsun();

            eh.Logon(user, pwd);

            #region 单笔下单
            EntrustPara param = new EntrustPara();
            param.portfolio        = combino;
            param.entrustdirection = TradeDirection.SELL;
            param.futuredirection  = FutureDirection.OPEN;
            param.exchange         = Exchange.SHE;
            param.securitycode     = "90000539";
            param.price            = 0.54;
            param.volume           = 1;
            eh.OptionSingleEntrust(param);
            #endregion


            #region 篮子下单
            List <EntrustPara> paramlist = new List <EntrustPara>();

            EntrustPara param1 = new EntrustPara();
            param1.portfolio        = combino;
            param1.entrustdirection = TradeDirection.BUY;
            param1.futuredirection  = FutureDirection.OPEN;
            param1.exchange         = Exchange.SHE;
            param1.securitycode     = "90000539";
            param1.price            = 0.525;
            param1.volume           = 5;
            EntrustPara param2 = new EntrustPara();
            param2.portfolio        = combino;
            param2.entrustdirection = TradeDirection.SELL;
            param2.futuredirection  = FutureDirection.OPEN;
            param2.exchange         = Exchange.SHE;
            param2.securitycode     = "90000539";
            param2.price            = 0.535;
            param2.volume           = 5;

            paramlist.Add(param1);
            paramlist.Add(param2);
            eh.OptionBasketEntrust(paramlist);
            #endregion
        }
예제 #3
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);
        }