OctoBot-Trading 2.4.154__tar.gz → 2.4.156__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.154 → OctoBot-Trading-2.4.156}/CHANGELOG.md +14 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156/OctoBot_Trading.egg-info}/PKG-INFO +2 -2
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/OctoBot_Trading.egg-info/requires.txt +1 -0
- {OctoBot-Trading-2.4.154/OctoBot_Trading.egg-info → OctoBot-Trading-2.4.156}/PKG-INFO +2 -2
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/README.md +1 -1
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/__init__.py +1 -1
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchanges/config/proxy_config.py +2 -1
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchanges/connectors/ccxt/ccxt_client_util.py +40 -10
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchanges/connectors/ccxt/ccxt_connector.py +3 -2
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchanges/traders/trader.py +50 -30
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/modes/channel/abstract_mode_producer.py +14 -1
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/modes/script_keywords/basic_keywords/amount.py +1 -1
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/orders/groups/balanced_take_profit_and_stop_order_group.py +11 -7
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/orders/order.py +1 -1
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/orders/order_util.py +1 -1
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/trades/trades_manager.py +26 -6
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/requirements.txt +1 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/exchanges/connectors/ccxt/test_ccxt_connector.py +8 -1
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/LICENSE +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/MANIFEST.in +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/OctoBot_Trading.egg-info/SOURCES.txt +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/OctoBot_Trading.egg-info/dependency_links.txt +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/OctoBot_Trading.egg-info/not-zip-safe +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/OctoBot_Trading.egg-info/top_level.txt +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/api/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/api/channels.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/api/contracts.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/api/exchange.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/api/modes.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/api/orders.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/api/portfolio.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/api/positions.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/api/profitability.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/api/storage.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/api/symbol_data.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/api/trader.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/api/trades.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/constants.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/enums.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/errors.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_channel.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/contracts/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/contracts/contract_factory.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/contracts/future_contract.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/contracts/margin_contract.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/exchange_symbol_data.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/exchange_symbols_data.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/funding/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/funding/channel/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/funding/channel/funding.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/funding/channel/funding_updater.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/funding/channel/funding_updater_simulator.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/funding/funding_manager.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/kline/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/kline/channel/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/kline/channel/kline.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/kline/channel/kline_updater.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/kline/channel/kline_updater_simulator.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/kline/kline_manager.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/ohlcv/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/ohlcv/candles_adapter.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/ohlcv/candles_manager.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/ohlcv/channel/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/ohlcv/channel/ohlcv.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/ohlcv/channel/ohlcv_updater.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/ohlcv/channel/ohlcv_updater_simulator.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/ohlcv/preloaded_candles_manager.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/order_book/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/order_book/channel/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/order_book/channel/order_book.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/order_book/channel/order_book_updater.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/order_book/channel/order_book_updater_simulator.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/order_book/order_book_manager.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/prices/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/prices/channel/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/prices/channel/price.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/prices/channel/prices_updater.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/prices/channel/prices_updater_simulator.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/prices/price_events_manager.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/prices/prices_manager.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/recent_trades/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/recent_trades/channel/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/recent_trades/channel/recent_trade.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/recent_trades/channel/recent_trade_updater.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/recent_trades/channel/recent_trade_updater_simulator.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/recent_trades/recent_trades_manager.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/ticker/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/ticker/channel/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/ticker/channel/ticker.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/ticker/channel/ticker_updater.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/ticker/channel/ticker_updater_simulator.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/ticker/ticker_manager.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchanges/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchanges/abstract_exchange.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchanges/abstract_websocket_exchange.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchanges/adapters/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchanges/adapters/abstract_adapter.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchanges/config/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchanges/config/backtesting_exchange_config.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchanges/config/exchange_config_data.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchanges/connectors/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchanges/connectors/ccxt/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchanges/connectors/ccxt/ccxt_adapter.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchanges/connectors/ccxt/ccxt_clients_cache.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchanges/connectors/ccxt/ccxt_websocket_connector.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchanges/connectors/ccxt/constants.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchanges/connectors/ccxt/enums.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchanges/connectors/simulator/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchanges/connectors/simulator/ccxt_client_simulation.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchanges/connectors/simulator/exchange_simulator_adapter.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchanges/connectors/simulator/exchange_simulator_connector.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchanges/exchange_builder.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchanges/exchange_channels.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchanges/exchange_details.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchanges/exchange_factory.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchanges/exchange_manager.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchanges/exchange_websocket_factory.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchanges/exchanges.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchanges/implementations/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchanges/implementations/default_rest_exchange.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchanges/implementations/default_websocket_exchange.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchanges/implementations/exchange_simulator.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchanges/traders/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchanges/traders/trader_simulator.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchanges/types/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchanges/types/rest_exchange.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchanges/types/websocket_exchange.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchanges/util/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchanges/util/exchange_market_status_fixer.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchanges/util/exchange_util.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchanges/util/symbol_details.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchanges/util/websockets_util.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/modes/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/modes/abstract_trading_mode.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/modes/channel/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/modes/channel/abstract_mode_consumer.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/modes/channel/mode.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/modes/mode_activity.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/modes/mode_config.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/modes/modes_factory.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/modes/modes_util.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/modes/script_keywords/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/modes/script_keywords/basic_keywords/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/modes/script_keywords/basic_keywords/account_balance.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/modes/script_keywords/basic_keywords/configuration.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/modes/script_keywords/basic_keywords/position.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/modes/script_keywords/basic_keywords/price.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/modes/script_keywords/basic_keywords/run_persistence.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/modes/script_keywords/basic_keywords/trading_signals.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/modes/script_keywords/basic_keywords/user_inputs.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/modes/script_keywords/context_management.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/modes/script_keywords/dsl/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/modes/script_keywords/dsl/quantity.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/modes/script_keywords/dsl/values.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/modes/scripted_trading_mode/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/modes/scripted_trading_mode/abstract_scripted_trading_mode.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/octobot_channel_consumer.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/exchange_personal_data.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/orders/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/orders/channel/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/orders/channel/orders.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/orders/channel/orders_updater.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/orders/channel/orders_updater_simulator.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/orders/decimal_order_adapter.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/orders/groups/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/orders/groups/group_util.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/orders/groups/one_cancels_the_other_order_group.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/orders/order_adapter.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/orders/order_factory.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/orders/order_group.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/orders/order_state.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/orders/orders_manager.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/orders/orders_storage_operations.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/orders/states/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/orders/states/cancel_order_state.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/orders/states/close_order_state.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/orders/states/fill_order_state.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/orders/states/open_order_state.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/orders/states/order_state_factory.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/orders/states/pending_creation_chained_order_state.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/orders/states/pending_creation_order_state.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/orders/types/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/orders/types/limit/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/orders/types/limit/buy_limit_order.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/orders/types/limit/limit_order.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/orders/types/limit/sell_limit_order.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/orders/types/limit/stop_loss_limit_order.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/orders/types/limit/stop_loss_order.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/orders/types/limit/take_profit_limit_order.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/orders/types/limit/take_profit_order.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/orders/types/market/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/orders/types/market/buy_market_order.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/orders/types/market/market_order.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/orders/types/market/sell_market_order.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/orders/types/trailing/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/orders/types/trailing/trailing_stop_limit_order.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/orders/types/trailing/trailing_stop_order.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/orders/types/unknown_order.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/orders/types/unsupported_order.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/portfolios/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/portfolios/asset.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/portfolios/assets/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/portfolios/assets/future_asset.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/portfolios/assets/margin_asset.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/portfolios/assets/spot_asset.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/portfolios/channel/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/portfolios/channel/balance.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/portfolios/channel/balance_updater.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/portfolios/channel/balance_updater_simulator.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/portfolios/history/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/portfolios/history/historical_asset_value.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/portfolios/history/historical_asset_value_factory.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/portfolios/history/historical_portfolio_value_manager.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/portfolios/portfolio.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/portfolios/portfolio_factory.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/portfolios/portfolio_manager.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/portfolios/portfolio_profitability.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/portfolios/portfolio_util.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/portfolios/portfolio_value_holder.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/portfolios/sub_portfolio.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/portfolios/types/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/portfolios/types/future_portfolio.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/portfolios/types/margin_portfolio.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/portfolios/types/spot_portfolio.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/portfolios/value_converter.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/positions/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/positions/channel/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/positions/channel/positions.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/positions/channel/positions_updater.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/positions/channel/positions_updater_simulator.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/positions/position.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/positions/position_factory.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/positions/position_state.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/positions/position_util.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/positions/positions_manager.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/positions/states/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/positions/states/active_position_state.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/positions/states/idle_position_state.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/positions/states/liquidate_position_state.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/positions/states/position_state_factory.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/positions/types/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/positions/types/inverse_position.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/positions/types/linear_position.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/state.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/trades/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/trades/channel/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/trades/channel/trades.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/trades/channel/trades_updater.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/trades/trade.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/trades/trade_factory.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/trades/trade_pnl.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/trades/trades_util.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/transactions/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/transactions/transaction.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/transactions/transaction_factory.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/transactions/transactions_manager.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/transactions/types/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/transactions/types/blockchain_transaction.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/transactions/types/fee_transaction.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/transactions/types/realised_pnl_transaction.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/transactions/types/transfer_transaction.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/signals/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/signals/channel/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/signals/channel/remote_trading_signal.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/signals/channel/remote_trading_signal_channel_factory.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/signals/channel/signal_producer.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/signals/signal_creation.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/signals/trading_signal_bundle_builder.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/signals/util.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/storage/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/storage/abstract_storage.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/storage/candles_storage.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/storage/orders_storage.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/storage/portfolio_storage.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/storage/storage_manager.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/storage/trades_storage.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/storage/transactions_storage.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/storage/util.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/supervisors/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/supervisors/abstract_portfolio_supervisor.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/supervisors/abstract_supervisor.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/util/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/util/config_util.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/util/initializable.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/util/initialization_util.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/util/simulator_updater_utils.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/util/test_tools/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/util/test_tools/exchange_data.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/util/test_tools/exchanges_test_tools.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/util/test_tools/spot_rest_exchange_test_tools.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/util/test_tools/websocket_test_tools.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/setup.cfg +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/setup.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/api/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/api/test_channels.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/api/test_exchange.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/api/test_modes.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/api/test_orders.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/api/test_portfolio.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/api/test_profitability.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/api/test_symbol_data.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/api/test_trader.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/api/test_trades.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/cli/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/exchange_data/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/exchange_data/contracts/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/exchange_data/contracts/test_future_contract.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/exchange_data/contracts/test_margin_contract.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/exchange_data/funding/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/exchange_data/funding/test_funding_manager.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/exchange_data/kline/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/exchange_data/kline/test_kline_manager.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/exchange_data/ohlcv/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/exchange_data/ohlcv/test_candles_adapter.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/exchange_data/ohlcv/test_candles_manager.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/exchange_data/order_book/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/exchange_data/order_book/test_order_book_manager.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/exchange_data/prices/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/exchange_data/prices/test_price_events_manager.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/exchange_data/prices/test_prices_manager.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/exchange_data/recent_trades/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/exchange_data/recent_trades/test_recent_trades_manager.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/exchange_data/test_exchange_symbols_data.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/exchange_data/ticker/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/exchange_data/ticker/test_ticker_manager.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/exchanges/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/exchanges/connectors/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/exchanges/connectors/ccxt/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/exchanges/connectors/ccxt/mock_exchanges_data.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/exchanges/implementations/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/exchanges/implementations/test_default_rest_exchange.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/exchanges/implementations/test_default_websocket_exchange.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/exchanges/test_abstract_exchange.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/exchanges/test_abstract_websocket_exchange.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/exchanges/test_exchange_builder.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/exchanges/test_exchange_config_data.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/exchanges/test_exchange_factory.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/exchanges/test_exchange_manager.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/exchanges/test_exchange_simulator.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/exchanges/test_exchanges.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/exchanges/traders/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/exchanges/traders/test_trader.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/exchanges/types/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/exchanges/types/test_websocket_exchange.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/exchanges/util/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/exchanges/util/test_exchange_market_status_fixer.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/exchanges/util/test_exchange_util.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/modes/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/modes/script_keywords/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/modes/script_keywords/basic_keywords/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/modes/script_keywords/basic_keywords/test_account_balance.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/modes/script_keywords/basic_keywords/test_amount.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/modes/script_keywords/basic_keywords/test_position.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/modes/script_keywords/basic_keywords/test_price.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/modes/script_keywords/dsl/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/modes/script_keywords/dsl/test_quantity.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/modes/test_abstract_mode_consumer.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/modes/test_abstract_trading_mode.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/modes/test_modes_util.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/orders/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/orders/groups/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/orders/groups/test_balanced_take_profit_and_stop_order_group.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/orders/groups/test_group_util.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/orders/groups/test_one_cancels_the_other_order_group.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/orders/states/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/orders/states/test_cancel_order_state.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/orders/states/test_close_order_state.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/orders/states/test_fill_order_state.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/orders/states/test_open_order_state.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/orders/states/test_order_state.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/orders/states/test_order_state_factory.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/orders/states/test_pending_creation_chained_order_state.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/orders/states/test_pending_creation_order_state.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/orders/test_decimal_order_adapter.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/orders/test_double_filled_order.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/orders/test_order.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/orders/test_order_adapter.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/orders/test_order_factory.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/orders/test_order_util.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/orders/test_orders_manager.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/orders/test_orders_storage_operations.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/orders/types/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/orders/types/limit/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/orders/types/limit/test_buy_limit_order.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/orders/types/limit/test_limit_order.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/orders/types/limit/test_sell_limit_order.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/orders/types/limit/test_stop_loss_limit_order.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/orders/types/limit/test_stop_loss_order.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/orders/types/limit/test_take_profit_limit_order.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/orders/types/limit/test_take_profit_order.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/orders/types/market/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/orders/types/market/test_buy_market_order.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/orders/types/market/test_sell_market_order.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/orders/types/test_unknown_order.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/orders/types/trailing/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/orders/types/trailing/test_trailing_stop_limit_order.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/orders/types/trailing/test_trailing_stop_order.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/portfolios/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/portfolios/assets/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/portfolios/assets/test_future_asset.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/portfolios/assets/test_margin_asset.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/portfolios/assets/test_spot_asset.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/portfolios/history/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/portfolios/history/test_historical_asset_value_factory.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/portfolios/history/test_historical_portfolio_value_manager.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/portfolios/test_asset.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/portfolios/test_portfolio.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/portfolios/test_portfolio_manager.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/portfolios/test_portfolio_profitability.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/portfolios/test_portfolio_value_holder.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/portfolios/test_value_converter.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/portfolios/types/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/portfolios/types/test_future_portfolio.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/portfolios/types/test_margin_portfolio.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/portfolios/types/test_spot_portfolio.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/positions/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/positions/channel/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/positions/states/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/positions/test_position.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/positions/test_position_factory.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/positions/test_positions_manager.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/positions/types/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/positions/types/test_inverse_position.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/positions/types/test_linear_position.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/trades/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/trades/test_trade_factory.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/trades/test_trade_manager.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/trades/test_trade_pnl.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/trades/test_trade_util.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/transactions/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/transactions/test_transaction_factory.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/personal_data/transactions/test_transactions_manager.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/signals/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/signals/test_trading_signal_bundle_builder.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/signals/test_util.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/test_utils/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/test_utils/order_util.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/test_utils/random_numbers.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/util/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests/util/test_config_util.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests_additional/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests_additional/real_exchanges/__init__.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests_additional/real_exchanges/real_exchange_tester.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests_additional/real_exchanges/real_futures_exchange_tester.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests_additional/real_exchanges/test_ascendex.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests_additional/real_exchanges/test_binance.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests_additional/real_exchanges/test_binance_futures.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests_additional/real_exchanges/test_bingx.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests_additional/real_exchanges/test_bitfinex.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests_additional/real_exchanges/test_bitget.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests_additional/real_exchanges/test_bithumb.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests_additional/real_exchanges/test_bitmart.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests_additional/real_exchanges/test_bitmex.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests_additional/real_exchanges/test_bitso.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests_additional/real_exchanges/test_bitstamp.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests_additional/real_exchanges/test_bybit.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests_additional/real_exchanges/test_bybit_futures.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests_additional/real_exchanges/test_coinbase.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests_additional/real_exchanges/test_coinex.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests_additional/real_exchanges/test_cryptocom.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests_additional/real_exchanges/test_gateio.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests_additional/real_exchanges/test_hitbtc.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests_additional/real_exchanges/test_hollaex.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests_additional/real_exchanges/test_htx.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests_additional/real_exchanges/test_kraken.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests_additional/real_exchanges/test_kucoin.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests_additional/real_exchanges/test_kucoin_futures.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests_additional/real_exchanges/test_mexc.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests_additional/real_exchanges/test_ndax.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests_additional/real_exchanges/test_okcoin.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests_additional/real_exchanges/test_okx.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests_additional/real_exchanges/test_okx_futures.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests_additional/real_exchanges/test_phemex.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests_additional/real_exchanges/test_poloniex.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests_additional/real_exchanges/test_upbit.py +0 -0
- {OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/tests_additional/real_exchanges/test_wavesexchange.py +0 -0
@@ -4,6 +4,20 @@ 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.156] - 2025-02-10
|
8
|
+
### Added
|
9
|
+
[TradingModes] add init topic methods
|
10
|
+
### Updated
|
11
|
+
[Amount] improve amount error
|
12
|
+
[Exchange] add proxy error details on ddos error
|
13
|
+
[Trades] log more details on loaded historical trades
|
14
|
+
|
15
|
+
## [2.4.155] - 2025-02-03
|
16
|
+
### Added
|
17
|
+
[Exchanges] handle Socks proxies
|
18
|
+
### Updated
|
19
|
+
[Trader] enable edit_order when without enable_order_auto_synchronization
|
20
|
+
|
7
21
|
## [2.4.154] - 2025-01-31
|
8
22
|
### Added
|
9
23
|
[Exchanges] handle InvalidAPIKeyIPWhitelistError
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: OctoBot-Trading
|
3
|
-
Version: 2.4.
|
3
|
+
Version: 2.4.156
|
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.156](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.156
|
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.156](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.156](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)
|
{OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchanges/config/proxy_config.py
RENAMED
@@ -33,7 +33,8 @@ class ProxyConfig:
|
|
33
33
|
# if set, will be called when exchange stops
|
34
34
|
stop_proxy_callback: typing.Optional[typing.Callable] = None
|
35
35
|
# if set, returns the last url given to a callback method that return "True", meaning the last url that used a proxy
|
36
|
-
get_last_proxied_request_url: typing.Optional[typing.Callable] = None
|
36
|
+
get_last_proxied_request_url: typing.Optional[typing.Callable[[], typing.Optional[str]]] = None
|
37
|
+
get_proxy_url: typing.Optional[typing.Callable[[], str]] = None
|
37
38
|
# the host of this proxy, used to identify proxy connexion errors
|
38
39
|
proxy_host: str = "DEFAULT PROXY HOST"
|
39
40
|
# if DNS cache should be disabled with this proxy config. Warning: in this case, DNS cache will be
|
@@ -14,6 +14,7 @@
|
|
14
14
|
# You should have received a copy of the GNU Lesser General Public
|
15
15
|
# License along with this library.
|
16
16
|
import asyncio
|
17
|
+
import aiohttp_socks
|
17
18
|
import os
|
18
19
|
import ssl
|
19
20
|
import aiohttp
|
@@ -144,7 +145,10 @@ def instantiate_exchange(
|
|
144
145
|
client = exchange_class(config)
|
145
146
|
_use_proxy_if_necessary(client, proxy_config)
|
146
147
|
if constants.ENABLE_CCXT_REQUESTS_COUNTER and allow_request_counter:
|
147
|
-
|
148
|
+
if proxy_config.socks_proxy or proxy_config.socks_proxy_callback:
|
149
|
+
commons_logging.get_logger(__name__).error("socks proxy and request counter can't yet be used together.")
|
150
|
+
else:
|
151
|
+
_use_request_counter(identifier, client, proxy_config)
|
148
152
|
return client
|
149
153
|
|
150
154
|
|
@@ -305,15 +309,27 @@ def _use_proxy_if_necessary(client, proxy_config: proxy_config_import.ProxyConfi
|
|
305
309
|
client.socks_proxy = proxy_config.socks_proxy
|
306
310
|
if proxy_config.socks_proxy_callback:
|
307
311
|
client.socks_proxy_callback = proxy_config.socks_proxy_callback
|
308
|
-
if proxy_config.
|
312
|
+
if proxy_config.socks_proxy or proxy_config.socks_proxy_callback:
|
313
|
+
# rewrite of async_ccxt.exchange.client.fetch() ProxyConnector creation
|
314
|
+
_init_ccxt_client_session_requirements(client)
|
315
|
+
proxy_url = proxy_config.get_proxy_url()
|
316
|
+
if (client.socks_proxy_sessions is None):
|
317
|
+
client.socks_proxy_sessions = {}
|
318
|
+
if (proxy_url not in client.socks_proxy_sessions):
|
319
|
+
connector = aiohttp_socks.ProxyConnector.from_url(
|
320
|
+
proxy_url,
|
321
|
+
# extra args copied from self.open()
|
322
|
+
ssl=client.ssl_context,
|
323
|
+
loop=client.asyncio_loop,
|
324
|
+
use_dns_cache=not proxy_config.disable_dns_cache,
|
325
|
+
enable_cleanup_closed=True
|
326
|
+
)
|
327
|
+
client.socks_proxy_sessions[proxy_url] = aiohttp.ClientSession(
|
328
|
+
loop=client.asyncio_loop, connector=connector, trust_env=client.aiohttp_trust_env
|
329
|
+
)
|
330
|
+
elif proxy_config.disable_dns_cache:
|
309
331
|
# rewrite of async_ccxt.exchange.client.open()
|
310
|
-
|
311
|
-
client.asyncio_loop = asyncio.get_running_loop()
|
312
|
-
client.throttle.loop = client.asyncio_loop
|
313
|
-
|
314
|
-
if client.ssl_context is None:
|
315
|
-
# Create our SSL context object with our CA cert file
|
316
|
-
client.ssl_context = ssl.create_default_context(cafile=client.cafile) if client.verify else client.verify
|
332
|
+
_init_ccxt_client_session_requirements(client)
|
317
333
|
if client.session:
|
318
334
|
# should not happen
|
319
335
|
asyncio.create_task(client.session.close())
|
@@ -328,6 +344,18 @@ def _use_proxy_if_necessary(client, proxy_config: proxy_config_import.ProxyConfi
|
|
328
344
|
)
|
329
345
|
|
330
346
|
|
347
|
+
def _init_ccxt_client_session_requirements(client):
|
348
|
+
# from async_ccxt.exchange.client.open()
|
349
|
+
if client.asyncio_loop is None:
|
350
|
+
client.asyncio_loop = asyncio.get_running_loop()
|
351
|
+
client.throttle.loop = client.asyncio_loop
|
352
|
+
|
353
|
+
if client.ssl_context is None:
|
354
|
+
# Create our SSL context object with our CA cert file
|
355
|
+
client.ssl_context = ssl.create_default_context(cafile=client.cafile) if client.verify else client.verify
|
356
|
+
|
357
|
+
|
358
|
+
|
331
359
|
def _get_client_config(
|
332
360
|
exchange_class, options, headers, additional_config,
|
333
361
|
api_key=None, secret=None, password=None, uid=None,
|
@@ -465,7 +493,9 @@ def get_proxy_error_if_any(ccxt_connector, error: Exception) -> typing.Optional[
|
|
465
493
|
depth = 1
|
466
494
|
cause_error = error
|
467
495
|
while cause_error and depth < max_depth:
|
468
|
-
if isinstance(cause_error, (
|
496
|
+
if isinstance(cause_error, (
|
497
|
+
aiohttp.ClientProxyConnectionError, aiohttp.ClientHttpProxyError, aiohttp_socks.ProxyConnectionError
|
498
|
+
)) or (
|
469
499
|
isinstance(cause_error, aiohttp.ClientConnectorError)
|
470
500
|
and ccxt_connector.exchange_manager.proxy_config.proxy_host in str(cause_error)
|
471
501
|
):
|
@@ -18,6 +18,7 @@ import contextlib
|
|
18
18
|
import decimal
|
19
19
|
import ccxt.async_support as ccxt
|
20
20
|
import ccxt.static_dependencies.ecdsa.der
|
21
|
+
import aiohttp_socks
|
21
22
|
import typing
|
22
23
|
import inspect
|
23
24
|
import binascii
|
@@ -1022,7 +1023,7 @@ class CCXTConnector(abstract_exchange.AbstractExchange):
|
|
1022
1023
|
# raised upon rate limit issues, last response data might have details on what is happening
|
1023
1024
|
if self.exchange_manager.exchange.should_log_on_ddos_exception(err):
|
1024
1025
|
self.log_ddos_error(err)
|
1025
|
-
|
1026
|
+
self.raise_or_prefix_proxy_error_if_relevant(err, None)
|
1026
1027
|
except ccxt.InvalidNonce as err:
|
1027
1028
|
# use 2 index to get the caller of the context manager
|
1028
1029
|
caller_function_name = inspect.stack()[2].function
|
@@ -1042,7 +1043,7 @@ class CCXTConnector(abstract_exchange.AbstractExchange):
|
|
1042
1043
|
err,
|
1043
1044
|
error_class(html_util.get_html_summary_if_relevant(err))
|
1044
1045
|
)
|
1045
|
-
except ccxt.ExchangeNotAvailable as err:
|
1046
|
+
except (ccxt.ExchangeNotAvailable, aiohttp_socks.ProxyConnectionError) as err:
|
1046
1047
|
self.raise_or_prefix_proxy_error_if_relevant(
|
1047
1048
|
err,
|
1048
1049
|
octobot_trading.errors.FailedRequest(
|
{OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchanges/traders/trader.py
RENAMED
@@ -183,38 +183,23 @@ class Trader(util.Initializable):
|
|
183
183
|
previous_exchange_order_id = order.exchange_order_id
|
184
184
|
try:
|
185
185
|
async with order.lock:
|
186
|
+
disabled_state_updater = self.exchange_manager.exchange_personal_data \
|
187
|
+
.orders_manager.enable_order_auto_synchronization is False
|
186
188
|
# now that we got the lock, ensure we can edit the order
|
187
|
-
if not self.simulate and not order.is_self_managed() and
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
self.
|
192
|
-
|
193
|
-
f"edited_price: {str(edited_price)} "
|
194
|
-
f"edited_stop_price: {str(edited_stop_price)} "
|
195
|
-
f"edited_current_price: {str(edited_current_price)}"
|
196
|
-
f"]")
|
197
|
-
order_params = self.exchange_manager.exchange.get_order_additional_params(order)
|
198
|
-
order_params.update(params or {})
|
199
|
-
# fill in every param as some exchange rely on re-creating the order altogether
|
200
|
-
edited_order = await self.exchange_manager.exchange.edit_order(
|
201
|
-
order.exchange_order_id,
|
202
|
-
order.order_type,
|
203
|
-
order.symbol,
|
204
|
-
quantity=order.origin_quantity if edited_quantity is None else edited_quantity,
|
205
|
-
price=order.origin_price if edited_price is None else edited_price,
|
206
|
-
stop_price=edited_stop_price,
|
207
|
-
side=order.side,
|
208
|
-
current_price=edited_current_price,
|
209
|
-
params=order_params
|
189
|
+
if not self.simulate and not order.is_self_managed() and (
|
190
|
+
order.state is not None or disabled_state_updater
|
191
|
+
):
|
192
|
+
if disabled_state_updater:
|
193
|
+
changed = await self._edit_order_on_exchange(
|
194
|
+
order, edited_quantity, edited_price, edited_stop_price, edited_current_price, params
|
210
195
|
)
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
196
|
+
else:
|
197
|
+
# careful here: make sure we are not editing an order on exchange that is being updated
|
198
|
+
# somewhere else
|
199
|
+
async with order.state.refresh_operation():
|
200
|
+
changed = await self._edit_order_on_exchange(
|
201
|
+
order, edited_quantity, edited_price, edited_stop_price, edited_current_price, params
|
202
|
+
)
|
218
203
|
else:
|
219
204
|
# consider order as cancelled to release portfolio amounts
|
220
205
|
self.exchange_manager.exchange_personal_data.portfolio_manager.portfolio.update_portfolio_available(
|
@@ -242,6 +227,41 @@ class Trader(util.Initializable):
|
|
242
227
|
# order id changed: update orders_manager to keep consistency
|
243
228
|
self.exchange_manager.exchange_personal_data.orders_manager.replace_order(order.order_id, order)
|
244
229
|
|
230
|
+
async def _edit_order_on_exchange(
|
231
|
+
self, order,
|
232
|
+
edited_quantity: decimal.Decimal,
|
233
|
+
edited_price: decimal.Decimal,
|
234
|
+
edited_stop_price: decimal.Decimal,
|
235
|
+
edited_current_price: decimal.Decimal,
|
236
|
+
params: dict
|
237
|
+
) -> bool:
|
238
|
+
self.logger.info(
|
239
|
+
f"Editing order: {order} [edited_quantity: {str(edited_quantity)} edited_price: {str(edited_price)} "
|
240
|
+
f"edited_stop_price: {str(edited_stop_price)} edited_current_price: {str(edited_current_price)}]"
|
241
|
+
)
|
242
|
+
order_params = self.exchange_manager.exchange.get_order_additional_params(order)
|
243
|
+
order_params.update(params or {})
|
244
|
+
# fill in every param as some exchange rely on re-creating the order altogether
|
245
|
+
edited_order = await self.exchange_manager.exchange.edit_order(
|
246
|
+
order.exchange_order_id,
|
247
|
+
order.order_type,
|
248
|
+
order.symbol,
|
249
|
+
quantity=order.origin_quantity if edited_quantity is None else edited_quantity,
|
250
|
+
price=order.origin_price if edited_price is None else edited_price,
|
251
|
+
stop_price=edited_stop_price,
|
252
|
+
side=order.side,
|
253
|
+
current_price=edited_current_price,
|
254
|
+
params=order_params
|
255
|
+
)
|
256
|
+
# apply new values from returned order (even order id might have changed)
|
257
|
+
self.logger.debug(
|
258
|
+
f"Successfully edited order on {self.exchange_manager.exchange_name}, new order values: {edited_order}"
|
259
|
+
)
|
260
|
+
changed = order.update_from_raw(edited_order)
|
261
|
+
# update portfolio from exchange
|
262
|
+
await self.exchange_manager.exchange_personal_data.handle_portfolio_and_position_update_from_order(order)
|
263
|
+
return changed
|
264
|
+
|
245
265
|
async def _create_new_order(self, new_order, params: dict,
|
246
266
|
wait_for_creation=True,
|
247
267
|
creation_timeout=octobot_trading.constants.INDIVIDUAL_ORDER_SYNC_TIMEOUT) -> object:
|
@@ -16,6 +16,7 @@
|
|
16
16
|
import contextlib
|
17
17
|
import asyncio
|
18
18
|
import concurrent.futures
|
19
|
+
import typing
|
19
20
|
|
20
21
|
import async_channel.enums as channel_enums
|
21
22
|
|
@@ -178,7 +179,19 @@ class AbstractTradingModeProducer(modes_channel.ModeChannelProducer):
|
|
178
179
|
self.exchange_manager.id).matrix_id
|
179
180
|
await self._subscribe_to_registration_topic(registration_topics, currency_filter, symbol_filter)
|
180
181
|
await self.init_user_inputs(False)
|
181
|
-
await self._wait_for_bot_init(
|
182
|
+
await self._wait_for_bot_init(
|
183
|
+
self.CONFIG_INIT_TIMEOUT,
|
184
|
+
extra_symbol_topics=self.get_extra_init_symbol_topics(),
|
185
|
+
extra_global_topics=self.get_extra_global_topics()
|
186
|
+
)
|
187
|
+
|
188
|
+
def get_extra_init_symbol_topics(self) -> typing.Optional[list]:
|
189
|
+
# Implement if necessary
|
190
|
+
return None
|
191
|
+
|
192
|
+
def get_extra_global_topics(self) -> typing.Optional[list]:
|
193
|
+
# Implement if necessary
|
194
|
+
return None
|
182
195
|
|
183
196
|
async def _subscribe_to_registration_topic(self, registration_topics, currency_filter, symbol_filter):
|
184
197
|
for registration_topic in registration_topics:
|
@@ -37,7 +37,7 @@ async def get_amount_from_input_amount(
|
|
37
37
|
amount_type, amount_value = dsl.parse_quantity(input_amount)
|
38
38
|
|
39
39
|
if amount_type is dsl.QuantityType.UNKNOWN or amount_value <= 0:
|
40
|
-
raise trading_errors.InvalidArgumentError("
|
40
|
+
raise trading_errors.InvalidArgumentError("Amount cant be zero or negative (amount: {amount_value})")
|
41
41
|
|
42
42
|
if amount_type in (dsl.QuantityType.DELTA, dsl.QuantityType.DELTA_BASE):
|
43
43
|
# nothing to do
|
@@ -116,7 +116,7 @@ class BalancedTakeProfitAndStopOrderGroup(order_group.OrderGroup):
|
|
116
116
|
self.logger.error(f"Skipping order cancel: {err}")
|
117
117
|
updated_orders = True
|
118
118
|
for update_data in take_profit_actions[self.UPDATE] + stop_actions[self.UPDATE]:
|
119
|
-
self.logger.info(f"Updating order
|
119
|
+
self.logger.info(f"Updating order quantity to {update_data[self.UPDATED_QUANTITY]} to keep balance, "
|
120
120
|
f"order: {update_data[self.ORDER]}")
|
121
121
|
order = update_data[self.ORDER]
|
122
122
|
async with signals.remote_signal_publisher(order.trader.exchange_manager, order.symbol, True):
|
@@ -131,9 +131,11 @@ class BalancedTakeProfitAndStopOrderGroup(order_group.OrderGroup):
|
|
131
131
|
self.logger.exception(e, True, f"Error when balancing orders: {e}")
|
132
132
|
finally:
|
133
133
|
# remove locally_balancing_orders from self.balancing_orders
|
134
|
-
self.balancing_orders = [
|
135
|
-
|
136
|
-
|
134
|
+
self.balancing_orders = [
|
135
|
+
order
|
136
|
+
for order in self.balancing_orders
|
137
|
+
if order not in locally_balancing_orders
|
138
|
+
]
|
137
139
|
|
138
140
|
def _get_balance(self, closed_order, ignored_orders):
|
139
141
|
balance = {
|
@@ -141,9 +143,11 @@ class BalancedTakeProfitAndStopOrderGroup(order_group.OrderGroup):
|
|
141
143
|
self.STOP: _SideBalance()
|
142
144
|
}
|
143
145
|
for order in self.get_group_open_orders():
|
144
|
-
if
|
145
|
-
|
146
|
-
|
146
|
+
if (
|
147
|
+
order is not closed_order
|
148
|
+
and (ignored_orders is None or order not in ignored_orders)
|
149
|
+
and order not in self.balancing_orders
|
150
|
+
):
|
147
151
|
if order_util.is_stop_order(order.order_type):
|
148
152
|
balance[self.STOP].add_order(order)
|
149
153
|
else:
|
{OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/personal_data/orders/order.py
RENAMED
@@ -227,7 +227,7 @@ class Order(util.Initializable):
|
|
227
227
|
should_update_total_cost = True
|
228
228
|
|
229
229
|
if self.trader.simulate:
|
230
|
-
if quantity and
|
230
|
+
if quantity and self.filled_quantity != quantity:
|
231
231
|
self.filled_quantity = quantity
|
232
232
|
changed = True
|
233
233
|
should_update_total_cost = True
|
@@ -433,7 +433,7 @@ def is_stop_trade_order_type(order_type: enums.TradeOrderType):
|
|
433
433
|
]
|
434
434
|
|
435
435
|
|
436
|
-
def is_take_profit_order(order_type):
|
436
|
+
def is_take_profit_order(order_type: enums.TraderOrderType):
|
437
437
|
return order_type in [
|
438
438
|
enums.TraderOrderType.TAKE_PROFIT, enums.TraderOrderType.TAKE_PROFIT_LIMIT,
|
439
439
|
]
|
@@ -165,9 +165,17 @@ class TradesManager(util.Initializable):
|
|
165
165
|
try:
|
166
166
|
if self.trader.exchange_manager.storage_manager.trades_storage:
|
167
167
|
full_history = await self.trader.exchange_manager.storage_manager.trades_storage.get_history()
|
168
|
-
self.logger.debug(
|
169
|
-
|
170
|
-
|
168
|
+
self.logger.debug(
|
169
|
+
f"Loading {len(full_history)} {self.trader.exchange_manager.exchange_name} historical trades ..."
|
170
|
+
)
|
171
|
+
if full_history:
|
172
|
+
for trade_dict in full_history:
|
173
|
+
self.upsert_trade_instance(personal_data.Trade.from_dict(self.trader, trade_dict))
|
174
|
+
self.logger.debug(
|
175
|
+
f"Included {dict(self._get_trades_count_by_symbols())} "
|
176
|
+
f"{self.trader.exchange_manager.exchange_name} trades"
|
177
|
+
)
|
178
|
+
|
171
179
|
if reset:
|
172
180
|
# reset uploaded trades history
|
173
181
|
await self.trader.exchange_manager.storage_manager.trades_storage.trigger_debounced_update_auth_data(
|
@@ -183,13 +191,25 @@ class TradesManager(util.Initializable):
|
|
183
191
|
except Exception as err:
|
184
192
|
self.logger.exception(err, True, f"Error when loading local trade history {err}")
|
185
193
|
|
194
|
+
def _get_trades_count_by_symbols(self, trades=None):
|
195
|
+
return collections.Counter(
|
196
|
+
trade.symbol
|
197
|
+
for trade in (trades or self.trades.values())
|
198
|
+
)
|
199
|
+
|
186
200
|
def _remove_oldest_trades(self, nb_to_remove):
|
187
201
|
self.logger.info(
|
188
|
-
f"Clearing the {nb_to_remove} oldest historical
|
189
|
-
f"{self.MAX_TRADES_COUNT}) has been reached"
|
202
|
+
f"Clearing the {nb_to_remove} oldest historical {self.trader.exchange_manager.exchange_name} "
|
203
|
+
f"trades as the maximum count of trades ({self.MAX_TRADES_COUNT}) has been reached"
|
190
204
|
)
|
205
|
+
popped = []
|
191
206
|
for _ in range(nb_to_remove):
|
192
|
-
self.trades.popitem(last=False)
|
207
|
+
popped.append(self.trades.popitem(last=False)[1])
|
208
|
+
self.logger.info(
|
209
|
+
f"Cleared the {len(popped)} {self.trader.exchange_manager.exchange_name} oldest historical trades: "
|
210
|
+
f"{dict(self._get_trades_count_by_symbols(trades=popped))}"
|
211
|
+
)
|
212
|
+
|
193
213
|
|
194
214
|
def _set_initialized_event(self, symbol):
|
195
215
|
# set init in updater as it's the only place we know if we fetched trades or not regardless of trades existence
|
@@ -9,6 +9,7 @@ trading-backend>=1.2.35
|
|
9
9
|
|
10
10
|
# Exchange connection requirements
|
11
11
|
ccxt==4.3.85 # always ensure real exchanges tests (in tests_additional and authenticated exchange tests) are passing before changing the ccxt version
|
12
|
+
aiohttp_socks==0.10.1 # used by ccxt socks proxy aiohttp connectors
|
12
13
|
|
13
14
|
cryptography # Never specify a version (managed by https://github.com/Drakkar-Software/OctoBot-PyPi-Linux-Deployer)
|
14
15
|
|
@@ -18,6 +18,7 @@ import decimal
|
|
18
18
|
import ccxt
|
19
19
|
import aiohttp
|
20
20
|
import aiohttp.client_reqrep
|
21
|
+
import aiohttp_socks
|
21
22
|
|
22
23
|
import mock
|
23
24
|
from mock import patch
|
@@ -265,7 +266,13 @@ async def test_error_describer(ccxt_connector):
|
|
265
266
|
with pytest.raises(octobot_trading.errors.ExchangeProxyError):
|
266
267
|
# proxy connection error
|
267
268
|
with ccxt_connector.error_describer():
|
268
|
-
raise ccxt.AuthenticationError from
|
269
|
+
raise ccxt.AuthenticationError from aiohttp_socks.ProxyConnectionError(
|
270
|
+
aiohttp.client_reqrep.ConnectionKey("host", 11, True, True, None, None, None), OSError("plop")
|
271
|
+
)
|
272
|
+
with pytest.raises(octobot_trading.errors.ExchangeProxyError):
|
273
|
+
# proxy connection error
|
274
|
+
with ccxt_connector.error_describer():
|
275
|
+
raise aiohttp_socks.ProxyConnectionError(
|
269
276
|
aiohttp.client_reqrep.ConnectionKey("host", 11, True, True, None, None, None), OSError("plop")
|
270
277
|
)
|
271
278
|
with mock.patch.object(
|
File without changes
|
File without changes
|
File without changes
|
{OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/OctoBot_Trading.egg-info/dependency_links.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/kline/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{OctoBot-Trading-2.4.154 → OctoBot-Trading-2.4.156}/octobot_trading/exchange_data/ohlcv/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|