コード例 #1
0
        public void Setup()
        {
            _algo = new QCAlgorithm();
            var historyProvider = new SubscriptionDataReaderHistoryProvider();

            historyProvider.Initialize(null,
                                       new DefaultDataProvider(),
                                       new SingleEntryDataCacheProvider(new DefaultDataProvider()),
                                       new LocalDiskMapFileProvider(),
                                       new LocalDiskFactorFileProvider(),
                                       null);

            _algo.HistoryProvider = historyProvider;

            _tradeBarSecurity = new Security(SecurityExchangeHours.AlwaysOpen(DateTimeZone.Utc),
                                             _tradeBarConfig,
                                             new Cash(CashBook.AccountCurrency, 0, 1m),
                                             SymbolProperties.GetDefault(CashBook.AccountCurrency));

            _quoteBarSecurity = new Security(SecurityExchangeHours.AlwaysOpen(DateTimeZone.Utc),
                                             _quoteBarConfig,
                                             new Cash(CashBook.AccountCurrency, 0, 1m),
                                             SymbolProperties.GetDefault(CashBook.AccountCurrency));

            _brokerageInitializer = new BrokerageModelSecurityInitializer(new DefaultBrokerageModel(),
                                                                          new FuncSecuritySeeder(_algo.GetLastKnownPrice));
        }
コード例 #2
0
        public void BrokerageModelSecurityInitializer_SetLeverageForBuyingPowerModel_Successfully()
        {
            var brokerageModel            = new DefaultBrokerageModel(AccountType.Cash);
            var localBrokerageInitializer = new BrokerageModelSecurityInitializer(brokerageModel,
                                                                                  new FuncSecuritySeeder(_algo.GetLastKnownPrice));

            Assert.AreEqual(1.0, _tradeBarSecurity.Leverage);
            localBrokerageInitializer.Initialize(_tradeBarSecurity);
            Assert.AreEqual(1.0, _tradeBarSecurity.Leverage);
            Assert.AreEqual(1.0, _tradeBarSecurity.BuyingPowerModel.GetLeverage(_tradeBarSecurity));
        }
コード例 #3
0
        public void SetLeverage_DoesNotThrowInvalidOperationException_BrokerageModelSecurityInitializer_Test()
        {
            var crypto = GetCrypto(Symbol);

            var brokerageInitializer = new BrokerageModelSecurityInitializer(
                new BitfinexBrokerageModel(AccountType.Margin),
                SecuritySeeder.Null);

            brokerageInitializer.Initialize(crypto);
            Assert.DoesNotThrow(() => crypto.SetLeverage(2));
        }
        public void ReturnsExpectedTimestamps()
        {
            var symbol   = CoarseFundamental.CreateUniverseSymbol(Market.USA);
            var config   = new SubscriptionDataConfig(typeof(CoarseFundamental), symbol, Resolution.Daily, TimeZones.NewYork, TimeZones.NewYork, false, false, false, false, TickType.Trade, false);
            var security = new Security(
                SecurityExchangeHours.AlwaysOpen(TimeZones.NewYork),
                config,
                new Cash(Currencies.USD, 0, 1),
                SymbolProperties.GetDefault(Currencies.USD),
                ErrorCurrencyConverter.Instance,
                RegisteredSecurityDataTypesProvider.Null,
                new SecurityCache()
                );

            var universeSettings    = new UniverseSettings(Resolution.Daily, 2m, true, false, TimeSpan.FromDays(1));
            var securityInitializer = new BrokerageModelSecurityInitializer(new DefaultBrokerageModel(), SecuritySeeder.Null);
            var universe            = new CoarseFundamentalUniverse(universeSettings, securityInitializer, x => new List <Symbol> {
                Symbols.AAPL
            });

            var fileProvider = new DefaultDataProvider();

            var factory = new BaseDataCollectionSubscriptionEnumeratorFactory();

            var dateStart = new DateTime(2014, 3, 26);
            var dateEnd   = new DateTime(2014, 3, 27);
            var days      = (dateEnd - dateStart).Days + 1;

            var request = new SubscriptionRequest(true, universe, security, config, dateStart, dateEnd);

            using (var enumerator = factory.CreateEnumerator(request, fileProvider))
            {
                dateStart = dateStart.AddDays(-1);
                for (var i = 0; i <= days; i++)
                {
                    Assert.IsTrue(enumerator.MoveNext());

                    var current = enumerator.Current as BaseDataCollection;
                    Assert.IsNotNull(current);
                    Assert.AreEqual(dateStart.AddDays(i), current.Time);
                    Assert.AreEqual(dateStart.AddDays(i), current.EndTime);
                    Assert.AreEqual(dateStart.AddDays(i - 1), current.Data[0].Time);
                    Assert.AreEqual(dateStart.AddDays(i), current.Data[0].EndTime);
                }

                Assert.IsFalse(enumerator.MoveNext());
                Assert.IsNotNull(enumerator.Current);
            }
        }
        public void DoesNotLeakMemory()
        {
            var symbol   = CoarseFundamental.CreateUniverseSymbol(Market.USA);
            var config   = new SubscriptionDataConfig(typeof(CoarseFundamental), symbol, Resolution.Daily, TimeZones.NewYork, TimeZones.NewYork, false, false, false, false, TickType.Trade, false);
            var security = new Security(
                SecurityExchangeHours.AlwaysOpen(TimeZones.NewYork),
                config,
                new Cash(Currencies.USD, 0, 1),
                SymbolProperties.GetDefault(Currencies.USD),
                ErrorCurrencyConverter.Instance,
                RegisteredSecurityDataTypesProvider.Null,
                new SecurityCache()
                );

            var universeSettings    = new UniverseSettings(Resolution.Daily, 2m, true, false, TimeSpan.FromDays(1));
            var securityInitializer = new BrokerageModelSecurityInitializer(new DefaultBrokerageModel(), SecuritySeeder.Null);
            var universe            = new CoarseFundamentalUniverse(universeSettings, securityInitializer, x => new List <Symbol> {
                Symbols.AAPL
            });

            var fileProvider = new DefaultDataProvider();

            var factory = new BaseDataCollectionSubscriptionEnumeratorFactory();

            GC.Collect();
            var ramUsageBeforeLoop = OS.TotalPhysicalMemoryUsed;

            var date = new DateTime(2014, 3, 25);

            const int iterations = 1000;

            for (var i = 0; i < iterations; i++)
            {
                var request = new SubscriptionRequest(true, universe, security, config, date, date);
                using (var enumerator = factory.CreateEnumerator(request, fileProvider))
                {
                    enumerator.MoveNext();
                }
            }

            GC.Collect();
            var ramUsageAfterLoop = OS.TotalPhysicalMemoryUsed;

            Log.Trace($"RAM usage - before: {ramUsageBeforeLoop} MB, after: {ramUsageAfterLoop} MB");

            Assert.IsTrue(ramUsageAfterLoop - ramUsageBeforeLoop < 10);
        }
コード例 #6
0
        public void Setup()
        {
            _algo = new QCAlgorithm();
            var historyProvider = new SubscriptionDataReaderHistoryProvider();

            historyProvider.Initialize(
                new HistoryProviderInitializeParameters(
                    null,
                    null,
                    TestGlobals.DataProvider,
                    new SingleEntryDataCacheProvider(new DefaultDataProvider()),
                    TestGlobals.MapFileProvider,
                    TestGlobals.FactorFileProvider,
                    null,
                    true,
                    new DataPermissionManager()
                    )
                );

            _algo.HistoryProvider = historyProvider;
            _algo.SubscriptionManager.SetDataManager(new DataManagerStub(_algo));
            _tradeBarSecurity = new Security(
                SecurityExchangeHours.AlwaysOpen(TimeZones.NewYork),
                _tradeBarConfig,
                new Cash(Currencies.USD, 0, 1m),
                SymbolProperties.GetDefault(Currencies.USD),
                ErrorCurrencyConverter.Instance,
                RegisteredSecurityDataTypesProvider.Null,
                new SecurityCache()
                );

            _quoteBarSecurity = new Security(
                SecurityExchangeHours.AlwaysOpen(DateTimeZone.ForOffset(Offset.FromHours(-5))),
                _quoteBarConfig,
                new Cash(Currencies.USD, 0, 1m),
                SymbolProperties.GetDefault(Currencies.USD),
                ErrorCurrencyConverter.Instance,
                RegisteredSecurityDataTypesProvider.Null,
                new SecurityCache()
                );

            _brokerageInitializer = new BrokerageModelSecurityInitializer(new DefaultBrokerageModel(),
                                                                          new FuncSecuritySeeder(_algo.GetLastKnownPrice));
        }