예제 #1
0
        //[Test]
        public void LoginTestCase()
        {
            var manualBarEvent = new ManualResetEvent(false);

            _marketDataEngineClient.LiveBarArrived += Console.WriteLine;
            manualBarEvent.WaitOne(1000);

            _marketDataEngineClient.SendLoginRequest(new Login {
                MarketDataProvider = Common.Core.Constants.MarketDataProvider.SimulatedExchange
            });
            // Assert.AreEqual(true, logoutArrived, "Logout Arrived");
            manualBarEvent.WaitOne(3000);
            _marketDataEngineClient.SendLiveBarSubscriptionRequest(new BarDataRequest
            {
                BarFormat = Common.Core.Constants.BarFormat.TIME,
                Security  = new Security {
                    Symbol = "GOOG"
                },
                BarLength          = 10,
                MarketDataProvider = Common.Core.Constants.MarketDataProvider.SimulatedExchange,
                Id           = "1",
                BarPriceType = Common.Core.Constants.BarPriceType.BID
            });

            manualBarEvent.WaitOne(10000);
        }
예제 #2
0
        public void TestWholeExchange()
        {
            int count = 0;

            _orderExecutionEngine.NewArrived += delegate(Order order)
            {
                count++;
            };
            _orderExecutionEngine.ExecutionArrived += delegate(Execution execution)
            {
                count++;
            };
            ManualResetEvent manualResetEvent = new ManualResetEvent(false);

            manualResetEvent.WaitOne(1000);
            _orderExecutionEngine.SendLoginRequest(new Login {
                OrderExecutionProvider = OrderExecutionProvider.SimulatedExchange
            });
            _marketDataEngineClient.SendLoginRequest(new Login {
                MarketDataProvider = MarketDataProvider.SimulatedExchange
            });
            manualResetEvent.WaitOne(3000);
            LimitOrder limitOrder = new LimitOrder("1", OrderSide.SELL, 10, OrderTif.DAY, "USD", new Security()
            {
                Symbol = "GOOG"
            }, OrderExecutionProvider.SimulatedExchange)
            {
                LimitPrice = 120
            };

            _orderExecutionEngine.SendLimitOrderRequest(limitOrder);
            _marketDataEngineClient.SendLiveBarSubscriptionRequest(new BarDataRequest
            {
                BarFormat = BarFormat.TIME,
                Security  = new Security {
                    Symbol = "GOOG"
                },
                BarLength          = 10,
                MarketDataProvider = MarketDataProvider.SimulatedExchange,
                Id           = "1",
                BarPriceType = BarPriceType.BID
            });
            manualResetEvent.WaitOne(3000);
            Assert.AreEqual(2, count);
        }
예제 #3
0
        public void MarketDataProviderBarTestCase()
        {
            bool      logonArrived           = false;
            bool      logoutArrived          = false;
            bool      inquiryResponseArrived = false;
            int       count     = 1;
            Stopwatch stopwatch = new Stopwatch();

            ManualResetEvent manualLogonEvent           = new ManualResetEvent(false);
            ManualResetEvent manualLogoutEvent          = new ManualResetEvent(false);
            ManualResetEvent manualConnectedEvent       = new ManualResetEvent(false);
            ManualResetEvent manualInquiryResponseEvent = new ManualResetEvent(false);
            ManualResetEvent manualBarArrivedEvent      = new ManualResetEvent(false);

            _marketDataEngineClient.ServerConnected += delegate()
            {
                _marketDataEngineClient.SendLoginRequest(new Login()
                {
                    MarketDataProvider = TradeHubConstants.MarketDataProvider.Simulated
                });
                manualConnectedEvent.Set();
            };

            _marketDataEngineClient.LogonArrived +=
                delegate(string obj)
            {
                logonArrived = true;

                _marketDataEngineClient.SendInquiryRequest(TradeHubConstants.MarketDataProvider.Simulated);
                manualLogonEvent.Set();
            };

            _marketDataEngineClient.InquiryResponseArrived +=
                delegate(MarketDataProviderInfo obj)
            {
                inquiryResponseArrived = true;
                Console.WriteLine(obj);
                // _marketDataEngineClient.SendLogoutRequest(new Logout { MarketDataProvider = TradeHubConstants.MarketDataProvider.Simulated });
                BarDataRequest barDataRequest = new BarDataRequest();
                barDataRequest.Id       = "A00";
                barDataRequest.Security = new Security()
                {
                    Symbol = "ERX"
                };
                barDataRequest.PipSize            = 0.0001m;
                barDataRequest.BarLength          = 30;
                barDataRequest.BarPriceType       = TradeHubConstants.BarPriceType.LAST;
                barDataRequest.MarketDataProvider = TradeHubConstants.MarketDataProvider.Simulated;
                barDataRequest.BarFormat          = TradeHubConstants.BarFormat.TIME;
                barDataRequest.BarSeed            = 0;
                _marketDataEngineClient.SendLiveBarSubscriptionRequest(barDataRequest);
                manualInquiryResponseEvent.Set();
            };
            _marketDataEngineClient.LiveBarArrived += delegate(Bar bar)
            {
                _marketDataEngineClient.SendLogoutRequest(new Logout {
                    MarketDataProvider = TradeHubConstants.MarketDataProvider.Simulated
                });
                manualBarArrivedEvent.Set();
                count++;
                Logger.Info("Recevied Bar=" + bar, "", "MarketDataProviderBarTestCase");
            };


            _marketDataEngineClient.LogoutArrived +=
                delegate(string obj)
            {
                logoutArrived = true;
                manualLogoutEvent.Set();
            };

            _marketDataEngineClient.Start();

            manualConnectedEvent.WaitOne(30000, false);
            manualLogonEvent.WaitOne(30000, false);
            manualInquiryResponseEvent.WaitOne(30000, false);
            manualLogoutEvent.WaitOne(30000, false);
            manualBarArrivedEvent.WaitOne(500000);

            Assert.AreEqual(true, logonArrived, "Logon Arrived");
            Assert.AreEqual(true, inquiryResponseArrived, "Inquiry Response Arrived");
            Assert.AreEqual(2, count, "Bar arrived");
            Assert.AreEqual(true, logoutArrived, "Logout Arrived");
        }