Giter Site home page Giter Site logo

wiseplat / backtrader_moexalgo Goto Github PK

View Code? Open in Web Editor NEW
31.0 1.0 19.0 121 KB

MOEX API AlgoPack integration with Backtrader. На данных с биржи MOEX теперь можно создавать полноценные торговые стратегии. Проводить Backtesting и делать Live торговлю через брокеров Алор, Финам и тех, у кого есть торговый терминал Quik.

License: MIT License

Python 100.00%
algopack alor backtest backtesting backtesting-trading-strategies backtrader finam finance historical-data moex tinkoff trading-algorithms trading-bot trading-robot trading-strategies download-financial-data historical-price live-strategy algotrading algo-trading

backtrader_moexalgo's Issues

Ошибка при выгрузке супер-свечей

в файле DataExamplesMoexAlgo_ru/01 - Symbol.py при получении с moex супер-свечей, например, в примере 9, скрипт возвращает ошибку
Traceback (most recent call last):
File "/tmp/backtrader_moexalgo/DataExamplesMoexAlgo_ru/01 - Symbol.py", line 75, in
cerebro.run() # Запуск торговой системы
File "/tmp/backtrader_moexalgo/.venv/lib/python3.10/site-packages/backtrader/cerebro.py", line 1132, in run
runstrat = self.runstrategies(iterstrat)
File "/tmp/backtrader_moexalgo/.venv/lib/python3.10/site-packages/backtrader/cerebro.py", line 1215, in runstrategies
data._start()
File "/tmp/backtrader_moexalgo/.venv/lib/python3.10/site-packages/backtrader/feed.py", line 203, in _start
self.start()
File "/tmp/backtrader_moexalgo/backtrader_moexalgo/moexalgo_feed.py", line 251, in start
klines, get_live_bars_from = self.get_super_candles(from_date=self.from_date,
File "/tmp/backtrader_moexalgo/backtrader_moexalgo/moexalgo_feed.py", line 432, in get_super_candles
if len(rows_list):
TypeError: object of type 'generator' has no len()

проблема в том, что в .venv/lib/python3.10/site-packages/moexalgo/shares.py (строки 51-54) проверка на интрактивный режим и при запуске обычного скрипта возвращается генератор, а не DataFrame

TypeError: Stock.tradestats() got an unexpected keyword argument 'date'

Добрый вечер.
Пробую запустить пример 01 - Symbol.py.
но получаю ошибку:

C:\Users\tanat\PycharmProjects\moex_candles.venv\Scripts\python.exe "C:\Users\tanat\PycharmProjects\moex_candles\01 - Symbol.py"
Авторизуемся на Московской Бирже
Traceback (most recent call last):
File "C:\Users\tanat\PycharmProjects\moex_candles\01 - Symbol.py", line 74, in
cerebro.run() # Запуск торговой системы
^^^^^^^^^^^^^
File "C:\Users\tanat\PycharmProjects\moex_candles.venv\Lib\site-packages\backtrader\cerebro.py", line 1132, in run
runstrat = self.runstrategies(iterstrat)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\tanat\PycharmProjects\moex_candles.venv\Lib\site-packages\backtrader\cerebro.py", line 1215, in runstrategies
data._start()
File "C:\Users\tanat\PycharmProjects\moex_candles.venv\Lib\site-packages\backtrader\feed.py", line 203, in _start
self.start()
File "C:\Users\tanat\PycharmProjects\moex_candles.venv\Lib\site-packages\backtrader_moexalgo\moexalgo_feed.py", line 251, in start
klines, get_live_bars_from = self.get_super_candles(from_date=self.from_date,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\tanat\PycharmProjects\moex_candles.venv\Lib\site-packages\backtrader_moexalgo\moexalgo_feed.py", line 416, in get_super_candles
iterator = ticker.tradestats(date=last_date, till_date=till_date, limit=self.limit)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: Stock.tradestats() got an unexpected keyword argument 'date'

Подскажите, как избавиться от ошибки.

вызывает ошибку при запуске на Kaggle

Образец с ошибкой доступен по адресу https://www.kaggle.com/eavprog/test-backtrader-moexalgo

Была предпринята попытка запуска из примера. Получил на Kaggle следующую ошибку.

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
Cell In[8], line 40
     37 cerebro.addanalyzer(btanalyzers.SharpeRatio, _name='SR')
     38 cerebro.addanalyzer(btanalyzers.TradeAnalyzer, _name='TradeAnalyzer')
---> 40 results = cerebro.run()  # Launching a trading system
     41 cerebro.plot()  # Drawing a graph
     43 thestrat = results[0]

File /opt/conda/lib/python3.10/site-packages/backtrader/cerebro.py:1132, in Cerebro.run(self, **kwargs)
   1128 if not self._dooptimize or self.p.maxcpus == 1:
   1129     # If no optimmization is wished ... or 1 core is to be used
   1130     # let's skip process "spawning"
   1131     for iterstrat in iterstrats:
-> 1132         runstrat = self.runstrategies(iterstrat)
   1133         self.runstrats.append(runstrat)
   1134         if self._dooptimize:

File /opt/conda/lib/python3.10/site-packages/backtrader/cerebro.py:1215, in Cerebro.runstrategies(self, iterstrat, predata)
   1213 if self._exactbars < 1:  # datas can be full length
   1214     data.extend(size=self.params.lookahead)
-> 1215 data._start()
   1216 if self._dopreload:
   1217     data.preload()

File /opt/conda/lib/python3.10/site-packages/backtrader/feed.py:203, in AbstractDataBase._start(self)
    202 def _start(self):
--> 203     self.start()
    205     if not self._started:
    206         self._start_finish()

File /opt/conda/lib/python3.10/site-packages/backtrader_moexalgo/moexalgo_feed.py:244, in MoexAlgoData.start(self)
    241 self.put_notification(self.DELAYED)  # Отправляем уведомление об отправке исторических (не новых) баров
    243 if not self.super_candles:  # если нужны обычные свечи
--> 244     klines, get_live_bars_from = self.get_candles(from_date=self.from_date,
    245                                                   symbol=self.symbol,
    246                                                   interval=self.interval,
    247                                                   skip_first_date=self.skip_first_date,
    248                                                   skip_last_date=self.skip_last_date,
    249                                                   four_price_doji=self.four_price_doji)  # , is_test=True
    250 else:  # если нужны Super свечи
    251     klines, get_live_bars_from = self.get_super_candles(from_date=self.from_date,
    252                                                         symbol=self.symbol,
    253                                                         interval=self.interval,
    254                                                         metric=self.metric)  # , is_test=True

File /opt/conda/lib/python3.10/site-packages/backtrader_moexalgo/moexalgo_feed.py:308, in MoexAlgoData.get_candles(self, from_date, symbol, interval, skip_first_date, skip_last_date, four_price_doji, is_test)
    306 rows_list = []  # Будем собирать строки в список
    307 for it in iterator:  # Итерируем генератор
--> 308     rows_list.append(it.__dict__)  # Класс превращаем в словарь, добавляем строку в список
    309 stats = pd.DataFrame(rows_list)  # Из списка создаем pandas DataFrame
    310 stats.rename(columns={'begin': 'datetime'}, inplace=True)  # Переименовываем колонку даты и времени

AttributeError: 'str' object has no attribute '__dict__'

Буду благодарен, если появится возможность запускать вашу библиотеку в Kaggle.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.