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