public TradeConsole()
        {
            InitializeComponent();

            _alertManager = new AlertManager();
            _alertManager.ThrowEvent += (sender, args) => OnAlertEvent(args);

            var repo = new Store();

            AllInstruments.SetInstruments(repo.GetInstruments());

            var alerts = repo.GetOpenAlerts();

            foreach (var alert in alerts)
            {
                var instrument = AllInstruments.GetInstrument(alert.Instrument.Market, alert.Instrument.Symbol);

                if (instrument == null)
                    continue;

                Alert a = new Alert
                {
                    AlertID = alert.AlertID,
                    Instrument = instrument,
                    Finished = alert.DateClosed != null,
                    OpeningDate = alert.DateOpened,
                    PriceTarget = alert.PriceTarget,
                    TargetDirection = alert.TargetDirection
                };

                _alertManager.AddAlert(a);
            }

            EnumeratePlans();

            _tickPunker = new TickPunker();
            _tickPunker.ReceivedTick += new ReceivedTickEventHandler(GotTick);
            _tickPunker.StartWatcher();

            AddTextOutput("Started");
        }
        private void AddToStore(Alert alert)
        {
            var repo = new Store();

            repo.AddAlert(alert);
        }
        private void Persist()
        {
            if (DateTime.UtcNow < _nextPersist)
                return;

            AddTextOutput("Persist");

            // Put 1 minute between persists
            _nextPersist = DateTime.UtcNow.AddMinutes(1);

            var repo = new Store();

            foreach (var alert in _alertManager.Alerts())
                repo.UpdateAlert(alert);

            repo.SaveChanges();
        }