public void ChecksMapFileFirstDate() { var algorithm = PerformanceBenchmarkAlgorithms.SingleSecurity_Second; algorithm.Initialize(); algorithm.PostInitialize(); var dataProvider = new DefaultDataProvider(); var resultHandler = new TestResultHandler(); var mapFileProvider = new LocalDiskMapFileProvider(); var factorFileProvider = new LocalDiskFactorFileProvider(mapFileProvider); var factory = new SubscriptionDataReaderSubscriptionEnumeratorFactory(resultHandler, mapFileProvider, factorFileProvider, dataProvider, true, enablePriceScaling: false); var universe = algorithm.UniverseManager.Single().Value; var security = algorithm.AddEquity("AAA", Resolution.Daily); var securityConfig = security.Subscriptions.First(); // start date is before the first date in the map file var subscriptionRequest = new SubscriptionRequest(false, universe, security, securityConfig, new DateTime(2001, 12, 1), new DateTime(2016, 11, 1)); var enumerator = factory.CreateEnumerator(subscriptionRequest, dataProvider); // should initialize the data source reader enumerator.MoveNext(); enumerator.Dispose(); factory.DisposeSafely(); resultHandler.Exit(); var message = ((DebugPacket)resultHandler.Messages.Single()).Message; Assert.IsTrue(message.Equals( "The starting date for symbol AAA, 2001-11-30, has been adjusted to match map file first date 2002-05-22.")); }
public void ChecksMapFileFirstDate() { var algorithm = PerformanceBenchmarkAlgorithms.SingleSecurity_Second; algorithm.Initialize(); algorithm.PostInitialize(); var resultHandler = new TestResultHandler(); using var cache = new ZipDataCacheProvider(TestGlobals.DataProvider); var factory = new SubscriptionDataReaderSubscriptionEnumeratorFactory(resultHandler, TestGlobals.MapFileProvider, TestGlobals.FactorFileProvider, cache, enablePriceScaling: false); var universe = algorithm.UniverseManager.Single().Value; var security = algorithm.AddEquity("AAA", Resolution.Daily); var securityConfig = security.Subscriptions.First(); // start date is before the first date in the map file var subscriptionRequest = new SubscriptionRequest(false, universe, security, securityConfig, new DateTime(2001, 12, 1), new DateTime(2016, 11, 1)); var enumerator = factory.CreateEnumerator(subscriptionRequest, TestGlobals.DataProvider); // should initialize the data source reader enumerator.MoveNext(); enumerator.Dispose(); factory.DisposeSafely(); resultHandler.Exit(); var message = ((DebugPacket)resultHandler.Messages.Single()).Message; Assert.IsTrue(message.Equals( "The starting dates for the following symbols have been adjusted to match their map files first date: [AAA, 2020-09-09]")); }
public void DoesNotLoopEndlesslyIfGetCashBalanceAlwaysThrows() { var ib = _interactiveBrokersBrokerage; Assert.IsTrue(ib.IsConnected); ib.Disconnect(); Assert.IsFalse(ib.IsConnected); var algorithm = new QCAlgorithm(); var marketHoursDatabase = MarketHoursDatabase.FromDataFolder(); var symbolPropertiesDataBase = SymbolPropertiesDatabase.FromDataFolder(); var securityService = new SecurityService(algorithm.Portfolio.CashBook, marketHoursDatabase, symbolPropertiesDataBase, algorithm, RegisteredSecurityDataTypesProvider.Null, new SecurityCacheProvider(algorithm.Portfolio)); algorithm.Securities.SetSecurityService(securityService); algorithm.SetLiveMode(true); var transactionHandler = new BrokerageTransactionHandlerTests.TestBrokerageTransactionHandler(); var testResultHandler = new TestResultHandler(); transactionHandler.Initialize(algorithm, ib, testResultHandler); // Advance current time UTC so cash sync is performed transactionHandler.TestCurrentTimeUtc = transactionHandler.TestCurrentTimeUtc.AddDays(2); // simulate connect always failing EventHandler handler = (s, e) => ib.Client.ClientSocket.Close(); ib.Client.ConnectAck += handler; try { while (true) { transactionHandler.ProcessSynchronousEvents(); Assert.IsFalse(ib.IsConnected); Thread.Sleep(1000); } } catch (Exception exception) { // expect exception from ProcessSynchronousEvents when max attempts reached Assert.That(exception.Message.Contains("maximum number of attempts")); } // perform clean connect so the test can complete Teardown without exceptions ib.Client.ConnectAck -= handler; ib.Connect(); testResultHandler.Exit(); Assert.IsTrue(ib.IsConnected); }