Ejemplo n.º 1
0
        void PortfolioGrid_ColumnSortChanged(object sender, EventArgs e)
        {
            if (PortfolioGrid.SortColumn.Label.Text.Equals("Symbol"))
            {
                PortfolioGrid.AlternateColors = false;
                if (isBySymbol)
                    PortfolioGrid.setData(dataRows);

                PortfolioGrid.SortAlphabetically();
                
                dataRows = new DataProvider(PortfolioGrid.data);
                dataRows.SortColumn = PortfolioGrid.data.SortColumn;

                isBySymbol = true;

                int quantity = 0;
                decimal basis = 0;
                decimal marketValue = 0;
                decimal gain = 0;
                string symbol = null;

                decimal basisTotal = 0;
                decimal marketValueTotal = 0;
                decimal gainTotal = 0;
                RowDataProvider row;
                int group = 0;
                List<PieElement> graphData = new List<PieElement>();
                for (int i = 0; true; i++)
                {
                    if (i > PortfolioGrid.data.Count) break;
                    if (i == PortfolioGrid.data.Count || (symbol != null && !symbol.Equals(PortfolioGrid.data[i][2].value)))
                    {
                        row = new RowDataProvider();
                        row.id = group;

                        // id, date, symbol, quantity, purchase price, current price, basis, market value, gain, trade
                        row.Add(new GridColumnData());
                        row[0].value = "";
                        row[0].numeric = 0;

                        row.Add(new GridColumnData());
                        row[1].value = "";
                        row[1].numeric = 0;

                        row.Add(new GridColumnData());
                        row[2].value = "";// PortfolioGrid.data[i - 1][2].value;
                        row[2].numeric = 0;

                        row.Add(new GridColumnData());
                        row[3].value = string.Format("{0:0,0}", quantity);
                        row[3].numeric = (int)quantity;

                        row.Add(new GridColumnData());
                        row[4].value = "";// string.Format("{0:C}", holdings[i].purchasePrice);
                        row[4].numeric = 0;// (int)(holdings[i].purchasePrice * 100);

                        row.Add(new GridColumnData());
                        row[5].value = PortfolioGrid.data[i - 1][5].value;// string.Format("{0:C}", quote.price);
                        row[5].numeric = PortfolioGrid.data[i - 1][5].numeric;

                        row.Add(new GridColumnData());
                        row[6].value = string.Format("{0:C}", basis/100);
                        row[6].numeric = (int)(basis );

                        row.Add(new GridColumnData());
                        row[7].value = string.Format("{0:C}", marketValue/100);
                        row[7].numeric = (int)(marketValue);

                        row.Add(new GridColumnGainData());
                        row[8].value = string.Format("{0:C}", gain/100);
                        row[8].numeric = (int)(gain);
                        (row[8] as GridColumnGainData).increased = gain == 0 ? 0 : (gain > 0 ? 1 : -1);

                        row.Add(new GridColumnData());
                        row[9].value = "";// "SELL";
                        row[9].numeric = 0;// i;

                        graphData.Add(new PieElement(PortfolioGrid.data[i - 1][2].value, (double)marketValue/100));
                        group++;

                        PortfolioGrid.data.Insert(i, row);
                        i++;

                        basisTotal += basis;
                        marketValueTotal += marketValue;
                        gainTotal += gain;
                        if (i < PortfolioGrid.data.Count)
                        {
                            PortfolioGrid.data[i].id = group;
                            symbol = PortfolioGrid.data[i][2].value;
                            quantity = PortfolioGrid.data[i][3].numeric;
                            basis = PortfolioGrid.data[i][6].numeric;
                            marketValue = PortfolioGrid.data[i][7].numeric;
                            gain = PortfolioGrid.data[i][8].numeric;
                        }
                    }
                    else
                    {
                        PortfolioGrid.data[i].id = group;
                        quantity += PortfolioGrid.data[i][3].numeric;
                        symbol = PortfolioGrid.data[i][2].value;
                        basis += PortfolioGrid.data[i][6].numeric;
                        marketValue += PortfolioGrid.data[i][7].numeric;
                        gain += PortfolioGrid.data[i][8].numeric;
                    }
                }
                row = new RowDataProvider();
                row.id = -1;

                // id, date, symbol, quantity, purchase price, current price, basis, market value, gain, trade
                row.Add(new GridColumnData());
                row[0].value = "";
                row[0].numeric = 0;

                row.Add(new GridColumnData());
                row[1].value = "";
                row[1].numeric = 0;

                row.Add(new GridColumnData());
                row[2].value = "";// PortfolioGrid.data[i - 1][2].value;
                row[2].numeric = 0;

                row.Add(new GridColumnData());
                row[3].value = "";
                row[3].numeric = 0;

                row.Add(new GridColumnData());
                row[4].value = "";// string.Format("{0:C}", holdings[i].purchasePrice);
                row[4].numeric = 0;// (int)(holdings[i].purchasePrice * 100);

                row.Add(new GridColumnData());
                row[5].value = "Totals";
                row[5].numeric = 0;

                row.Add(new GridColumnData());
                row[6].value = string.Format("{0:C}", basisTotal/100);
                row[6].numeric = (int)(basisTotal);

                row.Add(new GridColumnData());
                row[7].value = string.Format("{0:C}", marketValueTotal / 100);
                row[7].numeric = (int)(marketValueTotal);

                row.Add(new GridColumnGainData());
                row[8].value = string.Format("{0:C}", gainTotal / 100);
                row[8].numeric = (int)(gainTotal);
                (row[8] as GridColumnGainData).increased = gainTotal == 0 ? 0 : (gainTotal > 0 ? 1 : -1);

                row.Add(new GridColumnData());
                row[9].value = "";// "SELL";
                row[9].numeric = 0;// i;
                PortfolioGrid.data.Add(row);
                PortfolioGrid.setData(PortfolioGrid.data);
                ToolTip.setData(graphData);
            }
            else
            {
                PortfolioGrid.AlternateColors = true;
                isBySymbol = false;
                if (dataRows != null)
                {
                    PortfolioGrid.setData(dataRows);
                    PortfolioGrid.Sort();
                    ToolTip.setData(rowsGraphData);
                }
                dataRows = null;
            }
        }
Ejemplo n.º 2
0
        public override void onSectionReady()
        {
            if (App.BSL == null || Login.UserInfo == null)
            {
                this.Visibility = Visibility.Hidden;
                return;
            }

            Update.Text = "as of " + DateTime.Now;

            try
            {
                GetHoldingsAsync caller1 = new GetHoldingsAsync(GetHoldings);
                // Initiate the asychronous call.
                IAsyncResult result1 = caller1.BeginInvoke(null, null);
                // Repeat
                GetCustomerAsync caller2 = new GetCustomerAsync(GetCustomer);
                // Initiate the asychronous call.
                IAsyncResult result2 = caller2.BeginInvoke(null, null);
                MarketSummaryDataModelWS summary = App.BSL.getMarketSummary();
                List<HoldingDataModel> holdings = caller1.EndInvoke(result1);
                AccountDataModel customer = caller2.EndInvoke(result2);
                decimal marketValue = 0;
                decimal gain = 0;
                decimal basis = 0;
                decimal _gain = (decimal)0.00;
                decimal percentGain = (decimal)0.00;

                for (int i = 0; i < holdings.Count; i++)
                {
                    QuoteDataModel quote = App.BSL.getQuote(holdings[i].quoteID);
                    decimal _marketValue = (decimal)holdings[i].quantity * quote.price;
                    decimal _basis = (decimal)holdings[i].quantity * (decimal)holdings[i].purchasePrice;
                    gain += _marketValue - _basis;
                    marketValue += _marketValue;
                    basis += _basis;
                }

                AccountID.Text = customer.accountID.ToString();
                CreationDate.Text = customer.creationDate.ToString();
                LoginCount.Text = customer.loginCount.ToString();
                OpenBalance.Text = string.Format("{0:C}", customer.openBalance);
                Balance.Text = string.Format("{0:C}", customer.balance);
                NumHoldings.Text = holdings.Count.ToString();
                HoldingsTotal.Text = string.Format("{0:C}", marketValue);
                decimal totalcashandholdings = marketValue + customer.balance;
                SumOfCashHoldings.Text = string.Format("{0:C}", totalcashandholdings);
                _gain = totalcashandholdings - customer.openBalance;
                if (customer.openBalance != 0)
                    percentGain = gain / customer.openBalance * 100;
                else
                    percentGain = 0;

                Gain.Text = string.Format("{0:C}", _gain);
                PercentGain.Text = string.Format("{0:N}%", percentGain);
                if (_gain > 0)
                {
                    PercentGain.Foreground = new SolidColorBrush(Color.FromRgb(37, 120, 32));

                    GainIcon icon = new GainIcon();
                    icon.VerticalAlignment = VerticalAlignment.Bottom;
                    icon.HorizontalAlignment = HorizontalAlignment.Left;
                    icon.Margin = new Thickness(PercentGain.Margin.Left + PercentGain.ActualWidth + 40, PercentGain.Margin.Top, PercentGain.Margin.Right, PercentGain.Margin.Bottom);
                    LayoutRoot.Children.Add(icon);
                }
                else if (_gain < 0)
                {
                    PercentGain.Foreground = new SolidColorBrush(Color.FromRgb(191, 0, 0));
                    LossIcon icon = new LossIcon();
                    icon.VerticalAlignment = VerticalAlignment.Bottom;
                    icon.HorizontalAlignment = HorizontalAlignment.Left;
                    icon.Margin = new Thickness(PercentGain.Margin.Left + PercentGain.ActualWidth + 40, PercentGain.Margin.Top, PercentGain.Margin.Right, PercentGain.Margin.Bottom);
                    LayoutRoot.Children.Add(icon);

                }
                else
                    PercentGain.Foreground = new SolidColorBrush(Color.FromRgb(0, 0, 0));

                
                TSIA.Text = String.Format("{0:N}", summary.TSIA);
                Volume.Text = String.Format("{0:N}", summary.volume);

                DataProvider data = new DataProvider();
                for (int i = 0; i < summary.topGainers.Count; i++)
                {
                    QuoteDataModel quote = summary.topGainers[i];



                    RowDataProvider row = new RowDataProvider();
                    row.id = i;

                    // symbol, current price, gain
                    row.Add(new GridColumnData());
                    row[0].value = quote.symbol;
                    row[0].numeric = i;

                    row.Add(new GridColumnGainData());
                    row[1].value = string.Format("{0:C}", quote.price);
                    row[1].numeric = (int)(quote.price * 100);
                    (row[1] as GridColumnGainData).increased = quote.change == 0 ? 0 : (quote.change > 0 ? 1 : -1);

                    row.Add(new GridColumnGainData());
                    row[2].value = string.Format("{0:C}", quote.change);
                    row[2].numeric = (int)(quote.change * 100);
                    (row[2] as GridColumnGainData).increased = quote.change == 0 ? 0 : (quote.change > 0 ? 1 : -1);

                    data.Add(row);
                }

                GainGrid.setData(data);

                data = new DataProvider();
                for (int i = 0; i < summary.topLosers.Count; i++)
                {
                    QuoteDataModel quote = summary.topLosers[i];




                    RowDataProvider row = new RowDataProvider();
                    row.id = i;

                    // symbol, current price, gain
                    row.Add(new GridColumnData());
                    row[0].value = quote.symbol;
                    row[0].numeric = i;

                    row.Add(new GridColumnGainData());
                    row[1].value = string.Format("{0:C}", quote.price);
                    row[1].numeric = (int)(quote.price * 100);
                    (row[1] as GridColumnGainData).increased = quote.change == 0 ? 0 : (quote.change > 0 ? 1 : -1);

                    row.Add(new GridColumnGainData());
                    row[2].value = string.Format("{0:C}", quote.change);
                    row[2].numeric = (int)(quote.change * 100);
                    (row[2] as GridColumnGainData).increased = quote.change == 0 ? 0 : (quote.change > 0 ? 1 : -1);

                    data.Add(row);
                }

                LoseGrid.setData(data);

                SessionCreateDate.Text = Login.LoginTime.ToString();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "StockTrader - Exception", MessageBoxButton.OK, MessageBoxImage.Warning);
            }
            this.Visibility = Visibility.Visible;
        }
Ejemplo n.º 3
0
        public override void onSectionReady()
        {
            PortfolioGrid.ApplyEffects();

            // load data
            if (App.BSL == null || Login.UserInfo == null)
            {
                this.Visibility = Visibility.Hidden;
                return;
            }

            try
            {
                List<HoldingDataModel> holdings = App.BSL.getHoldings(Login.UserInfo.profileID);
                Update.Text = "as of " + DateTime.Now;
                DataProvider data = new DataProvider();
                List<PieElement> graphData = rowsGraphData = new List<PieElement>();
                for (int i = 0; i < holdings.Count; i++)
                {
                    QuoteDataModel quote = App.BSL.getQuote(holdings[i].quoteID);

                    decimal marketValue = (decimal)holdings[i].quantity * quote.price;
                    decimal basis = (decimal)holdings[i].quantity * (decimal)holdings[i].purchasePrice;
                    decimal gain = marketValue - basis;

                    graphData.Add(new PieElement(quote.symbol, (double)marketValue));


                    RowDataProvider row = new RowDataProvider();
                    row.id = i;

                    // id, date, symbol, quantity, purchase price, current price, basis, market value, gain, trade
                    row.Add(new GridColumnData());
                    row[0].value = holdings[i].holdingID.ToString();
                    row[0].numeric = holdings[i].holdingID;

                    row.Add(new GridColumnData());
                    row[1].value = holdings[i].purchaseDate.ToString();
                    row[1].numeric = (int)(holdings[i].purchaseDate.Ticks / 10000);

                    row.Add(new GridColumnData());
                    row[2].value = holdings[i].quoteID;
                    row[2].numeric = i;

                    row.Add(new GridColumnData());
                    row[3].value = string.Format("{0:0,0}", holdings[i].quantity);
                    row[3].numeric = (int)holdings[i].quantity;

                    row.Add(new GridColumnData());
                    row[4].value = string.Format("{0:C}", holdings[i].purchasePrice);
                    row[4].numeric = (int)(holdings[i].purchasePrice * 100);

                    row.Add(new GridColumnData());
                    row[5].value = string.Format("{0:C}", quote.price);
                    row[5].numeric = (int)(quote.price * 100);

                    row.Add(new GridColumnData());
                    row[6].value = string.Format("{0:C}", basis);
                    row[6].numeric = (int)(basis * 100);

                    row.Add(new GridColumnData());
                    row[7].value = string.Format("{0:C}", marketValue);
                    row[7].numeric = (int)(marketValue * 100);

                    row.Add(new GridColumnGainData());
                    row[8].value = string.Format("{0:C}", gain);
                    row[8].numeric = (int)(gain * 100);
                    (row[8] as GridColumnGainData).increased = gain == 0 ? 0 : (gain > 0 ? 1 : -1);

                    row.Add(new GridColumnData());
                    row[9].value = "SELL";
                    row[9].numeric = i;

                    data.Add(row);
                }

                PortfolioGrid.setData(data);
                ToolTip.setData(graphData);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "StockTrader - Exception", MessageBoxButton.OK, MessageBoxImage.Warning);
            }
            this.Visibility = Visibility.Visible;
        }
Ejemplo n.º 4
0
        public void LoadData()
        {
            // get quotes based on QuotesParameter
            if (App.BSL == null || Login.UserInfo == null) return;

            try
            {
                Update.Text = "as of " + DateTime.Now;
                GetQuote.Text = QuotesParameter;
                string[] quotes = QuotesParameter.Split(new char[] { ' ', ',', ';' });
                DataProvider data = new DataProvider();
                foreach (string quote in quotes)
                {
                    string quoteTrim = quote.Trim();
                    if (!quoteTrim.Equals(""))
                    {
                        QuoteDataModel quoteData = App.BSL.getQuote(quoteTrim);
                        if (quoteData == null) continue;

                        RowDataProvider row = new RowDataProvider();
                        data.Add(row);
                        row.id = data.Count - 1;

                        GridColumnData symbol = new GridColumnData();
                        symbol.value = quoteData.symbol;
                        symbol.numeric = (int)(quoteData.price * 100);
                        row.Add(symbol);

                        GridColumnData company = new GridColumnData();
                        company.value = quoteData.companyName;
                        company.numeric = (int)(quoteData.price * 100);
                        row.Add(company);

                        GridColumnData volume = new GridColumnData();
                        volume.value = string.Format("{0:0,0}", quoteData.volume);
                        volume.numeric = (int)(quoteData.volume * 100);
                        row.Add(volume);

                        GridColumnData range = new GridColumnData();
                        range.value = string.Format("{0:C}", quoteData.low) + " - " + string.Format("{0:C}", quoteData.high);
                        range.numeric = (int)(quoteData.low * 100);
                        row.Add(range);

                        GridColumnData open = new GridColumnData();
                        open.value = string.Format("{0:C}", quoteData.open);
                        open.numeric = (int)(quoteData.low * 100);
                        row.Add(open);

                        GridColumnGainData current = new GridColumnGainData();
                        current.value = string.Format("{0:C}", quoteData.price);
                        current.numeric = (int)(quoteData.price * 100);
                        current.increased = quoteData.change == 0 ? 0 : (quoteData.change > 0 ? 1 : -1);
                        row.Add(current);

                        GridColumnGainData gain = new GridColumnGainData();
                        gain.value = string.Format("{0:C}", quoteData.change);
                        gain.numeric = (int)(quoteData.change * 100);
                        gain.increased = quoteData.change == 0 ? 0 : (quoteData.change > 0 ? 1 : -1);
                        row.Add(gain);

                        GridColumnData buy = new GridColumnData();
                        buy.value = "BUY";
                        buy.numeric = (int)(quoteData.change * 100);
                        row.Add(buy);
                    }
                }

                QuoteGrid.setData(data);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "StockTrader - Exception", MessageBoxButton.OK, MessageBoxImage.Warning);
            }
        }