Как рассчитать технические индикаторы с данными цены акций за 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)метод, среди прочего .

Другие вопросы по тегам