/// <summary> /// Returns available market data providers along with there configuration information /// </summary> /// <returns></returns> public async Task <IList <MarketDataProvider> > GetAvailableMarketDataProviders() { var availableProvidersInformation = _dataProvidersManager.GetAvailableProviders(); // Safety check incase information was not populated if (availableProvidersInformation == null) { return(null); } MarketDataProviders.Clear(); // Populate Individual Market Data Provider details foreach (var keyValuePair in availableProvidersInformation) { MarketDataProvider tempProvider = new MarketDataProvider() { ProviderType = ProviderType.MarketData, ProviderName = keyValuePair.Key, ConnectionStatus = ConnectionStatus.Disconnected }; tempProvider.ProviderCredentials = keyValuePair.Value; // Add to Collection MarketDataProviders.Add(tempProvider); } return(MarketDataProviders); }
public MarketScannerWindowViewModel(MetroWindow scannerWindow, MarketDataProvider provider, ObservableCollection <MarketDataProvider> providers) { _sendOrderViewModel = new SendOrderViewModel(); _tickDetailsCollection = provider.MarketDetailCollection; _scannerWindow = scannerWindow; _provider = provider; _providers = providers; }
public void RequestNewConnection_SendRequestToServer_ReceiveLogon() { Thread.Sleep(5000); MarketDataProvider provider = new MarketDataProvider(); provider.ProviderType = ProviderType.MarketData; 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)); }
/// <summary> /// Called when disconnect request is received for given Market Data Provider /// </summary> /// <param name="marketDataProvider">Contains provider details</param> private void DisconnectMarketDataProvider(MarketDataProvider marketDataProvider) { // Check current provider status if (marketDataProvider.ConnectionStatus.Equals(ConnectionStatus.Connected)) { // Forward disconnect request _marketDataManager.Disconnect(marketDataProvider.ProviderName); } else { if (Logger.IsInfoEnabled) { Logger.Info(marketDataProvider.ProviderName + " connection status is already set to dis-connected.", _type.FullName, "DisconnectMarketDataProvider"); } } }
/// <summary> /// Called when new Connection request is made by the user /// </summary> /// <param name="marketDataProvider"></param> private void NewConnectionRequest(MarketDataProvider marketDataProvider) { // Only entertain 'Market Data Provider' related calls if (!marketDataProvider.ProviderType.Equals(ProviderType.MarketData)) { return; } if (marketDataProvider.ConnectionStatus.Equals(ConnectionStatus.Disconnected)) { // Open a new market data connection ConnectMarketDataProvider(marketDataProvider); } else if (marketDataProvider.ConnectionStatus.Equals(ConnectionStatus.Connected)) { // Close existing connection DisconnectMarketDataProvider(marketDataProvider); } }
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"); }
/// <summary> /// Called when connection request is received for given Market Data Provider /// </summary> /// <param name="marketDataProvider">Contains provider details</param> private void ConnectMarketDataProvider(MarketDataProvider marketDataProvider) { // Check if the provider already exists in the local map if (!_providersMap.ContainsKey(marketDataProvider.ProviderName)) { // Add incoming provider to local map _providersMap.Add(marketDataProvider.ProviderName, marketDataProvider); } // Check current provider status if (marketDataProvider.ConnectionStatus.Equals(ConnectionStatus.Disconnected)) { // Forward connection request _marketDataManager.Connect(marketDataProvider.ProviderName); } else { if (Logger.IsInfoEnabled) { Logger.Info(marketDataProvider.ProviderName + " connection status is already set to connected.", _type.FullName, "ConnectMarketDataProvider"); } } }