Beispiel #1
0
        private static void FillValues(IIndicatorValue value, ICollection <decimal?> values)
        {
            if (value == null)
            {
                throw new ArgumentNullException(nameof(value));
            }

            if (value is DecimalIndicatorValue || value is CandleIndicatorValue || value is ShiftedIndicatorValue)
            {
                values.Add(value.IsEmpty ? (decimal?)null : value.GetValue <decimal>());
            }
            else if (value is ComplexIndicatorValue)
            {
                var complexInd = (ComplexIndicatorValue)value;

                foreach (var innerIndicator in ((IComplexIndicator)value.Indicator).InnerIndicators)
                {
                    var innerValue = complexInd.InnerValues.TryGetValue(innerIndicator);

                    if (innerValue == null)
                    {
                        values.Add(null);
                    }
                    else
                    {
                        FillValues(innerValue, values);
                    }
                }
            }
            else
            {
                throw new ArgumentOutOfRangeException(nameof(value), value.GetType(), LocalizedStrings.Str1655);
            }
        }