Exemple #1
0
        private void GetCandles(CandleSeries series)
        {
            Security  security = series.Security;
            TimeFrame tf       = series.TimeFrame;

            string needPeriodId = GetNeedIdPeriod(tf, out var newTf, out var oldTf);

            string cmd = "<command id=\"gethistorydata\">";

            cmd += "<security>";
            cmd += "<board>" + security.NameClass + "</board>";
            cmd += "<seccode>" + security.Name + "</seccode>";
            cmd += "</security>";
            cmd += "<period>" + needPeriodId + "</period>";
            cmd += "<count>" + 1000 + "</count>";
            cmd += "<reset>" + "true" + "</reset>";
            cmd += "</command>";

            // sending command / отправка команды
            string res = _client.ConnectorSendCommand(cmd);

            if (res != "<result success=\"true\"/>")
            {
                SendLogMessage(res, LogMessageType.Error);
                return;
            }

            var startLoadingTime = DateTime.Now;

            while (startLoadingTime.AddSeconds(10) > DateTime.Now)
            {
                var candles = _allCandleSeries.Find(s => s.Seccode == security.Name && s.Period == needPeriodId);

                if (candles != null)
                {
                    //series.CandlesAll?.Clear();
                    var donorCandles = ParseCandles(candles);

                    if ((tf == TimeFrame.Min1 && needPeriodId == "1") ||
                        (tf == TimeFrame.Min5 && needPeriodId == "2") ||
                        (tf == TimeFrame.Min15 && needPeriodId == "3") ||
                        (tf == TimeFrame.Hour1 && needPeriodId == "4"))
                    {
                        series.CandlesAll = donorCandles;
                    }
                    else
                    {
                        series.CandlesAll = BuildCandles(donorCandles, newTf, oldTf);
                    }

                    series.UpdateAllCandles();
                    series.IsStarted = true;
                    return;
                }

                Thread.Sleep(1000);
            }

            SendLogMessage(OsLocalization.Market.Message95 + security.Name, LogMessageType.Error);
        }