예제 #1
0
        static void Main(string[] args)
        {
            var ioc = MockEnvironmentCreator.Create();

            var trader = ioc.RegisterTrader("*****@*****.**");

            var srvOrderRegistrator = ioc.GetObject <SrvOrdersRegistrator>();

            ioc.DepositAcount(trader.Id, "EUR", 10000);

            var limitOrder = LimitOrder.Create(trader.Id, "EURUSD", "USD", OrderAction.Sell, 1000, 1.55555);

            srvOrderRegistrator.RegisterTradeOrderAsync(limitOrder).Wait();

            var marketOrder = MarketOrder.Create(trader.Id, "EURUSD", "USD", OrderAction.Buy, 1000);

            srvOrderRegistrator.RegisterTradeOrderAsync(marketOrder).Wait();

            var eurBalance = ioc.GetBalance(trader.Id, "EUR");
            var usdBalance = ioc.GetBalance(trader.Id, "USD");

            Console.WriteLine("EUR Balance " + eurBalance);
            Console.WriteLine("USD Balance " + usdBalance);

            Console.ReadLine();
        }
예제 #2
0
        public void Text_Exchange_USDJPY()
        {
            var ioc = MockEnvironmentCreator.Create();

            var trader1 = ioc.RegisterTrader("*****@*****.**");
            var trader2 = ioc.RegisterTrader("*****@*****.**");

            var srvOrderRegistrator = ioc.GetObject <SrvOrdersRegistrator>();

            ioc.DepositAcount(trader1.Id, "USD", 10000);
            ioc.DepositAcount(trader2.Id, "EUR", 10000);

            var limitOrder = LimitOrder.Create(trader1.Id, "EURUSD", "USD", OrderAction.Sell, 1000, 2);

            srvOrderRegistrator.RegisterTradeOrderAsync(limitOrder).Wait();

            var marketOrder = MarketOrder.Create(trader2.Id, "EURUSD", "USD", OrderAction.Buy, 1000);

            srvOrderRegistrator.RegisterTradeOrderAsync(marketOrder).Wait();

            var eurBalanceTrader1 = ioc.GetBalance(trader1.Id, "EUR");
            var usdBalanceTrader1 = ioc.GetBalance(trader1.Id, "USD");

            var eurBalanceTrader2 = ioc.GetBalance(trader2.Id, "EUR");
            var usdBalanceTrader2 = ioc.GetBalance(trader2.Id, "USD");

            Assert.AreEqual(9000, Math.Round(usdBalanceTrader1, 2));
            Assert.AreEqual(500, Math.Round(eurBalanceTrader1, 2));


            Assert.AreEqual(1000, Math.Round(usdBalanceTrader2, 2));
            Assert.AreEqual(9500, Math.Round(eurBalanceTrader2, 2));
        }
예제 #3
0
        public void TestBuyLimitOrder()
        {
            var ioc = MockEnvironmentCreator.Create();

            var trader = ioc.RegisterTrader("*****@*****.**");

            var srvOrderRegistrator = ioc.GetObject <SrvOrdersRegistrator>();

            ioc.DepositAcount(trader.Id, "USD", 10000);

            var limitOrder = LimitOrder.Create(trader.Id, "EURUSD", "USD", OrderAction.Buy, 1000, 1.55555);

            srvOrderRegistrator.RegisterTradeOrderAsync(limitOrder).Wait();

            var orderBook = ioc.GetObject <SrvLimitOrderBookGenerator>().GetOrderBooksAsync().Result;


            var eurUsdOrderBook = orderBook.First(itm => itm.Asset == "EURUSD");

            Assert.AreEqual(1000, eurUsdOrderBook.Items[0].Volume);
            Assert.AreEqual(1.55555, eurUsdOrderBook.Items[0].Rate);
            Assert.AreEqual(BookOrderType.Bid, eurUsdOrderBook.Items[0].Type);
        }