Giter Site home page Giter Site logo

wiseplat / backtrader_moexalgo Goto Github PK

View Code? Open in Web Editor NEW
29.0 29.0 19.0 121 KB

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

License: MIT License

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

backtrader_moexalgo's People

Contributors

wiseplat avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

backtrader_moexalgo's Issues

вызывает ошибку при запуске на 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.

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

в файле 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

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.