Добрый день, появляется аналогичная ошибка
System.ArgumentOutOfRangeException: Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекции.
Имя параметра: index
в System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource)
в System.Collections.Generic.List`1.get_Item(Int32 index)
в FirstStr_1.FirstStr_1.Execute(IContext ctx, ISecurity source) в c:\Users\Creep\Documents\SharpDevelop Projects\WealthLab\kl\Si-TS.cs:строка 50
Вот сам код со строкой 50:
namespace FirstStr_1
{
public class FirstStr_1 : IExternalScript
{
public IPosition LastActivePosition=null;
public OptimProperty _QBar = new OptimProperty(100, 70, 150, 5);
public OptimProperty _Period = new OptimProperty(100, 50, 200, 5);
public virtual void Execute(IContext ctx, ISecurity source)
{
int FirstValidValue=10;
int EnterKontrakt=1;
int QBar=_QBar;
double SL=0.2;
int Period=_Period;
bool signalBuy;
bool signalShort;
FirstValidValue=Math.Max(FirstValidValue,Period);
IList<double> SMAFilter=ctx.GetData("SMAFilter", new[] {Period.ToString()},
delegate {return Series.SMA(source.ClosePrices, Period); });
IList<double> RaznSMA=new List<double>(source.Bars.Count);
for(int bar = 150; bar < source.Bars.Count; bar++)
{
double nRaznSMA=source.ClosePrices[0]-source.ClosePrices[0];
nRaznSMA=SMAFilter[bar]-SMAFilter[bar-1];
RaznSMA.Add(nRaznSMA);
}
IList<double> SummSMA=new List<double>(source.Bars.Count);
for(int bar = 150; bar < source.Bars.Count; bar++)
{
double nSummSMA =source.ClosePrices[0]-source.ClosePrices[0];
nSummSMA=RaznSMA[bar]+RaznSMA[bar-1];//эта строка 50
SummSMA.Add(nSummSMA);
}
Подскажите, пожалуйста, что делать?
Отредактировано Konstantin_A (Tue Aug 15 2017 06:04 PM)