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()); }
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()); }
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); }
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); }
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); }