OctoBot-Trading 2.4.123__tar.gz → 2.4.125__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/CHANGELOG.md +9 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125/OctoBot_Trading.egg-info}/PKG-INFO +2 -2
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/OctoBot_Trading.egg-info/requires.txt +1 -1
- {OctoBot-Trading-2.4.123/OctoBot_Trading.egg-info → OctoBot-Trading-2.4.125}/PKG-INFO +2 -2
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/README.md +1 -1
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/__init__.py +1 -1
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/errors.py +24 -11
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/funding/channel/funding_updater.py +3 -1
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/kline/channel/kline_updater.py +7 -2
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/ohlcv/channel/ohlcv_updater.py +7 -1
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/order_book/channel/order_book_updater.py +5 -2
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/prices/channel/prices_updater.py +3 -1
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/recent_trades/channel/recent_trade_updater.py +12 -2
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/ticker/channel/ticker_updater.py +8 -2
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchanges/abstract_exchange.py +8 -3
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchanges/connectors/ccxt/ccxt_connector.py +53 -23
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchanges/types/rest_exchange.py +61 -19
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchanges/types/websocket_exchange.py +7 -3
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/modes/abstract_trading_mode.py +31 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/modes/modes_util.py +61 -47
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/orders/channel/orders_updater.py +2 -1
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/portfolios/channel/balance_updater.py +11 -3
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/positions/channel/positions_updater.py +14 -3
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/trades/channel/trades_updater.py +3 -2
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/requirements.txt +1 -1
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/modes/test_modes_util.py +40 -5
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/LICENSE +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/MANIFEST.in +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/OctoBot_Trading.egg-info/SOURCES.txt +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/OctoBot_Trading.egg-info/dependency_links.txt +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/OctoBot_Trading.egg-info/not-zip-safe +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/OctoBot_Trading.egg-info/top_level.txt +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/api/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/api/channels.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/api/contracts.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/api/exchange.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/api/modes.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/api/orders.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/api/portfolio.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/api/positions.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/api/profitability.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/api/storage.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/api/symbol_data.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/api/trader.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/api/trades.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/constants.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/enums.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_channel.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/contracts/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/contracts/contract_factory.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/contracts/future_contract.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/contracts/margin_contract.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/exchange_symbol_data.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/exchange_symbols_data.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/funding/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/funding/channel/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/funding/channel/funding.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/funding/channel/funding_updater_simulator.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/funding/funding_manager.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/kline/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/kline/channel/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/kline/channel/kline.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/kline/channel/kline_updater_simulator.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/kline/kline_manager.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/ohlcv/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/ohlcv/candles_adapter.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/ohlcv/candles_manager.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/ohlcv/channel/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/ohlcv/channel/ohlcv.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/ohlcv/channel/ohlcv_updater_simulator.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/ohlcv/preloaded_candles_manager.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/order_book/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/order_book/channel/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/order_book/channel/order_book.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/order_book/channel/order_book_updater_simulator.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/order_book/order_book_manager.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/prices/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/prices/channel/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/prices/channel/price.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/prices/channel/prices_updater_simulator.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/prices/price_events_manager.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/prices/prices_manager.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/recent_trades/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/recent_trades/channel/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/recent_trades/channel/recent_trade.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/recent_trades/channel/recent_trade_updater_simulator.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/recent_trades/recent_trades_manager.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/ticker/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/ticker/channel/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/ticker/channel/ticker.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/ticker/channel/ticker_updater_simulator.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchange_data/ticker/ticker_manager.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchanges/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchanges/abstract_websocket_exchange.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchanges/adapters/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchanges/adapters/abstract_adapter.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchanges/config/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchanges/config/backtesting_exchange_config.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchanges/config/exchange_config_data.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchanges/config/proxy_config.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchanges/connectors/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchanges/connectors/ccxt/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchanges/connectors/ccxt/ccxt_adapter.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchanges/connectors/ccxt/ccxt_client_util.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchanges/connectors/ccxt/ccxt_clients_cache.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchanges/connectors/ccxt/ccxt_websocket_connector.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchanges/connectors/ccxt/constants.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchanges/connectors/ccxt/enums.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchanges/connectors/simulator/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchanges/connectors/simulator/ccxt_client_simulation.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchanges/connectors/simulator/exchange_simulator_adapter.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchanges/connectors/simulator/exchange_simulator_connector.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchanges/exchange_builder.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchanges/exchange_channels.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchanges/exchange_details.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchanges/exchange_factory.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchanges/exchange_manager.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchanges/exchange_websocket_factory.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchanges/exchanges.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchanges/implementations/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchanges/implementations/default_rest_exchange.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchanges/implementations/default_websocket_exchange.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchanges/implementations/exchange_simulator.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchanges/traders/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchanges/traders/trader.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchanges/traders/trader_simulator.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchanges/types/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchanges/util/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchanges/util/exchange_market_status_fixer.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchanges/util/exchange_util.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchanges/util/symbol_details.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchanges/util/websockets_util.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/modes/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/modes/channel/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/modes/channel/abstract_mode_consumer.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/modes/channel/abstract_mode_producer.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/modes/channel/mode.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/modes/mode_activity.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/modes/mode_config.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/modes/modes_factory.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/modes/script_keywords/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/modes/script_keywords/basic_keywords/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/modes/script_keywords/basic_keywords/account_balance.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/modes/script_keywords/basic_keywords/amount.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/modes/script_keywords/basic_keywords/configuration.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/modes/script_keywords/basic_keywords/position.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/modes/script_keywords/basic_keywords/price.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/modes/script_keywords/basic_keywords/run_persistence.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/modes/script_keywords/basic_keywords/trading_signals.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/modes/script_keywords/basic_keywords/user_inputs.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/modes/script_keywords/context_management.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/modes/script_keywords/dsl/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/modes/script_keywords/dsl/quantity.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/modes/script_keywords/dsl/values.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/modes/scripted_trading_mode/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/modes/scripted_trading_mode/abstract_scripted_trading_mode.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/octobot_channel_consumer.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/exchange_personal_data.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/orders/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/orders/channel/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/orders/channel/orders.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/orders/channel/orders_updater_simulator.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/orders/decimal_order_adapter.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/orders/groups/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/orders/groups/balanced_take_profit_and_stop_order_group.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/orders/groups/group_util.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/orders/groups/one_cancels_the_other_order_group.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/orders/order.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/orders/order_adapter.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/orders/order_factory.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/orders/order_group.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/orders/order_state.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/orders/order_util.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/orders/orders_manager.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/orders/orders_storage_operations.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/orders/states/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/orders/states/cancel_order_state.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/orders/states/close_order_state.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/orders/states/fill_order_state.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/orders/states/open_order_state.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/orders/states/order_state_factory.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/orders/states/pending_creation_chained_order_state.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/orders/states/pending_creation_order_state.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/orders/types/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/orders/types/limit/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/orders/types/limit/buy_limit_order.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/orders/types/limit/limit_order.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/orders/types/limit/sell_limit_order.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/orders/types/limit/stop_loss_limit_order.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/orders/types/limit/stop_loss_order.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/orders/types/limit/take_profit_limit_order.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/orders/types/limit/take_profit_order.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/orders/types/market/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/orders/types/market/buy_market_order.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/orders/types/market/market_order.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/orders/types/market/sell_market_order.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/orders/types/trailing/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/orders/types/trailing/trailing_stop_limit_order.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/orders/types/trailing/trailing_stop_order.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/orders/types/unknown_order.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/orders/types/unsupported_order.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/portfolios/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/portfolios/asset.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/portfolios/assets/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/portfolios/assets/future_asset.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/portfolios/assets/margin_asset.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/portfolios/assets/spot_asset.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/portfolios/channel/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/portfolios/channel/balance.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/portfolios/channel/balance_updater_simulator.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/portfolios/history/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/portfolios/history/historical_asset_value.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/portfolios/history/historical_asset_value_factory.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/portfolios/history/historical_portfolio_value_manager.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/portfolios/portfolio.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/portfolios/portfolio_factory.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/portfolios/portfolio_manager.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/portfolios/portfolio_profitability.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/portfolios/portfolio_util.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/portfolios/portfolio_value_holder.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/portfolios/sub_portfolio.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/portfolios/types/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/portfolios/types/future_portfolio.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/portfolios/types/margin_portfolio.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/portfolios/types/spot_portfolio.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/portfolios/value_converter.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/positions/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/positions/channel/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/positions/channel/positions.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/positions/channel/positions_updater_simulator.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/positions/position.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/positions/position_factory.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/positions/position_state.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/positions/position_util.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/positions/positions_manager.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/positions/states/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/positions/states/active_position_state.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/positions/states/idle_position_state.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/positions/states/liquidate_position_state.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/positions/states/position_state_factory.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/positions/types/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/positions/types/inverse_position.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/positions/types/linear_position.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/state.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/trades/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/trades/channel/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/trades/channel/trades.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/trades/trade.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/trades/trade_factory.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/trades/trade_pnl.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/trades/trades_manager.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/trades/trades_util.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/transactions/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/transactions/transaction.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/transactions/transaction_factory.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/transactions/transactions_manager.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/transactions/types/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/transactions/types/blockchain_transaction.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/transactions/types/fee_transaction.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/transactions/types/realised_pnl_transaction.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/personal_data/transactions/types/transfer_transaction.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/signals/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/signals/channel/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/signals/channel/remote_trading_signal.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/signals/channel/remote_trading_signal_channel_factory.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/signals/channel/signal_producer.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/signals/signal_creation.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/signals/trading_signal_bundle_builder.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/signals/util.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/storage/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/storage/abstract_storage.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/storage/candles_storage.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/storage/orders_storage.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/storage/portfolio_storage.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/storage/storage_manager.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/storage/trades_storage.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/storage/transactions_storage.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/storage/util.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/supervisors/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/supervisors/abstract_portfolio_supervisor.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/supervisors/abstract_supervisor.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/util/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/util/config_util.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/util/initializable.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/util/initialization_util.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/util/simulator_updater_utils.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/util/test_tools/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/util/test_tools/exchange_data.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/util/test_tools/exchanges_test_tools.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/util/test_tools/spot_rest_exchange_test_tools.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/util/test_tools/websocket_test_tools.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/setup.cfg +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/setup.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/api/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/api/test_channels.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/api/test_exchange.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/api/test_modes.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/api/test_orders.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/api/test_portfolio.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/api/test_profitability.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/api/test_symbol_data.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/api/test_trader.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/api/test_trades.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/cli/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/exchange_data/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/exchange_data/contracts/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/exchange_data/contracts/test_future_contract.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/exchange_data/contracts/test_margin_contract.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/exchange_data/funding/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/exchange_data/funding/test_funding_manager.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/exchange_data/kline/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/exchange_data/kline/test_kline_manager.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/exchange_data/ohlcv/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/exchange_data/ohlcv/test_candles_adapter.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/exchange_data/ohlcv/test_candles_manager.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/exchange_data/order_book/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/exchange_data/order_book/test_order_book_manager.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/exchange_data/prices/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/exchange_data/prices/test_price_events_manager.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/exchange_data/prices/test_prices_manager.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/exchange_data/recent_trades/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/exchange_data/recent_trades/test_recent_trades_manager.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/exchange_data/test_exchange_symbols_data.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/exchange_data/ticker/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/exchange_data/ticker/test_ticker_manager.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/exchanges/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/exchanges/connectors/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/exchanges/connectors/ccxt/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/exchanges/connectors/ccxt/mock_exchanges_data.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/exchanges/connectors/ccxt/test_ccxt_connector.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/exchanges/implementations/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/exchanges/implementations/test_default_rest_exchange.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/exchanges/implementations/test_default_websocket_exchange.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/exchanges/test_abstract_exchange.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/exchanges/test_abstract_websocket_exchange.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/exchanges/test_exchange_builder.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/exchanges/test_exchange_config_data.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/exchanges/test_exchange_factory.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/exchanges/test_exchange_manager.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/exchanges/test_exchange_simulator.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/exchanges/test_exchanges.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/exchanges/traders/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/exchanges/traders/test_trader.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/exchanges/types/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/exchanges/types/test_websocket_exchange.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/exchanges/util/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/exchanges/util/test_exchange_market_status_fixer.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/exchanges/util/test_exchange_util.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/modes/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/modes/script_keywords/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/modes/script_keywords/basic_keywords/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/modes/script_keywords/basic_keywords/test_account_balance.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/modes/script_keywords/basic_keywords/test_amount.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/modes/script_keywords/basic_keywords/test_position.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/modes/script_keywords/basic_keywords/test_price.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/modes/script_keywords/dsl/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/modes/script_keywords/dsl/test_quantity.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/modes/test_abstract_mode_consumer.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/modes/test_abstract_trading_mode.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/orders/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/orders/groups/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/orders/groups/test_balanced_take_profit_and_stop_order_group.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/orders/groups/test_group_util.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/orders/groups/test_one_cancels_the_other_order_group.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/orders/states/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/orders/states/test_cancel_order_state.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/orders/states/test_close_order_state.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/orders/states/test_fill_order_state.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/orders/states/test_open_order_state.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/orders/states/test_order_state.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/orders/states/test_order_state_factory.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/orders/states/test_pending_creation_chained_order_state.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/orders/states/test_pending_creation_order_state.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/orders/test_decimal_order_adapter.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/orders/test_double_filled_order.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/orders/test_order.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/orders/test_order_adapter.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/orders/test_order_factory.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/orders/test_order_util.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/orders/test_orders_manager.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/orders/test_orders_storage_operations.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/orders/types/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/orders/types/limit/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/orders/types/limit/test_buy_limit_order.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/orders/types/limit/test_limit_order.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/orders/types/limit/test_sell_limit_order.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/orders/types/limit/test_stop_loss_limit_order.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/orders/types/limit/test_stop_loss_order.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/orders/types/limit/test_take_profit_limit_order.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/orders/types/limit/test_take_profit_order.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/orders/types/market/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/orders/types/market/test_buy_market_order.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/orders/types/market/test_sell_market_order.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/orders/types/test_unknown_order.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/orders/types/trailing/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/orders/types/trailing/test_trailing_stop_limit_order.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/orders/types/trailing/test_trailing_stop_order.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/portfolios/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/portfolios/assets/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/portfolios/assets/test_future_asset.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/portfolios/assets/test_margin_asset.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/portfolios/assets/test_spot_asset.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/portfolios/history/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/portfolios/history/test_historical_asset_value_factory.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/portfolios/history/test_historical_portfolio_value_manager.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/portfolios/test_asset.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/portfolios/test_portfolio.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/portfolios/test_portfolio_manager.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/portfolios/test_portfolio_profitability.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/portfolios/test_portfolio_value_holder.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/portfolios/test_value_converter.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/portfolios/types/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/portfolios/types/test_future_portfolio.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/portfolios/types/test_margin_portfolio.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/portfolios/types/test_spot_portfolio.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/positions/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/positions/channel/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/positions/states/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/positions/test_position.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/positions/test_position_factory.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/positions/test_positions_manager.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/positions/types/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/positions/types/test_inverse_position.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/positions/types/test_linear_position.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/trades/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/trades/test_trade_factory.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/trades/test_trade_manager.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/trades/test_trade_pnl.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/trades/test_trade_util.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/transactions/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/transactions/test_transaction_factory.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/personal_data/transactions/test_transactions_manager.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/signals/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/signals/test_trading_signal_bundle_builder.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/signals/test_util.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/test_utils/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/test_utils/order_util.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/test_utils/random_numbers.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/util/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests/util/test_config_util.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests_additional/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests_additional/real_exchanges/__init__.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests_additional/real_exchanges/real_exchange_tester.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests_additional/real_exchanges/real_futures_exchange_tester.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests_additional/real_exchanges/test_ascendex.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests_additional/real_exchanges/test_binance.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests_additional/real_exchanges/test_binance_futures.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests_additional/real_exchanges/test_bingx.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests_additional/real_exchanges/test_bitfinex.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests_additional/real_exchanges/test_bitget.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests_additional/real_exchanges/test_bithumb.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests_additional/real_exchanges/test_bitmart.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests_additional/real_exchanges/test_bitso.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests_additional/real_exchanges/test_bitstamp.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests_additional/real_exchanges/test_bybit.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests_additional/real_exchanges/test_bybit_futures.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests_additional/real_exchanges/test_coinbase.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests_additional/real_exchanges/test_coinex.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests_additional/real_exchanges/test_cryptocom.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests_additional/real_exchanges/test_gateio.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests_additional/real_exchanges/test_hitbtc.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests_additional/real_exchanges/test_hollaex.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests_additional/real_exchanges/test_htx.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests_additional/real_exchanges/test_kraken.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests_additional/real_exchanges/test_kucoin.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests_additional/real_exchanges/test_kucoin_futures.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests_additional/real_exchanges/test_mexc.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests_additional/real_exchanges/test_ndax.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests_additional/real_exchanges/test_okcoin.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests_additional/real_exchanges/test_okx.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests_additional/real_exchanges/test_okx_futures.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests_additional/real_exchanges/test_phemex.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests_additional/real_exchanges/test_poloniex.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests_additional/real_exchanges/test_upbit.py +0 -0
- {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/tests_additional/real_exchanges/test_wavesexchange.py +0 -0
@@ -4,6 +4,15 @@ All notable changes to this project will be documented in this file.
|
|
4
4
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
5
5
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
6
6
|
|
7
|
+
## [2.4.125] - 2023-11-23
|
8
|
+
### Added
|
9
|
+
[TradingMode] historical config
|
10
|
+
|
11
|
+
## [2.4.124] - 2024-11-17
|
12
|
+
### Updated
|
13
|
+
[Exchanges] Handle limit order in converter
|
14
|
+
[Exchanges] Handle more ccxt missed orders
|
15
|
+
|
7
16
|
## [2.4.123] - 2024-11-16
|
8
17
|
### Updated
|
9
18
|
[Requirements] Bump cachetools and make version more flexible
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: OctoBot-Trading
|
3
|
-
Version: 2.4.
|
3
|
+
Version: 2.4.125
|
4
4
|
Summary: OctoBot project trading package
|
5
5
|
Home-page: https://github.com/Drakkar-Software/OctoBot-Trading
|
6
6
|
Author: Drakkar-Software
|
@@ -16,7 +16,7 @@ Classifier: Operating System :: POSIX
|
|
16
16
|
Requires-Python: >=3.8
|
17
17
|
License-File: LICENSE
|
18
18
|
|
19
|
-
# OctoBot-Trading [2.4.
|
19
|
+
# OctoBot-Trading [2.4.125](https://github.com/Drakkar-Software/OctoBot-Trading/blob/master/CHANGELOG.md)
|
20
20
|
[](https://app.codacy.com/gh/Drakkar-Software/OctoBot-Trading?utm_source=github.com&utm_medium=referral&utm_content=Drakkar-Software/OctoBot-Trading&utm_campaign=Badge_Grade_Dashboard)
|
21
21
|
[](https://pypi.python.org/pypi/OctoBot-Trading/)
|
22
22
|
[](https://coveralls.io/github/Drakkar-Software/OctoBot-Trading?branch=master)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: OctoBot-Trading
|
3
|
-
Version: 2.4.
|
3
|
+
Version: 2.4.125
|
4
4
|
Summary: OctoBot project trading package
|
5
5
|
Home-page: https://github.com/Drakkar-Software/OctoBot-Trading
|
6
6
|
Author: Drakkar-Software
|
@@ -16,7 +16,7 @@ Classifier: Operating System :: POSIX
|
|
16
16
|
Requires-Python: >=3.8
|
17
17
|
License-File: LICENSE
|
18
18
|
|
19
|
-
# OctoBot-Trading [2.4.
|
19
|
+
# OctoBot-Trading [2.4.125](https://github.com/Drakkar-Software/OctoBot-Trading/blob/master/CHANGELOG.md)
|
20
20
|
[](https://app.codacy.com/gh/Drakkar-Software/OctoBot-Trading?utm_source=github.com&utm_medium=referral&utm_content=Drakkar-Software/OctoBot-Trading&utm_campaign=Badge_Grade_Dashboard)
|
21
21
|
[](https://pypi.python.org/pypi/OctoBot-Trading/)
|
22
22
|
[](https://coveralls.io/github/Drakkar-Software/OctoBot-Trading?branch=master)
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# OctoBot-Trading [2.4.
|
1
|
+
# OctoBot-Trading [2.4.125](https://github.com/Drakkar-Software/OctoBot-Trading/blob/master/CHANGELOG.md)
|
2
2
|
[](https://app.codacy.com/gh/Drakkar-Software/OctoBot-Trading?utm_source=github.com&utm_medium=referral&utm_content=Drakkar-Software/OctoBot-Trading&utm_campaign=Badge_Grade_Dashboard)
|
3
3
|
[](https://pypi.python.org/pypi/OctoBot-Trading/)
|
4
4
|
[](https://coveralls.io/github/Drakkar-Software/OctoBot-Trading?branch=master)
|
@@ -15,13 +15,19 @@
|
|
15
15
|
# License along with this library.
|
16
16
|
|
17
17
|
|
18
|
-
class
|
18
|
+
class OctoBotExchangeError(Exception):
|
19
|
+
"""
|
20
|
+
Parent class of local exceptions raised when communicating with exchanges
|
21
|
+
"""
|
22
|
+
|
23
|
+
|
24
|
+
class MissingFunds(OctoBotExchangeError):
|
19
25
|
"""
|
20
26
|
Raised upon placing an order while having insufficient funds
|
21
27
|
"""
|
22
28
|
|
23
29
|
|
24
|
-
class MissingMinimalExchangeTradeVolume(
|
30
|
+
class MissingMinimalExchangeTradeVolume(OctoBotExchangeError):
|
25
31
|
"""
|
26
32
|
Raised when a new order is impossible to create due to exchange minimal funds restrictions
|
27
33
|
"""
|
@@ -33,19 +39,19 @@ class TradingModeIncompatibility(Exception):
|
|
33
39
|
"""
|
34
40
|
|
35
41
|
|
36
|
-
class OrderCreationError(
|
42
|
+
class OrderCreationError(OctoBotExchangeError):
|
37
43
|
"""
|
38
44
|
Raised upon a failed order creation
|
39
45
|
"""
|
40
46
|
|
41
47
|
|
42
|
-
class OrderEditError(
|
48
|
+
class OrderEditError(OctoBotExchangeError):
|
43
49
|
"""
|
44
50
|
Raised upon a failed order edition
|
45
51
|
"""
|
46
52
|
|
47
53
|
|
48
|
-
class OrderCancelError(
|
54
|
+
class OrderCancelError(OctoBotExchangeError):
|
49
55
|
"""
|
50
56
|
Raised upon a failed order cancel
|
51
57
|
"""
|
@@ -93,37 +99,44 @@ class NotSupported(Exception):
|
|
93
99
|
"""
|
94
100
|
|
95
101
|
|
96
|
-
class FailedRequest(
|
102
|
+
class FailedRequest(OctoBotExchangeError):
|
97
103
|
"""
|
98
104
|
Raised upon a failed request on an exchange API
|
99
105
|
"""
|
100
106
|
|
101
107
|
|
102
|
-
class RateLimitExceeded(
|
108
|
+
class RateLimitExceeded(OctoBotExchangeError):
|
103
109
|
"""
|
104
110
|
Raised upon an exchange API rate limit error
|
105
111
|
"""
|
106
112
|
|
107
113
|
|
108
|
-
class UnavailableOrderTypeForMarketError(
|
114
|
+
class UnavailableOrderTypeForMarketError(OctoBotExchangeError):
|
109
115
|
"""
|
110
116
|
Raised when an exchange refuses to create a given type of order that should normally be supported
|
111
117
|
"""
|
112
118
|
|
113
119
|
|
114
|
-
class AuthenticationError(
|
120
|
+
class AuthenticationError(OctoBotExchangeError):
|
115
121
|
"""
|
116
122
|
Raised when an exchange failed to authenticate
|
117
123
|
"""
|
118
124
|
|
119
125
|
|
120
|
-
class
|
126
|
+
class ExchangeInternalSyncError(OctoBotExchangeError):
|
127
|
+
"""
|
128
|
+
Raised when an exchange is returning an error due to its internal sync process
|
129
|
+
(ex: when an order is filled but portfolio has not yet been updated)
|
130
|
+
"""
|
131
|
+
|
132
|
+
|
133
|
+
class ExchangeCompliancyError(OctoBotExchangeError):
|
121
134
|
"""
|
122
135
|
Raised when an exchange failed to execute the given request because of compliance rules for the current user account
|
123
136
|
"""
|
124
137
|
|
125
138
|
|
126
|
-
class ExchangeAccountSymbolPermissionError(
|
139
|
+
class ExchangeAccountSymbolPermissionError(OctoBotExchangeError):
|
127
140
|
"""
|
128
141
|
Raised when an exchange failed to execute the given request because of allowed traded symbols
|
129
142
|
on the current user account
|
@@ -19,6 +19,7 @@ import typing
|
|
19
19
|
|
20
20
|
import octobot_commons.async_job as async_job
|
21
21
|
import octobot_commons.constants as common_constants
|
22
|
+
import octobot_commons.html_util as html_util
|
22
23
|
|
23
24
|
import octobot_trading.exchange_data.funding.channel.funding as funding_channel
|
24
25
|
import octobot_trading.exchanges.exchange_websocket_factory as exchange_websocket_factory
|
@@ -109,7 +110,8 @@ class FundingUpdater(funding_channel.FundingProducer):
|
|
109
110
|
self.logger.exception(
|
110
111
|
e,
|
111
112
|
True,
|
112
|
-
f"Fail to update funding rate on {self.channel.exchange_manager.exchange.name} for {symbol} :
|
113
|
+
f"Fail to update funding rate on {self.channel.exchange_manager.exchange.name} for {symbol} : "
|
114
|
+
f"{html_util.get_html_summary_if_relevant(e)}"
|
113
115
|
)
|
114
116
|
return None
|
115
117
|
|
@@ -17,8 +17,9 @@
|
|
17
17
|
import asyncio
|
18
18
|
import time
|
19
19
|
|
20
|
-
import
|
20
|
+
import octobot_commons.html_util as html_util
|
21
21
|
|
22
|
+
import octobot_trading.errors as errors
|
22
23
|
import octobot_trading.constants as constants
|
23
24
|
import octobot_trading.exchange_data.kline.channel.kline as kline_channel
|
24
25
|
import octobot_trading.enums as enums
|
@@ -82,7 +83,11 @@ class KlineUpdater(kline_channel.KlineProducer):
|
|
82
83
|
self.logger.warning(f"{self.channel.exchange_manager.exchange_name} is not supporting updates")
|
83
84
|
await self.pause()
|
84
85
|
except Exception as e:
|
85
|
-
self.logger.exception(
|
86
|
+
self.logger.exception(
|
87
|
+
e,
|
88
|
+
True,
|
89
|
+
f"Failed to update kline data in {time_frame} : {html_util.get_html_summary_if_relevant(e)}"
|
90
|
+
)
|
86
91
|
|
87
92
|
async def resume(self) -> None:
|
88
93
|
await super().resume()
|
@@ -20,6 +20,7 @@ import decimal
|
|
20
20
|
|
21
21
|
import octobot_commons.constants as common_constants
|
22
22
|
import octobot_commons.enums as common_enums
|
23
|
+
import octobot_commons.html_util as html_util
|
23
24
|
|
24
25
|
import octobot_trading.errors as errors
|
25
26
|
import octobot_trading.constants as constants
|
@@ -244,7 +245,12 @@ class OHLCVUpdater(ohlcv_channel.OHLCVProducer):
|
|
244
245
|
f"{self.channel.exchange_manager.exchange_name} is not supporting updates")
|
245
246
|
await self.pause()
|
246
247
|
except Exception as e:
|
247
|
-
self.logger.exception(
|
248
|
+
self.logger.exception(
|
249
|
+
e,
|
250
|
+
True,
|
251
|
+
f"Failed to update ohlcv data for {pair} on {time_frame} : "
|
252
|
+
f"{html_util.get_html_summary_if_relevant(e)}"
|
253
|
+
)
|
248
254
|
await asyncio.sleep(self.OHLCV_ON_ERROR_TIME)
|
249
255
|
|
250
256
|
async def _refresh_current_candle(self, time_frame, pair, candles, last_candle,
|
@@ -16,8 +16,9 @@
|
|
16
16
|
# License along with this library.
|
17
17
|
import asyncio
|
18
18
|
|
19
|
-
import
|
19
|
+
import octobot_commons.html_util as html_util
|
20
20
|
|
21
|
+
import octobot_trading.errors as errors
|
21
22
|
import octobot_trading.exchange_channel as exchanges_channel
|
22
23
|
import octobot_trading.constants as constants
|
23
24
|
import octobot_trading.exchange_data.order_book.channel.order_book as order_book_channel
|
@@ -67,7 +68,9 @@ class OrderBookUpdater(order_book_channel.OrderBookProducer):
|
|
67
68
|
self.logger.warning(f"{self.channel.exchange_manager.exchange_name} is not supporting updates")
|
68
69
|
await self.pause()
|
69
70
|
except Exception as e:
|
70
|
-
self.logger.exception(
|
71
|
+
self.logger.exception(
|
72
|
+
e, True, f"Fail to update order book : {html_util.get_html_summary_if_relevant(e)}"
|
73
|
+
)
|
71
74
|
|
72
75
|
async def parse_order_book_ticker(self, pair, asks, bids):
|
73
76
|
"""
|
@@ -16,6 +16,8 @@
|
|
16
16
|
import asyncio
|
17
17
|
import decimal
|
18
18
|
|
19
|
+
import octobot_commons.html_util as html_util
|
20
|
+
|
19
21
|
import octobot_trading.errors as errors
|
20
22
|
import octobot_trading.exchange_channel as exchanges_channel
|
21
23
|
import octobot_trading.constants as constants
|
@@ -135,7 +137,7 @@ class MarkPriceUpdater(prices_channel.MarkPriceProducer):
|
|
135
137
|
except (errors.NotSupported, NotImplementedError) as ne:
|
136
138
|
raise ne
|
137
139
|
except Exception as e:
|
138
|
-
self.logger.exception(e, True, f"Fail to update funding rate : {e}")
|
140
|
+
self.logger.exception(e, True, f"Fail to update funding rate : {html_util.get_html_summary_if_relevant(e)}")
|
139
141
|
return None
|
140
142
|
|
141
143
|
async def push_funding_rate(self, symbol, funding_rate):
|
@@ -16,6 +16,8 @@
|
|
16
16
|
# License along with this library.
|
17
17
|
import asyncio
|
18
18
|
|
19
|
+
import octobot_commons.html_util as html_util
|
20
|
+
|
19
21
|
import octobot_trading.errors as errors
|
20
22
|
import octobot_trading.exchange_data.recent_trades.channel.recent_trade as recent_trade_channel
|
21
23
|
import octobot_trading.constants as constants
|
@@ -40,7 +42,11 @@ class RecentTradeUpdater(recent_trade_channel.RecentTradeProducer):
|
|
40
42
|
await self.push(pair, recent_trades)
|
41
43
|
await asyncio.sleep(self.refresh_time)
|
42
44
|
except Exception as e:
|
43
|
-
self.logger.exception(
|
45
|
+
self.logger.exception(
|
46
|
+
e,
|
47
|
+
True,
|
48
|
+
f"Fail to initialize recent trades : {html_util.get_html_summary_if_relevant(e)}"
|
49
|
+
)
|
44
50
|
|
45
51
|
async def start(self):
|
46
52
|
refresh_threshold = self.channel.exchange_manager.get_rest_pairs_refresh_threshold()
|
@@ -76,7 +82,11 @@ class RecentTradeUpdater(recent_trade_channel.RecentTradeProducer):
|
|
76
82
|
self.logger.warning(f"{self.channel.exchange_manager.exchange_name} is not supporting updates")
|
77
83
|
await self.pause()
|
78
84
|
except Exception as e:
|
79
|
-
self.logger.exception(
|
85
|
+
self.logger.exception(
|
86
|
+
e,
|
87
|
+
True,
|
88
|
+
f"Fail to update recent trades : {html_util.get_html_summary_if_relevant(e)}"
|
89
|
+
)
|
80
90
|
|
81
91
|
async def resume(self) -> None:
|
82
92
|
await super().resume()
|
@@ -17,6 +17,8 @@
|
|
17
17
|
import asyncio
|
18
18
|
import contextlib
|
19
19
|
|
20
|
+
import octobot_commons.html_util as html_util
|
21
|
+
|
20
22
|
import octobot_trading.errors as errors
|
21
23
|
import octobot_trading.constants as constants
|
22
24
|
import octobot_trading.exchange_data.ticker.channel.ticker as ticker_channel
|
@@ -60,13 +62,17 @@ class TickerUpdater(ticker_channel.TickerProducer):
|
|
60
62
|
self.logger.warning(f"{self.channel.exchange_manager.exchange_name} is not supporting updates")
|
61
63
|
await self.pause()
|
62
64
|
except Exception as e:
|
63
|
-
self.logger.exception(
|
65
|
+
self.logger.exception(
|
66
|
+
e,
|
67
|
+
True,
|
68
|
+
f"Fail to update ticker : {html_util.get_html_summary_if_relevant(e)}"
|
69
|
+
)
|
64
70
|
|
65
71
|
async def _fetch_ticker(self, pair):
|
66
72
|
try:
|
67
73
|
await self.fetch_and_push_pair(pair)
|
68
74
|
except errors.FailedRequest as e:
|
69
|
-
self.logger.warning(
|
75
|
+
self.logger.warning(html_util.get_html_summary_if_relevant(e))
|
70
76
|
# avoid spamming on disconnected situation
|
71
77
|
await asyncio.sleep(constants.DEFAULT_FAILED_REQUEST_RETRY_TIME)
|
72
78
|
|
{OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.125}/octobot_trading/exchanges/abstract_exchange.py
RENAMED
@@ -24,6 +24,7 @@ import octobot_commons.enums as common_enums
|
|
24
24
|
import octobot_commons.logging as logging
|
25
25
|
import octobot_commons.timestamp_util as timestamp_util
|
26
26
|
import octobot_commons.tentacles_management as tentacles_management
|
27
|
+
import octobot_commons.html_util as html_util
|
27
28
|
|
28
29
|
import octobot_trading.constants
|
29
30
|
import octobot_trading.enums as enums
|
@@ -513,7 +514,8 @@ class AbstractExchange(tentacles_management.AbstractTentacle):
|
|
513
514
|
latest_error = err
|
514
515
|
latest_request_url = self.get_latest_request_url()
|
515
516
|
self.logger.debug(
|
516
|
-
f"Request retrier failed for {request_func.__name__}({args} {kwargs})
|
517
|
+
f"Request retrier failed for {request_func.__name__}({args} {kwargs}) "
|
518
|
+
f"(attempt {attempt}) ({html_util.get_html_summary_if_relevant(err)})"
|
517
519
|
)
|
518
520
|
if time.time() - last_request_time < minimal_interval:
|
519
521
|
await asyncio.sleep(minimal_interval)
|
@@ -722,11 +724,14 @@ class AbstractExchange(tentacles_management.AbstractTentacle):
|
|
722
724
|
def log_order_creation_error(self, error, order_type, symbol, quantity, price, stop_price):
|
723
725
|
order_desc = f"order_type: {order_type}, symbol: {symbol}, quantity: {str(quantity)}, price: {str(price)}," \
|
724
726
|
f" stop_price: {str(stop_price)}"
|
725
|
-
self.logger.error(
|
727
|
+
self.logger.error(
|
728
|
+
f"Failed to create order : {error.__class__.__name__} {html_util.get_html_summary_if_relevant(error)}: "
|
729
|
+
f"({order_desc})"
|
730
|
+
)
|
726
731
|
|
727
732
|
def handle_token_error(self, error):
|
728
733
|
self.logger.error(f"Exchange configuration is invalid : please check your configuration ! "
|
729
|
-
f"({error.__class__.__name__}: {error})")
|
734
|
+
f"({error.__class__.__name__}: {html_util.get_html_summary_if_relevant(error)})")
|
730
735
|
|
731
736
|
@contextlib.contextmanager
|
732
737
|
def creating_order(
|
@@ -23,6 +23,7 @@ import inspect
|
|
23
23
|
import octobot_commons.enums
|
24
24
|
import octobot_commons.logging
|
25
25
|
import octobot_commons.symbols as commons_symbols
|
26
|
+
import octobot_commons.html_util as html_util
|
26
27
|
|
27
28
|
import octobot_trading
|
28
29
|
import octobot_trading.constants as constants
|
@@ -50,7 +51,7 @@ def _retried_failed_network_request(func):
|
|
50
51
|
return resp
|
51
52
|
except ccxt.RequestTimeout as err:
|
52
53
|
octobot_commons.logging.get_logger(f"_retried_failed_network_request").warning(
|
53
|
-
f"{func.__name__} raised {err} ({err.__class__.__name__}) "
|
54
|
+
f"{func.__name__} raised {html_util.get_html_summary_if_relevant(err)} ({err.__class__.__name__}) "
|
54
55
|
f"[attempts {i+1}/{constants.FAILED_NETWORK_REQUEST_RETRY_ATTEMPTS}]."
|
55
56
|
)
|
56
57
|
if i < constants.FAILED_NETWORK_REQUEST_RETRY_ATTEMPTS - 1:
|
@@ -162,7 +163,8 @@ class CCXTConnector(abstract_exchange.AbstractExchange):
|
|
162
163
|
ccxt_client_util.set_markets_cache(self.client)
|
163
164
|
except ccxt.ExchangeNotAvailable as err:
|
164
165
|
raise octobot_trading.errors.FailedRequest(
|
165
|
-
f"Failed to load_symbol_markets: {err.__class__.__name__}
|
166
|
+
f"Failed to load_symbol_markets: {err.__class__.__name__} "
|
167
|
+
f"on {html_util.get_html_summary_if_relevant(err)}"
|
166
168
|
) from err
|
167
169
|
except ccxt.ExchangeError:
|
168
170
|
# includes AuthenticationError but also auth error not identified as such by ccxt
|
@@ -269,7 +271,7 @@ class CCXTConnector(abstract_exchange.AbstractExchange):
|
|
269
271
|
except ccxt.NotSupported:
|
270
272
|
raise octobot_trading.errors.NotSupported
|
271
273
|
except Exception as e:
|
272
|
-
self.logger.error(f"Fail to get market status of {symbol}: {e}")
|
274
|
+
self.logger.error(f"Fail to get market status of {symbol}: {html_util.get_html_summary_if_relevant(e)}")
|
273
275
|
return {}
|
274
276
|
|
275
277
|
@ccxt_client_util.converted_ccxt_common_errors
|
@@ -301,7 +303,8 @@ class CCXTConnector(abstract_exchange.AbstractExchange):
|
|
301
303
|
raise octobot_trading.errors.NotSupported
|
302
304
|
except ccxt.BaseError as e:
|
303
305
|
raise octobot_trading.errors.FailedRequest(
|
304
|
-
f"Failed to get_symbol_prices of {symbol} on {time_frame.value}: {e.__class__.__name__}
|
306
|
+
f"Failed to get_symbol_prices of {symbol} on {time_frame.value}: {e.__class__.__name__} "
|
307
|
+
f"{html_util.get_html_summary_if_relevant(e)}"
|
305
308
|
) from e
|
306
309
|
|
307
310
|
@ccxt_client_util.converted_ccxt_common_errors
|
@@ -319,7 +322,9 @@ class CCXTConnector(abstract_exchange.AbstractExchange):
|
|
319
322
|
except ccxt.NotSupported:
|
320
323
|
raise octobot_trading.errors.NotSupported
|
321
324
|
except ccxt.BaseError as e:
|
322
|
-
raise octobot_trading.errors.FailedRequest(
|
325
|
+
raise octobot_trading.errors.FailedRequest(
|
326
|
+
f"Failed to get_kline_price {html_util.get_html_summary_if_relevant(e)}"
|
327
|
+
)
|
323
328
|
|
324
329
|
# return up to ten bidasks on each side of the order book stack
|
325
330
|
@ccxt_client_util.converted_ccxt_common_errors
|
@@ -332,7 +337,9 @@ class CCXTConnector(abstract_exchange.AbstractExchange):
|
|
332
337
|
except ccxt.NotSupported:
|
333
338
|
raise octobot_trading.errors.NotSupported
|
334
339
|
except ccxt.BaseError as e:
|
335
|
-
raise octobot_trading.errors.FailedRequest(
|
340
|
+
raise octobot_trading.errors.FailedRequest(
|
341
|
+
f"Failed to get_order_book {html_util.get_html_summary_if_relevant(e)}"
|
342
|
+
)
|
336
343
|
|
337
344
|
# return bidasks on each side of the order book stack for each given symbol
|
338
345
|
@ccxt_client_util.converted_ccxt_common_errors
|
@@ -354,7 +361,9 @@ class CCXTConnector(abstract_exchange.AbstractExchange):
|
|
354
361
|
except ccxt.NotSupported:
|
355
362
|
raise octobot_trading.errors.NotSupported
|
356
363
|
except ccxt.BaseError as e:
|
357
|
-
raise octobot_trading.errors.FailedRequest(
|
364
|
+
raise octobot_trading.errors.FailedRequest(
|
365
|
+
f"Failed to get_order_books {html_util.get_html_summary_if_relevant(e)}"
|
366
|
+
)
|
358
367
|
|
359
368
|
@ccxt_client_util.converted_ccxt_common_errors
|
360
369
|
async def get_recent_trades(self, symbol: str, limit: int = 50, **kwargs: dict) -> typing.Optional[list]:
|
@@ -366,7 +375,9 @@ class CCXTConnector(abstract_exchange.AbstractExchange):
|
|
366
375
|
except ccxt.NotSupported:
|
367
376
|
raise octobot_trading.errors.NotSupported
|
368
377
|
except ccxt.BaseError as e:
|
369
|
-
raise octobot_trading.errors.FailedRequest(
|
378
|
+
raise octobot_trading.errors.FailedRequest(
|
379
|
+
f"Failed to get_recent_trades {html_util.get_html_summary_if_relevant(e)}"
|
380
|
+
)
|
370
381
|
|
371
382
|
# A price ticker contains statistics for a particular market/symbol for some period of time in recent past (24h)
|
372
383
|
@ccxt_client_util.converted_ccxt_common_errors
|
@@ -379,7 +390,9 @@ class CCXTConnector(abstract_exchange.AbstractExchange):
|
|
379
390
|
except ccxt.NotSupported:
|
380
391
|
raise octobot_trading.errors.NotSupported
|
381
392
|
except ccxt.BaseError as e:
|
382
|
-
raise octobot_trading.errors.FailedRequest(
|
393
|
+
raise octobot_trading.errors.FailedRequest(
|
394
|
+
f"Failed to get_price_ticker {html_util.get_html_summary_if_relevant(e)}"
|
395
|
+
)
|
383
396
|
|
384
397
|
@ccxt_client_util.converted_ccxt_common_errors
|
385
398
|
async def get_all_currencies_price_ticker(self, **kwargs: dict) -> typing.Optional[dict[str, dict]]:
|
@@ -394,7 +407,9 @@ class CCXTConnector(abstract_exchange.AbstractExchange):
|
|
394
407
|
except ccxt.NotSupported:
|
395
408
|
raise octobot_trading.errors.NotSupported
|
396
409
|
except ccxt.BaseError as e:
|
397
|
-
raise octobot_trading.errors.FailedRequest(
|
410
|
+
raise octobot_trading.errors.FailedRequest(
|
411
|
+
f"Failed to get_all_currencies_price_ticker {html_util.get_html_summary_if_relevant(e)}"
|
412
|
+
)
|
398
413
|
|
399
414
|
# ORDERS
|
400
415
|
@ccxt_client_util.converted_ccxt_common_errors
|
@@ -413,14 +428,16 @@ class CCXTConnector(abstract_exchange.AbstractExchange):
|
|
413
428
|
pass
|
414
429
|
except ccxt.NotSupported as e:
|
415
430
|
# some exchanges are throwing this error when an order is cancelled (ex: coinbase pro)
|
416
|
-
raise octobot_trading.errors.NotSupported(
|
431
|
+
raise octobot_trading.errors.NotSupported(
|
432
|
+
html_util.get_html_summary_if_relevant(e)
|
433
|
+
) from e
|
417
434
|
except ccxt.ExchangeError as e:
|
418
435
|
if self.exchange_manager.exchange.is_order_not_found_error(e):
|
419
436
|
# when an OrderNotFound error should have been raised but is not for some reason
|
420
437
|
pass
|
421
438
|
else:
|
422
439
|
# something went wrong and ccxt did not expect it
|
423
|
-
raise octobot_trading.errors.FailedRequest(e) from e
|
440
|
+
raise octobot_trading.errors.FailedRequest(html_util.get_html_summary_if_relevant(e)) from e
|
424
441
|
else:
|
425
442
|
# When fetch_order is not supported, uses get_open_orders or get_closed_orders and extract order id
|
426
443
|
for method in (self.get_open_orders, self.get_closed_orders):
|
@@ -625,7 +642,10 @@ class CCXTConnector(abstract_exchange.AbstractExchange):
|
|
625
642
|
raise octobot_trading.errors.NotSupported(e) from e
|
626
643
|
except Exception as e:
|
627
644
|
self.logger.exception(
|
628
|
-
e,
|
645
|
+
e,
|
646
|
+
True,
|
647
|
+
f"Unexpected error when cancelling all {symbol} orders | "
|
648
|
+
f"{html_util.get_html_summary_if_relevant(e)} ({e.__class__.__name__})"
|
629
649
|
)
|
630
650
|
raise e
|
631
651
|
|
@@ -660,12 +680,20 @@ class CCXTConnector(abstract_exchange.AbstractExchange):
|
|
660
680
|
f"Trying to cancel order with id {exchange_order_id} but order was not found. It might have "
|
661
681
|
f"already been cancelled or be filled."
|
662
682
|
)
|
663
|
-
raise octobot_trading.errors.OrderNotFoundOnCancelError(
|
683
|
+
raise octobot_trading.errors.OrderNotFoundOnCancelError(
|
684
|
+
html_util.get_html_summary_if_relevant(e)
|
685
|
+
) from e
|
664
686
|
except (ccxt.NotSupported, octobot_trading.errors.NotSupported) as e:
|
665
|
-
raise octobot_trading.errors.NotSupported(
|
687
|
+
raise octobot_trading.errors.NotSupported(
|
688
|
+
html_util.get_html_summary_if_relevant(e)
|
689
|
+
) from e
|
666
690
|
except Exception as e:
|
667
|
-
self.logger.exception(
|
668
|
-
|
691
|
+
self.logger.exception(
|
692
|
+
e,
|
693
|
+
True,
|
694
|
+
f"Unexpected error when cancelling order with exchange id: "
|
695
|
+
f"{exchange_order_id} failed to cancel | {html_util.get_html_summary_if_relevant(e)} "
|
696
|
+
f"({e.__class__.__name__})")
|
669
697
|
raise e
|
670
698
|
|
671
699
|
@ccxt_client_util.converted_ccxt_common_errors
|
@@ -786,7 +814,7 @@ class CCXTConnector(abstract_exchange.AbstractExchange):
|
|
786
814
|
except ccxt.NotSupported:
|
787
815
|
raise octobot_trading.errors.NotSupported
|
788
816
|
except Exception as e:
|
789
|
-
self.logger.error(f"Fees data for {symbol} was not found ({e})")
|
817
|
+
self.logger.error(f"Fees data for {symbol} was not found ({html_util.get_html_summary_if_relevant(e)})")
|
790
818
|
return {
|
791
819
|
enums.ExchangeConstantsMarketPropertyColumns.TAKER.value: constants.CONFIG_DEFAULT_FEES,
|
792
820
|
enums.ExchangeConstantsMarketPropertyColumns.MAKER.value: constants.CONFIG_DEFAULT_FEES,
|
@@ -929,7 +957,7 @@ class CCXTConnector(abstract_exchange.AbstractExchange):
|
|
929
957
|
|
930
958
|
def log_ddos_error(self, error):
|
931
959
|
self.logger.error(
|
932
|
-
f"DDoSProtection triggered [{error} ({error.__class__.__name__})]. "
|
960
|
+
f"DDoSProtection triggered [{html_util.get_html_summary_if_relevant(error)} ({error.__class__.__name__})]. "
|
933
961
|
f"Last response headers: {self.client.last_response_headers} "
|
934
962
|
f"Last json response: {self.client.last_json_response}"
|
935
963
|
)
|
@@ -950,14 +978,16 @@ class CCXTConnector(abstract_exchange.AbstractExchange):
|
|
950
978
|
# use 2 index to get the caller of the context manager
|
951
979
|
caller_function_name = inspect.stack()[2].function
|
952
980
|
exchanges.log_time_sync_error(self.logger, self.name, err, caller_function_name)
|
953
|
-
raise octobot_trading.errors.FailedRequest(err) from err
|
981
|
+
raise octobot_trading.errors.FailedRequest(html_util.get_html_summary_if_relevant(err)) from err
|
954
982
|
except ccxt.RequestTimeout as e:
|
955
|
-
raise octobot_trading.errors.FailedRequest(
|
983
|
+
raise octobot_trading.errors.FailedRequest(
|
984
|
+
f"Request timeout: {html_util.get_html_summary_if_relevant(e)}"
|
985
|
+
) from e
|
956
986
|
except ccxt.AuthenticationError as err:
|
957
|
-
raise octobot_trading.errors.AuthenticationError(err) from err
|
987
|
+
raise octobot_trading.errors.AuthenticationError(html_util.get_html_summary_if_relevant(err)) from err
|
958
988
|
except ccxt.ExchangeError as err:
|
959
989
|
if self.exchange_manager.exchange.is_authentication_error(err):
|
960
990
|
# ensure this is not an unhandled authentication error
|
961
|
-
raise octobot_trading.errors.AuthenticationError(err) from err
|
991
|
+
raise octobot_trading.errors.AuthenticationError(html_util.get_html_summary_if_relevant(err)) from err
|
962
992
|
# otherwise just forward exception
|
963
993
|
raise
|