internal static void InitializePrices(Blazored.LocalStorage.ISyncLocalStorageService localStorage, string id) { var lst = localStorage.GetItem <List <string> >(id + "lstPrices"); if (lst != null && lst.Count() > 20) { lstPrices = lst.Take(20).ToList(); } else { lstPrices = lst; } if (lstPrices == null) { lstPrices = new List <string>(); } }
internal static void MaintainPriceAxis(Dictionary <string, BookDataItem[]> bookDataItems, Blazored.LocalStorage.ISyncLocalStorageService localStorage, string id) { var seriesOrder = new string[] { "salesAtBid", "bids", "salesAtAsk", "asks" }; var minPrice = 999999m; // bookDataItems.Min(items => items.Value.Min(item => item.Price)); var maxPrice = 0m; // bookDataItems.Max(items => items.Value.Max(item => item.Price)); if (SurfaceChartConfigurator.resetXAxis) { lstPrices = new List <string>(); // SurfaceChartConfigurator.resetXAxis = false; localStorage.SetItem(id + "lstPrices", ""); } /// Set up the Categories list //var lstPrices = new List<string>(); var sumPrices = 0m; var nPrices = 0; #if tracingFine Console.WriteLine("5a. Surface ChartSetData"); #endif foreach (var name in seriesOrder) { //if (dictNumsizes.ContainsKey(name) == false) dictNumsizes[name] = 0; //if (dictSumSizes.ContainsKey(name) == false) dictSumSizes[name] = 0; ////if (seriesList.Count % 10 == 0) ////{ //dictStNumsizes[name] = 0; //dictStSumSizes[name] = 0; //} #if tracingFine Console.WriteLine("5b. Surface ChartSetData"); #endif foreach (var item in bookDataItems[name]) { #if tracingFine Console.WriteLine("5c. Surface ChartSetData"); jsruntime.GroupTable(lstPrices, nameof(lstPrices)); jsruntime.GroupTable(item, nameof(item)); #endif if (!lstPrices.Contains(item.Price.ToString("n2"))) { lstPrices.Add(item.Price.ToString("n2")); } #if tracingFine Console.WriteLine("5d. Surface ChartSetData"); #endif sumPrices += item.Price; #if tracingFine Console.WriteLine("5e. Surface ChartSetData"); #endif nPrices += 1; minPrice = Math.Min(item.Price, minPrice); maxPrice = Math.Max(item.Price, maxPrice); #if tracingFine Console.WriteLine("5f. Surface ChartSetData"); #endif maxSize = Math.Max(item.Size, maxSize); #if tracingFine Console.WriteLine("5g. Surface ChartSetData"); #endif //dictNumsizes[name] += 1; //dictSumSizes[name] += item.Size; //if (dictNumsizes[name] > 0) // dictAvgSizes[name] = dictSumSizes[name] / dictNumsizes[name]; #if tracingFine Console.WriteLine("5h. Surface ChartSetData"); #endif //dictStNumsizes[name] += 1; //dictStSumSizes[name] += item.Size; //if (dictStNumsizes[name] > 0) // dictStAvgSizes[name] = dictStSumSizes[name] / dictStNumsizes[name]; } #if tracingFine Console.WriteLine("5i. Surface ChartSetData"); #endif } //jsruntime.Confirm(seriesList.Count.ToString()); avgPrice = sumPrices / nPrices; lstPrices.Sort(); #if tracingFine jsruntime.GroupTable(lstPrices, nameof(lstPrices)); #endif ////jsruntime.Confirm(nameof(lstPrices), true); localStorage.SetItem(id + "lstPrices", lstPrices); //jsruntime.Confirm(lstPrices.Count.ToString()); //jsruntime.InvokeVoidAsync("Dump", seriesList.Dumps(), "seriesList"); //foreach(var series in seriesList) //{ // foreach(var item in series.data) // { // minX = Math.Min((double)item.x, (double)minX); // maxX = Math.Max((double)item.x, (double)maxX); // } //} //jsruntime.InvokeVoidAsync("Dump", minX.Dumps(), "minX"); //jsruntime.InvokeVoidAsync("Dump", maxX.Dumps(), "maxX"); //var lst = new List<string>();// lstPrices.Where(it => && Convert.ToDouble(it) < maxX + 0.05).ToArray(); //foreach(var price in lstPrices) //{ // if (Convert.ToDouble(price) > minX - 0.05) // lst.Add(price); // else if (Convert.ToDouble(price) < maxX + 0.05) // lst.Add(price); //} //jsruntime.InvokeVoidAsync("Dump", lst.Dumps(), "lst"); /// Now remove all above max and beow min /// //var midPrice = (minPrice + maxPrice) / 2; //var n = SurfaceChartConfigurator.xAxisMaxCategories; ///// Cull the list of prices if it's more than 100 //if (lstPrices.Count > n) //{ // var avgPrice = (Convert.ToDecimal(lstPrices.First()) + Convert.ToDecimal(lstPrices.Last())) / 2; // if (midPrice < avgPrice) // /// Remove higher prices // lstPrices = lstPrices.ToArray().Take(n).ToList(); // else // /// Remove lower prices // lstPrices = lstPrices.ToArray().Skip(lstPrices.Count - n).ToList(); //} /// Picture the spread as two 0 points, one at high bid, one at low ask }