public void OnNewInvestorDepotAvailable(InvestorDepot depot) { if (fundid != null && depot != null && depot.Id.Equals(fundid)) { ExecuteOnGUIThread(investorAddedCallbacks, depot); } }
private void UpdateInvestorInformation(InvestorDepot d) { var tmp = new ObservableCollection <InvestorDepot>(Depots.Where(x => x.ExchangeName != d.ExchangeName)); tmp.Add(d); Depots = tmp; UpdateOwnedShares(); }
private void UpdateInvestorInformation(InvestorDepot d) { var tmp = new ObservableCollection <FundDepot>(Depots.Where(x => x.ExchangeName != d.ExchangeName)); tmp.Add(new FundDepot { Id = d.Id, ExchangeName = d.ExchangeName, Budget = d.Budget, Shares = d.Shares }); Depots = tmp; UpdateOwnedShares(); }
private void ProcessOrder(Order order, OrderMatchResult result, string exchangeId) { if (result.Order != null) // else punish : do nothing { foreach (Order o in result.Matches) { data.Exchanges[exchangeId].Orders[o.Id] = o; NotifySubscribers(data.Exchanges[exchangeId].OrderCallbacks, o); } foreach (Transaction t in result.Transactions) { InvestorDepot buyer = GetInvestorDepot(t.BuyerId, exchangeId); buyer.Budget -= (t.TotalCost + t.BuyerProvision + t.FundProvision); int val; buyer.Shares[order.ShareName] = buyer.Shares.TryGetValue(order.ShareName, out val) ? val + t.NoOfSharesSold : t.NoOfSharesSold; InvestorDepot seller = GetInvestorDepot(t.SellerId, exchangeId); if (seller != null) // seller is investor (which could also be a fund) { seller.Budget += (t.TotalCost - t.SellerProvision - t.FundProvision); seller.Shares[order.ShareName] -= t.NoOfSharesSold; } else // seller is firm { var firm = data.Exchanges[exchangeId].FirmDepots[t.SellerId]; firm.OwnedShares -= t.NoOfSharesSold; } if (t.IsFund) // sold share is fund share { var fund = data.Exchanges[exchangeId].FundDepots[t.ShareName]; fund.Budget += t.FundProvision * 2; NotifySubscribers(data.Exchanges[exchangeId].FundCallbacks, fund); } data.Exchanges[exchangeId].Transactions.Add(t); NotifySubscribers(data.Exchanges[exchangeId].TransactionCallbacks, t); NotifySubscribers(data.Exchanges[exchangeId].InvestorCallbacks, buyer); NotifySubscribers(data.Exchanges[exchangeId].InvestorCallbacks, seller); } NotifySubscribers(data.Exchanges[exchangeId].OrderCallbacks, result.Order); data.Exchanges[exchangeId].Orders[order.Id] = result.Order; var info = data.Exchanges[exchangeId].ShareInformation[order.ShareName]; info.PurchasingVolume = CalculatePurchasingVolume(data.Exchanges[exchangeId].Orders.Values); info.SalesVolume = CalculateSalesVolume(data.Exchanges[exchangeId].Orders.Values); NotifySubscribers(data.Exchanges[exchangeId].ShareInformationCallbacks, info); } else { data.Exchanges[exchangeId].Orders.TryRemove(order.Id, out order); } }
public InvestorDepot LoginInvestor(InvestorRegistration registration, string exchangeId) { InvestorDepot depot; var exists = data.Exchanges[exchangeId].InvestorDepots.TryGetValue(registration.Email, out depot); if (!exists) { depot = new InvestorDepot { Id = registration.Email, ExchangeName = exchangeId, Budget = 0, Shares = new Dictionary <string, int>() }; } depot.Budget += registration.Budget; data.Exchanges[exchangeId].InvestorDepots[depot.Id] = depot; return(depot); }
public void OnNewInvestorDepotAvailable(InvestorDepot transaction) { }
public void OnNewInvestorDepotAvailable(InvestorDepot depot) { }
public void PutInvestorDepot(InvestorDepot investor, string exchangeId) { data.Exchanges[exchangeId].InvestorDepots[investor.Id] = investor; NotifySubscribers(data.Exchanges[exchangeId].InvestorCallbacks, investor); }