WISEPLAT / backtrader_moexalgo

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

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

Closed prog815 closed 7 months ago

prog815 commented 7 months ago

Образец с ошибкой доступен по адресу 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.

WISEPLAT commented 7 months ago

Привет) Круто придумал)) Как раз сейчас погружен там в изучении NN. Посмотрю, что можно сделать. P.S. https://www.kaggle.com/olegshpagin/

WISEPLAT commented 7 months ago

Fixed. https://github.com/WISEPLAT/backtrader_moexalgo/commit/16c8eed863c51dca9d6ac4a565921e6d00512b80 Please update to latest version of backtrader_moexalgo. https://www.kaggle.com/code/olegshpagin/test-backtrader-moexalgo-on-kaggle-algopack