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); }
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 }
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); }