public async Task <StockExchangePairTableDetails> GetStockExchangePairCompareTableDetails(List <ITickers> tickers, List <string> selectedPairs) { StockExchangePairTableDetails stockExchangePairTable = new StockExchangePairTableDetails(); await Task.Run(() => { stockExchangePairTable.HeaderNames.Add("PAIR"); stockExchangePairTable.HeaderNames.Add("BUY"); stockExchangePairTable.HeaderNames.Add("%"); stockExchangePairTable.HeaderNames.Add("SELL"); stockExchangePairTable.HeaderNames.Add(string.Empty); stockExchangePairTable.HeaderNames.Add("AMOUNT"); stockExchangePairTable.HeaderNames.Add(string.Empty); stockExchangePairTable.HeaderNames.Add("PAIR"); stockExchangePairTable.HeaderNames.Add("BUY"); stockExchangePairTable.HeaderNames.Add("%"); stockExchangePairTable.HeaderNames.Add("SELL"); stockExchangePairTable.HeaderNames.Add(string.Empty); stockExchangePairTable.HeaderNames.Add("AMOUNT"); if (selectedPairs.Count > 0) { int l = 1; foreach (ITickers ticker in tickers) { int i = l; while (i < tickers.Count) { StockExchangeDataRows stockExchangeFilteredDataRows = GetStockExchangeFilteredDataRows(ticker, tickers[i], selectedPairs); if (stockExchangeFilteredDataRows.DataRows.Count > 0) { stockExchangePairTable.StockExchangeDataRows.Add(stockExchangeFilteredDataRows); } i++; } l++; } } else { int l = 1; foreach (ITickers ticker in tickers) { int i = l; while (i < tickers.Count) { StockExchangeDataRows stockExchangeDataRows = GetStockExchangeDataRows(ticker, tickers[i]); if (stockExchangeDataRows.DataRows.Count > 0) { stockExchangePairTable.StockExchangeDataRows.Add(stockExchangeDataRows); } i++; } l++; } } }); return(stockExchangePairTable); }
private StockExchangeDataRows GetStockExchangeFilteredDataRows(ITickers ticker1, ITickers ticker2, List <string> selectedPairs) { StockExchangeDataRows stockExchangeDataRows = new StockExchangeDataRows(); bool isFirstTime = true; foreach (string selectedPair in selectedPairs) { foreach (IPairTicker pairTicker1 in ticker1.PairTickers) { if (pairTicker1.Pair.Equals(selectedPair)) { foreach (IPairTicker pairTicker2 in ticker2.PairTickers) { if (pairTicker1.Pair.Equals(pairTicker2.Pair)) { StockExchangeDataRow stockExchangeDataRow; if (isFirstTime) { isFirstTime = false; stockExchangeDataRow = new StockExchangeDataRow(); stockExchangeDataRow.DataRows.Add("Pair"); stockExchangeDataRow.DataRows.Add($"Buy - {ticker1.StockExchange.ToString()}"); stockExchangeDataRow.DataRows.Add("%"); stockExchangeDataRow.DataRows.Add($"Sell - {ticker2.StockExchange.ToString()}"); stockExchangeDataRow.DataRows.Add(string.Empty); stockExchangeDataRow.DataRows.Add("Amount"); stockExchangeDataRow.DataRows.Add(string.Empty); stockExchangeDataRow.DataRows.Add("Pair"); stockExchangeDataRow.DataRows.Add($"Buy - {ticker2.StockExchange.ToString()}"); stockExchangeDataRow.DataRows.Add("%"); stockExchangeDataRow.DataRows.Add($"Sell - {ticker1.StockExchange.ToString()}"); stockExchangeDataRow.DataRows.Add(string.Empty); stockExchangeDataRow.DataRows.Add("Amount"); stockExchangeDataRows.DataRows.Add(stockExchangeDataRow); } decimal priceDifferenceBuy = pairTicker2.BidPrice - pairTicker1.AskPrice; decimal differenceRateBuy = pairTicker2.BidPrice != 0 ? priceDifferenceBuy / pairTicker2.BidPrice : 0m; decimal priceDifferenceSell = pairTicker1.BidPrice - pairTicker2.AskPrice; decimal differenceRateSell = pairTicker1.BidPrice != 0 ? priceDifferenceSell / pairTicker1.BidPrice : 0m; stockExchangeDataRow = new StockExchangeDataRow(); stockExchangeDataRow.DataRows.Add(pairTicker1.Pair); stockExchangeDataRow.DataRows.Add(pairTicker1.AskPrice.ToString("0.########")); stockExchangeDataRow.DataRows.Add(differenceRateBuy.ToString("P", CultureInfo.InvariantCulture)); stockExchangeDataRow.DataRows.Add(pairTicker2.BidPrice.ToString("0.########")); stockExchangeDataRow.DataRows.Add(string.Empty); stockExchangeDataRow.DataRows.Add(priceDifferenceBuy.ToString("0.########")); stockExchangeDataRow.DataRows.Add(string.Empty); stockExchangeDataRow.DataRows.Add(pairTicker2.Pair); stockExchangeDataRow.DataRows.Add(pairTicker2.AskPrice.ToString("0.########")); stockExchangeDataRow.DataRows.Add(differenceRateSell.ToString("P", CultureInfo.InvariantCulture)); stockExchangeDataRow.DataRows.Add(pairTicker1.BidPrice.ToString("0.########")); stockExchangeDataRow.DataRows.Add(string.Empty); stockExchangeDataRow.DataRows.Add(priceDifferenceSell.ToString("0.########")); stockExchangeDataRows.DataRows.Add(stockExchangeDataRow); } } } } } return(stockExchangeDataRows); }