Пример #1
0
 public JsonMtGOX()
 {
     high = new High();
     low = new Low();
     avg = new Avg();
     vwap = new Vwap();
     vol = new Vol();
     lastlocal = new LastLocal();
     lastorig = new LastOrig();
     lastall = new LastAll();
     last = new Last();
     buy = new Buy();
     sell = new Sell();
     rootobject = new RootObject();
     returnObject = new Return();
 }
Пример #2
0
        public async Task should_add_all_google_trades_to_generate_vwap_events()
        {
            // given
            var(testSubject, tradeEventStream, scheduler, vwapServer) = Setup();
            List <Vwap> events         = new List <Vwap>();
            var         testSubscriber = new Subject <Vwap>();
            var         vwapStream     = await vwapServer.GetStream("GOOGL");

            vwapStream.Subscribe(@event => events.Add(@event));

            // when
            testSubject.OnNext(new Trade("GOOGL", 10, 7058).ToJson());
            testSubject.OnNext(new Trade("GOOGL", 10, 7062).ToJson());
            scheduler.AdvanceBy(1000);

            // then
            Assert.True(events.Any());
            Vwap vwap = events.Last();

            Assert.True(string.Equals(vwap.Code, "GOOGL"));
            Assert.True(Comparer <Double> .Default.Compare(vwap.VwapValue, 706) == 0);
            Assert.True(vwap.Volume == 20);
        }
Пример #3
0
        public async Task should_generate_one_google_vwap_event_when_a_google_trade_is_done()
        {
            // given
            var(testSubject, tradeEventStream, scheduler, vwapServer) = Setup();
            List <Vwap> events         = new List <Vwap>();
            var         testSubscriber = new Subject <Vwap>();
            var         vwapStream     = await vwapServer.GetStream("GOOGL");

            vwapStream.Subscribe(@event => events.Add(@event));

            // when
            testSubject.OnNext(new Trade("GOOGL", 10, 7058.673).ToJson());
            testSubject.OnNext(new Trade("APPLE", 10, 981.8).ToJson());
            scheduler.AdvanceBy(1000);

            // then
            Assert.True(events.Count == 1);
            Vwap vwap = events.First();

            Assert.True(string.Equals(vwap.Code, "GOOGL"));
            Assert.True(Comparer <Double> .Default.Compare(vwap.VwapValue, 705.8673) == 0);
            Assert.True(vwap.Volume == 10);
        }
Пример #4
0
        public async Task should_generate_at_most_one_event_per_sec()
        {
            //http://www.introtorx.com/content/v1.0.10621.0/16_TestingRx.html

            // given
            var(testSubject, tradeEventStream, scheduler, vwapServer) = Setup();
            List <Vwap> events         = new List <Vwap>();
            var         testSubscriber = new Subject <Vwap>();
            var         vwapStream     = await vwapServer.GetStream("GOOGL"); //<=== INJECT SUBJECT IN HERE

            vwapStream.Subscribe(@event => events.Add(@event));

            // when
            testSubject.OnNext(new Trade("GOOGL", 10, 7000).ToJson());
            testSubject.OnNext(new Trade("GOOGL", 10, 7000).ToJson());
            testSubject.OnNext(new Trade("GOOGL", 10, 7000).ToJson());
            testSubject.OnNext(new Trade("GOOGL", 10, 7000).ToJson());
            testSubject.OnNext(new Trade("GOOGL", 10, 7000).ToJson());
            testSubject.OnNext(new Trade("GOOGL", 10, 7000).ToJson());
            testSubject.OnNext(new Trade("GOOGL", 10, 7000).ToJson());
            testSubject.OnNext(new Trade("GOOGL", 10, 7000).ToJson());
            testSubject.OnNext(new Trade("GOOGL", 10, 7000).ToJson());
            testSubject.OnNext(new Trade("GOOGL", 10, 7000).ToJson());
            testSubject.OnNext(new Trade("GOOGL", 10, 7000).ToJson());
            testSubject.OnCompleted();

            scheduler.AdvanceBy(2000);

            // then
            Assert.True(events.Count == 1);
            Vwap vwap = events.First();

            Assert.True(string.Equals(vwap.Code, "GOOGL"));
            Assert.True(Comparer <Double> .Default.Compare(vwap.VwapValue, 700) == 0);
            Assert.True(vwap.Volume == 100);
        }