При тесте стратегий, зачастую есть необходимость определить диапазон дат, когда проводились торги на Московской бирже, то есть, когда доступны котировки. Немного надоело вручную вбивать дни, поэтому написал функцию, так как торговые дни отличаются от производственного календаря. В функции есть два списка - WHITE LIST и BLACK LIST. В WHITE LIST внесены нерабочие дни посреди недели. В BLACK LIST внесены рабочие дни в субботу или воскресенье. Списки составлены с 2012 по 2024 год (то, что доступно на сайте Московской биржи). Функции передаются следующие аргументы:
- Дата расчета. Дата может передаваться в любом виде, функция обработает ее с помощью dateutil.parser. По умолчанию, текущая дата.
- Количество торговых дней. На сколько торговых дней надо отсчитать назад. По умолчанию, 10 дней.
- Режим возврата данных. Показано в примерах. По умолчанию - 1 режим.
Без аргументов (по умолчанию). Возвращает список торговых дней от даты текущей даты с указанной глубиной 10 дней.
from moex_trade_dates import func_moex_trade_dates
print(func_moex_trade_dates())
Вывод:
['2022-10-11', '2022-10-12', '2022-10-13', '2022-10-14', '2022-10-17', '2022-10-18', '2022-10-19', '2022-10-20', '2022-10-21', '2022-10-24']
Режим 1: Возвращает список торговых дней от даты ('2021-01-01') с указанной глубиной (5 дней).
Обратите внимание, что последняя дата не 2021-01-01, а 2020-12-30, так как 2021-01-01 и 2020-12-31 были не торговыми днями.
from moex_trade_dates import func_moex_trade_dates
print(func_moex_trade_dates('2021-01-01', 5, 1))
Вывод:
['2020-12-24', '2020-12-25', '2020-12-28', '2020-12-29', '2020-12-30']
Режим 2: Возвращает первый день от даты ('2021-01-01') с указанной глубиной (5 дней).
from moex_trade_dates import func_moex_trade_dates
print('Первый день: '+func_moex_trade_dates('2021-01-01', 5, 2))
Вывод:
Первый день: 2020-12-24
Режим 3: Возвращает первый день и предыдущий день от даты ('2021-01-01') с указанной глубиной (5 дней).
Данный режим удобен, когда запрашиваются данные от текущей даты, которая является торговым днем. Например, скачать котировки за предыдущие пять дней.
from moex_trade_dates import func_moex_trade_dates
first_day, previous_day = func_moex_trade_dates('2021-01-01', 5, 3)
print('Первый день: '+first_day+'\nПредпоследний день: '+ previous_day)
Вывод:
Первый день: 2020-12-24
Предпоследний день: 2020-12-29
Пишите, какие режимы еще Вам интересны в функции, я их включу. Не забывайте следить за обновлениями, так как функция будет обновляться в конце года, с выходом нового торгового календаря Московской биржи.
Удачной торговли!