Ejemplo n.º 1
0
        public void TestBuyThenCloseTradeWithTransactionFee()
        {
            var runner   = new StrategyRunner(_fakeBrokersCandlesService, _broker, 10000M);
            var strategy = new StrategyBuyThenClose();
            var trades   = runner.Run(strategy);

            Assert.AreEqual(1, trades.Count);
            Assert.AreEqual(3030M, trades[0].EntryPrice);
            Assert.AreEqual(5020M, trades[0].ClosePrice);

            //total = amount + (amount * fee)
            //      = amount * (1 + fee)
            var bought = trades[0].EntryQuantity.Value * trades[0].EntryPrice.Value;
            var buyFee = bought * 0.01m;

            Assert.AreEqual(10000M, bought + buyFee);

            var sold    = trades[0].ClosePrice.Value * trades[0].EntryQuantity.Value;
            var sellFee = sold * 0.01m;

            Assert.AreEqual(sold - bought - buyFee - sellFee, trades[0].NetProfitLoss);
            Assert.AreEqual(runner.Balance, 10000M + trades[0].NetProfitLoss);

            Assert.IsFalse(strategy.Trades.AnyOpen);
            Assert.IsFalse(strategy.Trades.AnyOrders);
            Assert.AreEqual(1, strategy.Trades.ClosedTrades.Count());
        }
Ejemplo n.º 2
0
        public void TestBuyThenCloseTrade()
        {
            var runner   = new StrategyRunner(_fakeBrokersCandlesService, _broker, 10000M);
            var strategy = new StrategyBuyThenClose();
            var trades   = runner.Run(strategy);

            Assert.AreEqual(1, trades.Count);
            Assert.AreEqual(3030M, trades[0].EntryPrice);
            Assert.AreEqual(5020M, trades[0].ClosePrice);
            Assert.AreEqual(((5020M * 10000M) / 3030M) - 10000M, trades[0].NetProfitLoss);

            Assert.IsFalse(strategy.Trades.AnyOpen);
            Assert.IsFalse(strategy.Trades.AnyOrders);
            Assert.AreEqual(1, strategy.Trades.ClosedTrades.Count());
        }