Сложность вычисления скользящей средней заключается в том, что внутри периода вычисления могут содержаться выходные или праздничные дни, в которые биржа не работает.
Это значит, что для корректного расчёта средней, в расчёте должны учитываться только рабочие дни.
С сайта finam.ru я импортировал котировки нескольких инструментов с начала 2016 года по следующим акциям:
- AFLT - Аэрофлот
- GAZP – Газпром
- MGNT – Магнит
- MTSS – МТС
- SBER – Сбербанк
- YNDX – Яндекс
Первое, что необходимо сделать, это для каждого инструмента добавить номер рабочего дня. Связано это с тем, что на разных биржах могут быть разные рабочие дни. Например, в Католическое рождество не работают западные биржи, а Московская работает.
Это можно сделать с помощью вычисляемого столбца, использую следующую формулу:
Теперь даты каждой акции пронумерованы по возрастанию.
В данном примере добавим две средние, что часто используется для анализов инструментов.
В таблице Период создадим две меры для расчёта длинной средней и короткой средней:
- ShortPeriodMovingAverage:=MIN('Период'[ПериодСредней])
- LongPeriodMovingAverage:=MAX('Период'[ПериодСредней])
Теперь добавим меру расчёта среднего в таблицу Данные.
Для длинной средней:
- Функция CALCULATE рассчитывает выражение (в примере функция AVERAGE) с учетом фильтров (в примере функция FILTER).
- Функция FILTER в качестве таблицы принимает ALLSELECTED('данные') (ALLSELECTED снимает фильтр, который накладывает сводная таблица), которые накладываются сводной таблицей) и применяет к этой таблицей указанные фильтры:
- Номер дня в таблице больше, чем разница текущего номера дня и периода длинной средней.
- Номер дня меньше либо равен текущему номеру дня.
Для короткой средней формула аналогична, только используется рассчитанная ранее мера: ShortPeriodMovingAverage.
С данными расчётами мы можем вывести на диаграмму цену инструмента и наши средние, а также слайсер для акции и периода средней.
Изменяя слайсер акции и диапазон периодов средней можно подбирать наиболее подходящие для торговли короткую и длинную средние.
Периоды средней изменяются согласно выделенному диапазону или значениям слайсера. Для длинной средней берется максимальное из выделенных значение, для короткой – минимальное.