public ExchangeOrderBookUpdatedIntegrationEvent(int exchangeId, string baseCurrency, string quoteCurrency, OrderBookViewModel orderBook)
 {
     ExchangeId    = exchangeId;
     BaseCurrency  = baseCurrency;
     QuoteCurrency = quoteCurrency;
     OrderBook     = orderBook;
 }
示例#2
0
        public async Task <IActionResult> GetAsync()
        {
            try
            {
                //log.Debug("1  OrdersController I am here! ");
                //System.Diagnostics.Trace.TraceError("2 OrdersController I am here!");


                // Send the event:
                this.telemetry.TrackTrace("GET api/orders");


                var asks = await this.orderBook.GetAsksAsync();

                var bids = await this.orderBook.GetBidsAsync();

                var asksCount = asks.Count;
                var bidsCount = bids.Count;
                var view      = new OrderBookViewModel
                {
                    CurrencyPair = orderBook.PartitionName,
                    Asks         = asks,
                    Bids         = bids,
                    AsksCount    = asksCount,
                    BidsCount    = bidsCount,
                };
                return(this.Json(view));
            }
            catch (FabricException)
            {
                return(new ContentResult {
                    StatusCode = 503, Content = "The service was unable to process the request. Please try again."
                });
            }
        }
示例#3
0
        public async Task <IActionResult> GetAsync()
        {
            try
            {
                var asks = await this.orderBook.GetAsksAsync();

                var bids = await this.orderBook.GetBidsAsync();

                var asksCount = asks.Count;
                var bidsCount = bids.Count;
                var view      = new OrderBookViewModel
                {
                    CurrencyPair = orderBook.PartitionName,
                    Asks         = asks,
                    Bids         = bids,
                    AsksCount    = asksCount,
                    BidsCount    = bidsCount,
                };
                return(this.Json(view));
            }
            catch (FabricException)
            {
                return(new ContentResult {
                    StatusCode = 503, Content = "The service was unable to process the request. Please try again."
                });
            }
        }
示例#4
0
        public OrderBookViewModel GetOrderedBook(int bookId, string bookTitle)
        {
            var book = this.Data.Books
                       .All()
                       .First(b => b.Id == bookId);
            var viewModel = new OrderBookViewModel
            {
                Book = book
            };

            return(viewModel);
        }
示例#5
0
        public ActionResult CreateAndEdit(OrderBookViewModel ordersBooksModel)
        {
            var orderBO = mapper.Map <OrderBookBO>(ordersBooksModel);

            if (ModelState.IsValid)
            {
                orderBO.Save();
                return(RedirectToActionPermanent("Index", "OrdersBooks"));
            }
            else
            {
                return(View(ordersBooksModel));
            }
        }
示例#6
0
        public ActionResult Buy(OrderBookViewModel viewModel)
        {
            if (!this.ModelState.IsValid)
            {
                this.Redirect($"Books/Details/{viewModel.BookId}/{viewModel.Book.Title}");
            }

            var order = this.orderService.CreateOrder(viewModel);

            var userId = this.User.Identity.GetUserId();

            order.UserId = userId;

            this.orderService.PersistOrder(order, userId);

            return(this.RedirectToAction <OrdersController>(c => c.MyOrders()));
        }
示例#7
0
        public ExchangeViewModel(MainViewModel mainViewModel, ExchangeBase exchangeBase)
            : base(exchangeBase)
        {
            Pairs = new PairManageViewModel(exchangeBase);
            this.MainViewModel = mainViewModel;
            this.Header        = Exchange.Name;
            //this.Foreground = Brushes.DodgerBlue;

            MainViewModel.TimerSeconds.Tick += TimerSecondsOnTick;


            Orders    = new UserOrdersViewModel(Exchange);
            Ticker    = new TickerViewModel(Exchange);
            OrderBook = new OrderBookViewModel(Exchange);

            Trades = new TradesViewModel(MainViewModel, this, Exchange);

            Balance     = new BalanceViewModel(Exchange);
            NewBuyOrder = new NewOrderViewModel(Exchange)
            {
                Side = OrderSide.Buy
            };
            NewSellOrder = new NewOrderViewModel(Exchange)
            {
                Side = OrderSide.Sell
            };

            if (!DesignerProperties.GetIsInDesignMode(new DependencyObject()))
            {
                UpdatePair();
                //Exchange.ExchangeManager.Settings.
                MainViewModel.SettingsService.SettingsLoaded += SettingsServiceOnSettingsLoaded;
                Pairs.PairChanged += PairsOnPairChanged;
                OrderBook.Ticker.LastTradeClickEvent += TickerOnLastTradeClickEvent;
                OrderBook.SelectedAskChanged         += OrderBookOnSelectedAskChanged;
                OrderBook.SelectedBidChanged         += OrderBookOnSelectedBidChanged;
                Balance.SelectedBalanceChanged       += BalanceOnSelectedBalanceChanged;
                CreateTimer();
                UpdateViewModels();
                RegisterUpdates();
                Ticker.Dispatched += TickerOnDispatched;
            }
        }
示例#8
0
        public async Task <IActionResult> Book(int id)
        {
            IdentityUser user = await _userManagerService.FindByNameAsync(User.Identity.Name);

            Package package = _packageDataService.GetSingle(p => p.PackageId == id);

            // Order order = _orderDataService.GetSingle(o => o.OrderId == id);

            OrderBookViewModel vm = new OrderBookViewModel
            {
                UserId          = user.Id,
                OrderDate       = DateTime.Now,
                PackagId        = package.PackageId,
                PackDescription = package.PackDescription,
                PackImage       = package.PackImage,
                PackName        = package.PackName,
                PackPrice       = package.PackPrice,
                PackLocation    = package.PackLocation
            };

            return(View(vm));
        }
示例#9
0
        public async Task <IActionResult> Book(OrderBookViewModel vm)
        {
            IdentityUser user = await _userManagerService.FindByNameAsync(User.Identity.Name);

            //Package package = _packageDataService.GetSingle(p => p.PackageId == id);

            // Order ord = _orderDataService.GetSingle(o => o.OrderId == id);
            if (ModelState.IsValid)
            {
                Order order = new Order
                {
                    UserId   = user.Id,
                    Status   = "confirmed",
                    Price    = vm.PackPrice,
                    Date     = DateTime.Now,
                    PackagId = vm.PackagId,
                };
                _orderDataService.Create(order);
                return(RedirectToAction("Add", "Feedback", new { id = vm.PackagId }));
            }

            return(View(vm));
        }
示例#10
0
        public Order CreateOrder(OrderBookViewModel viewModel)
        {
            var order = Mapper.Map <OrderBookViewModel, Order>(viewModel);

            return(order);
        }
示例#11
0
        public OrderBookViewModel GetMarketData(string exchangeId, string baseCurrency, string quoteCurrency)
        {
            var orderBook = new OrderBookViewModel();

            if (exchangeId == "0")
            {
                var marketKey = (baseCurrency + quoteCurrency).ToUpper();

                MarketData marketData = null;



                if (!this._bittrex.TryGetValue(marketKey, out marketData))
                {
                    throw new NullReferenceException($"Bittrex market data \"{baseCurrency}-{quoteCurrency}\" is still initializing.");
                }

                orderBook.asks = marketData.OrderBook.asks.ToList();
                orderBook.bids = marketData.OrderBook.bids.ToList();

                return(orderBook);
            }
            else if (exchangeId == "1")
            {
                var marketKey = (baseCurrency + quoteCurrency).ToUpper();

                MarketData marketData = null;

                if (!this._binance.TryGetValue(marketKey, out marketData))
                {
                    throw new NullReferenceException($"Binance market data \"{baseCurrency}-{quoteCurrency}\" is still initializing.");
                }

                orderBook.asks = marketData.OrderBook.asks.ToList();
                orderBook.bids = marketData.OrderBook.bids.ToList();

                return(orderBook);
            }
            else if (exchangeId == "3")
            {
                var marketKey = (baseCurrency + quoteCurrency).ToUpper();

                MarketData marketData = null;

                if (!this._bitstamp.TryGetValue(marketKey, out marketData))
                {
                    throw new NullReferenceException($"Bitstamp market data \"{baseCurrency}-{quoteCurrency}\" is still initializing.");
                }

                orderBook.asks = marketData.OrderBook.asks.ToList();
                orderBook.bids = marketData.OrderBook.bids.ToList();

                return(orderBook);
            }
            else if (exchangeId == "4")
            {
                var marketKey = (baseCurrency + quoteCurrency).ToUpper();

                MarketData marketData = null;

                if (!this._poloniex.TryGetValue(marketKey, out marketData))
                {
                    throw new NullReferenceException($"Poloniex market data \"{baseCurrency}-{quoteCurrency}\" is still initializing.");
                }

                orderBook.asks = marketData.OrderBook.asks.ToList();
                orderBook.bids = marketData.OrderBook.bids.ToList();

                return(orderBook);
            }
            else if (exchangeId == "5")
            {
                var marketKey = (baseCurrency + quoteCurrency).ToUpper();

                MarketData marketData = null;



                if (!this._kucoin.TryGetValue(marketKey, out marketData))
                {
                    throw new NullReferenceException($"Kucoin market data \"{baseCurrency}-{quoteCurrency}\" is still initializing.");
                }

                orderBook.asks = marketData.OrderBook.asks.ToList();
                orderBook.bids = marketData.OrderBook.bids.ToList();

                return(orderBook);
            }
            throw new KeyNotFoundException("Exchange Not Found");
        }
        public static OrderBookViewModel GetOrderBookResponse(string exchangeId, string formObject)
        {
            JObject            jsonResult = JObject.Parse(formObject);
            OrderBookViewModel orderBook  = null;
            var asksList = new List <OrderPriceAndQuantityViewModel>();
            var bidsList = new List <OrderPriceAndQuantityViewModel>();

            if (exchangeId == "0")
            {
                var bidsJson = jsonResult["result"]["buy"];
                var asksJson = jsonResult["result"]["sell"];



                //Alternate Property Name.
                var jsonResolver = new PropertyRenameAndIgnoreSerializerContractResolver();
                jsonResolver.RenameProperty(typeof(OrderPriceAndQuantityViewModel), "price", "rate");
                var serializerSettings = new JsonSerializerSettings();
                serializerSettings.ContractResolver = jsonResolver;

                asksList = JsonConvert.DeserializeObject <List <OrderPriceAndQuantityViewModel> >(asksJson.ToString(), serializerSettings);
                bidsList = JsonConvert.DeserializeObject <List <OrderPriceAndQuantityViewModel> >(bidsJson.ToString(), serializerSettings);
            }
            else if (exchangeId == "1")
            {
                var bidsJson = jsonResult["bids"];
                var asksJson = jsonResult["asks"];


                foreach (var order in asksJson)
                {
                    asksList.Add(
                        new OrderPriceAndQuantityViewModel
                    {
                        price    = Decimal.Parse(order[0].ToString()),
                        quantity = Decimal.Parse(order[1].ToString())
                    }
                        );
                }
                foreach (var order in bidsJson)
                {
                    bidsList.Add(
                        new OrderPriceAndQuantityViewModel
                    {
                        price    = Decimal.Parse(order[0].ToString()),
                        quantity = Decimal.Parse(order[1].ToString())
                    }
                        );
                }
            }
            else if (exchangeId == "2")
            {
                var data     = jsonResult["result"].First.First;
                var bidsJson = data["bids"];
                var asksJson = data["asks"];


                foreach (var order in asksJson)
                {
                    asksList.Add(
                        new OrderPriceAndQuantityViewModel
                    {
                        price    = Decimal.Parse(order[0].ToString()),
                        quantity = Decimal.Parse(order[1].ToString())
                    }
                        );
                }
                foreach (var order in bidsJson)
                {
                    bidsList.Add(
                        new OrderPriceAndQuantityViewModel
                    {
                        price    = Decimal.Parse(order[0].ToString()),
                        quantity = Decimal.Parse(order[1].ToString())
                    }
                        );
                }
            }
            else if (exchangeId == "3")
            {
                var bidsJson = jsonResult["bids"];
                var asksJson = jsonResult["asks"];


                foreach (var order in asksJson)
                {
                    asksList.Add(
                        new OrderPriceAndQuantityViewModel
                    {
                        price    = Decimal.Parse(order[0].ToString()),
                        quantity = Decimal.Parse(order[1].ToString())
                    }
                        );
                    if (asksList.Count >= 100)
                    {
                        break;
                    }
                }
                foreach (var order in bidsJson)
                {
                    bidsList.Add(
                        new OrderPriceAndQuantityViewModel
                    {
                        price    = Decimal.Parse(order[0].ToString()),
                        quantity = Decimal.Parse(order[1].ToString())
                    }
                        );
                    if (bidsList.Count >= 100)
                    {
                        break;
                    }
                }
            }



            orderBook = new OrderBookViewModel
            {
                bids = bidsList,
                asks = asksList
            };

            return(orderBook);
        }