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.9 и выше.

Применение в 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 (или getdata) экземпляра Хранилища store. На примере акций Аэрофлота (тикер на бирже AFLT), сохраняем исторические котировки с тайм-фреймом 1 минута с 01 января 2023 по 01 января 2024 года в источник данных (DataFeed) data, присваивая ему имя aflt:

    data = store.getdata(sec_id='AFLT', fromdate='01-01-2023', todate='01-01-2024', tf='1m', name='Аэрофлот')
    

    Все аргументы метода get_data являются обязательными, кроме name (по умолчанию None):

    • 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: квартал
    • name - имя возвращаемого источника данных для отображения на графиках платформы backtrader.

    Метод 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.getdata("AFLT", "01-01-2023", "01-01-2024", "1h", 'aflt-2023-hour')

    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, name=tiker)
        cerebro.adddata(data)

    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.7.tar.gz (21.2 kB view details)

Uploaded Source

Built Distribution

moex_store-0.0.7-py3-none-any.whl (19.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: moex_store-0.0.7.tar.gz
  • Upload date:
  • Size: 21.2 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.7.tar.gz
Algorithm Hash digest
SHA256 6faea65578f9310958f0c72286dd65c4a6e08ccb2b2ea3f315db3fde20a4dbba
MD5 81b2a7c814153f499a00ad0a444fa051
BLAKE2b-256 4f9bb6c9e29da9bcda1aa9b0e3c3fbad1737fc4f49afafc2f51099ce02b0993f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: moex_store-0.0.7-py3-none-any.whl
  • Upload date:
  • Size: 19.7 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.7-py3-none-any.whl
Algorithm Hash digest
SHA256 96527f6832e47c5fe7f80bec59d2c2791ce56294969afece6cedbfb87e7d2f32
MD5 22cd1f9b41af8329575740483f023b44
BLAKE2b-256 885fac54314ae07bba01c0b248d7c103f8d22aa70e10b2a9aac371c3e82e4171

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