Package: backtrader-finam
backtrader_finamИнтеграция API Finam сBacktrader.С помощью этой интеграции вы можете делать:Тестирование вашей стратегии на исторических данных с ФинамаЗапускать торговые системы в Live для автоматической/алгоритмической торговли через брокера ФинамЗагружать live / исторические данные по акциям, фьючерсам и иностранным инструментамСоздавать и тестировать свои торговые стратегии пользуясь возможностями библиотекиBacktraderМного полезной документации о том, как делать стратегии естьздесь.Для подключения к API мы используем библиотекиbacktrader_finam+Backtrader+FinamPy.УстановкаСамый простой способ:pipinstallbacktrader_finamилиgitclonehttps://github.com/WISEPLAT/backtrader_finamилиpipinstallgit+https://github.com/WISEPLAT/backtrader_finam.gitПожалуйста, используйте backtrader из моего репозитория (так как вы можете размещать в нем свои коммиты). Установите его:pipinstallgit+https://github.com/WISEPLAT/backtrader.git-- Могу ли я использовать вашу интеграцию с оригинальным backtrader?-- Да, вы можете использовать оригинальный backtrader, так как автор оригинального backtrader одобрил все мои изменения.Вот ссылка:mementum/backtrader#472У нас есть некоторые зависимости, вам нужно их установить:pipinstallpytzrequestsgrpcioprotobuftypes-protobufgoogleapis-common-protosnumpypandasbacktraderrequestswebsocketsmatplotlibОбязательно! Выполните в корне вашего проекта через терминал эту команду (для избежания ошибки:ModuleNotFoundError: No module named 'FinamPy'):gitclonehttps://github.com/WISEPLAT/FinamPyдля клонирования библиотеки, которая позволяет работать с функционалом API брокера Финам.Начало работыЧтобы было легче разобраться как всё работает, сделано множество примеров в папкахDataExamplesMoexAlgo_ruиStrategyExamplesMoexAlgo_ru.Перед запуском примера, необходимо получить свой API ключ и номер торгового счета, и прописать их в файлеmy_config\Config_Finam.py:# content of my_config\Config_Finam.pyclassConfig:ClientIds=('<Торговый счет>',)# Торговые счётаAccessToken='<Токен>'# Торговый токен доступаКак получить номер торгового счета и API ключ:Открыть счет в "Финаме"https://open.finam.ru/registrationЗарегистрироваться в сервисе Comonhttps://www.comon.ru/В личном кабинете Comon получить токенhttps://www.comon.ru/my/trade-api/tokensСкопировать и вставить в файл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: за превосходные бесплатные библиотеки для live торговли реализующие подключения к брокерамВажноИсправление ошибок, доработка и развитие библиотеки осуществляется автором и сообществом!Пушьте ваши коммиты!Условия использованияБиблиотека backtrader_finam позволяющая делать интеграцию Backtrader и MOEX API - этоПрограммасозданная исключительно для удобства работы.При использованииПрограммыПользователь обязан соблюдать положения действующего законодательства Российской Федерации или своей страны.ИспользованиеПрограммыпредлагается по принципу «Как есть» («AS IS»). Никаких гарантий, как устных, так и письменных не прилагается и не предусматривается.Автор и сообщество не дает гарантии, что все ошибкиПрограммыбыли устранены, соответственно автор и сообщество не несет никакой ответственности запоследствия использованияПрограммы, включая, но, не ограничиваясь любым ущербом оборудованию, компьютерам, мобильным устройствам,программному обеспечению Пользователя вызванным или связанным с использованиемПрограммы, а также за любые финансовые потери,понесенные Пользователем в результате использованияПрограммы.Никто не ответственен за потерю данных, убытки, ущерб, включаю случайный или косвенный, упущенную выгоду, потерю доходов или любые другие потери,связанные с использованиемПрограммы.Программараспространяется на условиях лицензииMIT.История звездПожалуйста, поставьте Звезду 🌟 этому кодуStar HistoryPlease, put a Star 🌟 for this code==========================================================================backtrader_finamFinam API integration withBacktrader.With this integration you can do:Backtesting your strategy on historical data from FinamLaunch LIVE trading systems for automatic trading by broker FinamDownload live / historical data on stocks, futures and foreign instrumentsCreate and test your trading strategies using the library's featuresBacktraderThere is a lot of useful documentation on how to make strategies(see here).For API connection we are using librariesbacktrader_finam+Backtrader+FinamPy.InstallationThe simplest way:pipinstallbacktrader_finamorgitclonehttps://github.com/WISEPLAT/backtrader_finamorpipinstallgit+https://github.com/WISEPLAT/backtrader_finam.gitPlease use backtrader from my repository (as your can push your commits in it). Install it:pipinstallgit+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#472We have some dependencies, you need to install them:pipinstallpytzrequestsgrpcioprotobuftypes-protobufgoogleapis-common-protosnumpypandasbacktraderrequestswebsocketsmatplotlibImportant! Run this command in the root of your project via the terminal (to prevent error:ModuleNotFoundError: No module named 'FinamPy'):gitclonehttps://github.com/WISEPLAT/FinamPyto clone a library that allows you to work with the functionality of the Finam broker API.Getting startedTo make it easier to figure out how everything works, many examples have been made in the foldersDataExamplesMoexAlgoandStrategyExamplesMoexAlgo.Before running the example, you need to get your API key and trading account number, and register them in the filemy_config\Config_Finam.py:# content of my_config\Config_Finam.pyclassConfig:ClientIds=('<Trading account>',)# Trading accountsAccessToken='<Token>'# Trade Access TokenHow to get the trading account number and API key:Open an account in Finamhttps://open.finam.ru/registrationRegister in the Comon servicehttps://www.comon.ru/Get a token in your Comon personal accounthttps://www.comon.ru/my/trade-api/tokensCopy and paste to the filemy_config\Config_Finam.pyreceived"API key"and"Account number"Now you can run the examplesTheDataExamplesMoexAlgofolder contains the code of examples for working with exchange data via theMOEXAPI.01 - Symbol.py- trading strategy for obtaining historical and "live" data of one ticker for one timeframe02 - Symbol data to DF.py- export to csv file of historical data of one ticker for one timeframe03 - Symbols.py- trading strategy for multiple tickers on the same timeframe04 - Rollover.py- launch of a trading strategy based on gluing data from a file with historical data and the last downloaded history from the broker05 - 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/tickersTheStrategyExamplesMoexAlgofolder 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.pyThe strategy simply outputs OHLCV, excluding Tickers for which historical data could not be obtained.ThanksTeam of Backtrader: Very simple and cool library!Team ofFinamPy: for free excellent libraries for live trading by connection to brokersLicenseMITImportantError correction, revision and development of the library is carried out by the author and the community!Push your commits!Terms of UseThe backtrader_finam library, which allows you to integrate Backtrader and MOEX API, is theProgramcreated solely for the convenience of work.When using theProgram, the User is obliged to comply with the provisions of the current legislation of his country.Using theProgramare 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 theProgramhave been eliminated, respectively, the author and the community do not bear any responsibility forthe consequences of using theProgram, including, but not limited to, any damage to equipment, computers, mobile devices,User software caused by or related to the use of theProgram, as well as for any financial lossesincurred by the User as a result of using theProgram.No one is responsible for data loss, losses, damages, including accidental or indirect, lost profits, loss of revenue or any other lossesrelated to the use of theProgram.TheProgramis distributed under the terms of theMITlicense.