Добрый день подскажите пожалуйста, компиляция проходит успешно, но в ТСлабе получаю ошибку:
System.ArgumentOutOfRangeException: Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекции.
Имя параметра: index
в System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource)
в System.ThrowHelper.ThrowArgumentOutOfRangeException()
в System.Collections.Generic.List`1.get_Item(Int32 index)
в ДФР.DFR.Execute(ISecurity source) в c:\Users\НР\Documents\SharpDevelop Projects\DFR\DFR.cs:строка 24
в TSLab.User.Script.<>c__DisplayClass3.<Execute>b__2() в c:\Users\НР\AppData\Local\TSLab\TSLab\temp\code15.cs:строка 51
в TSLab.DataSource.ObjectsCacheBase`3.Get(TKey name, CacheObjectMaker`1 maker)
в TSLab.ScriptEngine.BaseTemplateContext.GetData(String handlerName, String[] parameters, CacheObjectMaker`1 maker)
в TSLab.User.Script.Execute(IContext context, ISecurity var0) в c:\Users\НР\AppData\Local\TSLab\TSLab\temp\code15.cs:строка 48
Код, того, что компилирую:
using System.Collections.Generic;
using TSLab.Script;
using TSLab.Script.Handlers;
using TSLab.DataSource;
using TSLab.Script.Helpers;
namespace ДФР
{
public class DFR : IBar2DoubleHandler, IContextUses
{
[HandlerParameter]
public int Period { get; set; }
public IList<double> Execute(ISecurity source)
{
var high = Context.GetData("Highest", new[] { Period.ToString() },
() => Series.Highest(source.HighPrices, Period));
var low = Context.GetData("Lowest", new[] { Period.ToString() },
() => Series.Lowest(source.LowPrices, Period));
var closes = source.ClosePrices;
IList<double> list = new List<double>(closes.Count);
for (int i = 0; i < closes.Count; i++)
{ var K = System.Math.Log(closes[i]/closes[i-1]);
list.Add(K);
}
return list;
}
public IContext Context { get; set; }
}}При этом нет ошибок, если все то же самое сделать через блок формула :
Я так понимаю, что ошибка указывает на проблему [i-1], но как тогда ее учитывать в коде C#?
Если счетчик начинать с I=1, тогда ошибку выдает другую, а график рисует со смещением относительно построения "Формула"(синий - API, красный формула), но смещение, то мне не нужно:
Помогите пожалуйста разобраться.