예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }
예제 #4
0
        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();
        }
예제 #5
0
            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);
                        });
                    }
                }
            }