Ejemplo n.º 1
0
 public void OnNewInvestorDepotAvailable(InvestorDepot depot)
 {
     if (fundid != null && depot != null && depot.Id.Equals(fundid))
     {
         ExecuteOnGUIThread(investorAddedCallbacks, depot);
     }
 }
Ejemplo n.º 2
0
        private void UpdateInvestorInformation(InvestorDepot d)
        {
            var tmp = new ObservableCollection <InvestorDepot>(Depots.Where(x => x.ExchangeName != d.ExchangeName));

            tmp.Add(d);
            Depots = tmp;
            UpdateOwnedShares();
        }
Ejemplo n.º 3
0
        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();
        }
Ejemplo n.º 4
0
        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);
            }
        }
Ejemplo n.º 5
0
        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)
 {
 }
Ejemplo n.º 7
0
 public void OnNewInvestorDepotAvailable(InvestorDepot depot)
 {
 }
Ejemplo n.º 8
0
 public void PutInvestorDepot(InvestorDepot investor, string exchangeId)
 {
     data.Exchanges[exchangeId].InvestorDepots[investor.Id] = investor;
     NotifySubscribers(data.Exchanges[exchangeId].InvestorCallbacks, investor);
 }