示例#1
0
        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();
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }