EIDiamond / invest-bot

Trading bot based on Tinkoff Invest gRPC API
Apache License 2.0
31 stars 22 forks source link

Помогите, пожалуйста переделать код так что бы он работал #6

Closed Liddel2019 closed 6 months ago

Liddel2019 commented 6 months ago

стратегия работает в тестах но отказывается работать в реальном боте. в чем может быть проблемма code.txt

Liddel2019 commented 6 months ago

E:\ai\venv\Scripts\python.exe E:\ai\main.py 2024-03-13 13:33:09.549082: I tensorflow/core/util/port.cc:113] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable TF_ENABLE_ONEDNN_OPTS=0. 2024-03-13 13:33:10.136436: I tensorflow/core/util/port.cc:113] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable TF_ENABLE_ONEDNN_OPTS=0. Traceback (most recent call last): File "E:\ai\main.py", line 75, in [StrategyFactory.new_factory(x.name, x) for x in config.trade_strategy_settings] File "E:\ai\main.py", line 75, in [StrategyFactory.new_factory(x.name, x) for x in config.trade_strategy_settings] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "E:\ai\trade_system\strategies\strategy_factory.py", line 20, in new_factory return AIModelStrategy(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ TypeError: Can't instantiate abstract class AIModelStrategy with abstract methods analyze_candles, update_lot_count, update_short_status

Process finished with exit code 1

EIDiamond commented 6 months ago

Привет, код базового класса стратегий отличается межу ботом и тестом.

В целом, в ошибке все сказано. TypeError: Can't instantiate abstract class AIModelStrategy with abstract methods analyze_candles, update_lot_count, update_short_status

А именно, в классе стратегии не хвататет этих методов: analyze_candles, update_lot_count, update_short_status Надо адаптировать код стратегии из теста, чтобы эти методы появились.

Liddel2019 commented 6 months ago

Хорошо попробую

Liddel2019 commented 6 months ago

Traceback (most recent call last): File "E:\ai\venv\Lib\site-packages\grpc\aio_call.py", line 441, in _consume_request_iterator async for request in request_iterator: File "E:\ai\venv\Lib\site-packages\tinkoff\invest\async_services.py", line 1078, in _convert_market_data_stream_request async for request in request_iterator: File "E:\ai\venv\Lib\site-packages\tinkoff\invest\market_data_stream\async_market_data_stream_manager.py", line 32, in _get_request_generator request = await asyncio.wait_for(self._requests.get(), timeout=1.0) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\python 3.11.8\Lib\asyncio\tasks.py", line 476, in wait_for await waiter asyncio.exceptions.CancelledError

Liddel2019 commented 6 months ago

code_new.txt

Liddel2019 commented 6 months ago

переписал код итеперь новая ошибка(

EIDiamond commented 6 months ago

Сложно точно сказать. ОшибкаTrading error: AttributeError("'list' object has no attribute 'time'") говорит от том, что у list попытались взять не существующий атрибут time По коду, первым надо посмотреть: 1) 97 строка if len(self.__recent_candles) == 0 or candle.time > self.__recent_candles[-1].time: candle - это list

2) 109 строка if candle.time == self.__recent_candles[-1].time: По логике тут candle из 106 строки for candle in self.__recent_candles: но явно пересечение по имени с параметром метода. Стоит переименовать переменную.

EIDiamond commented 6 months ago

пс. в логах спалил тикен бота и чата. Так как логи выложены в общий доступ, то стоит перевыпустить бота.