public void SoldCoin_Should_InvokeOrderUpdated() { CoinTrader.UpdateOrder(new CryptoOrder { OrderType = CryptoOrderType.LimitSell, Price = 1100 }); CoinTrader.Budget.Available.Should().Be(1100); }
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); }
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); }
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); }
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); }
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); }