private void LoadMarketTA() { PlanifiedOperation GetMarketDataOperation = new PlanifiedOperation(); GetMarketDataOperation.TypeOFApproach = Operation.ForceOperation; GetMarketDataOperation.Start = DateTime.Now.AddSeconds(2); GetMarketDataOperation.OperationName = "Market Watcher : Update Average TA"; GetMarketDataOperation.Every = new TimeSpan(0, 0, 10); GetMarketDataOperation.ContiniousOperation = true; GetMarketDataOperation.OperationCode = new Action(() => { FormUtils.SetLabelText(binancebnbpairmove, string.Format("BNB Average Pairs Move: {0:P2}", Market.binancebnbpairmove.ToString())); FormUtils.SetLabelText(binancebtcpairmove, string.Format("BTC Average Pairs Move: {0:P2}", Market.binancebtcpairmove.ToString())); FormUtils.SetLabelText(binanceethpairmove, string.Format("ETH Average Pairs Move: {0:P2}", Market.binanceethpairmove.ToString())); FormUtils.SetLabelText(binanceusdtpairmove, string.Format("USDT Average Pairs Move: {0:P2}", Market.binanceusdtpairmove.ToString())); if (Market.binance_mostliquid_btc.Count() > 0) { FormUtils.SetLabelText(mostliquidbtc, string.Format("BTC Most Active : {0}", Market.binance_mostliquid_btc.First())); FormUtils.SetLabelText(mostliquideth, string.Format("ETH Most Active: {0}", Market.binance_mostliquid_eth.First())); FormUtils.SetLabelText(mostliquidusdt, string.Format("USDT Most Active: {0}", Market.binance_mostliquid_usdt.First())); FormUtils.SetLabelText(mostliquidbnb, string.Format("BNB Most Active: {0}", Market.binance_mostliquid_bnb.First())); } }); GetMarketDataOperation.ContiniousAction = GetMarketDataOperation.OperationCode; Global.Shared.Manager.ToManage.Add(GetMarketDataOperation); }
private void LoadMarketNews() { PlanifiedOperation GetMarketNewsOperation = new PlanifiedOperation(); GetMarketNewsOperation.TypeOFApproach = Operation.ForceOperation; GetMarketNewsOperation.Start = DateTime.Now.AddSeconds(2); GetMarketNewsOperation.OperationName = "Market Watcher : Get Market News"; GetMarketNewsOperation.Every = new TimeSpan(0, 5, 0); GetMarketNewsOperation.ContiniousOperation = true; GetMarketNewsOperation.OperationCode = new Action(() => { try { FormUtils.ClearListItem(marketnews); foreach (var source in Moon.Global.Shared.Config.NewsSource) { string url = source.Uri; XmlReader reader = XmlReader.Create(url); SyndicationFeed feed = SyndicationFeed.Load(reader); reader.Close(); foreach (SyndicationItem item in feed.Items) { if (source.LoadSummary) { string[] row = { source.Name, item.PublishDate.ToString(), item.Title.Text.ToString(), item.Summary.Text.ToString() }; var newsitm = new ListViewItem(row); FormUtils.AddListItem(marketnews, newsitm); } else { string[] row = { source.Name, item.PublishDate.ToString(), item.Title.Text.ToString() }; var newsitm = new ListViewItem(row); FormUtils.AddListItem(marketnews, newsitm); } } } } catch (Exception ex) { Console.WriteLine("Exception :", ex.Message); //return ex on status box } }); GetMarketNewsOperation.ContiniousAction = GetMarketNewsOperation.OperationCode; Global.Shared.Manager.ToManage.Add(GetMarketNewsOperation); }
private void LoadMarketData() { PlanifiedOperation GetMarketDataOperation = new PlanifiedOperation(); GetMarketDataOperation.TypeOFApproach = Operation.ForceOperation; GetMarketDataOperation.Start = DateTime.Now.AddSeconds(2); GetMarketDataOperation.OperationName = "Market Watcher : Get Market Data"; GetMarketDataOperation.Every = new TimeSpan(0, 5, 0); GetMarketDataOperation.ContiniousOperation = true; GetMarketDataOperation.OperationCode = new Action(() => { Market.Update(); #region "Load Market Data" FormUtils.SetLabelText(BTCMarketCap, string.Format("BTC Market Cap: {0} %", Market.Market.BTCPercentageOfMarketCap)); FormUtils.SetLabelText(marketupdate, string.Format("Last Update : {0}", DateTime.Now)); decimal overallchange = 0; foreach (var pair in Market.KeyPairsCapital) { string[] row = { pair.Symbol, pair.PriceUsd.ToString(), pair.PercentChange1h.ToString(), pair.PercentChange24h.ToString(), pair.PercentChange7d.ToString(), pair.Rank.ToString(), pair.MarketCapUsd.Value.ToString("N"), }; overallchange += decimal.Parse(pair.PercentChange1h.Value.ToString()); var marktitm = new ListViewItem(row); FormUtils.AddListItem(KeyPairsListView, marktitm); } try { FormUtils.SetJaugeText(MarketSent, double.Parse(overallchange.ToString())); } catch (Exception ex) { Console.WriteLine(ex.Message); // send to status bar } #endregion }); GetMarketDataOperation.ContiniousAction = GetMarketDataOperation.OperationCode; Global.Shared.Manager.ToManage.Add(GetMarketDataOperation); }
private void button2_Click(object sender, EventArgs e) { PlanifiedOperation GetAllpairsContent = new PlanifiedOperation(); GetAllpairsContent.TypeOFApproach = Operation.ForceOperation; GetAllpairsContent.Start = DateTime.Now.AddSeconds(5); GetAllpairsContent.OperationName = "Core : Get All Binance market candles data"; GetAllpairsContent.Every = new TimeSpan(00, 05, 00); GetAllpairsContent.OperationCode = new Action(() => { RunAllPairSuscriber().GetAwaiter().GetResult(); }); Global.Shared.Manager.ToManage.Add(GetAllpairsContent); Global.Shared.IncomingBinance.RegisterAllMarket(); Market.SetAllBinancePairWatcher(Global.Shared.IncomingBinance); LoadMarketTA(); }
private void ToManage_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e) { if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Add) { PlanifiedOperation Operation = (PlanifiedOperation)e.NewItems[0]; if (Operation != null) { Console.WriteLine("Perf - TaskManagement : New operation will start at : {0} for {1} ", Operation.Start, Operation.OperationName); Task.Factory.StartNew(() => { object lo = new object(); System.Threading.Monitor.Enter(lo); bool OperationExecuted = false; while (!OperationExecuted) { DateTime StartOperationDate = DateTime.Parse(Operation.Start.ToString("HH:mm:ss")); DateTime Current = DateTime.Parse(DateTime.Now.ToString("HH:mm:ss")); if (StartOperationDate <= Current & StartOperationDate.Minute == Current.Minute & Operation.State == OperationStatus.Pending) { try { NumberOfRunningOperation++; Exception ex = new Exception(); Stopwatch RealOperationTime = new Stopwatch(); RealOperationTime.Start(); Operation.OperationCode.Invoke(); RealOperationTime.Stop(); Operation.End = DateTime.Now; Operation.RealDuration = RealOperationTime.Elapsed; Operation.ResultedObject = Operation.OperationCode.Target; Operation.State = OperationStatus.Finished; OperationExecuted = true; Finished.Add(Operation); ToManage.Remove(Operation); if (Operation.ContiniousOperation & Operation.State == OperationStatus.Finished) { Operation.Start = DateTime.Now.Add(Operation.Every); Operation.State = OperationStatus.Pending; ToManage.Add(Operation); Console.WriteLine("Perf - TaskManagement : scheduling new operation for continious logic at : {0}", Operation.Start); break; } else { //Operation.OperationCode.Dispose(); } } catch (Exception ex) { if (Operation.AllowMultipleException) { Stopwatch Retry = new Stopwatch(); Retry.Start(); //Operation.OperationCode.Invoke(); Retry.Stop(); Operation.End = DateTime.Now; Operation.RealDuration = Retry.Elapsed; //Operation.ResultedObject = Operation.OperationCode.Target; Operation.State = OperationStatus.Exception; OperationExecuted = true; Operation.Errors.Add(ex); } else { //Operation.ResultedObject = Operation.OperationCode.Target; Operation.State = OperationStatus.Exception; OperationExecuted = true; Operation.Errors.Add(ex); } } } else { Thread.Sleep(200); } } NumberOfRunningOperation--; System.Threading.Monitor.Exit(lo); }); } } }