Как рассчитать технические индикаторы с данными цены акций за 1 минуту?
Я использую TA-lib для расчета различных технических индикаторов. У меня есть данные о ценах на акции с интервалом в 1 минуту. Самый простой способ - умножить 390 (390 минут в Торговом дне) на количество дней, например, для вычисления 5SMA, SMA(входные данные, timeperiod=5*390).
Есть ли библиотека для этой цели или какое-нибудь лучшее решение?
1 ответ
Это действительно зависит от того, что вы ищете. Если вы ищете среднюю дневную цену, вам придется преобразовать историю котировок из минутных баров в дневные, а затем прогнать ее в новом формате. TA-Lib - это более старая библиотека на основе массивов, поэтому вам придется проделать эту работу, пока данные все еще имеют контекст даты / времени, прежде чем помещать их в массив.
Вот пример того, как «квантовать» историю цитат в C#.
history
.OrderBy(x => x.Date)
.GroupBy(x => x.Date.RoundDown(newBarSize))
.Select(x => new Quote
{
Date = x.Key,
Open = x.First().Open,
High = x.Max(t => t.High),
Low = x.Min(t => t.Low),
Close = x.Last().Close,
Volume = x.Sum(t => t.Volume)
});
Это также доступно в библиотеке с открытым исходным Skender.Stock.Indicatorsкодом и может использоваться как просто
history.Aggregate(PeriodSize.Day)
, Например.
Эта библиотека может заменить TA-Lib, если вы ищете более современную библиотеку технических индикаторов. Например, у него есть
Indicator.GetSma(history,5)
метод, среди прочего .