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; }