Добрый день!
Только начинаю осваивать TSlab API и пока не могу понять как мне получить цены открытия-закрытия-хай-лоу последних N свечек. Мне нужно перенести индикатор из ThinkOrSwim (есть такая программа, может кто знает) и там в одном из индикаторов необходимо провести вычисление следующего вида:
def HiLo = Min(high - low, Average(high - low, Period));
Это не код на C# - это прямо код из того индикатора на внутреннем языке ThinkScript, но могу пояснить:
- надо найти минимум из
двух величин - одна из этих величин это разница между
хай и лоу текущей свечи - вторая из этих величин это усредненное за определенный промежуток значение подобных разностей
high-low, но уже, соответственно,
НЕ текущей свечи, а предыдущей, пред-предыдущей и так далее до глубины в
Period свечей
Вот как бы мог ориентировочно выглядеть окружающий этот момент код, я из примеров себе представляю:
public IList<double> Execute(ISecurity sourceSec) {
var highs = sourceSec.HighPrices;
var lows = sourceSec.LowPrices;
IList<double> list = new List<double>(highs.Count);
for (int i = 0; i < highs.Count; i++) {
var HiLo = Math.Min(highs[i] - lows[1], ТОТ_САМЫЙ_КУСОК_КОТОРЫЙ_НЕПОНЯТНО_КАК_СДЕЛАТЬ
list.Add(HiLo);
}
return list;
}
Но вот вместо фразы
ТОТ_САМЫЙ_КУСОК_КОТОРЫЙ_НЕПОНЯТНО_КАК_СДЕЛАТЬ и надо вставить СРЕДНЕЕ от high-low за последние, скажем 13, свечек. Как это можно сделать? По документации (довольно запутанной) я этого не смог понять.
Если использовать те же highs[i] и lows[i] - как мне быть уверенным, что их вообще будет столько, сколько мне надо по количеству? У индикатора я сделал параметр для величины периода - это значит, что при его значении 13 я и получу 13 баров, верно? Но уже для ПЕРВОЙ ЖЕ из этих свечек при вычислении нужного мне значения потребуются данные про ЕЩЕ 12 свечек, которые были ДО НЕЕ. Для второй - ЕЩЕ ОДИННАДЦАТЬ, для третьей - ЕЩЕ ДЕСЯТЬ...
Вот об этом, собственно, и вопрос - КАК ЭТИ ДАННЫЕ О ПРЕДЫДУЩИХ СВЕЧКАХ можно получить???
Помогите, пожалуйста!!! Заранее благодарен!!!