예제 #1
0
        private async Task FillDetails(string currency)
        {
            await Task.Run(() =>
            {
                LendingOffer highLoanRate         = null;
                LendingOffer lowLoanRate          = null;
                IList <LendingOffer> periodOffers = null;

                try
                {
                    DateTime horaInicio = DateTime.Now;
                    DateTime horaFim    = DateTime.Now;

                    txtMinutos.Dispatcher.Invoke(DispatcherPriority.Render, (ThreadStart) delegate
                    {
                        int tempoMinutoPeriodo = 20;

                        if (!int.TryParse(txtMinutos.Text, out tempoMinutoPeriodo))
                        {
                            tempoMinutoPeriodo = 20;
                        }

                        horaInicio = DateTime.Now.AddMinutes(-tempoMinutoPeriodo);
                    });


                    using (var context = new LoanContext())
                        periodOffers = context.LendingOffers.Where(o => (o.currency.Equals(currency) && (o.dataRegistro >= horaInicio && o.dataRegistro <= horaFim))).ToList();

                    ResetLabels();
                    if (periodOffers.Any())
                    {
                        highLoanRate = periodOffers.OrderByDescending(o => o.rate).First();
                        lowLoanRate  = periodOffers.OrderBy(o => o.rate).First();

                        var averageLoanRate = periodOffers.Average(x => x.rate);

                        this.Dispatcher.Invoke(DispatcherPriority.Render, (ThreadStart) delegate
                        {
                            txtMaiorLoanRate.Text   = highLoanRate.rate.ToString("0.0000%");
                            txtMenorLoanRate.Text   = string.Concat(lowLoanRate.rate.ToString("0.0000%"), " ", "(", lowLoanRate.dataRegistro.ToShortTimeString(), ")");
                            txtRateAverage.Text     = averageLoanRate.ToString("0.0000%");
                            txtDataRegistro.Text    = highLoanRate.dataRegistro.ToString();
                            txtCountLoanOffers.Text = periodOffers.Count() + " in " + txtMinutos.Text + " mins.";
                        });
                    }
                }
                catch
                {
                    ResetLabels();
                }
                finally
                {
                    highLoanRate = null;
                    lowLoanRate  = null;
                    periodOffers = null;
                }
            });
        }
예제 #2
0
        public async Task LoadLoanOffersAsync(PoloniexClient PoloniexClient)
        {
            await Task.Run(async() =>
            {
                PublicLoanOffersData lendings = null;
                LendingOffer firstLoanOffer   = null;

                try
                {
                    lendings       = await PoloniexClient.Lendings.GetLoanOffersAsync("BTC");
                    firstLoanOffer = lendings.offers.OrderBy(x => x.rate).First();

                    if (MarketService.Instance().MarketList != null)
                    {
                        if (MarketService.Instance().MarketList.Any())
                        {
                            double ethPriceLast = MarketService.Instance().MarketList.First(x => x.Key.ToString().ToUpper().Equals("BTC_ETH")).Value.PriceLast;
                            double btcPriceLast = MarketService.Instance().MarketList.First(x => x.Key.ToString().ToUpper().Equals("USDT_BTC")).Value.PriceLast;

                            firstLoanOffer.ethExchangeValue = ethPriceLast;
                            firstLoanOffer.btcExchangeValue = btcPriceLast;


                            string dolarValor = FachadaWSSGSService.Instance().getUltimoValorVOResponse.getUltimoValorVOReturn.ultimoValor.svalor;

                            string eth     = string.Concat("BTC/ETH: ", firstLoanOffer.ethExchangeValue.ToString("0.00000000"));
                            string btc     = string.Concat("USDT/BTC: ", firstLoanOffer.btcExchangeValue.ToString("0.000000"));
                            string loan    = string.Concat("BTC Loan Rate: ", firstLoanOffer.rate.ToString("0.00000%"));
                            string dolar   = string.Concat("USD: ", double.Parse(dolarValor.Replace(".", ",")).ToString("C2"));
                            string btcReal = string.Concat("BTC: ", (firstLoanOffer.btcExchangeValue * double.Parse(dolarValor.Replace(".", ","))).ToString("C2"));

                            txtDisplay.Dispatcher.Invoke(DispatcherPriority.Background, (ThreadStart) delegate {
                                animation          = new DoubleAnimation((Application.Current.MainWindow.Width - 202), 0, TimeSpan.FromSeconds(10));
                                txtDisplay.Content = string.Concat(btc, "     ", eth, "     ", loan, "     ", dolar, "     ", btcReal);
                            });
                        }
                    }
                }
                finally
                {
                    lendings       = null;
                    firstLoanOffer = null;
                }
            });
        }
예제 #3
0
        private async Task LoadLoanOffersAsync()
        {
            await Task.Run(async() =>
            {
                selectedCurrency = "BTC"; //defaultValue

                PublicLoanOffersData lendings = null;
                LendingOffer firstLoanOffer   = null;
                IDictionary <CurrencyPair, IMarketData> markets = null;

                try
                {
                    if (PoloniexClient != null)
                    {
                        markets = await PoloniexClient.Markets.GetSummaryAsync();

                        cbCurrency.Dispatcher.Invoke(DispatcherPriority.Render, (ThreadStart) delegate
                        {
                            if (cbCurrency.SelectedValue != null)
                            {
                                if (cbCurrency.SelectedValue.ToString().Split(':').Any())
                                {
                                    selectedCurrency = cbCurrency.SelectedValue.ToString().Split(':')[1].ToString();
                                }
                            }
                        });

                        lendings = await PoloniexClient.Lendings.GetLoanOffersAsync(selectedCurrency.Trim());

                        if (markets != null)
                        {
                            if (markets.Any())
                            {
                                if (lendings != null)
                                {
                                    this.Dispatcher.Invoke(DispatcherPriority.Render, (ThreadStart) delegate
                                    {
                                        DataGrid1.Items.Clear();
                                        foreach (var offer in lendings.offers)
                                        {
                                            DataGrid1.Items.Add(offer);
                                        }
                                    });


                                    firstLoanOffer = lendings.offers.OrderBy(x => x.rate).First();

                                    if (firstLoanOffer != null)
                                    {
                                        using (var context = new LoanContext())
                                            if (!context.LendingOffers.Any(x => x.currency.Equals(selectedCurrency) &&
                                                                           x.amount.Equals(firstLoanOffer.amount) &&
                                                                           x.rate.Equals(firstLoanOffer.rate) &&
                                                                           x.rangeMin.Equals(firstLoanOffer.rangeMin) &&
                                                                           x.rangeMax.Equals(firstLoanOffer.rangeMax)))
                                            {
                                                firstLoanOffer.currency = selectedCurrency;
                                                context.LendingOffers.Add(firstLoanOffer);
                                                await context.SaveChangesAsync();
                                            }
                                    }

                                    await FillDetails(selectedCurrency);
                                }
                            }
                        }
                    }
                }
                finally
                {
                    firstLoanOffer = null;
                    lendings       = null;
                    markets        = null;
                }
            });
        }