Здравствуйте.
Разбираюсь с созданием индикаторов на API. Для тренировки создал индикатор, отображающий макс значение за интервал Period одного из параметров бара (в данном случае - High), сдвинутое влево (т.е. некая задержка). Отображается вроде все правильно, за исключением сдвига. Рассчитанные значения отображаются сдвинутыми вправо (красная стрелка), но мне нужны сдвинутые влево относительно текущего значения. Что мне нужно подправить в коде? Хотелось бы решить проблему средствами именно C#, а не какими-то внешними настройками параметров.
Код:
using System.Collections.Generic;
using TSLab.Script;
using TSLab.Script.Handlers;
using TSLab.DataSource;
using TSLab.Script.Helpers;
namespace test
{
public class MyInd : IBar2DoubleHandler, IContextUses
{
[HandlerParameter]
public int Shift { get; set; }
[HandlerParameter]
public int Period { get; set; }
public IList<double> Execute(ISecurity source)
{
//
var hh = Series.Highest(Series.Shift(source.HighPrices, Shift), Period);
//
int count = source.Bars.Count;
IList<double> list = new List<double>(count);
for (int i = 0; i < count; i++)
{
var mv = hh[i];
list.Add(mv);
}
return list;
}
public IContext Context { get; set; }
}
}