public void share_test() { var ts = GetTrader(); SysShare ss = new SysShare(ts); ss.Execute(); SystemAccount.Instance.Borrow(1000, new Order { Trader = ts[0] }); for (int i = 1; i < 10; i++) { ts[i].Account.BailAccount.Add(i * 10000); } ss.SetIsFirst(false); ss.Execute(); for (int i = 1; i < 10; i++) { Assert.IsTrue(ts[i].Account.BailAccount.Total < 1000000 + i * 10000); } Assert.AreEqual(0, SystemAccount.Instance.PublicSum); for (int i = 0; i < 10; i++) { Assert.AreEqual(ts[i].Account.BailAccount.Total, ts[i].GetPreBailTotalSnap()); } Assert.AreEqual(SystemAccount.Instance.PublicSum, SystemAccount.Instance.GetPreTotal()); }
public MatchService() { preHandler = new OrderPreHandler(); postHandler = new OrderPostHandler(); Model = new OptionModel(); Model.Init(); esi = new EntitySvcImp(Model); market = new Market(Model); Matcher = new OrderMatcher(market); Matcher.OnAfterMatch += RaiseAfterMatch; foreach (var v in Model.LegacyOrders) { market.Handle(v); } preHandler.Market = market; Monitor = new OrderMonitor(Matcher, market, Model); monitorHandler = new OrderMonitorHandler(Monitor, (a, b) => { if (OnUserMsge != null) { OnUserMsge(a, b); } }); sysShare = new SysShare(Model.Traders); ks = new KlineSvc(this.Model); Matcher.OnFinish += matcher_OnFinish; Matcher.OnPositionChanged += matcher_OnPositionChanged; Matcher.OnPartialFinish += matcher_OnPartialFinish; Matcher.OnDeal += Matcher_OnDeal; foreach (var v in Model.Traders) { v.ReraiseBailEvent(); v.InitBailEvent(); } Model.Traders.First().SetMarket(market); DeepPool = new DeepDataPool2(Model, Matcher.Container); //恢复最近的成交 foreach (var v in Model.LatestDeals) { market.Deals.Handle(v); } Model.LatestDeals.Clear(); processor = new OrderSvcImp(this.Model, this.preHandler, this.postHandler, this.Matcher, log, IsAcceptByFuse); ks.Init(); PosSvc = new PositionSvcImp(this.market); }
public void snap_test() { var ts = GetTrader(); SysShare ss = new SysShare(ts); ss.Execute(); foreach (var v in ts) { Assert.AreEqual(v.Account.BailAccount.Total, v.GetPreBailTotalSnap()); } }