Exemple #1
0
 public void SoldCoin_Should_InvokeOrderUpdated()
 {
     CoinTrader.UpdateOrder(new CryptoOrder {
         OrderType = CryptoOrderType.LimitSell, Price = 1100
     });
     CoinTrader.Budget.Available.Should().Be(1100);
 }
Exemple #2
0
        public async Task ClosedOrder_Should_UpdateTradeStatus()
        {
            CryptoApiMock.MockBuyingTrade(new CryptoOrder());
            InitializeTrader(new TradeAction {
                TradeAdvice = TradeAdvice.Buy, OrderPricePerUnit = 98
            });
            await CoinTrader.UpdatePrice(_newPriceTicker);

            await CoinTrader.UpdateOrder(new CryptoOrder { IsClosed = false, OrderType = CryptoOrderType.LimitBuy });

            CoinTrader.TraderState.Trades[0].Status.Should().NotBe(TradeStatus.Bought);
        }
Exemple #3
0
        public async Task SoldCoin_Should_UpdateTradeStatus()
        {
            var sellOrder = new CryptoOrder {
                OrderType = CryptoOrderType.LimitSell, Price = 1100, Uuid = "S"
            };
            var trade = new Trade
            {
                SellOrder = sellOrder
            };

            await InitializeTrader(new TradeAction { TradeAdvice = TradeAdvice.Sell });

            CoinTrader.Trades.Add(trade);
            await CoinTrader.UpdateOrder(sellOrder);

            trade.Status.Should().Be(TradeStatus.Completed);
        }
Exemple #4
0
        public async Task BoughtOrder_Should_UpdateTraderStatus()
        {
            var trade = new Trade();

            CoinTrader.TraderState.Trades = new List <Trade> {
                trade
            };
            trade.BuyOrder.Uuid = "B";
            var buyOrder = new CryptoOrder
            {
                Uuid      = "B",
                OrderType = CryptoOrderType.LimitBuy,
                IsClosed  = true
            };

            await CoinTrader.UpdateOrder(buyOrder);

            CoinTrader.TraderState.Trades[0].Status.Should().Be(TradeStatus.Bought);
        }
Exemple #5
0
        public async Task SoldCoin_Should_CalculateCorrectProfit()
        {
            var sellOrder = new CryptoOrder {
                IsClosed = true, OrderType = CryptoOrderType.LimitSell, Price = 1100, Uuid = "S"
            };
            var trade = new Trade
            {
                BuyOrder = new CryptoOrder
                {
                    Price = 1000
                },
                SellOrder = sellOrder
            };

            CoinTrader.TraderState.Trades.Add(trade);
            CoinTrader.TraderState.Budget.Profit = 5;
            CoinTrader.TraderState.Budget.Earned = 1;

            await CoinTrader.UpdateOrder(sellOrder);

            CoinTrader.TraderState.Budget.Profit.Should().Be(15);
            CoinTrader.TraderState.Budget.Earned.Should().Be(101);
            trade.Profit.Should().Be(10);
        }
Exemple #6
0
        public async Task SoldCoin_Should_InvokeOrderUpdated()
        {
            await CoinTrader.UpdateOrder(new CryptoOrder { IsClosed = true, OrderType = CryptoOrderType.LimitSell, Price = 1100 });

            CoinTrader.TraderState.Budget.Available.Should().Be(1100);
        }