コード例 #1
0
        public IActionResult Get(int id)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var trade = Repo.GetById(id);

            if (trade == null)
            {
                return(NotFound());
            }
            return(Ok(Repo.GetById(id)));
        }
コード例 #2
0
        public async Task <Result> Cancel(string tradeId)
        {
            var trade = _tradeRepository.GetById(tradeId);

            if (trade == null)
            {
                return(new Result(false, "Trade not found"));
            }
            var strategy = _strategyRepository.GetById(trade.StrategyId);

            if (strategy.TradingMode == TradingMode.Real)
            {
                var exchange = _exchangeFactory.GetExchange(trade.Exchange);
                if (exchange == null)
                {
                    return(new Result(false, "Exchange not found"));
                }
                var cancelResult = await exchange.CancelOrder(trade.ExchangeUuid, strategy.UserId);

                if (!cancelResult)
                {
                    return(new Result(false, "Exchange refused to cancel"));
                }
            }
            return(_tradeFinalizationService.CancelTrade(trade));
        }
コード例 #3
0
        public async Task <bool> CancelOrder(string tradeId, string userId)
        {
            var userSecret   = _exchangeSecretRepository.GetByUserAndExchange(userId, _exchangeName);
            var translations = await _marketDataService.GetMarketTranslationsAsync(_exchangeName);

            var trade = _tradeRepository.GetById(tradeId);

            try
            {
                await _binanceWrapper.CancelOrder(userSecret.ApiKey, userSecret.ApiSecret, tradeId, translations[trade.MarketId]);

                return(true);
            }
            catch { return(false); }
        }
コード例 #4
0
        public void SaveTradeReadModel_IfSaveOrUpdateMethodIsCalled_ItShouldGetSavedInTheDatabase()
        {
            Order buyOrder = OrderFactory.CreateOrder("1234", "XBTUSD", "market", "buy", 5, 0,
                                                      new StubbedOrderIdGenerator());
            Order sellOrder = OrderFactory.CreateOrder("1234", "XBTUSD", "market", "sell", 5, 0,
                                                       new StubbedOrderIdGenerator());
            //Trade trade=new Trade("XBTUSD",new Price(100),new Volume(10),DateTime.Now,buyOrder,sellOrder);
            Trade          trade = TradeFactory.GenerateTrade("XBTUSD", new Price(100), new Volume(10), buyOrder, sellOrder);
            TradeReadModel model = ReadModelAdapter.GetTradeReadModel(trade);

            _persistanceRepository.SaveOrUpdate(model);
            TradeReadModel getSavedModel = _tradeRepository.GetById(trade.TradeId.Id.ToString());

            Assert.NotNull(getSavedModel);
            AssertAreEqual(getSavedModel, model);
        }
コード例 #5
0
        public void PublishTradeToOutputDisruptor_IfTradeListenerIsInitiated_ItShouldSaveInDatabase()
        {
            Order buyOrder = OrderFactory.CreateOrder("123", "XBTUSD", "limit", "buy", 10, 100,
                                                      new StubbedOrderIdGenerator());
            Order sellOrder = OrderFactory.CreateOrder("1234", "XBTUSD", "limit", "sell", 10, 100,
                                                       new StubbedOrderIdGenerator());
            //Trade trade=new Trade("XBTUSD",new Price(100),new Volume(10),DateTime.Now,buyOrder,sellOrder);
            Trade trade = TradeFactory.GenerateTrade("XBTUSD", new Price(1000), new Volume(10), buyOrder, sellOrder);

            OutputDisruptor.Publish(trade);
            _manualResetEvent.WaitOne(5000);
            TradeReadModel model = _tradeRepository.GetById(trade.TradeId.Id.ToString());

            Assert.NotNull(model);
            Assert.AreEqual(model.BuyOrderId, buyOrder.OrderId.Id.ToString());
            Assert.AreEqual(model.SellOrderId, sellOrder.OrderId.Id.ToString());
            Assert.AreEqual(model.Price, 1000);
            Assert.AreEqual(model.CurrencyPair, "XBTUSD");
            Assert.AreEqual(model.BuyTraderId, "123");
            Assert.AreEqual(model.SellTraderId, "1234");
            Assert.AreEqual(model.Volume, 10);
        }
コード例 #6
0
        public ActionResult View(long tradeID)
        {
            var trade  = tradeRepository.GetById(tradeID);
            var entity = SessionHelper.CurrentEntity;

            MethodResult result = tradeService.CanHaveAccess(entity, trade);

            if (result.IsError)
            {
                return(RedirectToHomeWithError(result));
            }

            var possibleItems = tradeService.GetItemsForTrade(entity, trade)
                                .OrderBy(i => ((ProductTypeEnum)i.ProductID).ToHumanReadable())
                                .ThenBy(i => i.Quality);


            var possibleMoney = tradeService.GetMoneyForTrade(entity, trade)
                                .OrderBy(i => i.CurrencyID);

            var vm = new TradeViewModel(trade, possibleItems, possibleMoney, tradeService);

            return(View(vm));
        }
コード例 #7
0
 public IActionResult GetTrade(string id)
 {
     return(Ok(_tradeRepository.GetById(id)));
 }