Esempio n. 1
0
        public void MappedConfig(bool canonicalUnsubscribeFirst)
        {
            TestDataHandler.UnsubscribeCounter = 0;
            TestDataHandler.SubscribeCounter   = 0;
            var compositeDataQueueHandler = new DataQueueHandlerManager();

            compositeDataQueueHandler.SetJob(new LiveNodePacket {
                Brokerage = "OandaBrokerage", DataQueueHandler = "[ \"TestDataHandler\" ]"
            });

            var canonicalSymbol = Symbols.ES_Future_Chain.UpdateMappedSymbol(Symbols.Future_ESZ18_Dec2018.ID.ToString());
            var canonicalConfig = GetConfig(canonicalSymbol);
            var contractConfig  = GetConfig(Symbols.Future_ESZ18_Dec2018);

            var enumerator  = new LiveSubscriptionEnumerator(canonicalConfig, compositeDataQueueHandler, (_, _) => {});
            var enumerator2 = new LiveSubscriptionEnumerator(contractConfig, compositeDataQueueHandler, (_, _) => {});

            var firstUnsubscribe  = canonicalUnsubscribeFirst ? canonicalConfig : contractConfig;
            var secondUnsubscribe = canonicalUnsubscribeFirst ? contractConfig : canonicalConfig;

            Assert.AreEqual(2, TestDataHandler.SubscribeCounter);

            compositeDataQueueHandler.UnsubscribeWithMapping(firstUnsubscribe);
            Assert.AreEqual(1, TestDataHandler.UnsubscribeCounter);

            compositeDataQueueHandler.UnsubscribeWithMapping(secondUnsubscribe);
            Assert.AreEqual(2, TestDataHandler.UnsubscribeCounter);

            enumerator.Dispose();
            enumerator2.Dispose();
            compositeDataQueueHandler.Dispose();
        }
Esempio n. 2
0
        public void HandlesSymbolMapping()
        {
            var canonical = Symbols.Fut_SPY_Feb19_2016.Canonical;
            var dataQueue = new TestDataQueueHandler
            {
                DataPerSymbol = new Dictionary <Symbol, List <BaseData> >
                {
                    { Symbols.Fut_SPY_Feb19_2016,
                      new List <BaseData> {
                          new Tick(Time.BeginningOfTime, Symbols.Fut_SPY_Feb19_2016, 1, 1)
                      } },
                    { Symbols.Fut_SPY_Mar19_2016,
                      new List <BaseData> {
                          new Tick(Time.BeginningOfTime, Symbols.Fut_SPY_Mar19_2016, 2, 2)
                      } },
                }
            };
            var config = new SubscriptionDataConfig(typeof(Tick), canonical, Resolution.Tick,
                                                    DateTimeZone.Utc, DateTimeZone.Utc, false, false, false)
            {
                MappedSymbol = Symbols.Fut_SPY_Feb19_2016.ID.ToString()
            };

            var compositeDataQueueHandler = new TestDataQueueHandlerManager();

            compositeDataQueueHandler.ExposedDataHandlers.Add(dataQueue);
            var data = new LiveSubscriptionEnumerator(config, compositeDataQueueHandler, (_, _) => {});

            Assert.IsTrue(data.MoveNext());
            Assert.AreEqual(1, (data.Current as Tick).AskPrice);
            Assert.AreEqual(canonical, (data.Current as Tick).Symbol);

            Assert.IsFalse(data.MoveNext());
            Assert.IsNull(data.Current);

            Assert.AreEqual(2, dataQueue.DataPerSymbol.Count);
            config.MappedSymbol = Symbols.Fut_SPY_Mar19_2016.ID.ToString();
            Assert.AreEqual(1, dataQueue.DataPerSymbol.Count);

            Assert.IsTrue(data.MoveNext());
            Assert.AreEqual(2, (data.Current as Tick).AskPrice);
            Assert.AreEqual(canonical, (data.Current as Tick).Symbol);
            Assert.AreNotEqual(canonical, dataQueue.DataPerSymbol[Symbols.Fut_SPY_Mar19_2016].Single().Symbol);

            Assert.IsFalse(data.MoveNext());
            Assert.IsNull(data.Current);

            Assert.AreEqual(1, dataQueue.DataPerSymbol.Count);

            data.Dispose();
            compositeDataQueueHandler.Dispose();
        }