Skip to main content

MOEX API AlgoPack integration with Backtrader

Project description

backtrader_moexalgo

MOEX API integration with Backtrader.

This code was written for GO ALGO Hackathon, organized by the MOEX exchange.

With this integration you can do:

  • Backtesting your strategy on historical data from the exchange MOEX + Backtrader // Backtesting

  • Launch trading systems for automatic trading on the exchange MOEX + Backtrader // Live trading

  • Download live, historical data and Super Candles for tickers from the exchange MOEX

  • Create and test your trading strategies using the library's features Backtrader

    • There is a lot of useful documentation on how to make strategies (see here).

For API connection we are using library moexalgo.

A tutorial video with this library can be viewed on YouTube and on RuTube

Installation

  1. The simplest way:
pip install backtrader_moexalgo

or

git clone https://github.com/WISEPLAT/backtrader_moexalgo

or

pip install git+https://github.com/WISEPLAT/backtrader_moexalgo.git
  1. Please use backtrader from my repository (as your can push your commits in it). Install it:
pip install git+https://github.com/WISEPLAT/backtrader.git

-- Can I use your interface for moexalgo with original backtrader?

-- Yes, you can use original backtrader, as the author of original backtrader had approved all my changes.

Here is the link: mementum/backtrader#472

  1. We have some dependencies, you need to install them:
pip install moexalgo pandas matplotlib

Getting started

To make it easier to figure out how everything works, many examples have been made in the folders DataExamplesMoexAlgo and StrategyExamplesMoexAlgo.

The DataExamplesMoexAlgo folder contains the code of examples for working with exchange data via the MOEX API.

  • 01 - Symbol.py - trading strategy for obtaining historical and "live" data of one ticker for one timeframe

    • The possibility of obtaining Super Candles, candles with an extended set of parameters is implemented
  • 02 - Symbol data to DF.py - export to csv file of historical data of one ticker for one timeframe

  • 03 - Symbols.py - trading strategy for multiple tickers on the same timeframe

  • 04 - Rollover.py - launch of a trading strategy based on gluing data from a file with historical data and the last downloaded history from the broker

  • 05 - Timeframes.py - trading strategy is running on different timeframes.

  • Strategy.py - An example of a trading strategy that only outputs data of the OHLCV for ticker/tickers

The StrategyExamplesMoexAlgo folder contains the code of sample strategies.

  • 01 - Live Trade - broker Alor.py - An example of a live trading strategy for SBER ticker - broker Alor.

    • Example of placing and cancel orders on the exchange with the use of broker Alor.

      • Please be aware! This is Live order - if market has a big change down in value of price more than 0.5% - the order will be completed....

      • Do not forget to cancel the submitted orders from the exchange after the test!

  • 01 - Live Trade - broker Finam.py - An example of a live trading strategy for SBER ticker - broker Finam.

    • Example of placing and cancel orders on the exchange with the use of broker Finam.

      • Please be aware! This is Live order - if market has a big change down in value of price more than 0.5% - the order will be completed....

      • Do not forget to cancel the submitted orders from the exchange after the test!

  • 01 - Live Trade - broker brokers with Quik.py - An example of a live trading strategy for SBER ticker - any brokers with terminal Quik.

    • Example of placing and cancel orders on the exchange with the use of broker with terminal Quik.

      • Please be aware! This is Live order - if market has a big change down in value of price more than 0.5% - the order will be completed....

      • Do not forget to cancel the submitted orders from the exchange after the test!

  • 02 - Offline Backtest.py - An example of a trading strategy on a historical data - not live mode - for two SBER and LKOH tickers.

    • The strategy shows how to apply indicators (SMA, RSI) to several tickers at the same time.

      • Not a live mode - for testing strategies without sending orders to the exchange!
  • 03 - Offline Backtest MultiPortfolio.py - An example of a trading strategy on a historical data - not live mode - for a set of tickers that can be transferred to the strategy in a list (SBER, LKOH, AFLT, GMKN).

    • The strategy shows how to apply indicators (SMA, RSI) to several tickers at the same time.

      • Not a live mode - for testing strategies without sending orders to the exchange!
  • 04 - Offline Backtest Indicators.py - An example of a trading strategy for a history test using SMA and RSI indicators - not live mode - for two SBER and LKOH tickers.

    • The strategy shows how to apply indicators (SMA, RSI) to several tickers at the same time.

      • generates 177% of revenue at the time of video recording))

      • Non-live mode - for testing strategies without sending orders to the exchange!

Thanks

  • backtrader: Very simple and cool library!

  • Team of MOEX moexalgo: For creating MOEX API wrapper, shortening a lot of work.

  • Igor Chechet: for free cool libraries for live trading by connection to brokers

License

MIT

Important

Error correction, revision and development of the library is carried out by the author and the community!

Push your commits!

Terms of Use

The backtrader_moexalgo library, which allows you to integrate Backtrader and MOEX API, is the Program created solely for the convenience of work.

When using the Program, the User is obliged to comply with the provisions of the current legislation of his country.

Using the Program are offered on an "AS IS" basis. No guarantees, either oral or written, are attached and are not provided.

The author and the community does not guarantee that all errors of the Program have been eliminated, respectively, the author and the community do not bear any responsibility for

the consequences of using the Program, including, but not limited to, any damage to equipment, computers, mobile devices,

User software caused by or related to the use of the Program, as well as for any financial losses

incurred by the User as a result of using the Program.

No one is responsible for data loss, losses, damages, including accidental or indirect, lost profits, loss of revenue or any other losses

related to the use of the Program.

The Program is distributed under the terms of the MIT license.

Star History

Please, put a Star 🌟 for this code

Star History Chart

Пожалуйста, поставьте Звезду 🌟 этому коду

==========================================================================

backtrader_moexalgo

Интеграция MOEX API AlgoPack с Backtrader.

Этот код был написан для Хакатона GO ALGO организатором которого выступает биржа MOEX.

С помощью этой интеграции вы можете делать:

  • Тестирование вашей стратегии на исторических данных с биржи MOEX + Backtrader

  • Запускать торговые системы для автоматической торговли на бирже MOEX + Backtrader

    • Для Live торговли вам необходимо установить дополнительные бесплатные библиотеки, например:

  • Загружать live, исторические данные и Super Candles с биржи MOEX

  • Создавать и тестировать свои торговые стратегии пользуясь возможностями библиотеки Backtrader

    • Много полезной документации о том, как делать стратегии есть здесь.

Для подключения к API мы используем библиотеку moexalgo.

Обучающее видео по работе с этой библиотекой можно посмотреть на YouTube и на RuTube

Установка

  1. Самый простой способ:
pip install backtrader_moexalgo

или

git clone https://github.com/WISEPLAT/backtrader_moexalgo

или

pip install git+https://github.com/WISEPLAT/backtrader_moexalgo.git
  1. Пожалуйста, используйте backtrader из моего репозитория (так как вы можете размещать в нем свои коммиты). Установите его:
pip install git+https://github.com/WISEPLAT/backtrader.git

-- Могу ли я использовать ваш интерфейс для moexalgo с оригинальным backtrader?

-- Да, вы можете использовать оригинальный backtrader, так как автор оригинального backtrader одобрил все мои изменения.

Вот ссылка: mementum/backtrader#472

  1. У нас есть некоторые зависимости, вам нужно их установить:
pip install moexalgo pandas matplotlib

Начало работы

Чтобы было легче разобраться как всё работает, сделано множество примеров в папках DataExamplesMoexAlgo_ru и StrategyExamplesMoexAlgo_ru.

В папке DataExamplesMoexAlgo_ru находится код примеров по работе с биржевыми данными через API интерфейс MOEX.

  • 01 - Symbol.py - торговая стратегия для получения исторических и "живых" данных одного тикера по одному таймфрейму

    • Реализована возможность получения Super Candles, свечей с расширенным набором параметров
  • 02 - Symbol data to DF.py - экспорт в csv файл исторических данных одного тикера по одному таймфрейму

  • 03 - Symbols.py - торговая стратегия для нескольких тикеров по одному таймфрейму

  • 04 - Rollover.py - запуск торговой стратегии на склейке данных из файла с историческими данными и последней загруженной истории с брокера

  • 05 - Timeframes.py - торговая стратегия для одного тикера по разным таймфреймам

  • Strategy.py - Пример торговой стратегии, которая только выводит данные по тикеру/тикерам OHLCV

В папке StrategyExamplesMoexAlgo_ru находится код примеров стратегий.

  • 01 - Live Trade - broker Alor.py - Пример торговой стратегии в live режиме для тикера SBER - брокер Алор.

    • Пример выставления заявок на биржу через брокера Алор и их снятие.

      • Пожалуйста, имейте в виду! Это live режим - если на рынке произойдет значительное изменение цены в сторону понижения более чем на 0.5% - ордер может быть выполнен....

      • Не забудьте после теста снять с биржи выставленные заявки!

  • 01 - Live Trade - broker Finam.py - Пример торговой стратегии в live режиме для тикера SBER - брокер Финам.

    • Пример выставления заявок на биржу через брокера Финам и их снятие.

      • Пожалуйста, имейте в виду! Это live режим - если на рынке произойдет значительное изменение цены в сторону понижения более чем на 0.5% - ордер может быть выполнен....

      • Не забудьте после теста снять с биржи выставленные заявки!

  • 01 - Live Trade - brokers with Quik.py - Пример торговой стратегии в live режиме для тикера SBER - любые брокеры с терминалом Quik.

    • Пример выставления заявок на биржу через брокеров с терминалом Quik и их снятие.

      • Пожалуйста, имейте в виду! Это live режим - если на рынке произойдет значительное изменение цены в сторону понижения более чем на 0.5% - ордер может быть выполнен....

      • Не забудьте после теста снять с биржи выставленные заявки!

  • 02 - Offline Backtest.py - Пример торговой стратегии для теста на истории - не live режим - для двух тикеров SBER и LKOH.

    • В стратегии показано как применять индикаторы (SMA, RSI) к нескольким тикерам одновременно.

      • Не live режим - для тестирования стратегий без отправки заявок на биржу!
  • 03 - Offline Backtest MultiPortfolio.py - Пример торговой стратегии для теста на истории - не live режим - для множества тикеров, которые можно передавать в стратегию списком (SBER, LKOH, AFLT, GMKN).

    • В стратегии показано как применять индикаторы (SMA, RSI) к нескольким тикерам одновременно.

      • Не live режим - для тестирования стратегий без отправки заявок на биржу!
  • 04 - Offline Backtest Indicators.py - Пример торговой стратегии для теста на истории с использованием индикаторов SMA и RSI - не live режим - для двух тикеров SBER и LKOH.

    • В стратегии показано как применять индикаторы (SMA, RSI) к нескольким тикерам одновременно.

      • генерит 177% дохода на момент записи видео ))

      • Не live режим - для тестирования стратегий без отправки заявок на биржу!

Спасибо

  • backtrader: очень простая и классная библиотека!

  • Команде разработчиков MOEX moexalgo: Для создания оболочки MOEX API, сокращающей большую часть работы.

  • Игорю Чечету: за классные бесплатные библиотеки для live торговли реализующие подключения к брокерам

Важно

Исправление ошибок, доработка и развитие библиотеки осуществляется автором и сообществом!

Пушьте ваши коммиты!

Условия использования

Библиотека backtrader_moexalgo позволяющая делать интеграцию Backtrader и MOEX API - это Программа созданная исключительно для удобства работы.

При использовании Программы Пользователь обязан соблюдать положения действующего законодательства Российской Федерации или своей страны.

Использование Программы предлагается по принципу «Как есть» («AS IS»). Никаких гарантий, как устных, так и письменных не прилагается и не предусматривается.

Автор и сообщество не дает гарантии, что все ошибки Программы были устранены, соответственно автор и сообщество не несет никакой ответственности за

последствия использования Программы, включая, но, не ограничиваясь любым ущербом оборудованию, компьютерам, мобильным устройствам,

программному обеспечению Пользователя вызванным или связанным с использованием Программы, а также за любые финансовые потери,

понесенные Пользователем в результате использования Программы.

Никто не ответственен за потерю данных, убытки, ущерб, включаю случайный или косвенный, упущенную выгоду, потерю доходов или любые другие потери,

связанные с использованием Программы.

Программа распространяется на условиях лицензии MIT.

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

backtrader_moexalgo-1.0.1.tar.gz (20.8 kB view details)

Uploaded Source

Built Distribution

backtrader_moexalgo-1.0.1-py3-none-any.whl (15.0 kB view details)

Uploaded Python 3

File details

Details for the file backtrader_moexalgo-1.0.1.tar.gz.

File metadata

  • Download URL: backtrader_moexalgo-1.0.1.tar.gz
  • Upload date:
  • Size: 20.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.7

File hashes

Hashes for backtrader_moexalgo-1.0.1.tar.gz
Algorithm Hash digest
SHA256 f4bdd3ba4ab1aa55f62177a3a0806b1b20114bd4750fc4aa45663e6aa46a2c3a
MD5 bd0d415431065a29b55885a2daf32378
BLAKE2b-256 188a2b192387f9a24cd9c19bdb09baf394edfd7c9c72f639e015308eefd7a40d

See more details on using hashes here.

File details

Details for the file backtrader_moexalgo-1.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for backtrader_moexalgo-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 ecc7049aecc0ad95817f5f463bcde22f5fe1db047a19fed0e18936670e9de3eb
MD5 06f14c3b7f86c0623eb16b6517ff2567
BLAKE2b-256 3591b78da416868674b79c6b17a5a4cea3458e1e97cf769c1632f55eaea69ab2

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