コード例 #1
0
        public void OutOfFundsExceptionExits()
        {
            var env = new TestEnvironment();

            SetEnv(env);
            var timer = new BinanceTimerProvider(new LoggerFactory(), new TestCandleDispenser());

            _handleException(timer, new OutOfFundsException());
            Assert.True(env.HasExited);
            Assert.Equal(env.Code, (int)ExitCode.OrderFailure);
        }
コード例 #2
0
        public void NestedExceptionsAreUnpacked()
        {
            var env = new TestEnvironment();

            SetEnv(env);
            var timer     = new BinanceTimerProvider(new LoggerFactory(), new TestCandleDispenser());
            var exception = new Exception(string.Empty, new OrderRefusedException());

            _handleException(timer, exception);
            Assert.True(env.HasExited);
            Assert.Equal(env.Code, (int)ExitCode.OrderFailure);
        }
コード例 #3
0
        public void GenericExceptionDoesNotExit()
        {
            var counterField = typeof(BinanceTimerProvider)
                               .GetField("_consecutiveExceptions", BindingFlags.Instance | BindingFlags.NonPublic);

            var env = new TestEnvironment();

            SetEnv(env);

            var timer    = new BinanceTimerProvider(new LoggerFactory(), new TestCandleDispenser());
            var countPre = counterField.GetValue(timer);

            Assert.Equal(0, countPre);
            _handleException(timer, new Exception());
            Assert.False(env.HasExited);

            var countPost = counterField.GetValue(timer);

            Assert.Equal(1, countPost);
        }
コード例 #4
0
        /// <summary>
        /// Builds a container for Binance.
        /// </summary>
        /// <param name="config">The algorithm configuration to use.</param>
        /// <typeparam name="T">The algorithm type.</typeparam>
        /// <returns>ExchangeProviderContainer.</returns>
        public ExchangeProvidersContainer BuildBinanceContainer <T>(AlgorithmConfiguration config)
            where T : IBaseAlgorithm
        {
            // Makes sure that the communication is enabled
            _binanceCommunications.EnableStreams();
            var timerProvider         = new BinanceTimerProvider(_loggerFactory, _binanceCommunications.CandleDispenser);
            var dataImplementation    = new BinanceDataProvider(_loggerFactory, _binanceCommunications, timerProvider);
            var tradingImplementation = new BinanceTradingProvider(_loggerFactory, _binanceCommunications, timerProvider);

            var dataProvider    = new DataProvider(_loggerFactory, dataImplementation, config);
            var tradingProvider = new TradingProvider(_loggerFactory, tradingImplementation, dataProvider, _allocationManager);

            // Doubly linked data provider to check candles
            timerProvider.DataProvider = dataProvider;

            // Inject database event listener
            DatabaseEventListenerService.AddOrderSource(tradingProvider);

            return(new ExchangeProvidersContainer(_loggerFactory, dataProvider, timerProvider, tradingProvider, typeof(T)));
        }