static async void RunLevel1Example()
        {
            // *************************************

            // Step 1 - !!! Configure your credentials for IQConnect in user environment variable or app.config !!!
            //              Check the documentation for more information.

            // Step 2 - Run IQConnect launcher
            IQFeedLauncher.Start();

            // Step 3 - Use the appropriate factory to create the client
            var level1Client = Level1ClientFactory.CreateNew();

            // Step 4 - Connect it
            level1Client.Connect();

            // Step 5 - Register to appropriate events
            level1Client.Timestamp += timestampMsg => Console.WriteLine(timestampMsg);
            level1Client.Update    += updateMsg => Console.WriteLine(updateMsg);

            // Step 6 - Make your streaming Leve1 requests
            level1Client.ReqWatch("AAPL");

            await Task.Delay(TimeSpan.FromMinutes(1));
        }
        public async Task RunAsync()
        {
            // Configure your credentials for IQConnect in user environment variable or app.config !!!
            // Check the documentation for more information.

            // Run IQConnect launcher
            IQFeedLauncher.Start();

            // Choose between 3 different handlers:
            // 1- Level1MessageDecimalHandler   (for decimal)
            // 2- Level1MessageDoubleHandler    (for double) - default one through CreateNew
            // 3- Level1MessageFloatHandler     (for float)
            var level1Client = Level1ClientFactory.CreateNew(
                IQFeedDefault.Hostname,
                IQFeedDefault.Level1Port,
                Level1Default.SnapshotTimeout,
                new Level1MessageDecimalHandler());

            // Connect
            level1Client.Connect();

            // retrieve UpdateSummaryMessage<decimal>
            var decimalUpdateSummary = await level1Client.GetUpdateSummarySnapshotAsync("AAPL");

            // convert UpdateSummaryMessage<decimal> to UpdateSummaryMessage<float>
            var floatUpdateSummary = decimalUpdateSummary.ToFloat();
        }
        public RealTimeMarketDataService()
        {
            IQFeedLauncher.Start("MY_LOGIN", "MY_PASSWORD", "MY_PRODUCT_ID", "MY_PRODUCT_VERSION");

            _level1Client = Level1ClientFactory.CreateNew();
            _level1Client.Connect();
        }
        public static Downloader CreateNew(string dataDirectory, int numberOfClients)
        {
            IQFeedLauncher.Start();
            var lookupClient = LookupClientFactory.CreateNew("localhost", IQFeedDefault.LookupPort, numberOfClients, TimeSpan.FromMinutes(20));

            lookupClient.Connect();

            var level1Client = Level1ClientFactory.CreateNew();

            level1Client.Connect();

            return(new Downloader(dataDirectory, lookupClient, level1Client, numberOfClients));
        }
        public static void Level1Client_can_connect_and_terminate_without_error_forceIpv4(bool forceIpv4)
        {
            // Arrange
            SocketClient.ForceIpv4 = forceIpv4;

            // Act
            IQFeedLauncher.Start();

            var client = Level1ClientFactory.CreateNew();

            client.Connect();
            client.Disconnect();

            IQFeedLauncher.Terminate();

            // Assert
            Assert.Pass($"IQFeedLauncher and the level1 client were able to connect and disconnect/terminate without error with the 'SocketClient.ForceIpv4' value set to '{forceIpv4}'.");
        }
Example #6
0
        public async Task RunAsync()
        {
            // *************************************

            // Step 1 - !!! Configure your credentials for IQConnect in user environment variable or app.config !!!
            //              Check the documentation for more information.

            // Step 2 - Run IQConnect launcher
            IQFeedLauncher.Start();

            // Step 3 - Use the appropriate factory to create the client
            var level1Client = Level1ClientFactory.CreateNew();

            // Step 4 - Connect it
            level1Client.Connect();

            // Step 5 - Register to appropriate events
            level1Client.Fundamental += Level1ClientOnFundamental;
            level1Client.Summary     += Level1ClientOnSummary;
            level1Client.Update      += Level1ClientOnSummary;
            level1Client.Timestamp   += Level1ClientOnTimestamp;

            // Step 6 - Make your streaming Leve1 requests
            level1Client.ReqWatch("AAPL");

            Console.WriteLine("Watching APPL for the next 30 seconds... Please be patient ;-)\n");
            await Task.Delay(TimeSpan.FromSeconds(30));

            // Step 7 - Unwatch and unregister events
            level1Client.ReqUnwatch("AAPL");

            level1Client.Fundamental -= Level1ClientOnFundamental;
            level1Client.Summary     -= Level1ClientOnSummary;
            level1Client.Update      -= Level1ClientOnSummary;
            level1Client.Timestamp   -= Level1ClientOnTimestamp;
        }
 public void SetUp()
 {
     _level1MessageHandler = new Level1MessageDynamicHandler();
     _level1Client         = Level1ClientFactory.CreateNew(_level1MessageHandler);
     _level1Client.Connect();
 }
 public void SetUp()
 {
     _level1Client = Level1ClientFactory.CreateNew();
     _level1Client.Connect();
 }
        public async Task RunAsync()
        {
            // *************************************

            // Step 1 - !!! Configure your credentials for IQConnect in user environment variable or app.config !!!
            //              Check the documentation for more information.

            // Step 2 - Run IQConnect launcher
            IQFeedLauncher.Start();

            // Step 3 - Create an array that includes the fields desired for Update and Summary messages
            var fields = new[]
            {
                // The IQFeed servers *ALWAYS* include Symbol as first message data field, regardless of fields requested via SelectUpdateFieldName/SELECT UPDATE FIELDS
                // DynamicFieldset.Symbol *MUST* be the first dynamic field in the array at this time.  Parsing errors will result otherwise.

                DynamicFieldset.Symbol,
                DynamicFieldset.SevenDayYield,
                DynamicFieldset.Ask,
                DynamicFieldset.AskChange,
                DynamicFieldset.AskMarketCenter,
                DynamicFieldset.AskSize,
                DynamicFieldset.AskTime,
                DynamicFieldset.AvailableRegions,
                DynamicFieldset.AverageMaturity,
                DynamicFieldset.Bid,
                DynamicFieldset.BidChange,
                DynamicFieldset.BidMarketCenter,
                DynamicFieldset.BidSize,
                DynamicFieldset.BidTime,
                DynamicFieldset.Change,
                DynamicFieldset.ChangeFromOpen,
                DynamicFieldset.Close,
                DynamicFieldset.CloseRange1,
                DynamicFieldset.CloseRange2,
                DynamicFieldset.DaysToExpiration,
                DynamicFieldset.DecimalPrecision,
                DynamicFieldset.Delay,
                DynamicFieldset.ExchangeID,
                DynamicFieldset.ExtendedTrade,
                DynamicFieldset.ExtendedTradeDate,
                DynamicFieldset.ExtendedTradeMarketCenter,
                DynamicFieldset.ExtendedTradeSize,
                DynamicFieldset.ExtendedTradeTime,
                DynamicFieldset.ExtendedTradingChange,
                DynamicFieldset.ExtendedTradingDifference,
                DynamicFieldset.FinancialStatusIndicator,
                DynamicFieldset.FractionDisplayCode,
                DynamicFieldset.High,
                DynamicFieldset.Last,
                DynamicFieldset.LastDate,
                DynamicFieldset.LastMarketCenter,
                DynamicFieldset.LastSize,
                DynamicFieldset.LastTime,
                DynamicFieldset.Low,
                DynamicFieldset.MarketCapitalization,
                DynamicFieldset.MarketOpen,
                DynamicFieldset.MessageContents,
                DynamicFieldset.MostRecentTrade,
                DynamicFieldset.MostRecentTradeConditions,
                DynamicFieldset.MostRecentTradeDate,
                DynamicFieldset.MostRecentTradeMarketCenter,
                DynamicFieldset.MostRecentTradeSize,
                DynamicFieldset.MostRecentTradeTime,
                DynamicFieldset.NetAssetValue,
                DynamicFieldset.NumberOfTradesToday,
                DynamicFieldset.Open,
                DynamicFieldset.OpenInterest,
                DynamicFieldset.OpenRange1,
                DynamicFieldset.OpenRange2,
                DynamicFieldset.PercentChange,
                DynamicFieldset.PercentOffAverageVolume,
                DynamicFieldset.PreviousDayVolume,
                DynamicFieldset.PriceEarningsRatio,
                DynamicFieldset.Range,
                DynamicFieldset.RestrictedCode,
                DynamicFieldset.Settle,
                DynamicFieldset.SettlementDate,
                DynamicFieldset.Spread,
                DynamicFieldset.Tick,
                DynamicFieldset.TickID,
                DynamicFieldset.TotalVolume,
                DynamicFieldset.Volatility,
                DynamicFieldset.VWAP,
            };

            // Step 4 - Use the appropriate factory to create the client. Pass a new Level1MessageDynamicHandler to indicate dynamic fields in use
            var level1Client = Level1ClientFactory.CreateNew(new Level1MessageDynamicHandler());

            // Step 5 - Connect it
            level1Client.Connect();

            // Step 6 - Request the feed to begin returning selected fields in Summary and Update messages
            level1Client.SelectUpdateFieldName(fields);

            // Step 7 - Register to appropriate events
            level1Client.Fundamental += Level1ClientOnFundamental;
            level1Client.Summary     += Level1ClientOnSummary;
            level1Client.Update      += Level1ClientOnSummary;
            level1Client.Timestamp   += Level1ClientOnTimestamp;

            // Step 8 - Make your streaming Level 1 requests
            level1Client.ReqWatch("AAPL");

            Console.WriteLine("Watching APPL for the next 10 seconds... Please be patient ;-)\n");
            await Task.Delay(TimeSpan.FromSeconds(10));

            // Step 9 - Unwatch and unregister events
            level1Client.ReqUnwatch("AAPL");

            level1Client.Fundamental -= Level1ClientOnFundamental;
            level1Client.Summary     -= Level1ClientOnSummary;
            level1Client.Update      -= Level1ClientOnSummary;
            level1Client.Timestamp   -= Level1ClientOnTimestamp;
        }