예제 #1
0
        public async Task MarketIsLinkedToEachStrategy(string marketId)
        {
            var strategy2 = new StrategySpy();

            _trader.AddStrategy(strategy2);
            await _trader.TradeMarket(marketId, 0, default);

            Assert.Equal(marketId, _strategy.LinkedMarketId());
            Assert.Equal(marketId, strategy2.LinkedMarketId());
        }
예제 #2
0
        public async Task PassCancellationTokenToStrategies()
        {
            var strategy2 = new StrategySpy();

            _trader.AddStrategy(strategy2);

            using var source = new CancellationTokenSource();

            await _trader.TradeMarket("1.2345", 0, source.Token);

            Assert.Equal(source.Token, _strategy.Token());
            Assert.Equal(source.Token, strategy2.Token());
        }
예제 #3
0
        public async Task DataFieldsFromMultipleStrategiesAreMerged()
        {
            _strategy.DataFilter.WithBestPrices();

            var strategy2 = new StrategySpy();

            strategy2.DataFilter.WithMarketDefinition();
            _trader.AddStrategy(strategy2);

            await _trader.TradeMarket("1.2345", 0, default);

            Assert.Contains("EX_BEST_OFFERS", _subscription.Fields);
            Assert.Contains("EX_MARKET_DEF", _subscription.Fields);
        }
예제 #4
0
        public async Task PlaceTradesFromMultipleStrategies()
        {
            _subscription.WithMarketChange(new MarketChange());
            var s2 = new StrategySpy();

            _trader.AddStrategy(s2);

            var o1 = new LimitOrder(1, Side.Back, 2.5, 10.99);

            _strategy.WithOrder(o1);
            s2.WithOrder(o1);

            await _trader.TradeMarket("1.2345", 0, default);

            Assert.Equal(2, _orderService.LastOrdersPlaced.Count);
        }
예제 #5
0
        public async Task TellEachStrategyWhatTheChangeWas()
        {
            var strategy2 = new StrategySpy();

            _trader.AddStrategy(strategy2);

            var rc  = new RunnerChangeStub().WithSelectionId(1).WithBestAvailableToBack(0, 2.5, 9.99);
            var mc  = new MarketChangeStub().WithRunnerChange(rc);
            var rc2 = new RunnerChangeStub().WithSelectionId(2).WithBestAvailableToBack(0, 2.5, 9.99);
            var mc2 = new MarketChangeStub().WithRunnerChange(rc2);

            _subscription.WithMarketChanges(new List <MarketChange> {
                mc, mc2
            });

            await _trader.TradeMarket("1.2345", 0, default);

            Assert.Equal(mc2, _strategy.LastMarketChange);
            Assert.Equal(mc2, strategy2.LastMarketChange);
        }