Example #1
0
        /// <summary>
        /// Подстановка значений параметров в строку
        /// </summary>
        /// <param name="isStr">Исходная строка</param>
        /// <param name="ticker"></param>
        /// <param name="tf"></param>
        /// <param name="date1"></param>
        /// <param name="date2"></param>
        /// <returns>Результат</returns>
        private string ReplParams(string inStr,
                                  string ticker, Timeframes tf, DateTime date1, DateTime date2)
        {
            string        outStr     = inStr;
            TickerData    tickerData = _tickers.FirstOrDefault(t => t.Ticker == ticker);
            TimeframeData tfData     = _tfds.FirstOrDefault(t => t.Tf == tf);

            outStr = outStr.Replace("{TICKER}", ticker);
            outStr = outStr.Replace("{ID}", tickerData.ID);
            outStr = outStr.Replace("{Market}", tickerData.Market);
            outStr = outStr.Replace("{TfParam}", tfData.TfParam);
            outStr = outStr.Replace("{TFKey}", tfData.TfKey);
            outStr = outStr.Replace("{DATF}", tfData.Datf);

            outStr = outStr.Replace("{YYF}", date1.Date.Year.ToString().Substring(2, 2));
            outStr = outStr.Replace("{MMF}", date1.Date.Month.ToString("0#"));
            outStr = outStr.Replace("{DDF}", date1.Date.Day.ToString("0#"));
            outStr = outStr.Replace("{YYT}", date2.Date.Year.ToString().Substring(2, 2));
            outStr = outStr.Replace("{MMT}", date2.Date.Month.ToString("0#"));
            outStr = outStr.Replace("{DDT}", date2.Date.Day.ToString("0#"));

            outStr = outStr.Replace("{DF}", date1.Date.Day.ToString());
            outStr = outStr.Replace("{MF}", date1.Date.Month.ToString());
            outStr = outStr.Replace("{MF-1}", (date1.Date.Month - 1).ToString());
            outStr = outStr.Replace("{DF-1}", (date1.Date.Day - 1).ToString());
            outStr = outStr.Replace("{YYYYF}", date1.Date.Year.ToString());

            outStr = outStr.Replace("{DT}", date2.Date.Day.ToString());
            outStr = outStr.Replace("{MT}", date2.Date.Month.ToString());
            outStr = outStr.Replace("{MT-1}", (date2.Date.Month - 1).ToString());
            outStr = outStr.Replace("{DT-1}", (date2.Date.Day - 1).ToString());
            outStr = outStr.Replace("{YYYYT}", date2.Date.Year.ToString());

            return(outStr);
        }
Example #2
0
        public async Task Initialize()
        {
            _logger.LogInformation("Initialize.");

            _tfds.Clear(); _tickers.Clear();

            try
            {
                XDocument xd = await LoadConfig();

                if (xd == null)
                {
                    return;
                }

                // timeframes
                var tfNodes = xd.Root.Element("Timeframes").Elements("Timeframe");
                foreach (var tfNode in tfNodes)
                {
                    var tfAttr      = tfNode.Attribute("Tf");
                    var tfKeyAttr   = tfNode.Attribute("TfKey");
                    var tfParamAttr = tfNode.Attribute("TfParam");
                    var datfAttr    = tfNode.Attribute("Datf");
                    if (tfAttr == null || tfKeyAttr == null || tfParamAttr == null || datfAttr == null)
                    {
                        continue;
                    }
                    int tf;
                    if (!Int32.TryParse(tfAttr.Value, out tf))
                    {
                        continue;
                    }

                    TimeframeData tfd = new TimeframeData()
                    {
                        Tf      = (Timeframes)tf,
                        TfKey   = tfKeyAttr.Value,
                        TfParam = tfParamAttr.Value,
                        Datf    = datfAttr.Value
                    };
                    _tfds.Add(tfd);
                }

                // tickers
                var tickerNodes = xd.Root.Element("Tickers").Elements("Ticker");
                foreach (var tickerNode in tickerNodes)
                {
                    var tickerAttr    = tickerNode.Attribute("Ticker");
                    var shortNameAttr = tickerNode.Attribute("ShortName");
                    var nameAttr      = tickerNode.Attribute("Name");
                    var lotSizeAttr   = tickerNode.Attribute("LotSize");
                    var digitsAttr    = tickerNode.Attribute("Digits");
                    var marketAttr    = tickerNode.Attribute("Market");
                    var idAttr        = tickerNode.Attribute("ID");
                    if (tickerAttr == null || shortNameAttr == null || marketAttr == null || idAttr == null ||
                        nameAttr == null || lotSizeAttr == null || digitsAttr == null)
                    {
                        continue;
                    }

                    int lotSize = 0;
                    if (!Int32.TryParse(lotSizeAttr.Value, out lotSize))
                    {
                        lotSize = 1;
                    }
                    byte digits = 0;
                    if (!Byte.TryParse(digitsAttr.Value, out digits))
                    {
                        digits = 0;
                    }

                    TickerData td = new TickerData()
                    {
                        Ticker    = tickerAttr.Value,
                        ShortName = shortNameAttr.Value,
                        Name      = nameAttr.Value,
                        LotSize   = lotSize,
                        Digits    = digits,
                        Market    = marketAttr.Value,
                        ID        = idAttr.Value
                    };
                    _tickers.Add(td);
                }

                _baseUrl = xd.Root.Element("Url").Attribute("Base").Value;
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "Initialization error.");
                throw new Exception("Ошибка при инициализации провайдера исторических данных", ex);
            }
        }