Exemplo n.º 1
0
        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());
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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());
            }
        }