Skip to main content

MOEX Store for Backtrader

Project description

Хранилище (Store) Источников данных Московской биржи MOEX для Backtrader.

Содержание:

  1. Назначение
  2. Установка
  3. Применение в Backtrader

Назначение

Позволяет осуществить загрузку исторических котировок по инструментам Московской Бирже MOEX с информационного сервера биржи iss.moex.com прямо из кода тестирования вашей стратегии в backtrader. Не требует предварительной регистрации и аутентификации при запросе данных. Больше не нужно искать данные по историческим котировкам в открытых источниках, сохранять их в файлы и регулярно обновлять.

Установка

pip install moex-store

Установит библиотеку и все необходимые зависимости. Требуется Python 3.10 и выше.

Применение в Backtrader

  1. Импортируйте класс Хранилища MoexStore из библиотеки moex_store в скрипте, где вы инициализируете cerebro.

    from moex_store import MoexStore
    
    ...
    
  2. Создайте экземпляр Хранилища, сохраните его в переменную.

    store = MoexStore()
    

    Хранилище имеет один устанавливаемый пользователем атрибут write_to_file (по умолчанию True), управляющий записью полученных с Биржи котировок на диск в файл csv для их визуальной проверки. Запись осуществляется в подпапку files_from_moex, создаваемую в папке, где лежит ваш скрипт стратегии. Если запись файлов не требуется, установите этот атрибут в False при создании Хранилища:

    store = MoexStore(write_to_file=False)
    
  3. Получение котировок осуществляется вызовом метода get_data экземпляра Хранилища store. На примере акций Аэрофлота (тикер на бирже AFLT), сохраняем исторические котировки с тайм-фреймом 1 минута с 01 января 2023 по 01 января 2024 года в источник данных (DataFeed) data, присваивая ему имя aflt:

    data = store.get_data(sec_id='AFLT', fromdate='01-01-2023', todate='01-01-2024', tf='1m')
    

    Все аргументы метода get_data являются обязательными:

    • sec_id - тикер инструмента Мосбиржи (Код инструмента в торговой системе).

    • fromdate - дата, с которой будут загружаться котировки.

    • todate - дата, по которую будут загружаться котировки.

      Допустимые форматы для fromdate и todate:

      • datetime (datetime.datetime(2023, 1, 1)).
      • строка в формате 'YYYY-MM-DD' или 'DD-MM-YYYY', как в примере выше.
    • tf - тайм-фрейм котировки. Допустимые значения:

      • 1m: 1 минута,
      • 5m: 5 минут,
      • 10m: 10 минут,
      • 15m: 15 минут,
      • 30m: 30 минут,
      • 1h: 60 минут,
      • 1d: день,
      • 1w: неделя,
      • 1M: месяц,
      • 1q: квартал

    Метод get_data возвращает объект feeds.PandasData экосистемы backtrader, поэтому его можно сразу подгружать в cerebro с помощью cerebro.adddata().

  4. Добавление Источника данных в движок cerebro осуществляется стандартно:

    cerebro.adddata(data)
    

Полный код примера:

from __future__ import (absolute_import, division, print_function,
                    unicode_literals)
import backtrader as bt
from moex_store import MoexStore

def runstrat():
    cerebro = bt.Cerebro(stdstats=False)
    cerebro.addstrategy(bt.Strategy)

    store = MoexStore()
    data = store.get_data("AFLT", "01-01-2023", "01-01-2024", "1h")

    cerebro.adddata(data)
    cerebro.run()
    cerebro.plot(style="bar")


if __name__ == '__main__':
    runstrat()

Вывод покажет загруженный Источник данных:

pict1.png

Экземпляр Хранилища store позволяет осуществлять загрузку нескольких источников данных:

from __future__ import (absolute_import, division, print_function,
                    unicode_literals)
import backtrader as bt
from moex_store import MoexStore
from datetime import datetime

def runstrat():
    cerebro = bt.Cerebro(stdstats=False)
    cerebro.addstrategy(bt.Strategy)

    store = MoexStore(write_to_file=False)
    tf = '1d'
    fromdate = '01-01-2023'
    todate = datetime.today()
    for tiker in ('GAZP', 'NLMK', 'SIH4'):
        data = store.get_data(sec_id=tiker, 
                              fromdate=fromdate, 
                              todate=todate, 
                              tf=tf)
        cerebro.adddata(data, name=tiker)

    cerebro.run()
    cerebro.plot(style='bar')


if __name__ == '__main__':
    runstrat()

Источники данных, добавленные в cerebro:

pict2.png

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

moex_store-0.0.6.tar.gz (16.6 kB view details)

Uploaded Source

Built Distribution

moex_store-0.0.6-py3-none-any.whl (14.3 kB view details)

Uploaded Python 3

File details

Details for the file moex_store-0.0.6.tar.gz.

File metadata

  • Download URL: moex_store-0.0.6.tar.gz
  • Upload date:
  • Size: 16.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.11

File hashes

Hashes for moex_store-0.0.6.tar.gz
Algorithm Hash digest
SHA256 ec817ac25c46ec597c354e7c97ea38be15f2355217d7c276a32a873becd638d1
MD5 dffa92c47ea299bfaab6c4d9f948853b
BLAKE2b-256 9039501df308d58442f19304aeaf2e06c092fbceb3cf9c12d812e9f22272ea03

See more details on using hashes here.

File details

Details for the file moex_store-0.0.6-py3-none-any.whl.

File metadata

  • Download URL: moex_store-0.0.6-py3-none-any.whl
  • Upload date:
  • Size: 14.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.11

File hashes

Hashes for moex_store-0.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 6fa69bc7470f8489fdddde7f6ba6cb60de6aae3a0c7cc8d7415fefdf354caa94
MD5 649c29ff97db431d636282470799a591
BLAKE2b-256 2c0f979a8e30db02e02ee56bbb9c7bb8528e0e341518910bf60b9b5f0230f630

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page