public void InitiateWalk_GeneratesSubsequentTicks_AsExpected()
        {
            var randomWalkStrategy = new MarkovEquityStrategy();
            var randomWalk         = new EquitiesMarkovProcess(
                new NasdaqInitialiser(),
                randomWalkStrategy,
                this._heartbeat,
                this._logger);
            var stream   = new ExchangeStream(new UnsubscriberFactory <EquityIntraDayTimeBarCollection>());
            var observer = new RecordingObserver <EquityIntraDayTimeBarCollection>(this._logger, 5);

            stream.Subscribe(observer);

            randomWalk.InitiateWalk(stream);

            var timeOut = DateTime.UtcNow.AddSeconds(5);

            while (observer.Buffer.Count < 2 && DateTime.UtcNow < timeOut)
            {
                // don't sleep the thread
            }

            Assert.AreEqual(observer.Buffer.Count, 2);

            randomWalk.TerminateWalk();
        }
예제 #2
0
        public void TickSecurity_ReturnsNullTick_ForNullArgument()
        {
            var strategy = new MarkovEquityStrategy();

            var result = strategy.AdvanceFrame(null, DateTime.UtcNow, true);

            Assert.IsNull(result);
        }
        public IEquityDataGenerator Finish()
        {
            var equityDataStrategy  = new MarkovEquityStrategy();
            var nasdaqInitialiser   = new NasdaqInitialiser();
            var equityDataGenerator = new EquitiesMarkovProcess(
                nasdaqInitialiser,
                equityDataStrategy,
                this._heartbeat,
                this._logger);

            return(equityDataGenerator);
        }
예제 #4
0
        public void TickSecurity_UpdatesWithNewTickData_Printing100IterationWalk()
        {
            var strategy    = new MarkovEquityStrategy();
            var identifiers = new InstrumentIdentifiers(
                string.Empty,
                string.Empty,
                string.Empty,
                "MSFT",
                "MS12345",
                "MSF123456789",
                "MSFT",
                "MSF12341234",
                "MSFT",
                "MSFT",
                "MSFT",
                "MSFT");
            var security = new FinancialInstrument(
                InstrumentTypes.Equity,
                identifiers,
                "Microsoft",
                "CFI",
                "USD",
                "Microsoft Company");
            var spread = new SpreadTimeBar(
                new Money(66, "GBP"),
                new Money(65, "GBP"),
                new Money(65, "GBP"),
                new Volume(200000));

            var tick = new EquityInstrumentIntraDayTimeBar(
                security,
                spread,
                new DailySummaryTimeBar(1000, "USD", null, 1000, new Volume(200000), DateTime.UtcNow),
                DateTime.UtcNow,
                new Market("1", "NASDAQ", "NASDAQ", MarketTypes.STOCKEXCHANGE));

            var printableInitialSecurity = JsonConvert.SerializeObject(security);

            Console.WriteLine(printableInitialSecurity);

            for (var i = 0; i < 99; i++)
            {
                tick = strategy.AdvanceFrame(tick, DateTime.UtcNow, true);

                var printableGeneratedSecurity = JsonConvert.SerializeObject(security);
                Console.WriteLine(printableGeneratedSecurity);

                Assert.IsTrue(tick.SpreadTimeBar.Bid.Value >= tick.SpreadTimeBar.Ask.Value);
            }
        }
        public void InitiateWalk_ReceivesTicks_AfterInitiationImmediately()
        {
            var randomWalkStrategy = new MarkovEquityStrategy();
            var randomWalk         = new EquitiesMarkovProcess(
                this._exchangeTickInitialiser,
                randomWalkStrategy,
                this._heartbeat,
                this._logger);
            var stream   = new ExchangeStream(new UnsubscriberFactory <EquityIntraDayTimeBarCollection>());
            var observer = new RecordingObserver <EquityIntraDayTimeBarCollection>(this._logger, 10);

            stream.Subscribe(observer);

            randomWalk.InitiateWalk(stream);

            Assert.AreEqual(observer.Buffer.Count, 1);

            randomWalk.TerminateWalk();
        }