public void TestOrderValidatedTriggeredAgain() { var orderCreator = new OrderCreator(); var manager = new StrategyManager(orderCreator); using var monitoredManager = manager.Monitor(); orderCreator.Limit(new SOrderParameters()).Send(20); manager.TriggerOrders(new Bar() { Low = 19 }); Assert.Equal(100, manager.StrategyInfo.MarketPosition); monitoredManager.Should() .Raise("OrderValidated") .WithArgs <OrderInfo>(info => info.Price == 20) .OnlyOnce() .Reset(); // The same order is allowed to be sent again after being filled orderCreator.Limit(new SOrderParameters()).Send(20); monitoredManager.Should() .Raise("OrderValidated") .WithArgs <OrderInfo>(info => info.Price == 20) .OnlyOnce(); }
public void TestOrderCanceledTriggeredAfterNotSendingOrder() { var orderCreator = new OrderCreator(); var manager = new StrategyManager(orderCreator); using var monitoredManager = manager.Monitor(); orderCreator.Limit(new SOrderParameters()).Send(20); manager.TriggerOrders(new Bar() { Low = 21 }); orderCreator.Limit(new SOrderParameters()).Send(20); manager.TriggerOrders(new Bar() { Low = 22 }); monitoredManager.Should() .Raise("OrderValidated") .WithArgs <OrderInfo>(info => info.Price == 20) .OnlyOnce(); monitoredManager.Should().NotRaise("OrderCanceled"); Assert.Equal(0, manager.StrategyInfo.MarketPosition); // If we don't send the order again, it should be canceled manager.TriggerOrders(new Bar() { Low = 23 }); monitoredManager.Should().Raise("OrderCanceled"); Assert.Equal(0, manager.StrategyInfo.MarketPosition); }
public void TestOrderValidatedTriggered() { var orderCreator = new OrderCreator(); var manager = new StrategyManager(orderCreator); using var monitoredManager = manager.Monitor(); orderCreator.Limit(new SOrderParameters()).Send(20); monitoredManager.Should() .Raise("OrderValidated") .WithArgs <OrderInfo>(info => info.Price == 20); }