public int SetStrategics(IStrategics strategics) { switch (strategics) { case TrendFollowingBasicFutures tf: var index = strategics.Code.Length == 8 && strategics.Code[1].Equals('0'); Connect.HoldingStock[strategics.Code] = new HoldingStocks(tf) { Code = strategics.Code, Current = index ? 0D : 0, Purchase = index ? 0D : 0, Quantity = 0, Rate = 0, Revenue = 0, Offer = index ? 0D : 0, Bid = index ? 0D : 0 }; break; case TrendsInStockPrices ts: Connect.HoldingStock[strategics.Code] = new HoldingStocks(ts) { Code = strategics.Code, Current = 0, Purchase = 0, Quantity = 0, Rate = 0, Revenue = 0 }; break; } return(Connect.HoldingStock.Count); }
public int SetStrategics(IStrategics strategics) { switch (strategics) { case TrendFollowingBasicFutures tf: Connect.HoldingStock[strategics.Code] = new HoldingStocks(tf) { Code = strategics.Code, Current = 0, Purchase = 0, Quantity = 0, Rate = 0, Revenue = 0 }; break; case TrendsInStockPrices ts: Connect.HoldingStock[strategics.Code] = new HoldingStocks(ts) { Code = strategics.Code, Current = 0, Purchase = 0, Quantity = 0, Rate = 0, Revenue = 0 }; break; } return(Connect.HoldingStock.Count); }
public async Task <IEnumerable <IStrategics> > GetContext(IStrategics strategics) { var stack = new Stack <IStrategics>(); try { var response = await client.ExecuteAsync(new RestRequest(security.RequestStrategics(strategics), Method.GET), source.Token); if (response != null && (int)response.StatusCode == 0xC8 && response.RawBytes != null && response.RawBytes.Length > 0) { Coin += security.GetSettleTheFare(response.RawBytes.Length); SendMessage(Coin); } switch (strategics) { case TrendsInStockPrices _: foreach (var content in JArray.Parse(response.Content)) { var param = content.Values().ToArray(); if (int.TryParse(param[5].ToString(), out int unit) && double.TryParse(param[4].ToString(), out double purchase) && double.TryParse(param[3].ToString(), out double profit) && int.TryParse(param[2].ToString(), out int trend) && int.TryParse(param[1].ToString(), out int jLong) && int.TryParse(param[0].ToString(), out int jShort) && char.TryParse(param[8].ToString(), out char setting) && char.TryParse(param[6].ToString(), out char ls) && char.TryParse(param[7].ToString(), out char type)) { stack.Push(new TrendsInStockPrices { Code = string.Empty, Short = jShort, Long = jLong, Trend = trend, RealizeProfit = profit, AdditionalPurchase = purchase, Quantity = 1, QuoteUnit = unit, LongShort = (LongShort)ls, TrendType = (Trend)type, Setting = (Setting)setting }); } } break; } } catch (Exception ex) { SendMessage(ex.StackTrace); } return(stack.OrderBy(o => random.Next(stack.Count))); }
public async Task <IEnumerable <IStrategics> > GetContext(IStrategics strategics) { var stack = new Stack <IStrategics>(); try { var response = await client.ExecuteAsync(new RestRequest(security.RequestStrategics(strategics), Method.GET), source.Token); if (response != null && (int)response.StatusCode == 0xC8 && response.RawBytes != null && response.RawBytes.Length > 0) { Coin += security.GetSettleTheFare(response.RawBytes.Length); SendMessage(Coin); } switch (strategics) { case TrendToCashflow _: foreach (var content in JArray.Parse(response.Content)) { if (int.TryParse(content.Values().ToArray()[0].ToString(), out int analysis)) { stack.Push(new TrendToCashflow { Code = string.Empty, Short = 5, Long = 0x3C, Trend = 0x14, Unit = 1, ReservationQuantity = 0, ReservationRevenue = 0xA, Addition = 0xB, Interval = 1, TradingQuantity = 1, PositionRevenue = 5.25e-3, PositionAddition = 7.25e-3, AnalysisType = Enum.GetName(typeof(AnalysisType), analysis) }); } } break; case ScenarioAccordingToTrend _: foreach (var content in JArray.Parse(response.Content)) { var param = content.Values().ToArray(); if (double.TryParse(param[7].ToString(), out double net) && double.TryParse(param[5].ToString(), out double profit) && int.TryParse(param[3].ToString(), out int sales) && int.TryParse(param[1].ToString(), out int sTrend)) { stack.Push(new ScenarioAccordingToTrend { Code = string.Empty, Calendar = param[0].ToString(), Trend = sTrend, CheckSales = param[2].ToString().Equals("T"), Sales = sales * 0.01, CheckOperatingProfit = param[4].ToString().Equals("T"), OperatingProfit = profit, CheckNetIncome = param[6].ToString().Equals("T"), NetIncome = net, Short = 5, Long = 0x78, Quantity = 1, IntervalInSeconds = 0, ErrorRange = 0D }); } } break; case TrendsInStockPrices _: foreach (var content in JArray.Parse(response.Content)) { var param = content.Values().ToArray(); if (int.TryParse(param[5].ToString(), out int unit) && double.TryParse(param[4].ToString(), out double purchase) && double.TryParse(param[3].ToString(), out double profit) && int.TryParse(param[2].ToString(), out int trend) && int.TryParse(param[1].ToString(), out int jLong) && int.TryParse(param[0].ToString(), out int jShort) && char.TryParse(param[8].ToString(), out char setting) && char.TryParse(param[6].ToString(), out char ls) && char.TryParse(param[7].ToString(), out char type)) { stack.Push(new TrendsInStockPrices { Code = string.Empty, Short = jShort, Long = jLong, Trend = trend, RealizeProfit = profit, AdditionalPurchase = purchase, Quantity = 1, QuoteUnit = unit, LongShort = (LongShort)ls, TrendType = (Trend)type, Setting = (Setting)setting }); } } break; default: return(null); } } catch (Exception ex) { SendMessage(ex.StackTrace); } return(stack.OrderBy(o => random.Next(stack.Count))); }
void BackgroundWorkerDoWork(object sender, DoWorkEventArgs e) { var list = client.GetContext(new Catalog.Codes(), 6).Result as List <Catalog.Codes>; var stack = new Stack <IStrategics>(); var array = new IStrategics[] { new Catalog.TrendsInStockPrices() }; foreach (var strategics in array.OrderBy(o => random.Next(array.Length))) { foreach (var enumerable in client.GetContext(strategics).Result) { stack.Push(enumerable); } } var maximum = list.Count * stack.Count; var rate = 0; var po = new ParallelOptions { CancellationToken = Cancel.Token, MaxDegreeOfParallelism = (int)(Environment.ProcessorCount * 0.25) }; while (stack.Count > 0) { try { var strategics = stack.Pop(); Parallel.ForEach(list.OrderBy(o => Guid.NewGuid()), po, new Action <Catalog.Codes>((w) => { if (backgroundWorker.CancellationPending) { e.Cancel = true; if (Cancel.IsCancellationRequested) { po.CancellationToken.ThrowIfCancellationRequested(); } } else if (IsTheCorrectInformation(w)) { var now = DateTime.Now; HoldingStocks hs = null; switch (strategics) { case Catalog.TrendsInStockPrices ts: if (client.PostContext(new ConfirmStrategics { Code = w.Code, Date = now.Hour > 0xF ? now.ToString(format) : now.AddDays(-1).ToString(format), Strategics = string.Concat("TS.", ts.Short, '.', ts.Long, '.', ts.Trend, '.', (int)(ts.RealizeProfit * 0x2710), '.', (int)(ts.AdditionalPurchase * 0x2710), '.', ts.QuoteUnit, '.', (char)ts.LongShort, '.', (char)ts.TrendType, '.', (char)ts.Setting) }).Result == false) { ts.Code = w.Code; hs = new HoldingStocks(ts) { Code = ts.Code }; hs.SendBalance += OnReceiveAnalysisData; hs.StartProgress(0D); } break; } if (hs != null) { hs.SendBalance -= OnReceiveAnalysisData; } } Statistical.SetProgressRate(Color.Gold); backgroundWorker.ReportProgress((int)(rate++ *0x64 / (double)maximum)); })); } catch (OperationCanceledException ex) { Statistical.SetProgressRate(Color.Ivory); Console.WriteLine("Count_" + rate + "\t" + ex.TargetSite.Name); } }