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