コード例 #1
0
        public async Task TradesSubscriptionWorks()
        {
            using (var client = ClientsFactory.GetPolygonSockClient())
            {
                await connectAndAuthenticate(client);

                var waitObject = new AutoResetEvent(false);

                client.TradeReceived += (trade) =>
                {
                    Assert.Equal(SYMBOL, trade.Symbol);
                    waitObject.Set();
                };

                waitObject.Reset();
                client.SubscribeTrade(SYMBOL);

                if (_restClient.GetClockAsync().Result.IsOpen)
                {
                    Assert.True(waitObject.WaitOne(
                                    TimeSpan.FromSeconds(10)));
                }

                await client.DisconnectAsync();
            }
        }
コード例 #2
0
        public async void OrderPlaceCheckCancelWorks()
        {
            using (var sockClient = ClientsFactory.GetSockClient())
            {
                sockClient.OnError += (ex) =>
                {
                    Assert.Null(ex.Message);
                };

                await sockClient.ConnectAsync();

                var waitObject = new AutoResetEvent(false);
                sockClient.OnTradeUpdate += (update) =>
                {
                    Assert.NotNull(update);
                    Assert.NotNull(update.Order);
                    Assert.Equal(SYMBOL, update.Order.Symbol);
                    waitObject.Set();
                };

                var clientOrderId = Guid.NewGuid().ToString("N");

                var clock = await _restClient.GetClockAsync();

                var order = await _restClient.PostOrderAsync(
                    SYMBOL, 1, OrderSide.Buy, OrderType.Market,
                    clock.IsOpen?TimeInForce.Day : TimeInForce.Opg,
                    clientOrderId : clientOrderId);

                Assert.NotNull(order);
                Assert.Equal(SYMBOL, order.Symbol);
                Assert.Equal(clientOrderId, order.ClientOrderId);

                var orderById = await _restClient.GetOrderAsync(order.OrderId);

                var orderByClientId = await _restClient.GetOrderAsync(clientOrderId);

                Assert.NotNull(orderById);
                Assert.NotNull(orderByClientId);

                var result = await _restClient.DeleteOrderAsync(order.OrderId);

                Assert.True(result);

                Assert.True(waitObject.WaitOne(
                                TimeSpan.FromSeconds(10)));

                await sockClient.DisconnectAsync();
            }
        }
コード例 #3
0
        public async void ConnectWorks()
        {
            using (var client = ClientsFactory.GetSockClient())
            {
                await client.ConnectAsync();

                var waitObject = new AutoResetEvent(false);
                client.Connected += (status) =>
                {
                    Assert.Equal(AuthStatus.Authorized, status);
                    waitObject.Set();
                };

                Assert.True(waitObject.WaitOne(
                                TimeSpan.FromSeconds(10)));

                await client.DisconnectAsync();
            }
        }
コード例 #4
0
        public void NatsSeveralSubscriptionWorks()
        {
            using (var client = ClientsFactory.GetNatsClient())
            {
                client.Open();

                var waitObjects = new []
                {
                    new AutoResetEvent(false),
                    new AutoResetEvent(false)
                };

                client.TradeReceived += (trade) =>
                {
                    Assert.Equal(SYMBOL, trade.Symbol);
                    waitObjects[0].Set();
                };

                client.QuoteReceived += (quote) =>
                {
                    Assert.Equal(SYMBOL, quote.Symbol);
                    waitObjects[1].Set();
                };

                client.SubscribeTrade(SYMBOL);
                client.SubscribeQuote(SYMBOL);

                if (_restClient.GetClockAsync().Result.IsOpen)
                {
                    // ReSharper disable once CoVariantArrayConversion
                    Assert.True(WaitHandle.WaitAll(
                                    waitObjects, TimeSpan.FromSeconds(10)));
                }

                client.Close();
            }
        }
コード例 #5
0
        public void NatsMinuteAggSubscriptionWorks()
        {
            using (var client = ClientsFactory.GetNatsClient())
            {
                client.Open();

                var waitObject = new AutoResetEvent(false);
                client.AggReceived += (agg) =>
                {
                    Assert.Equal(SYMBOL, agg.Symbol);
                    waitObject.Set();
                };

                client.SubscribeMinuteAgg(SYMBOL);

                if (_restClient.GetClockAsync().Result.IsOpen)
                {
                    Assert.True(waitObject.WaitOne(
                                    TimeSpan.FromSeconds(120)));
                }

                client.Close();
            }
        }
コード例 #6
0
        public void NatsSecondBarSubscriptionWorks()
        {
            using (var client = ClientsFactory.GetNatsClient())
            {
                client.Open();

                var waitObject = new AutoResetEvent(false);
                client.BarReceived += (bar) =>
                {
                    Assert.Equal("AAPL", bar.Symbol);
                    waitObject.Set();
                };

                client.SubscribeSecondBar("AAPL");

                if (_restClient.GetClockAsync().Result.IsOpen)
                {
                    Assert.True(waitObject.WaitOne(
                                    TimeSpan.FromSeconds(10)));
                }

                client.Close();
            }
        }