private void CheckFormulaParams()
        {
            formulaParams = resolver.GetVariableNames();
            var errorPtrs = new List <string>();
            var tickers   = DalSpot.Instance.GetTickerNames();

            foreach (var ptr in formulaParams)
            {
                if (ExpressionResolverLiveParams.CheckParamName(ptr))
                {
                    continue;
                }
                if (tickers.Any(t => t.Equals(ptr, StringComparison.OrdinalIgnoreCase)))
                {
                    continue;
                }
                errorPtrs.Add(ptr);
            }

            if (errorPtrs.Count == 0)
            {
                return;
            }
            FormulaError  = "Некорректные параметры: " + string.Join(", ", errorPtrs);
            formulaParams = null;
            resolver      = null;
        }
        public void CheckCondition()
        {
            IsTriggered = false;

            if (resolver == null)
            {
                return;
            }

            // получить значения переменных
            var varVal  = new Dictionary <string, double>();
            var timeNow = DateTime.Now;
            var quotes  = QuoteStorage.Instance.ReceiveAllData().ToDictionary(q => q.Key.ToLower(), q => q.Value);

            foreach (var ptrName in formulaParams)
            {
                var ptrVal = ExpressionResolverLiveParams.GetParamValue(ptrName, timeNow, false);
                if (ptrVal.HasValue)
                {
                    varVal.Add(ptrName, ptrVal.Value);
                    continue;
                }
                // получить котировку
                QuoteData quote;
                quotes.TryGetValue(ptrName.ToLower(), out quote);
                varVal.Add(ptrName, quote == null ? 0 : (quote.ask + quote.bid) * 0.5);
            }

            double result;

            try
            {
                resolver.Calculate(varVal, out result);
            }
            catch
            {
                result = 0;
            }

            // не 0 есть "истина"
            IsTriggered = result != 0;
        }