예제 #1
0
        private void AddNewSymbolExecute()
        {
            // Check if symbol already exists in TickDetailsMap
            if (_provider.IsSymbolLoaded(NewSymbol))
            {
                // Select existing TickDetail
                SelectedTickDetail = TickDetailsCollection.First(x => x.Security.Symbol == NewSymbol);
            }
            else
            {
                // Create new tick detail's object
                MarketDataDetail tickDetail = new MarketDataDetail(new Security()
                {
                    Symbol = NewSymbol
                });

                // Add Tick Detail object to Provider's maps
                _provider.AddMarketDetail(tickDetail);

                // Select new tick detail in DataGrid
                SelectedTickDetail = tickDetail;

                // Create a new subscription request for requesting market data
                var subscriptionRequest = new SubscriptionRequest(tickDetail.Security, _provider, MarketDataType.Tick, SubscriptionType.Subscribe);

                // Raise Event to notify listeners
                EventSystem.Publish <SubscriptionRequest>(subscriptionRequest);
            }

            // Clear NewSymbol string
            NewSymbol = string.Empty;
        }
        public void UnsubscribeMarketData_SendRequestToServer()
        {
            Thread.Sleep(5000);
            MarketDataProvider provider = new MarketDataProvider();

            provider.ConnectionStatus = ConnectionStatus.Disconnected;
            provider.ProviderName     = TradeHubConstants.MarketDataProvider.Simulated;

            // Rasie event to request connection
            EventSystem.Publish <MarketDataProvider>(provider);

            Thread.Sleep(5000);

            Assert.IsTrue(provider.ConnectionStatus.Equals(ConnectionStatus.Connected));

            // Create Security to use the Symbol information
            Security security = new Security()
            {
                Symbol = "AAPL"
            };

            // Create Tick details to hold market data information
            MarketDataDetail tickDetails = new MarketDataDetail(security);

            // Add TickDetails object to
            provider.AddMarketDetail(tickDetails);

            {
                // Create a new subscription request for requesting market data
                var subscriptionRequest = new SubscriptionRequest(security, provider, MarketDataType.Tick, SubscriptionType.Subscribe);

                EventSystem.Publish <SubscriptionRequest>(subscriptionRequest);
            }

            Thread.Sleep(2000);

            {
                // Create a new subscription request for requesting market data
                var subscriptionRequest = new SubscriptionRequest(security, provider, MarketDataType.Tick, SubscriptionType.Unsubscribe);

                EventSystem.Publish <SubscriptionRequest>(subscriptionRequest);
            }
        }
        public void PersistTickDataTest()
        {
            Thread.Sleep(10000);
            MarketDataProvider provider = new MarketDataProvider();

            provider.ConnectionStatus = ConnectionStatus.Disconnected;
            provider.ProviderName     = TradeHubConstants.MarketDataProvider.Simulated;

            // Rasie event to request connection
            EventSystem.Publish <MarketDataProvider>(provider);

            Thread.Sleep(5000);

            Assert.IsTrue(provider.ConnectionStatus.Equals(ConnectionStatus.Connected));

            // Create Security to use the Symbol information
            Security security = new Security()
            {
                Symbol = "TEST"
            };

            // Create a new subscription request for requesting market data
            var subscriptionRequest = new SubscriptionRequest(security, provider, MarketDataType.Tick,
                                                              SubscriptionType.Subscribe);

            // Create Tick details to hold market data information
            MarketDataDetail dataDetail = new MarketDataDetail(security);

            dataDetail.PersistenceInformation.SaveTrades = true;

            // Add TickDetails object to
            provider.AddMarketDetail(dataDetail);

            EventSystem.Publish <SubscriptionRequest>(subscriptionRequest);

            Thread.Sleep(20000);
        }
        public void RequestMarketData_SendRequestToServer_ReceiveMultipleMarketDataMessages()
        {
            Thread.Sleep(5000);
            MarketDataProvider provider = new MarketDataProvider();

            provider.ConnectionStatus = ConnectionStatus.Disconnected;
            provider.ProviderName     = TradeHubConstants.MarketDataProvider.Simulated;

            // Rasie event to request connection
            EventSystem.Publish <MarketDataProvider>(provider);

            Thread.Sleep(5000);

            Assert.IsTrue(provider.ConnectionStatus.Equals(ConnectionStatus.Connected));

            // Create Security to use the Symbol information
            Security security = new Security()
            {
                Symbol = "ERX"
            };

            // Create a new subscription request for requesting market data
            var subscriptionRequest = new SubscriptionRequest(security, provider, MarketDataType.Tick, SubscriptionType.Subscribe);

            // Create Tick details to hold market data information
            MarketDataDetail tickDetails = new MarketDataDetail(security);

            // Add TickDetails object to
            provider.AddMarketDetail(tickDetails);

            EventSystem.Publish <SubscriptionRequest>(subscriptionRequest);

            Thread.Sleep(60000);

            Assert.IsTrue(tickDetails.AskPrice.Equals(1.23M), "Best Ask Price");
            Assert.IsTrue(tickDetails.BidRecordsCollection.Count.Equals(6), "LOB Collection count");
        }
 public LimitOrderBookViewModel(MarketDataDetail marketDataDetail)
 {
     _bidRecords = marketDataDetail.BidRecordsCollection;
     _askRecords = marketDataDetail.AskRecordsCollection;
 }