# backtrader_finam
Интеграция API Finam с [Backtrader](https://github.com/WISEPLAT/backtrader ).
С помощью этой интеграции вы можете делать:
- Тестирование вашей стратегии на исторических данных с Финама
- Запускать торговые системы в Live для автоматической/алгоритмической торговли через брокера Финам
- Загружать live / исторические данные по акциям, фьючерсам и иностранным инструментам
- Создавать и тестировать свои торговые стратегии пользуясь возможностями библиотеки [Backtrader](https://github.com/WISEPLAT/backtrader )
- Много полезной документации о том, как делать стратегии есть [здесь](https://www.backtrader.com/docu/quickstart/quickstart/ ).
Для подключения к API мы используем библиотеки [backtrader_finam](https://github.com/WISEPLAT/backtrader_finam ) + [Backtrader](https://github.com/WISEPLAT/backtrader ) + [FinamPy](https://github.com/WISEPLAT/FinamPy ).
## Установка
1) Самый простой способ:
```shell
pip install backtrader_finam
```
или
```shell
git clone https://github.com/WISEPLAT/backtrader_finam
```
или
```shell
pip install git+https://github.com/WISEPLAT/backtrader_finam.git
```
2) Пожалуйста, используйте backtrader из моего репозитория (так как вы можете размещать в нем свои коммиты). Установите его:
```shell
pip install git+https://github.com/WISEPLAT/backtrader.git
```
-- Могу ли я использовать вашу интеграцию с оригинальным backtrader?
-- Да, вы можете использовать оригинальный backtrader, так как автор оригинального backtrader одобрил все мои изменения.
Вот ссылка: [mementum/backtrader#472](https://github.com/mementum/backtrader/pull/472)
3) У нас есть некоторые зависимости, вам нужно их установить:
```shell
pip install pytz requests grpcio protobuf types-protobuf googleapis-common-protos numpy pandas backtrader requests websockets matplotlib
```
Обязательно! Выполните в корне вашего проекта через терминал эту команду (для избежания ошибки: **ModuleNotFoundError: No module named 'FinamPy'**):
```shell
git clone https://github.com/WISEPLAT/FinamPy
```
для клонирования библиотеки, которая позволяет работать с функционалом API брокера Финам.
### Начало работы
Чтобы было легче разобраться как всё работает, сделано множество примеров в папках **DataExamplesMoexAlgo_ru** и **StrategyExamplesMoexAlgo_ru**.
Перед запуском примера, необходимо получить свой API ключ и номер торгового счета, и прописать их в файле **my_config\Config_Finam.py:**
```python
# content of my_config\Config_Finam.py
class Config:
ClientIds = ('<Торговый счет>',) # Торговые счёта
AccessToken = '<Токен>' # Торговый токен доступа
```
#### Как получить номер торгового счета и API ключ:
1. Открыть счет в "Финаме" https://open.finam.ru/registration
2. Зарегистрироваться в сервисе Comon https://www.comon.ru/
3. В личном кабинете Comon получить токен https://www.comon.ru/my/trade-api/tokens
4. Скопировать и вставить в файл **my_config\Config_Finam.py** полученные **"Ключ API"** и **"Номер счета"**
#### Теперь можно запускать примеры
В папке **DataExamplesFinam_ru** находится код примеров по работе с биржевыми данными через API интерфейс.
* **01 - Symbol.py** - торговая стратегия для получения исторических и "живых" данных одного тикера по одному таймфрейму
* **02 - Symbol data to DF.py** - экспорт в csv файл исторических данных одного тикера по одному таймфрейму
* **03 - Symbols.py** - торговая стратегия для нескольких тикеров по одному таймфрейму
* **04 - Rollover.py** - запуск торговой стратегии на склейке данных из файла с историческими данными и последней загруженной истории с брокера
* **05 - Timeframes.py** - торговая стратегия для одного тикера по разным таймфреймам
* **Strategy.py** - Пример торговой стратегии, которая только выводит данные по тикеру/тикерам OHLCV
В папке **StrategyExamplesFinam_ru** находится код примеров стратегий.
* **01 - Live Trade - broker Finam.py** - Пример торговой стратегии в live режиме для тикера SBER - брокер Финам.
* Пример выставления заявок на биржу через брокера Финам и их снятие.
* Пожалуйста, имейте в виду! Это live режим - если на рынке произойдет значительное изменение цены в сторону понижения более чем на 0.5% - ордер может быть выполнен....
* **Не забудьте после теста снять с биржи выставленные заявки!**
* **02 - Live Trade - LimitCancel.py** - Пример торговой стратегии в live режиме для тикера SBER - брокер Финам.
* Пример выставления заявок на биржу через брокера Финам и их снятие.
* Пожалуйста, имейте в виду! Это live режим - если на рынке произойдет значительное изменение цены в сторону понижения более чем на 0.5% - ордер может быть выполнен....
* **Не забудьте после теста снять с биржи выставленные заявки!**
* **03 - Offline Backtest.py** - Пример торговой стратегии для теста на истории - не live режим - для двух тикеров SBER и LKOH.
* В стратегии показано как применять индикаторы (SMA, RSI) к нескольким тикерам одновременно.
* Не live режим - для тестирования стратегий без отправки заявок на биржу!
* **04 - Offline Backtest MultiPortfolio.py** - Пример торговой стратегии для теста на истории - не live режим - для множества тикеров, которые можно передавать в стратегию списком (SBER, LKOH, AFLT, GMKN).
* В стратегии показано как применять индикаторы (SMA, RSI) к нескольким тикерам одновременно.
* Не live режим - для тестирования стратегий без отправки заявок на биржу!
* **05 - Offline Backtest Indicators.py** - Пример торговой стратегии для теста на истории с использованием индикаторов SMA и RSI - не live режим - для двух тикеров SBER и LKOH.
* В стратегии показано как применять индикаторы (SMA, RSI) к нескольким тикерам одновременно.
* генерит 177% дохода на момент записи видео ))
* Не live режим - для тестирования стратегий без отправки заявок на биржу!
* **06 - Offline Backtest - Just Print OHLCV with check on Failed Tickers.py**
* Стратегия просто выводит OHLCV, исключая Тикеры по которым не смогли получить исторические данные.
## Спасибо
- Команде разработчиков Backtrader: очень простая и классная библиотека!
- Команде [разработчиков FinamPy](https://github.com/cia76): за превосходные бесплатные библиотеки для live торговли реализующие подключения к брокерам
## Важно
Исправление ошибок, доработка и развитие библиотеки осуществляется автором и сообществом!
**Пушьте ваши коммиты!**
# Условия использования
Библиотека backtrader_finam позволяющая делать интеграцию Backtrader и MOEX API - это **Программа** созданная исключительно для удобства работы.
При использовании **Программы** Пользователь обязан соблюдать положения действующего законодательства Российской Федерации или своей страны.
Использование **Программы** предлагается по принципу «Как есть» («AS IS»). Никаких гарантий, как устных, так и письменных не прилагается и не предусматривается.
Автор и сообщество не дает гарантии, что все ошибки **Программы** были устранены, соответственно автор и сообщество не несет никакой ответственности за
последствия использования **Программы**, включая, но, не ограничиваясь любым ущербом оборудованию, компьютерам, мобильным устройствам,
программному обеспечению Пользователя вызванным или связанным с использованием **Программы**, а также за любые финансовые потери,
понесенные Пользователем в результате использования **Программы**.
Никто не ответственен за потерю данных, убытки, ущерб, включаю случайный или косвенный, упущенную выгоду, потерю доходов или любые другие потери,
связанные с использованием **Программы**.
**Программа** распространяется на условиях лицензии [MIT](https://choosealicense.com/licenses/mit).
## История звезд
Пожалуйста, поставьте Звезду 🌟 этому коду
[![Star History Chart](https://api.star-history.com/svg?repos=WISEPLAT/backtrader_finam&type=Timeline)](https://star-history.com/#WISEPLAT/backtrader_finam&Timeline)
## Star History
Please, put a Star 🌟 for this code
==========================================================================
# backtrader_finam
Finam API integration with [Backtrader](https://github.com/WISEPLAT/backtrader).
With this integration you can do:
- Backtesting your strategy on historical data from Finam
- Launch LIVE trading systems for automatic trading by broker Finam
- Download live / historical data on stocks, futures and foreign instruments
- Create and test your trading strategies using the library's features [Backtrader](https://github.com/WISEPLAT/backtrader )
- There is a lot of useful documentation on how to make strategies [(see here)](https://www.backtrader.com/docu/quickstart/quickstart/ ).
For API connection we are using libraries [backtrader_finam](https://github.com/WISEPLAT/backtrader_finam ) + [Backtrader](https://github.com/WISEPLAT/backtrader ) + [FinamPy](https://github.com/WISEPLAT/FinamPy ).
## Installation
1) The simplest way:
```shell
pip install backtrader_finam
```
or
```shell
git clone https://github.com/WISEPLAT/backtrader_finam
```
or
```shell
pip install git+https://github.com/WISEPLAT/backtrader_finam.git
```
2) Please use backtrader from my repository (as your can push your commits in it). Install it:
```shell
pip install git+https://github.com/WISEPLAT/backtrader.git
```
-- Can I use your integration library 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](https://github.com/mementum/backtrader/pull/472)
3) We have some dependencies, you need to install them:
```shell
pip install pytz requests grpcio protobuf types-protobuf googleapis-common-protos numpy pandas backtrader requests websockets matplotlib
```
Important! Run this command in the root of your project via the terminal (to prevent error: **ModuleNotFoundError: No module named 'FinamPy'**):
```shell
git clone https://github.com/WISEPLAT/FinamPy
```
to clone a library that allows you to work with the functionality of the Finam broker API.
### Getting started
To make it easier to figure out how everything works, many examples have been made in the folders **DataExamplesMoexAlgo** and **StrategyExamplesMoexAlgo**.
Before running the example, you need to get your API key and trading account number, and register them in the file **my_config\Config_Finam.py:**
```python
# content of my_config\Config_Finam.py
class Config:
ClientIds = ('<Trading account>',) # Trading accounts
AccessToken = '<Token>' # Trade Access Token
```
#### How to get the trading account number and API key:
1. Open an account in Finam https://open.finam.ru/registration
2. Register in the Comon service https://www.comon.ru/
3. Get a token in your Comon personal account https://www.comon.ru/my/trade-api/tokens
4. Copy and paste to the file **my_config\Config_Finam.py** received **"API key"** and **"Account number"**
#### Now you can run the examples
The **DataExamplesMoexAlgo** folder contains the code of examples for working with exchange data via the [MOEX](https://www.moex.com/ru/algopack/about ) API.
* **01 - Symbol.py** - trading strategy for obtaining historical and "live" data of one ticker for one timeframe
* **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 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!**
* **02 - Live Trade - LimitCancel.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!**
* **03 - 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!
* **04 - 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!
* **05 - 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!
* **06 - Offline Backtest - Just Print OHLCV with check on Failed Tickers.py**
* The strategy simply outputs OHLCV, excluding Tickers for which historical data could not be obtained.
## Thanks
- Team of Backtrader: Very simple and cool library!
- Team of [FinamPy](https://github.com/cia76): for free excellent libraries for live trading by connection to brokers
## License
[MIT](https://choosealicense.com/licenses/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_finam 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](https://choosealicense.com/licenses/mit ) license.
Raw data
{
"_id": null,
"home_page": "https://github.com/WISEPLAT/backtrader_finam",
"name": "backtrader-finam",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": "",
"keywords": "trading,development",
"author": "wiseplat",
"author_email": "oshpagin@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/49/50/6f34ecd95e28fe606aeeb32e45cd0be63a3bedde3e5ba3d71cbf56fddfe0/backtrader_finam-3.0.1.tar.gz",
"platform": null,
"description": "# backtrader_finam\r\n\r\n\r\n\r\n\u0418\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f API Finam \u0441 [Backtrader](https://github.com/WISEPLAT/backtrader ).\r\n\r\n\r\n\r\n\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u0442\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u0435\u043b\u0430\u0442\u044c:\r\n\r\n- \u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0430\u0448\u0435\u0439 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u043d\u0430 \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u0424\u0438\u043d\u0430\u043c\u0430\r\n\r\n- \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0442\u043e\u0440\u0433\u043e\u0432\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0432 Live \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439/\u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0442\u043e\u0440\u0433\u043e\u0432\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 \u0431\u0440\u043e\u043a\u0435\u0440\u0430 \u0424\u0438\u043d\u0430\u043c\r\n\r\n- \u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c live / \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e \u0430\u043a\u0446\u0438\u044f\u043c, \u0444\u044c\u044e\u0447\u0435\u0440\u0441\u0430\u043c \u0438 \u0438\u043d\u043e\u0441\u0442\u0440\u0430\u043d\u043d\u044b\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\r\n\r\n- \u0421\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0442\u043e\u0440\u0433\u043e\u0432\u044b\u0435 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u043f\u043e\u043b\u044c\u0437\u0443\u044f\u0441\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 [Backtrader](https://github.com/WISEPLAT/backtrader )\r\n\r\n - \u041c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u0435\u0441\u0442\u044c [\u0437\u0434\u0435\u0441\u044c](https://www.backtrader.com/docu/quickstart/quickstart/ ).\r\n\r\n\r\n\r\n\u0414\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a API \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 [backtrader_finam](https://github.com/WISEPLAT/backtrader_finam ) + [Backtrader](https://github.com/WISEPLAT/backtrader ) + [FinamPy](https://github.com/WISEPLAT/FinamPy ).\r\n\r\n\r\n\r\n## \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430\r\n\r\n1) \u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431:\r\n\r\n```shell\r\n\r\npip install backtrader_finam\r\n\r\n```\r\n\r\n\u0438\u043b\u0438\r\n\r\n```shell\r\n\r\ngit clone https://github.com/WISEPLAT/backtrader_finam\r\n\r\n```\r\n\r\n\u0438\u043b\u0438\r\n\r\n```shell\r\n\r\npip install git+https://github.com/WISEPLAT/backtrader_finam.git\r\n\r\n```\r\n\r\n\r\n\r\n2) \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 backtrader \u0438\u0437 \u043c\u043e\u0435\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f (\u0442\u0430\u043a \u043a\u0430\u043a \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0442\u044c \u0432 \u043d\u0435\u043c \u0441\u0432\u043e\u0438 \u043a\u043e\u043c\u043c\u0438\u0442\u044b). \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0435\u0433\u043e:\r\n\r\n```shell\r\n\r\npip install git+https://github.com/WISEPLAT/backtrader.git\r\n\r\n```\r\n\r\n-- \u041c\u043e\u0433\u0443 \u043b\u0438 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0430\u0448\u0443 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044e \u0441 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u043c backtrader?\r\n\r\n\r\n\r\n-- \u0414\u0430, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 backtrader, \u0442\u0430\u043a \u043a\u0430\u043a \u0430\u0432\u0442\u043e\u0440 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e backtrader \u043e\u0434\u043e\u0431\u0440\u0438\u043b \u0432\u0441\u0435 \u043c\u043e\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f.\r\n\r\n\r\n\r\n\u0412\u043e\u0442 \u0441\u0441\u044b\u043b\u043a\u0430: [mementum/backtrader#472](https://github.com/mementum/backtrader/pull/472)\r\n\r\n\r\n\r\n3) \u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438, \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0438\u0445 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c:\r\n\r\n```shell\r\n\r\npip install pytz requests grpcio protobuf types-protobuf googleapis-common-protos numpy pandas backtrader requests websockets matplotlib\r\n\r\n```\r\n\r\n\u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e! \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0432 \u043a\u043e\u0440\u043d\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0447\u0435\u0440\u0435\u0437 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u044d\u0442\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 (\u0434\u043b\u044f \u0438\u0437\u0431\u0435\u0436\u0430\u043d\u0438\u044f \u043e\u0448\u0438\u0431\u043a\u0438: **ModuleNotFoundError: No module named 'FinamPy'**):\r\n\r\n```shell\r\n\r\ngit clone https://github.com/WISEPLAT/FinamPy\r\n\r\n```\r\n\r\n\u0434\u043b\u044f \u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u043e\u043c API \u0431\u0440\u043e\u043a\u0435\u0440\u0430 \u0424\u0438\u043d\u0430\u043c.\r\n\r\n\r\n\r\n### \u041d\u0430\u0447\u0430\u043b\u043e \u0440\u0430\u0431\u043e\u0442\u044b\r\n\r\n\u0427\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u043b\u0435\u0433\u0447\u0435 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u0432\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0432 \u043f\u0430\u043f\u043a\u0430\u0445 **DataExamplesMoexAlgo_ru** \u0438 **StrategyExamplesMoexAlgo_ru**.\r\n\r\n\r\n\r\n\u041f\u0435\u0440\u0435\u0434 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0430, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u0432\u043e\u0439 API \u043a\u043b\u044e\u0447 \u0438 \u043d\u043e\u043c\u0435\u0440 \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0433\u043e \u0441\u0447\u0435\u0442\u0430, \u0438 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0438\u0445 \u0432 \u0444\u0430\u0439\u043b\u0435 **my_config\\Config_Finam.py:**\r\n\r\n\r\n\r\n```python\r\n\r\n# content of my_config\\Config_Finam.py \r\n\r\nclass Config:\r\n\r\n ClientIds = ('<\u0422\u043e\u0440\u0433\u043e\u0432\u044b\u0439 \u0441\u0447\u0435\u0442>',) # \u0422\u043e\u0440\u0433\u043e\u0432\u044b\u0435 \u0441\u0447\u0451\u0442\u0430\r\n\r\n AccessToken = '<\u0422\u043e\u043a\u0435\u043d>' # \u0422\u043e\u0440\u0433\u043e\u0432\u044b\u0439 \u0442\u043e\u043a\u0435\u043d \u0434\u043e\u0441\u0442\u0443\u043f\u0430\r\n\r\n```\r\n\r\n\r\n\r\n#### \u041a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u043e\u043c\u0435\u0440 \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0433\u043e \u0441\u0447\u0435\u0442\u0430 \u0438 API \u043a\u043b\u044e\u0447:\r\n\r\n1. \u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0441\u0447\u0435\u0442 \u0432 \"\u0424\u0438\u043d\u0430\u043c\u0435\" https://open.finam.ru/registration\r\n\r\n2. \u0417\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0441\u0435\u0440\u0432\u0438\u0441\u0435 Comon https://www.comon.ru/\r\n\r\n3. \u0412 \u043b\u0438\u0447\u043d\u043e\u043c \u043a\u0430\u0431\u0438\u043d\u0435\u0442\u0435 Comon \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u043e\u043a\u0435\u043d https://www.comon.ru/my/trade-api/tokens\r\n\r\n4. \u0421\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432 \u0444\u0430\u0439\u043b **my_config\\Config_Finam.py** \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 **\"\u041a\u043b\u044e\u0447 API\"** \u0438 **\"\u041d\u043e\u043c\u0435\u0440 \u0441\u0447\u0435\u0442\u0430\"**\r\n\r\n\r\n\r\n#### \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u044b\r\n\r\n\r\n\r\n\u0412 \u043f\u0430\u043f\u043a\u0435 **DataExamplesFinam_ru** \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043a\u043e\u0434 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043f\u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0431\u0438\u0440\u0436\u0435\u0432\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0447\u0435\u0440\u0435\u0437 API \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441.\r\n\r\n\r\n\r\n* **01 - Symbol.py** - \u0442\u043e\u0440\u0433\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044f \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0438 \"\u0436\u0438\u0432\u044b\u0445\" \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0438\u043a\u0435\u0440\u0430 \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u0442\u0430\u0439\u043c\u0444\u0440\u0435\u0439\u043c\u0443\r\n\r\n* **02 - Symbol data to DF.py** - \u044d\u043a\u0441\u043f\u043e\u0440\u0442 \u0432 csv \u0444\u0430\u0439\u043b \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0438\u043a\u0435\u0440\u0430 \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u0442\u0430\u0439\u043c\u0444\u0440\u0435\u0439\u043c\u0443\r\n\r\n* **03 - Symbols.py** - \u0442\u043e\u0440\u0433\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044f \u0434\u043b\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0442\u0438\u043a\u0435\u0440\u043e\u0432 \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u0442\u0430\u0439\u043c\u0444\u0440\u0435\u0439\u043c\u0443\r\n\r\n* **04 - Rollover.py** - \u0437\u0430\u043f\u0443\u0441\u043a \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u043d\u0430 \u0441\u043a\u043b\u0435\u0439\u043a\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 \u0441 \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0441 \u0431\u0440\u043e\u043a\u0435\u0440\u0430\r\n\r\n* **05 - Timeframes.py** - \u0442\u043e\u0440\u0433\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044f \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0438\u043a\u0435\u0440\u0430 \u043f\u043e \u0440\u0430\u0437\u043d\u044b\u043c \u0442\u0430\u0439\u043c\u0444\u0440\u0435\u0439\u043c\u0430\u043c\r\n\r\n* **Strategy.py** - \u041f\u0440\u0438\u043c\u0435\u0440 \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e \u0442\u0438\u043a\u0435\u0440\u0443/\u0442\u0438\u043a\u0435\u0440\u0430\u043c OHLCV\r\n\r\n\r\n\r\n\u0412 \u043f\u0430\u043f\u043a\u0435 **StrategyExamplesFinam_ru** \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043a\u043e\u0434 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0439. \r\n\r\n\r\n\r\n* **01 - Live Trade - broker Finam.py** - \u041f\u0440\u0438\u043c\u0435\u0440 \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u0432 live \u0440\u0435\u0436\u0438\u043c\u0435 \u0434\u043b\u044f \u0442\u0438\u043a\u0435\u0440\u0430 SBER - \u0431\u0440\u043e\u043a\u0435\u0440 \u0424\u0438\u043d\u0430\u043c. \r\n\r\n * \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0437\u0430\u044f\u0432\u043e\u043a \u043d\u0430 \u0431\u0438\u0440\u0436\u0443 \u0447\u0435\u0440\u0435\u0437 \u0431\u0440\u043e\u043a\u0435\u0440\u0430 \u0424\u0438\u043d\u0430\u043c \u0438 \u0438\u0445 \u0441\u043d\u044f\u0442\u0438\u0435.\r\n\r\n * \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0438\u043c\u0435\u0439\u0442\u0435 \u0432 \u0432\u0438\u0434\u0443! \u042d\u0442\u043e live \u0440\u0435\u0436\u0438\u043c - \u0435\u0441\u043b\u0438 \u043d\u0430 \u0440\u044b\u043d\u043a\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0435\u0442 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0446\u0435\u043d\u044b \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u043f\u043e\u043d\u0438\u0436\u0435\u043d\u0438\u044f \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c \u043d\u0430 0.5% - \u043e\u0440\u0434\u0435\u0440 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d.... \r\n\r\n * **\u041d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u043f\u043e\u0441\u043b\u0435 \u0442\u0435\u0441\u0442\u0430 \u0441\u043d\u044f\u0442\u044c \u0441 \u0431\u0438\u0440\u0436\u0438 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0437\u0430\u044f\u0432\u043a\u0438!**\r\n\r\n\r\n\r\n\r\n\r\n* **02 - Live Trade - LimitCancel.py** - \u041f\u0440\u0438\u043c\u0435\u0440 \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u0432 live \u0440\u0435\u0436\u0438\u043c\u0435 \u0434\u043b\u044f \u0442\u0438\u043a\u0435\u0440\u0430 SBER - \u0431\u0440\u043e\u043a\u0435\u0440 \u0424\u0438\u043d\u0430\u043c. \r\n\r\n * \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0437\u0430\u044f\u0432\u043e\u043a \u043d\u0430 \u0431\u0438\u0440\u0436\u0443 \u0447\u0435\u0440\u0435\u0437 \u0431\u0440\u043e\u043a\u0435\u0440\u0430 \u0424\u0438\u043d\u0430\u043c \u0438 \u0438\u0445 \u0441\u043d\u044f\u0442\u0438\u0435.\r\n\r\n * \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0438\u043c\u0435\u0439\u0442\u0435 \u0432 \u0432\u0438\u0434\u0443! \u042d\u0442\u043e live \u0440\u0435\u0436\u0438\u043c - \u0435\u0441\u043b\u0438 \u043d\u0430 \u0440\u044b\u043d\u043a\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0435\u0442 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0446\u0435\u043d\u044b \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u043f\u043e\u043d\u0438\u0436\u0435\u043d\u0438\u044f \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c \u043d\u0430 0.5% - \u043e\u0440\u0434\u0435\u0440 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d.... \r\n\r\n * **\u041d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u043f\u043e\u0441\u043b\u0435 \u0442\u0435\u0441\u0442\u0430 \u0441\u043d\u044f\u0442\u044c \u0441 \u0431\u0438\u0440\u0436\u0438 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0437\u0430\u044f\u0432\u043a\u0438!**\r\n\r\n\r\n\r\n\r\n\r\n* **03 - Offline Backtest.py** - \u041f\u0440\u0438\u043c\u0435\u0440 \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0430 \u043d\u0430 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 - \u043d\u0435 live \u0440\u0435\u0436\u0438\u043c - \u0434\u043b\u044f \u0434\u0432\u0443\u0445 \u0442\u0438\u043a\u0435\u0440\u043e\u0432 SBER \u0438 LKOH.\r\n\r\n * \u0412 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043a\u0430\u043a \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u044b (SMA, RSI) \u043a \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u0442\u0438\u043a\u0435\u0440\u0430\u043c \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e.\r\n\r\n * \u041d\u0435 live \u0440\u0435\u0436\u0438\u043c - \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0439 \u0431\u0435\u0437 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0437\u0430\u044f\u0432\u043e\u043a \u043d\u0430 \u0431\u0438\u0440\u0436\u0443!\r\n\r\n\r\n\r\n\r\n\r\n* **04 - Offline Backtest MultiPortfolio.py** - \u041f\u0440\u0438\u043c\u0435\u0440 \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0430 \u043d\u0430 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 - \u043d\u0435 live \u0440\u0435\u0436\u0438\u043c - \u0434\u043b\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0442\u0438\u043a\u0435\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0432 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044e \u0441\u043f\u0438\u0441\u043a\u043e\u043c (SBER, LKOH, AFLT, GMKN). \r\n\r\n * \u0412 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043a\u0430\u043a \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u044b (SMA, RSI) \u043a \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u0442\u0438\u043a\u0435\u0440\u0430\u043c \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e.\r\n\r\n * \u041d\u0435 live \u0440\u0435\u0436\u0438\u043c - \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0439 \u0431\u0435\u0437 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0437\u0430\u044f\u0432\u043e\u043a \u043d\u0430 \u0431\u0438\u0440\u0436\u0443!\r\n\r\n\r\n\r\n\r\n\r\n* **05 - Offline Backtest Indicators.py** - \u041f\u0440\u0438\u043c\u0435\u0440 \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0430 \u043d\u0430 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432 SMA \u0438 RSI - \u043d\u0435 live \u0440\u0435\u0436\u0438\u043c - \u0434\u043b\u044f \u0434\u0432\u0443\u0445 \u0442\u0438\u043a\u0435\u0440\u043e\u0432 SBER \u0438 LKOH. \r\n\r\n * \u0412 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043a\u0430\u043a \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u044b (SMA, RSI) \u043a \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u0442\u0438\u043a\u0435\u0440\u0430\u043c \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e.\r\n\r\n * \u0433\u0435\u043d\u0435\u0440\u0438\u0442 177% \u0434\u043e\u0445\u043e\u0434\u0430 \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432\u0438\u0434\u0435\u043e )) \r\n\r\n * \u041d\u0435 live \u0440\u0435\u0436\u0438\u043c - \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0439 \u0431\u0435\u0437 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0437\u0430\u044f\u0432\u043e\u043a \u043d\u0430 \u0431\u0438\u0440\u0436\u0443!\r\n\r\n\r\n\r\n\r\n\r\n* **06 - Offline Backtest - Just Print OHLCV with check on Failed Tickers.py**\r\n\r\n * \u0421\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0432\u043e\u0434\u0438\u0442 OHLCV, \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u044f \u0422\u0438\u043a\u0435\u0440\u044b \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043d\u0435 \u0441\u043c\u043e\u0433\u043b\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435.\r\n\r\n\r\n\r\n## \u0421\u043f\u0430\u0441\u0438\u0431\u043e\r\n\r\n- \u041a\u043e\u043c\u0430\u043d\u0434\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 Backtrader: \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0438 \u043a\u043b\u0430\u0441\u0441\u043d\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430!\r\n\r\n- \u041a\u043e\u043c\u0430\u043d\u0434\u0435 [\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 FinamPy](https://github.com/cia76): \u0437\u0430 \u043f\u0440\u0435\u0432\u043e\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0434\u043b\u044f live \u0442\u043e\u0440\u0433\u043e\u0432\u043b\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0438\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u0431\u0440\u043e\u043a\u0435\u0440\u0430\u043c \r\n\r\n\r\n\r\n## \u0412\u0430\u0436\u043d\u043e\r\n\r\n\u0418\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0448\u0438\u0431\u043e\u043a, \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0438 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u0440\u043e\u043c \u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e\u043c!\r\n\r\n\r\n\r\n**\u041f\u0443\u0448\u044c\u0442\u0435 \u0432\u0430\u0448\u0438 \u043a\u043e\u043c\u043c\u0438\u0442\u044b!** \r\n\r\n\r\n\r\n# \u0423\u0441\u043b\u043e\u0432\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\r\n\r\n\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 backtrader_finam \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0430\u044f \u0434\u0435\u043b\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044e Backtrader \u0438 MOEX API - \u044d\u0442\u043e **\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430** \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u0430\u044f \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0440\u0430\u0431\u043e\u0442\u044b.\r\n\r\n\u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 **\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b** \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043e\u0431\u044f\u0437\u0430\u043d \u0441\u043e\u0431\u043b\u044e\u0434\u0430\u0442\u044c \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u0437\u0430\u043a\u043e\u043d\u043e\u0434\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0430 \u0420\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u043e\u0439 \u0424\u0435\u0434\u0435\u0440\u0430\u0446\u0438\u0438 \u0438\u043b\u0438 \u0441\u0432\u043e\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u044b.\r\n\r\n\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 **\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b** \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043f\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443 \u00ab\u041a\u0430\u043a \u0435\u0441\u0442\u044c\u00bb (\u00abAS IS\u00bb). \u041d\u0438\u043a\u0430\u043a\u0438\u0445 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0439, \u043a\u0430\u043a \u0443\u0441\u0442\u043d\u044b\u0445, \u0442\u0430\u043a \u0438 \u043f\u0438\u0441\u044c\u043c\u0435\u043d\u043d\u044b\u0445 \u043d\u0435 \u043f\u0440\u0438\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0438 \u043d\u0435 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442\u0441\u044f.\r\n\r\n\u0410\u0432\u0442\u043e\u0440 \u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e \u043d\u0435 \u0434\u0430\u0435\u0442 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0438, \u0447\u0442\u043e \u0432\u0441\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 **\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b** \u0431\u044b\u043b\u0438 \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u044b, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0430\u0432\u0442\u043e\u0440 \u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e \u043d\u0435 \u043d\u0435\u0441\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\r\n\r\n\u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f **\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b**, \u0432\u043a\u043b\u044e\u0447\u0430\u044f, \u043d\u043e, \u043d\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u044f\u0441\u044c \u043b\u044e\u0431\u044b\u043c \u0443\u0449\u0435\u0440\u0431\u043e\u043c \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044e, \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430\u043c, \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c, \r\n\r\n\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u043c\u0443 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044e \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432\u044b\u0437\u0432\u0430\u043d\u043d\u044b\u043c \u0438\u043b\u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u043c \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c **\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b**, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0437\u0430 \u043b\u044e\u0431\u044b\u0435 \u0444\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u044b\u0435 \u043f\u043e\u0442\u0435\u0440\u0438,\r\n\r\n\u043f\u043e\u043d\u0435\u0441\u0435\u043d\u043d\u044b\u0435 \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f **\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b**.\r\n\r\n\u041d\u0438\u043a\u0442\u043e \u043d\u0435 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u0435\u043d \u0437\u0430 \u043f\u043e\u0442\u0435\u0440\u044e \u0434\u0430\u043d\u043d\u044b\u0445, \u0443\u0431\u044b\u0442\u043a\u0438, \u0443\u0449\u0435\u0440\u0431, \u0432\u043a\u043b\u044e\u0447\u0430\u044e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u0438\u043b\u0438 \u043a\u043e\u0441\u0432\u0435\u043d\u043d\u044b\u0439, \u0443\u043f\u0443\u0449\u0435\u043d\u043d\u0443\u044e \u0432\u044b\u0433\u043e\u0434\u0443, \u043f\u043e\u0442\u0435\u0440\u044e \u0434\u043e\u0445\u043e\u0434\u043e\u0432 \u0438\u043b\u0438 \u043b\u044e\u0431\u044b\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u043e\u0442\u0435\u0440\u0438,\r\n\r\n\u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c **\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b**.\r\n\r\n\r\n\r\n**\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430** \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438 [MIT](https://choosealicense.com/licenses/mit).\r\n\r\n\r\n\r\n## \u0418\u0441\u0442\u043e\u0440\u0438\u044f \u0437\u0432\u0435\u0437\u0434\r\n\r\n\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043f\u043e\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0417\u0432\u0435\u0437\u0434\u0443 \ud83c\udf1f \u044d\u0442\u043e\u043c\u0443 \u043a\u043e\u0434\u0443\r\n\r\n\r\n\r\n[![Star History Chart](https://api.star-history.com/svg?repos=WISEPLAT/backtrader_finam&type=Timeline)](https://star-history.com/#WISEPLAT/backtrader_finam&Timeline)\r\n\r\n\r\n\r\n## Star History\r\n\r\nPlease, put a Star \ud83c\udf1f for this code\r\n\r\n\r\n\r\n==========================================================================\r\n\r\n\r\n\r\n\r\n\r\n# backtrader_finam\r\n\r\nFinam API integration with [Backtrader](https://github.com/WISEPLAT/backtrader).\r\n\r\n\r\n\r\nWith this integration you can do:\r\n\r\n - Backtesting your strategy on historical data from Finam \r\n\r\n - Launch LIVE trading systems for automatic trading by broker Finam\r\n\r\n - Download live / historical data on stocks, futures and foreign instruments\r\n\r\n- Create and test your trading strategies using the library's features [Backtrader](https://github.com/WISEPLAT/backtrader )\r\n\r\n - There is a lot of useful documentation on how to make strategies [(see here)](https://www.backtrader.com/docu/quickstart/quickstart/ ).\r\n\r\n\r\n\r\nFor API connection we are using libraries [backtrader_finam](https://github.com/WISEPLAT/backtrader_finam ) + [Backtrader](https://github.com/WISEPLAT/backtrader ) + [FinamPy](https://github.com/WISEPLAT/FinamPy ).\r\n\r\n\r\n\r\n## Installation\r\n\r\n1) The simplest way:\r\n\r\n```shell\r\n\r\npip install backtrader_finam\r\n\r\n```\r\n\r\nor\r\n\r\n```shell\r\n\r\ngit clone https://github.com/WISEPLAT/backtrader_finam\r\n\r\n```\r\n\r\nor\r\n\r\n```shell\r\n\r\npip install git+https://github.com/WISEPLAT/backtrader_finam.git\r\n\r\n```\r\n\r\n\r\n\r\n2) Please use backtrader from my repository (as your can push your commits in it). Install it:\r\n\r\n```shell\r\n\r\npip install git+https://github.com/WISEPLAT/backtrader.git\r\n\r\n```\r\n\r\n-- Can I use your integration library with original backtrader?\r\n\r\n\r\n\r\n-- Yes, you can use original backtrader, as the author of original backtrader had approved all my changes. \r\n\r\n\r\n\r\nHere is the link: [mementum/backtrader#472](https://github.com/mementum/backtrader/pull/472)\r\n\r\n\r\n\r\n3) We have some dependencies, you need to install them: \r\n\r\n```shell\r\n\r\npip install pytz requests grpcio protobuf types-protobuf googleapis-common-protos numpy pandas backtrader requests websockets matplotlib\r\n\r\n```\r\n\r\nImportant! Run this command in the root of your project via the terminal (to prevent error: **ModuleNotFoundError: No module named 'FinamPy'**):\r\n\r\n```shell\r\n\r\ngit clone https://github.com/WISEPLAT/FinamPy\r\n\r\n```\r\n\r\nto clone a library that allows you to work with the functionality of the Finam broker API.\r\n\r\n\r\n\r\n### Getting started\r\n\r\nTo make it easier to figure out how everything works, many examples have been made in the folders **DataExamplesMoexAlgo** and **StrategyExamplesMoexAlgo**.\r\n\r\n\r\n\r\nBefore running the example, you need to get your API key and trading account number, and register them in the file **my_config\\Config_Finam.py:**\r\n\r\n\r\n\r\n```python\r\n\r\n# content of my_config\\Config_Finam.py \r\n\r\nclass Config:\r\n\r\n ClientIds = ('<Trading account>',) # Trading accounts\r\n\r\n AccessToken = '<Token>' # Trade Access Token\r\n\r\n```\r\n\r\n\r\n\r\n#### How to get the trading account number and API key:\r\n\r\n1. Open an account in Finam https://open.finam.ru/registration\r\n\r\n2. Register in the Comon service https://www.comon.ru/\r\n\r\n3. Get a token in your Comon personal account https://www.comon.ru/my/trade-api/tokens\r\n\r\n4. Copy and paste to the file **my_config\\Config_Finam.py** received **\"API key\"** and **\"Account number\"**\r\n\r\n\r\n\r\n#### Now you can run the examples\r\n\r\n\r\n\r\nThe **DataExamplesMoexAlgo** folder contains the code of examples for working with exchange data via the [MOEX](https://www.moex.com/ru/algopack/about ) API.\r\n\r\n\r\n\r\n* **01 - Symbol.py** - trading strategy for obtaining historical and \"live\" data of one ticker for one timeframe\r\n\r\n* **02 - Symbol data to DF.py** - export to csv file of historical data of one ticker for one timeframe\r\n\r\n* **03 - Symbols.py** - trading strategy for multiple tickers on the same timeframe\r\n\r\n* **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\r\n\r\n* **05 - Timeframes.py** - trading strategy is running on different timeframes.\r\n\r\n* **Strategy.py** - An example of a trading strategy that only outputs data of the OHLCV for ticker/tickers\r\n\r\n\r\n\r\nThe **StrategyExamplesMoexAlgo** folder contains the code of sample strategies.\r\n\r\n\r\n\r\n* **01 - Live Trade - broker Finam.py** - An example of a live trading strategy for SBER ticker - broker Finam.\r\n\r\n * Example of placing and cancel orders on the exchange with the use of broker Finam.\r\n\r\n * 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.... \r\n\r\n * **Do not forget to cancel the submitted orders from the exchange after the test!**\r\n\r\n\r\n\r\n\r\n\r\n* **02 - Live Trade - LimitCancel.py** - An example of a live trading strategy for SBER ticker - broker Finam.\r\n\r\n * Example of placing and cancel orders on the exchange with the use of broker Finam.\r\n\r\n * 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.... \r\n\r\n * **Do not forget to cancel the submitted orders from the exchange after the test!**\r\n\r\n\r\n\r\n\r\n\r\n* **03 - Offline Backtest.py** - An example of a trading strategy on a historical data - not live mode - for two SBER and LKOH tickers.\r\n\r\n * The strategy shows how to apply indicators (SMA, RSI) to several tickers at the same time.\r\n\r\n * Not a live mode - for testing strategies without sending orders to the exchange!\r\n\r\n\r\n\r\n\r\n\r\n* **04 - 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).\r\n\r\n * The strategy shows how to apply indicators (SMA, RSI) to several tickers at the same time.\r\n\r\n * Not a live mode - for testing strategies without sending orders to the exchange!\r\n\r\n\r\n\r\n\r\n\r\n* **05 - 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.\r\n\r\n * The strategy shows how to apply indicators (SMA, RSI) to several tickers at the same time.\r\n\r\n * generates 177% of revenue at the time of video recording))\r\n\r\n * Non-live mode - for testing strategies without sending orders to the exchange!\r\n\r\n\r\n\r\n\r\n\r\n* **06 - Offline Backtest - Just Print OHLCV with check on Failed Tickers.py**\r\n\r\n * The strategy simply outputs OHLCV, excluding Tickers for which historical data could not be obtained.\r\n\r\n\r\n\r\n## Thanks\r\n\r\n- Team of Backtrader: Very simple and cool library!\r\n\r\n- Team of [FinamPy](https://github.com/cia76): for free excellent libraries for live trading by connection to brokers \r\n\r\n\r\n\r\n## License\r\n\r\n[MIT](https://choosealicense.com/licenses/mit)\r\n\r\n\r\n\r\n## Important\r\n\r\nError correction, revision and development of the library is carried out by the author and the community!\r\n\r\n\r\n\r\n**Push your commits!**\r\n\r\n\r\n\r\n## Terms of Use\r\n\r\nThe backtrader_finam library, which allows you to integrate Backtrader and MOEX API, is the **Program** created solely for the convenience of work.\r\n\r\nWhen using the **Program**, the User is obliged to comply with the provisions of the current legislation of his country.\r\n\r\nUsing the **Program** are offered on an \"AS IS\" basis. No guarantees, either oral or written, are attached and are not provided.\r\n\r\nThe 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\r\n\r\nthe consequences of using the **Program**, including, but not limited to, any damage to equipment, computers, mobile devices,\r\n\r\nUser software caused by or related to the use of the **Program**, as well as for any financial losses\r\n\r\nincurred by the User as a result of using the **Program**.\r\n\r\nNo one is responsible for data loss, losses, damages, including accidental or indirect, lost profits, loss of revenue or any other losses\r\n\r\nrelated to the use of the **Program**.\r\n\r\n\r\n\r\nThe **Program** is distributed under the terms of the [MIT](https://choosealicense.com/licenses/mit ) license.\r\n\r\n",
"bugtrack_url": null,
"license": "MIT License",
"summary": "API Finam integration with Backtrader",
"version": "3.0.1",
"project_urls": {
"Documentation": "https://github.com/WISEPLAT/backtrader_finam/blob/master/README.md",
"Homepage": "https://github.com/WISEPLAT/backtrader_finam"
},
"split_keywords": [
"trading",
"development"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "e6fab349e2dc3217d1231212ab12d55c4cd3c38f01d50d45573b69b735d6c3bc",
"md5": "3b7d123f051374ccd49a892b2e59915d",
"sha256": "10c8dfe7f4eeb1c54dda4bfde98c47288fe3d9ab4ab4b688e37588f55eab57fe"
},
"downloads": -1,
"filename": "backtrader_finam-3.0.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "3b7d123f051374ccd49a892b2e59915d",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 36817,
"upload_time": "2024-03-05T11:43:08",
"upload_time_iso_8601": "2024-03-05T11:43:08.924192Z",
"url": "https://files.pythonhosted.org/packages/e6/fa/b349e2dc3217d1231212ab12d55c4cd3c38f01d50d45573b69b735d6c3bc/backtrader_finam-3.0.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "49506f34ecd95e28fe606aeeb32e45cd0be63a3bedde3e5ba3d71cbf56fddfe0",
"md5": "505483b7a44f10b83e613b63dbd99a1d",
"sha256": "c982796a046467471885e7966699e3902a3398ed852bba39cbfe58d49af9061b"
},
"downloads": -1,
"filename": "backtrader_finam-3.0.1.tar.gz",
"has_sig": false,
"md5_digest": "505483b7a44f10b83e613b63dbd99a1d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 39978,
"upload_time": "2024-03-05T11:43:10",
"upload_time_iso_8601": "2024-03-05T11:43:10.993343Z",
"url": "https://files.pythonhosted.org/packages/49/50/6f34ecd95e28fe606aeeb32e45cd0be63a3bedde3e5ba3d71cbf56fddfe0/backtrader_finam-3.0.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-03-05 11:43:10",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "WISEPLAT",
"github_project": "backtrader_finam",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "backtrader-finam"
}