Esempio n. 1
0
        private void SaveMarketTrends(List <string> formKeys)
        {
            List <MarketTrend> newMarketTrends     = new List <MarketTrend>();
            List <string>      marketTrendFormKeys = formKeys.FindAll(k => k.StartsWith("MarketAnalyzer_MarketTrend_") && k.EndsWith("|Name"));

            foreach (string marketTrendFormKey in marketTrendFormKeys)
            {
                MarketTrend mt = null;

                string originalNameSimplified = marketTrendFormKey.Replace("MarketAnalyzer_MarketTrend_", "").Replace("|Name", "");
                string mtFormKey = "MarketAnalyzer_MarketTrend_" + originalNameSimplified + "|";

                if (originalNameSimplified.Equals(""))
                {
                    mt = new MarketTrend();
                }
                else
                {
                    mt = PTMagicConfiguration.AnalyzerSettings.MarketAnalyzer.MarketTrends.Find(m => SystemHelper.StripBadCode(m.Name, Constants.WhiteListNames).Equals(originalNameSimplified));
                }

                mt.Name                = HttpContext.Request.Form[marketTrendFormKey];
                mt.Platform            = HttpContext.Request.Form[mtFormKey + "Platform"];
                mt.MaxMarkets          = SystemHelper.TextToInteger(HttpContext.Request.Form[mtFormKey + "MaxMarkets"], mt.MaxMarkets);
                mt.TrendMinutes        = SystemHelper.TextToInteger(HttpContext.Request.Form[mtFormKey + "TrendMinutes"], mt.TrendMinutes);
                mt.TrendCurrency       = HttpContext.Request.Form[mtFormKey + "TrendCurrency"];
                mt.IgnoredMarkets      = HttpContext.Request.Form[mtFormKey + "IgnoredMarkets"];
                mt.AllowedMarkets      = HttpContext.Request.Form[mtFormKey + "AllowedMarkets"];
                mt.DisplayGraph        = HttpContext.Request.Form[mtFormKey + "DisplayGraph"].Equals("on");
                mt.ExcludeMainCurrency = HttpContext.Request.Form[mtFormKey + "ExcludeMainCurrency"].Equals("on");

                newMarketTrends.Add(mt);
            }
            PTMagicConfiguration.AnalyzerSettings.MarketAnalyzer.MarketTrends = newMarketTrends;
        }
Esempio n. 2
0
 private void BindData()
 {
     MarketTrendName = this.GetStringParameter("mt", "");
     if (!MarketTrendName.Equals(""))
     {
         MarketTrend = PTMagicConfiguration.AnalyzerSettings.MarketAnalyzer.MarketTrends.Find(m => SystemHelper.StripBadCode(m.Name, Constants.WhiteListNames).Equals(MarketTrendName));
     }
     else
     {
         MarketTrend      = new MarketTrend();
         MarketTrend.Name = "New Market Trend";
     }
 }
Esempio n. 3
0
        public static List <MarketTrendChange> GetMarketTrendChanges(string platform, string mainMarket, MarketTrend marketTrend, List <string> marketList, Dictionary <string, Market> recentMarkets, Dictionary <string, Market> trendMarkets, string sortBy, bool isGlobal, PTMagicConfiguration systemConfiguration, LogHelper log)
        {
            List <MarketTrendChange> result = new List <MarketTrendChange>();

            var sortedMarkets = new SortedDictionary <string, Market>(recentMarkets).OrderBy(m => m.Value.Position);

            if (sortBy.Equals("Volume"))
            {
                sortedMarkets = new SortedDictionary <string, Market>(recentMarkets).OrderByDescending(m => m.Value.Volume24h);
            }

            int marketCount = 1;

            foreach (KeyValuePair <string, Market> recentMarketPair in sortedMarkets)
            {
                if (marketList.Count == 0 || marketList.Contains(recentMarketPair.Key))
                {
                    bool excludeMainCurrency = systemConfiguration.AnalyzerSettings.MarketAnalyzer.ExcludeMainCurrency;
                    if (!marketTrend.ExcludeMainCurrency)
                    {
                        excludeMainCurrency = marketTrend.ExcludeMainCurrency;
                    }

                    if (platform.Equals("CoinMarketCap", StringComparison.InvariantCulture) && excludeMainCurrency)
                    {
                        // Check if this is the main currency (only for CoinMarketCap)
                        if (recentMarketPair.Value.Symbol.Equals(mainMarket, StringComparison.InvariantCultureIgnoreCase))
                        {
                            // If the current market is the main currency, skip it
                            continue;
                        }
                    }
                    Market recentMarket = recentMarkets[recentMarketPair.Key];

                    if (trendMarkets.ContainsKey(recentMarketPair.Key))
                    {
                        List <string> ignoredMarkets = SystemHelper.ConvertTokenStringToList(marketTrend.IgnoredMarkets, ",");
                        if (ignoredMarkets.Contains(recentMarketPair.Value.Symbol))
                        {
                            log.DoLogDebug(platform + " - Market trend '" + marketTrend.Name + "' for '" + recentMarketPair.Key + "' is ignored in this trend.");
                            continue;
                        }

                        List <string> allowedMarkets = SystemHelper.ConvertTokenStringToList(marketTrend.AllowedMarkets, ",");
                        if (allowedMarkets.Count > 0 && !allowedMarkets.Contains(recentMarketPair.Value.Symbol))
                        {
                            log.DoLogDebug(platform + " - Market trend '" + marketTrend.Name + "' for '" + recentMarketPair.Key + "' is not allowed in this trend.");
                            continue;
                        }

                        Market trendMarket = trendMarkets[recentMarketPair.Key];

                        if (trendMarket != null)
                        {
                            double recentMarketPrice = recentMarket.Price;
                            double trendMarketPrice  = trendMarket.Price;

                            if (!platform.Equals("CoinMarketCap", StringComparison.InvariantCulture) && marketTrend.TrendCurrency.Equals("Fiat", StringComparison.InvariantCultureIgnoreCase))
                            {
                                if (recentMarket.MainCurrencyPriceUSD > 0 && trendMarket.MainCurrencyPriceUSD > 0)
                                {
                                    recentMarketPrice = recentMarketPrice * recentMarket.MainCurrencyPriceUSD;
                                    trendMarketPrice  = trendMarketPrice * trendMarket.MainCurrencyPriceUSD;
                                }
                            }

                            double trendMarketChange = (recentMarketPrice - trendMarketPrice) / trendMarketPrice * 100;

                            MarketTrendChange mtc = new MarketTrendChange();
                            mtc.MarketTrendName = marketTrend.Name;
                            mtc.TrendMinutes    = marketTrend.TrendMinutes;
                            mtc.TrendChange     = trendMarketChange;
                            mtc.Market          = recentMarket.Name;
                            mtc.LastPrice       = recentMarket.Price;
                            mtc.Volume24h       = recentMarket.Volume24h;
                            mtc.TrendDateTime   = DateTime.Now;

                            result.Add(mtc);

                            log.DoLogDebug(platform + " - Market trend '" + marketTrend.Name + "' for '" + recentMarketPair.Key + "' (Vol. " + recentMarket.Volume24h.ToString("#,#0.00") + ") is " + trendMarketChange.ToString("#,#0.00") + "% in " + SystemHelper.GetProperDurationTime(marketTrend.TrendMinutes * 60).ToLower() + ".");

                            marketCount++;
                        }
                    }
                }
            }

            if (marketTrend.MaxMarkets > 0 && isGlobal)
            {
                int maxMarkets = (marketTrend.MaxMarkets <= result.Count) ? marketTrend.MaxMarkets : result.Count;

                result = result.GetRange(0, maxMarkets);
            }

            return(result);
        }