public void TradingStatus_Disabled_BackwardsCompatibility()
        {
            var reason = InstrumentTradingDisabledReason.InstrumentTradingDisabled;
            var status = InstrumentTradingStatus.Disabled(reason);

            Assert.True(status);
        }
        public void TradingStatus_Enabled()
        {
            var status = InstrumentTradingStatus.Enabled();

            Assert.True(status.TradingEnabled);
            Assert.That(status.Reason == InstrumentTradingDisabledReason.None);
        }
示例#3
0
        public InstrumentTradingStatus GetInstrumentTradingStatus(string assetPairId, TimeSpan scheduleCutOff)
        {
            var assetPair = _assetPairsCache.GetAssetPairByIdOrDefault(assetPairId);

            if (assetPair == null)
            {
                _log.WriteWarningAsync(nameof(ScheduleSettingsCacheService), nameof(GetInstrumentTradingStatus),
                                       $"AssetPair [{assetPairId}] does not exist in cache. Trading is disabled.").GetAwaiter().GetResult();
                return(InstrumentTradingStatus.Disabled(InstrumentTradingDisabledReason.InstrumentNotFound));
            }

            if (assetPair.IsTradingDisabled)
            {
                return(InstrumentTradingStatus.Disabled(InstrumentTradingDisabledReason.InstrumentTradingDisabled));
            }

            if (!_marketStates.TryGetValue(assetPair.MarketId, out var marketState))
            {
                _log.WriteWarningAsync(nameof(ScheduleSettingsCacheService), nameof(GetInstrumentTradingStatus),
                                       $"Market status of market [{assetPair.MarketId}] for asset pair [{assetPairId}] does not exist in cache. Trading is disabled.").GetAwaiter().GetResult();
                return(InstrumentTradingStatus.Disabled(InstrumentTradingDisabledReason.MarketStateNotFound));
            }

            return(marketState.IsEnabled
                ? InstrumentTradingStatus.Enabled()
                : InstrumentTradingStatus.Disabled(InstrumentTradingDisabledReason.MarketDisabled));
        }
        public void TradingStatus_Disabled()
        {
            var reason = InstrumentTradingDisabledReason.InstrumentTradingDisabled;
            var status = InstrumentTradingStatus.Disabled(reason);

            Assert.False(status.TradingEnabled);
            Assert.That(status.Reason == reason);
        }
示例#5
0
        public static string GetInstrumentTradingStatus(InstrumentTradingStatus value)
        {
            switch (value)
            {
            case InstrumentTradingStatus.Closed:
                return(Constants.TradingStatus.Closed);

            case InstrumentTradingStatus.Open:
                return(Constants.TradingStatus.Open);
            }

            throw new ArgumentOutOfRangeException("value");
        }
示例#6
0
        public void SetUp()
        {
            _bestPricesChannelMock = new Mock <IEventChannel <BestPriceChangeEventArgs> >();
            _dateServiceMock       = new Mock <IDateService>();
            _assetPairsCacheMock   = new Mock <IAssetPairsCache>();
            _cqrsSenderMock        = new Mock <ICqrsSender>();
            _identityGeneratorMock = new Mock <IIdentityGenerator>();
            _logMock             = new Mock <ILog>();
            _assetPairDayOffMock = new Mock <IAssetPairDayOffService>();
            _assetPairDayOffMock.Setup(x => x.IsAssetTradingDisabled(It.IsAny <string>()))
            .Returns(InstrumentTradingStatus.Enabled);

            _assetPairDayOffMock.Setup(x => x.IsAssetTradingDisabled(It.Is <string>(x => x == TradingDisabledAssetPair)))
            .Returns(InstrumentTradingStatus.Disabled(InstrumentTradingDisabledReason.InstrumentTradingDisabled));
            _schedulteSettingsMock = new Mock <IScheduleSettingsCacheService>();
        }
示例#7
0
        public ExternalOrderbookServicesBenchmark()
        {
            var doMock = new Mock <IAssetPairDayOffService>();

            doMock.Setup(a => a.IsAssetTradingDisabled(It.IsAny <string>())).Returns(InstrumentTradingStatus.Enabled());

            _service = new ExternalOrderbookService(
                Mock.Of <IEventChannel <BestPriceChangeEventArgs> >(),
                Mock.Of <IOrderBookProviderApi>(),
                Mock.Of <IDateService>(),
                Mock.Of <IConvertService>(),
                doMock.Object,
                Mock.Of <ScheduleSettingsCacheService>(),
                Mock.Of <IAssetPairsCache>(),
                Mock.Of <ICqrsSender>(),
                Mock.Of <IIdentityGenerator>(),
                Mock.Of <ILog>(),
                new MarginTradingSettings()
            {
                DefaultExternalExchangeId = "test"
            });

            _lightweightService = new LightweightExternalOrderbookService(
                Mock.Of <IEventChannel <BestPriceChangeEventArgs> >(),
                Mock.Of <IOrderBookProviderApi>(),
                Mock.Of <IDateService>(),
                Mock.Of <IConvertService>(),
                Mock.Of <IScheduleSettingsCacheService>(),
                doMock.Object,
                Mock.Of <IAssetPairsCache>(),
                Mock.Of <ICqrsSender>(),
                Mock.Of <IIdentityGenerator>(),
                Mock.Of <ILog>(),
                new MarginTradingSettings()
            {
                DefaultExternalExchangeId = "test"
            });
        }
        public void TradingStatus_Enabled_BackwardsCompatibility()
        {
            var status = InstrumentTradingStatus.Enabled();

            Assert.False(status);
        }