Python 3.14.6
OS: macOS 26.6
- При запуске содержимого из урока FinLabPy/BackTrader/QuickStart/02 - Hello FinLabPy Broker.py выбрасывается ошибка
Traceback (most recent call last):
Traceback (most recent call last):
File "/usr/local/Cellar/python@3.14/3.14.6/Frameworks/Python.framework/Versions/3.14/lib/python3.14/threading.py", line 1082, in _bootstrap_inner
self._context.run(self.run)
~~~~~~~~~~~~~~~~~^^^^^^^^^^
File "/usr/local/Cellar/python@3.14/3.14.6/Frameworks/Python.framework/Versions/3.14/lib/python3.14/threading.py", line 1082, in _bootstrap_inner
self._context.run(self.run)
~~~~~~~~~~~~~~~~~^^^^^^^^^^
File "/usr/local/Cellar/python@3.14/3.14.6/Frameworks/Python.framework/Versions/3.14/lib/python3.14/threading.py", line 1024, in run
self._target(*self._args, **self._kwargs)
~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/Cellar/python@3.14/3.14.6/Frameworks/Python.framework/Versions/3.14/lib/python3.14/threading.py", line 1024, in run
self._target(*self._args, **self._kwargs)
~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: TinvestPy.subscriptions_order_state_handler() missing 1 required positional argument: 'account_ids'
TypeError: TinvestPy.subscriptions_trades_handler() missing 1 required positional argument: 'account_ids'
Причина ошибки кроется в том, что методы TinvestPy.subscriptions_trades_handler и TinvestPy.subscriptions_order_state_handler из библиотеки-коннектора TinvestPy требуют в качестве обязательного аргумента список account_ids, в то время как в FinLabPy/Brokers/Tinvest.py в методе subscribe_transactions аргументы не передаются (строки 227-228)
def subscribe_transactions(self):
Thread(target=self.provider.subscriptions_trades_handler, name='SubscriptionsTradesThread').start() # Создаем и запускаем поток обработки подписок на сделки
Thread(target=self.provider.subscriptions_order_state_handler, name='SubscriptionsOrderStateThread').start() # Создаем и запускаем поток обработки подписок на заявки
- Если в конструкторе класса Tinvest добавить список id счетов
self.account_ids = [account.id for account in self.provider.accounts] и передать в Thread
def subscribe_transactions(self):
Thread(
target=self.provider.subscriptions_trades_handler,
args=(self.account_ids,),
name="SubscriptionsTradesThread",
).start() # Создаем и запускаем поток обработки подписок на сделки
Thread(
target=self.provider.subscriptions_order_state_handler,
args=(self.account_ids,),
name="SubscriptionsOrderStateThread",
).start() # Создаем и запускаем поток обработки подписок на заявки
то 1-я ошибка уходит, но метод _on_order выбрасывает NotImplementedError (строка 300) так как у order_state атрибут order_type приходит ORDER_TYPE_UNSPECIFIED, что соответственно не имеет обработки
Python 3.14.6
OS: macOS 26.6
Причина ошибки кроется в том, что методы
TinvestPy.subscriptions_trades_handlerиTinvestPy.subscriptions_order_state_handlerиз библиотеки-коннектора TinvestPy требуют в качестве обязательного аргумента список account_ids, в то время как в FinLabPy/Brokers/Tinvest.py в методеsubscribe_transactionsаргументы не передаются (строки 227-228)self.account_ids = [account.id for account in self.provider.accounts]и передать в Threadто 1-я ошибка уходит, но метод
_on_orderвыбрасываетNotImplementedError(строка 300) так как у order_state атрибут order_type приходит ORDER_TYPE_UNSPECIFIED, что соответственно не имеет обработки