Example #1
0
        public void BasicAuctionTestMethod()
        {
            List <DisplayOrder> bids = new List <DisplayOrder>();
            List <DisplayOrder> asks = new List <DisplayOrder>();

            bids.Add(new DisplayOrder(1, 100));
            bids.Add(new DisplayOrder(0.99, 500));

            asks.Add(new DisplayOrder(0.99, 500));
            asks.Add(new DisplayOrder(0.99, 500));

            AuctionMatchResult r = AsxAuctionMatchCalculator.Calc(bids, asks);

            Assert.AreEqual(0.99, r.IEP);
            Assert.AreEqual(600, r.IEV);
        }
Example #2
0
        private void CalcButton_OnClick(object sender, EventArgs e)
        {
            List <DisplayOrder> bids = bidDataGridView.Rows.Cast <DataGridViewRow>().Select(r1 => r1.DataBoundItem as DisplayOrder).ToList();
            List <DisplayOrder> asks = askDataGridView.Rows.Cast <DataGridViewRow>().Select(r2 => r2.DataBoundItem as DisplayOrder).ToList();

            AuctionMatchResult r = AsxAuctionMatchCalculator.Calc(bids, asks);

            IEPValue_label.Text = r.IEP.ToString();
            IEQValue_Label.Text = r.IEV.ToString();

            BindingSource bs = (BindingSource)bidDataGridView.DataSource;

            int cumMatchQty = 0;

            foreach (DisplayOrder o in bs)
            {
                o.MatchingQty = Math.Max(0, Math.Min(r.IEV - cumMatchQty, o.Qty));
                cumMatchQty  += o.MatchingQty;
            }

            bs = (BindingSource)askDataGridView.DataSource;

            cumMatchQty = 0;
            foreach (DisplayOrder o in bs)
            {
                o.MatchingQty = Math.Max(0, Math.Min(r.IEV - cumMatchQty, o.Qty));
                cumMatchQty  += o.MatchingQty;
            }


            if (string.IsNullOrEmpty(FvTextBox.Text))
            {
                Redraw();
                return;
            }
            try
            {
                double fv = double.Parse(FvTextBox.Text);
                PotDollarDB_Label.Text         = GetDbPotDollar(bids, asks, r, fv).ToString();
                PotDollarMM_Label.Text         = GetMMPotDollar(bids, asks, r, fv).ToString();
                PotDollarContinuous_Label.Text = GetContinuousPotDollar(bids, asks, r, fv).ToString();

                bs = (BindingSource)bidDataGridView.DataSource;
                double ownPnl = 0;
                foreach (DisplayOrder o in bs)
                {
                    o.Pnl = o.MatchingQty * (fv - r.IEP);

                    if (o.IsOwnOrder)
                    {
                        ownPnl += o.Pnl;
                    }
                }

                bs = (BindingSource)askDataGridView.DataSource;
                foreach (DisplayOrder o in bs)
                {
                    o.Pnl = o.MatchingQty * (r.IEP - fv);

                    if (o.IsOwnOrder)
                    {
                        ownPnl += o.Pnl;
                    }
                }

                OwnPnlLabel.Text = ownPnl.ToString();
            }
            catch (Exception ex) { };

            Redraw();
        }