Example #1
0
        public MainViewModel()
        {
            Messenger.Default.Register <LocalModeMessage>(this, HandleLocalModeMessage);
            Messenger.Default.Register <TaxlotMessage>(this, HandleTaxlotMessage);
            Messenger.Default.Register <PositionMessage>(this, HandlePositionsMessage);
            Messenger.Default.Register <TradeCompleteMessage>(this, HandleTradeCompleteMessage);
            Messenger.Default.Register <LimitOrderMessage>(this, HandleLimitOrderMessage);
            Messenger.Default.Register <StockDataResponseMessage>(this, HandleStockDataResponse);
            Messenger.Default.Register <PositionPricingMessage>(this, HandlePositionPricingMessage);
            Messenger.Default.Register <ChartResponseMessage>(this, HandleChartResponseMessage);

            TradeTypeStrings = new ObservableCollection <string>()
            {
                " ", "Buy", "Sell"
            };
            TradeTermStrings = new ObservableCollection <string>()
            {
                " ", "Market", "Limit", "Stop", "Stop Limit"
            };
            TradeDurationStrings = new ObservableCollection <string> {
                " ", "Day", "GTC", "Market Close", "Market Open", "Overnight"
            };
            SecurityTypes = new ObservableCollection <Security> {
                new Stock(), new MutualFund()
            };

            Positions = new ObservableCollection <Position>();
            Taxlots   = new ObservableCollection <Taxlot>();

            SelectedTradeType    = TradeTypeStrings[0];
            SelectedTermType     = TradeTermStrings[0];
            SelectedDurationType = TradeDurationStrings[0];
            ChartSubtitle        = "All Positions";
            PreviewButtonText    = "Preview Order";
            ShowLimitButtonText  = "Show Limit Orders";
            LimitOrdersHidden    = true;
            LimitBoxActive       = false;
            OrderTermsOK         = false;
            LimitPrice           = 0;
            TotalValue           = 0;
            TotalCostBasis       = 0;
            TotalGainLoss        = 0;
            AlertBoxMessage      = "";
            LimitOrderIsSelected = false;
            _canLoad             = true;
            _canSave             = true;
            _hiddenPositions     = new List <Position>();

            _chartService               = SimpleIoc.Default.GetInstance <IChartService>();
            _stockDataService           = SimpleIoc.Default.GetInstance <IStockDataService>();
            _portfolioDatabaseService   = SimpleIoc.Default.GetInstance <IPortfolioDatabaseService>();
            _portfolioManagementService = SimpleIoc.Default.GetInstance <IPortfolioManagementService>();



            //Notify other classes that startup is complete.
            Messenger.Default.Send <StartupCompleteMessage>(new StartupCompleteMessage(true));
        }
        public PortfolioManagementService(IStockDataService stockDataService, IPortfolioDatabaseService portfolioDatabaseService)
        {
            _stockDataService         = stockDataService;
            _portfolioDatabaseService = portfolioDatabaseService;

            //Load known security info from SQL DB
            _securityDatabaseList = _stockDataService.LoadSecurityDatabase();

            //Download limit orders from SQL DB
            GetLimitOrderList();

            //Create the core List<T>'s of taxlots, positions, and securities
            BuildPortfolioSecurities();

            _timer          = new DispatcherTimer();
            _timer.Tick    += _timer_Tick;
            _timer.Interval = new TimeSpan(0, 0, 10);
        }