Ejemplo n.º 1
0
        public async Task <GetCurrenciesResult[]> GetCurrencies()
        {
            Bittrex.Net.BittrexClient bittrexClient = new Bittrex.Net.BittrexClient();

            var allCurrencies = (await bittrexClient.GetCurrenciesAsync())
                                .Data.Select(x => new GetCurrenciesResult
            {
                Currency        = x.Currency,
                CurrencyLong    = x.CurrencyLong,
                MinConfirmation = x.MinConfirmation,
                TxFee           = x.TransactionFee,
                IsActive        = x.IsActive,
                CoinType        = x.CoinType,
                BaseAddress     = x.BaseAddress
            }).ToArray();


            foreach (var currency in allCurrencies)
            {
                var positionData = _context.Positions.Include(x => x.Security)
                                   .FirstOrDefault(x => x.Security.Ticker == currency.Currency);
                if (positionData != null)
                {
                    positionData.Security.Name = currency.CurrencyLong;
                }
            }
            await _context.SaveChangesAsync();

            return(allCurrencies);
        }
Ejemplo n.º 2
0
        public async Task <GetBalancesResult[]> GetBalances(string userName, string key, string secret)
        {
            var user = _context.Users.Include(x => x.Exchanges)
                       .FirstOrDefault(x => x.UserName == userName);
            var userExchange = user.Exchanges.FirstOrDefault(x => x.Name == "Bittrex");

            Bittrex.Net.BittrexClient bittrexClient = new Bittrex.Net.BittrexClient(
                new Bittrex.Net.Objects.BittrexClientOptions
            {
                ApiCredentials = new CryptoExchange.Net.Authentication.ApiCredentials(
                    //userExchange.APIKey.Split(",").First(),
                    //userExchange.APIKey.Split(",").Last())
                    key, secret
                    )
            });

            var callResult = await bittrexClient.GetBalancesAsync();

            var balances = callResult.Data.Select(x => new GetBalancesResult
            {
                Currency      = x.Currency,
                Balance       = (x.Balance ?? 0),
                Available     = (x.Available ?? 0),
                Pending       = (x.Pending ?? 0),
                CryptoAddress = x.CryptoAddress
            }).ToArray();

            foreach (var balance in balances)
            {
                var userPosition = _context.Positions
                                   .FirstOrDefault(x => x.Security.Ticker == balance.Currency);

                if (userPosition == null)
                {
                    userPosition = new Position
                    {
                        UserID     = user.Id,
                        ExchangeID = userExchange.ID,
                        Security   = new Security
                        {
                            Ticker = balance.Currency
                        },
                        Units = balance.Balance
                    };
                    _context.Users.Single(x => x.UserName == userName)
                    .Positions.Add(userPosition);
                }
                else
                {
                    userPosition.Units = balance.Balance;
                }
            }
            await _context.SaveChangesAsync();

            return(balances);
        }
Ejemplo n.º 3
0
        public async Task <GetMarketSummaryResult[]> GetMarketSummaries()
        {
            Bittrex.Net.BittrexClient bittrexClient = new Bittrex.Net.BittrexClient();
            var allSummaries = (await bittrexClient.GetMarketSummariesAsync())
                               .Data.Select(x => new GetMarketSummaryResult
            {
                MarketName     = x.MarketName,
                High           = (x.High ?? 0),
                Low            = (x.Low ?? 0),
                Volume         = (x.Volume ?? 0),
                Last           = (x.Last ?? 0),
                BaseVolume     = (x.BaseVolume ?? 0),
                TimeStamp      = x.TimeStamp,
                Bid            = (x.Bid ?? 0),
                Ask            = (x.Ask ?? 0),
                OpenBuyOrders  = (x.OpenBuyOrders ?? 0),
                OpenSellOrders = (x.OpenSellOrders ?? 0),
                PrevDay        = (x.PrevDay ?? 0),
                Created        = x.Created
            }).ToArray();

            //string testSuffix = "/public/getmarketsummaries";
            //string endpoint = "https://api.bittrex.com/api/v1.1" + testSuffix /*_myApiKey*/;
            ////https://api.bittrex.com/api/v1.1/account/getbalances?apikey=API_KEY
            ////https://api.bittrex.com/api/v1.1/market/getopenorders?apikey=API_KEY&market=BTC-LTC
            //System.Net.Http.HttpClient httpClient = new System.Net.Http.HttpClient();
            //string response = await httpClient.GetStringAsync(endpoint);
            ////GetMarketSummary typedReponse = Newtonsoft.Json.JsonConvert
            ////.DeserializeObject<GetMarketSummary>(response);
            //var typedReponse = Newtonsoft.Json.JsonConvert
            //    .DeserializeObject<Newtonsoft.Json.Linq.JObject>(response);
            //var marketSummaries = typedReponse.GetValue("result").ToArray();
            ////if(marketSummaries.)
            //var markets = marketSummaries.Select(market => new GetMarketSummaryResult
            //{
            //    MarketName = market["MarketName"].ToString(),
            //    High = decimal.Parse(market["High"].ToString()),
            //    Low = decimal.Parse(market["Low"].ToString()),
            //    Volume = decimal.Parse(market["Volume"].ToString()),
            //    Last = decimal.Parse(market["Last"].ToString()),
            //    BaseVolume = decimal.Parse(market["BaseVolume"].ToString()),
            //    TimeStamp = DateTime.Parse(market["TimeStamp"].ToString()),
            //    Bid = decimal.Parse(market["Bid"].ToString()),
            //    Ask = decimal.Parse(market["Ask"].ToString()),
            //    OpenBuyOrders = int.Parse(market["OpenBuyOrders"].ToString()),
            //    OpenSellOrders = int.Parse(market["OpenSellOrders"].ToString()),
            //    PrevDay = decimal.Parse(market["PrevDay"].ToString()),
            //    Created = DateTime.Parse(market["Created"].ToString())
            //}).ToArray();
            ////now need to get this data into db !!!
            foreach (var market in allSummaries)
            {
                var marketData = _context.MarketDatas.Include(x => x.MarketSummarries)
                                 .FirstOrDefault(x => x.MarketSummarries.MarketName == market.MarketName);
                if (marketData == null)
                {
                    marketData = new MarketData
                    {
                        ExchangeID = _context.Exchanges.FirstOrDefault(x => x.Name == marketName).ID
                    };
                    _context.MarketDatas.Add(marketData);
                }
                if (marketData.MarketSummarries != null)
                {
                    _context.GetMarketSummaryResults.Remove(marketData.MarketSummarries);
                }
                marketData.MarketSummarries = market;

                var ticker = market.MarketName.Split('-')[1];

                var position = _context.Positions.Include(x => x.Security)
                               .FirstOrDefault(x => x.Security.Ticker == ticker);

                if (position != null)
                {
                    if (market.MarketName == "BTC-" + position.Security.Ticker)
                    {
                        position.Security.PxBTC = market.Last;
                    }
                    if (market.MarketName == "USD-" + position.Security.Ticker)
                    {
                        position.Security.PxUSD = market.Last;
                    }
                }
            }
            await _context.SaveChangesAsync();

            return(allSummaries);
        }
Ejemplo n.º 4
0
        public async Task <GetOpenOrdersResult[]> GetOpenOrders(string userName, string key, string secret)
        {
            Bittrex.Net.BittrexClient bittrexClient = new Bittrex.Net.BittrexClient(
                new Bittrex.Net.Objects.BittrexClientOptions
            {
                ApiCredentials = new CryptoExchange.Net.Authentication.ApiCredentials(
                    //userExchange.APIKey.Split(",").First(),
                    //userExchange.APIKey.Split(",").Last())
                    key, secret
                    )
            });

            var callResult = await bittrexClient.GetOpenOrdersAsync();

            var allOpenOrders = callResult.Data.Select(x => new GetOpenOrdersResult
            {
                Uuid              = x.Uuid,
                OrderUuid         = x.OrderUuid,
                Exchange          = x.Exchange,
                OrderType         = x.OrderType,
                Quantity          = x.Quantity,
                QuantityRemaining = x.QuantityRemaining,
                Limit             = x.Limit,
                CommissionPaid    = x.CommissionPaid,
                Price             = x.Price,
                PricePerUnit      = x.PricePerUnit,
                Opened            = x.Opened,
                Closed            = x.Closed,
                CancelInitiated   = x.CancelInitiated,
                ImmediateOrCancel = x.ImmediateOrCancel,
                IsConditional     = x.IsConditional
            }).ToArray();

            foreach (var order in allOpenOrders)
            {
                var ticker       = order.Exchange.Split('-')[1];
                var user         = _context.Users.Include(x => x.Exchanges).FirstOrDefault(x => x.UserName == userName);
                var userExchange = user.Exchanges.FirstOrDefault(x => x.Name == "Bittrex");
                var orderData    = _context.OpenOrders.Include(x => x.Security)
                                   .FirstOrDefault(x => x.OrderUuid == order.OrderUuid);
                var security = _context.Securities.FirstOrDefault(x => x.Ticker == ticker);

                if (orderData == null)
                {
                    if (security == null)
                    {
                        security = new Security
                        {
                            Ticker = ticker
                        };
                    }

                    orderData = new OpenOrder
                    {
                        UserID            = user.Id,
                        ExchangeID        = userExchange.ID,
                        OrderUuid         = order.OrderUuid,
                        Security          = security,
                        Quantity          = order.Quantity,
                        QuantityRemaining = order.QuantityRemaining,
                        OrderType         = order.OrderType,
                        TradingPair       = order.Exchange,
                        OrderPx           = order.PricePerUnit
                    };
                    _context.Users.Single(x => x.UserName == userName)
                    .OpenOrders.Add(orderData);
                }
                else
                {
                    orderData.Quantity          = order.Quantity;
                    orderData.QuantityRemaining = order.QuantityRemaining;
                    orderData.OrderPx           = order.PricePerUnit;
                }
            }
            await _context.SaveChangesAsync();

            return(allOpenOrders);
        }