public List <BinanceModel> Binance30F() { string allData; try { allData = webClient.DownloadString("https://www.binance.com/api/v3/ticker/24hr"); } catch (Exception ee) { ////Timer timer2 = new Timer(); //timer2.Stop(); MessageBox.Show("Bağlanamadı! İnternet bağlantınızı kontrol edip uygulamayı tekrar çalıştırmayı deneyin.", "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error); return(new List <BinanceModel>()); } JArray allDataArray = JArray.Parse(allData); BRatio ethBtc = JsonConvert.DeserializeObject <BRatio>(allDataArray[0].ToString()); decimal ethBtcLastPrice = Convert.ToDecimal(ethBtc.LastPrice, System.Globalization.CultureInfo.InvariantCulture); BRatio bnbEth = JsonConvert.DeserializeObject <BRatio>(allDataArray[10].ToString()); decimal bnbEthLastPrice = Convert.ToDecimal(bnbEth.LastPrice, System.Globalization.CultureInfo.InvariantCulture); BRatio ethUsdt = JsonConvert.DeserializeObject <BRatio>(allDataArray[12].ToString()); decimal ethUsdtLastPrice = Convert.ToDecimal(ethUsdt.LastPrice, System.Globalization.CultureInfo.InvariantCulture); List <RatioModel> bRatiosOverBTC = new List <RatioModel>(); List <BRatio> bRatiosOverETH = new List <BRatio>(); List <RatioModel> bRatiosOverBNB = new List <RatioModel>(); List <RatioModel> bRatiosOverUSDT = new List <RatioModel>(); foreach (var item in allDataArray) { BRatio bRatio = JsonConvert.DeserializeObject <BRatio>(item.ToString()); if (bRatio.Symbol.Substring(bRatio.Symbol.Length - 3).Contains("BTC")) { RatioModel ratioModel = new RatioModel { Symbol = bRatio.Symbol, LastPrice = bRatio.LastPrice, QuoteVolume = bRatio.QuoteVolume }; bRatiosOverBTC.Add(ratioModel); decimal ratioModelLastPrice = Convert.ToDecimal(ratioModel.LastPrice, System.Globalization.CultureInfo.InvariantCulture); ratioModel.Value1 = (ratioModelLastPrice / ethBtcLastPrice).ToString("0.########", System.Globalization.CultureInfo.InvariantCulture); } if (bRatio.Symbol.Substring(bRatio.Symbol.Length - 3).Contains("ETH")) { bRatiosOverETH.Add(bRatio); //decimal ratioModelLastPrice = Convert.ToDecimal(bRatio.LastPrice, System.Globalization.CultureInfo.InvariantCulture); } if (bRatio.Symbol.Substring(bRatio.Symbol.Length - 3).Contains("BNB")) { RatioModel ratioModel = new RatioModel { Symbol = bRatio.Symbol, LastPrice = bRatio.LastPrice, QuoteVolume = bRatio.QuoteVolume }; bRatiosOverBNB.Add(ratioModel); decimal ratioModelLastPrice = Convert.ToDecimal(ratioModel.LastPrice, System.Globalization.CultureInfo.InvariantCulture); ratioModel.Value3 = (ratioModelLastPrice * bnbEthLastPrice).ToString("0.########", System.Globalization.CultureInfo.InvariantCulture); } if (bRatio.Symbol.Substring(bRatio.Symbol.Length - 4).Contains("USDT")) { RatioModel ratioModel = new RatioModel { Symbol = bRatio.Symbol, LastPrice = bRatio.LastPrice, QuoteVolume = bRatio.QuoteVolume }; bRatiosOverUSDT.Add(ratioModel); decimal ratioModelLastPrice = Convert.ToDecimal(ratioModel.LastPrice, System.Globalization.CultureInfo.InvariantCulture); ratioModel.Value4 = (ratioModelLastPrice / ethUsdtLastPrice).ToString("0.########", System.Globalization.CultureInfo.InvariantCulture); } } var bRatiosOverBtcInOrder = bRatiosOverBTC.OrderBy(ratioModel => decimal.Parse(ratioModel.QuoteVolume)).Reverse(); IDictionary <string, RatioModel> btcDict = new Dictionary <string, RatioModel>(); foreach (var item in bRatiosOverBtcInOrder) { btcDict.Add(item.Symbol.Substring(0, item.Symbol.Length - 3), item); } foreach (var ethItem in bRatiosOverETH) { if (btcDict.Keys.Contains(ethItem.Symbol.Substring(0, ethItem.Symbol.Length - 3))) { btcDict[ethItem.Symbol.Substring(0, ethItem.Symbol.Length - 3)].XxxEth = ethItem.LastPrice; } } foreach (var bnbItem in bRatiosOverBNB) { if (btcDict.Keys.Contains(bnbItem.Symbol.Substring(0, bnbItem.Symbol.Length - 3))) { btcDict[bnbItem.Symbol.Substring(0, bnbItem.Symbol.Length - 3)].Value3 = bnbItem.Value3; } } foreach (var usdtItem in bRatiosOverUSDT) { if (btcDict.Keys.Contains(usdtItem.Symbol.Substring(0, usdtItem.Symbol.Length - 4))) { btcDict[usdtItem.Symbol.Substring(0, usdtItem.Symbol.Length - 4)].Value4 = usdtItem.Value4; } } foreach (var ratioModel in bRatiosOverBtcInOrder) { if (Convert.ToDecimal(ratioModel.QuoteVolume, System.Globalization.CultureInfo.InvariantCulture) > 0) { decimal[] valuesInRow = { Convert.ToDecimal(ratioModel.Value1, System.Globalization.CultureInfo.InvariantCulture), Convert.ToDecimal(ratioModel.XxxEth, System.Globalization.CultureInfo.InvariantCulture), Convert.ToDecimal(ratioModel.Value3, System.Globalization.CultureInfo.InvariantCulture), Convert.ToDecimal(ratioModel.Value4, System.Globalization.CultureInfo.InvariantCulture) }; decimal[] valuesInRowNoZero = { }; int i = 0; foreach (decimal value in valuesInRow) { if (value != 0) { Array.Resize(ref valuesInRowNoZero, i + 1); valuesInRowNoZero[i] = value; i++; } } ; int indexOfMin = Array.IndexOf(valuesInRowNoZero, valuesInRowNoZero.Min()); int indexOfMax = Array.IndexOf(valuesInRowNoZero, valuesInRowNoZero.Max()); int[] rankOfIndex = { indexOfMin, indexOfMax }; decimal difference = valuesInRowNoZero[rankOfIndex.Min()] - valuesInRowNoZero[rankOfIndex.Max()]; ratioModel.Difference = difference.ToString(System.Globalization.CultureInfo.InvariantCulture); ratioModel.ResultValue = (difference / valuesInRowNoZero[rankOfIndex.Min()]).ToString("0.##########", System.Globalization.CultureInfo.InvariantCulture); } else { ratioModel.ResultValue = "0"; } } IEnumerable <RatioModel> bRatiosOverBtcOrderedByResultValue = bRatiosOverBTC.OrderBy(ratioModel => decimal.Parse(ratioModel.ResultValue)); IEnumerable <RatioModel> bRatiosOverBtcOrderedByResultValueLast30 = bRatiosOverBtcOrderedByResultValue.Take(30); IEnumerable <RatioModel> bRatiosOverBtcOrderedByResultValueTop30 = bRatiosOverBtcOrderedByResultValue.Reverse().Take(30); IEnumerable <RatioModel> bRatiosOverBtcOrderedByResultValueTop30Last30 = bRatiosOverBtcOrderedByResultValueTop30.Concat(bRatiosOverBtcOrderedByResultValueLast30.Reverse()); var bRatiosOverBtcOrderedByResultValueTop30Last30List = bRatiosOverBtcOrderedByResultValueTop30Last30.ToList(); List <BinanceModel> FinalList = new List <BinanceModel>(); foreach (var item in bRatiosOverBtcOrderedByResultValueTop30Last30List) { BinanceModel binanceModel = new BinanceModel { Symbol = item.Symbol.Substring(0, item.Symbol.Length - 3), Difference = item.Difference, ResultValue = item.ResultValue, Value1 = item.Value1, Value3 = item.Value3, Value4 = item.Value4, XxxEth = item.XxxEth, QuoteVolume = item.QuoteVolume }; FinalList.Add(binanceModel); } ////DataGridView dgvMain = new DataGridView(); //dgvMain.DataSource = FinalList; //TODO: BURDAN dgvMain'i ya da timer2'yi nasıl kullanırım? //dgvMain.Columns[0].HeaderText = "Sembol"; //dgvMain.Columns[1].HeaderText = "(XXX/BTC) / (ETH/BTC)"; //dgvMain.Columns[2].HeaderText = "(XXX/ETH)"; //dgvMain.Columns[3].HeaderText = "(XXX/BNB) × (BNB/ETH)"; //dgvMain.Columns[4].HeaderText = "(XXX/USDT) / (ETH/USDT)"; //dgvMain.Columns[5].HeaderText = "Fark"; //dgvMain.Columns[6].HeaderText = "Sonuç"; //dgvMain.Columns[7].HeaderText = "BTC Piyasası İşlem Hacmi"; return(FinalList); }
public IActionResult Binance() { string allData = c.DownloadString("https://www.binance.com/api/v3/ticker/24hr"); JArray allDataArray = JArray.Parse(allData); BRatio ethBtc = JsonConvert.DeserializeObject <BRatio>(allDataArray[0].ToString()); decimal ethBtcLastPrice = Convert.ToDecimal(ethBtc.LastPrice, System.Globalization.CultureInfo.InvariantCulture); BRatio bnbEth = JsonConvert.DeserializeObject <BRatio>(allDataArray[10].ToString()); decimal bnbEthLastPrice = Convert.ToDecimal(bnbEth.LastPrice, System.Globalization.CultureInfo.InvariantCulture); BRatio ethUsdt = JsonConvert.DeserializeObject <BRatio>(allDataArray[12].ToString()); decimal ethUsdtLastPrice = Convert.ToDecimal(ethUsdt.LastPrice, System.Globalization.CultureInfo.InvariantCulture); List <RatioModel> bRatiosOverBTC = new List <RatioModel>(); List <BRatio> bRatiosOverETH = new List <BRatio>(); List <RatioModel> bRatiosOverBNB = new List <RatioModel>(); List <RatioModel> bRatiosOverUSDT = new List <RatioModel>(); foreach (var item in allDataArray) { BRatio bRatio = JsonConvert.DeserializeObject <BRatio>(item.ToString()); if (bRatio.Symbol.Substring(bRatio.Symbol.Length - 3).Contains("BTC")) { RatioModel ratioModel = new RatioModel { Symbol = bRatio.Symbol, LastPrice = bRatio.LastPrice, QuoteVolume = bRatio.QuoteVolume }; bRatiosOverBTC.Add(ratioModel); decimal ratioModelLastPrice = Convert.ToDecimal(ratioModel.LastPrice, System.Globalization.CultureInfo.InvariantCulture); ratioModel.Value1 = (ratioModelLastPrice / ethBtcLastPrice).ToString("0.########", System.Globalization.CultureInfo.InvariantCulture); } if (bRatio.Symbol.Substring(bRatio.Symbol.Length - 3).Contains("ETH")) { bRatiosOverETH.Add(bRatio); //decimal ratioModelLastPrice = Convert.ToDecimal(bRatio.LastPrice, System.Globalization.CultureInfo.InvariantCulture); } if (bRatio.Symbol.Substring(bRatio.Symbol.Length - 3).Contains("BNB")) { RatioModel ratioModel = new RatioModel { Symbol = bRatio.Symbol, LastPrice = bRatio.LastPrice, QuoteVolume = bRatio.QuoteVolume }; bRatiosOverBNB.Add(ratioModel); decimal ratioModelLastPrice = Convert.ToDecimal(ratioModel.LastPrice, System.Globalization.CultureInfo.InvariantCulture); ratioModel.Value3 = (ratioModelLastPrice * bnbEthLastPrice).ToString("0.########", System.Globalization.CultureInfo.InvariantCulture); } if (bRatio.Symbol.Substring(bRatio.Symbol.Length - 4).Contains("USDT")) { RatioModel ratioModel = new RatioModel { Symbol = bRatio.Symbol, LastPrice = bRatio.LastPrice, QuoteVolume = bRatio.QuoteVolume }; bRatiosOverUSDT.Add(ratioModel); decimal ratioModelLastPrice = Convert.ToDecimal(ratioModel.LastPrice, System.Globalization.CultureInfo.InvariantCulture); ratioModel.Value4 = (ratioModelLastPrice / ethUsdtLastPrice).ToString("0.########", System.Globalization.CultureInfo.InvariantCulture); } } IEnumerable <RatioModel> bRatiosOverBtcInOrder = bRatiosOverBTC.OrderBy(ratioModel => decimal.Parse(ratioModel.QuoteVolume)).Reverse(); IDictionary <string, RatioModel> btcDict = new Dictionary <string, RatioModel>(); foreach (var item in bRatiosOverBtcInOrder) { btcDict.Add(item.Symbol.Substring(0, item.Symbol.Length - 3), item); } foreach (var ethItem in bRatiosOverETH) { if (btcDict.Keys.Contains(ethItem.Symbol.Substring(0, ethItem.Symbol.Length - 3))) { btcDict[ethItem.Symbol.Substring(0, ethItem.Symbol.Length - 3)].XxxEth = ethItem.LastPrice; } } foreach (var bnbItem in bRatiosOverBNB) { if (btcDict.Keys.Contains(bnbItem.Symbol.Substring(0, bnbItem.Symbol.Length - 3))) { btcDict[bnbItem.Symbol.Substring(0, bnbItem.Symbol.Length - 3)].Value3 = bnbItem.Value3; } } foreach (var usdtItem in bRatiosOverUSDT) { if (btcDict.Keys.Contains(usdtItem.Symbol.Substring(0, usdtItem.Symbol.Length - 4))) { btcDict[usdtItem.Symbol.Substring(0, usdtItem.Symbol.Length - 4)].Value4 = usdtItem.Value4; } } foreach (var ratioModel in bRatiosOverBtcInOrder) { if (Convert.ToDecimal(ratioModel.QuoteVolume, System.Globalization.CultureInfo.InvariantCulture) > 0) { decimal[] valuesInRow = { Convert.ToDecimal(ratioModel.Value1, System.Globalization.CultureInfo.InvariantCulture), Convert.ToDecimal(ratioModel.XxxEth, System.Globalization.CultureInfo.InvariantCulture), Convert.ToDecimal(ratioModel.Value3, System.Globalization.CultureInfo.InvariantCulture), Convert.ToDecimal(ratioModel.Value4, System.Globalization.CultureInfo.InvariantCulture) }; decimal[] valuesInRowNoZero = { }; int i = 0; foreach (decimal value in valuesInRow) { if (value != 0) { Array.Resize(ref valuesInRowNoZero, i + 1); valuesInRowNoZero[i] = value; i++; } } ; int indexOfMin = Array.IndexOf(valuesInRowNoZero, valuesInRowNoZero.Min()); int indexOfMax = Array.IndexOf(valuesInRowNoZero, valuesInRowNoZero.Max()); int[] rankOfIndex = { indexOfMin, indexOfMax }; decimal difference = valuesInRowNoZero[rankOfIndex.Min()] - valuesInRowNoZero[rankOfIndex.Max()]; ratioModel.Difference = difference.ToString(System.Globalization.CultureInfo.InvariantCulture); ratioModel.ResultValue = (difference / valuesInRowNoZero[rankOfIndex.Min()]).ToString("0.##########", System.Globalization.CultureInfo.InvariantCulture); } else { ratioModel.ResultValue = "0"; } } //IEnumerable<RatioModel> bRatiosOverBtcOrderedByResultValue = bRatiosOverBTC.OrderBy(ratioModel => decimal.Parse(ratioModel.ResultValue)).Reverse(); return(View(bRatiosOverBtcInOrder)); }