OctoBot-Trading 2.4.123__tar.gz → 2.4.126__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.
Files changed (478) hide show
  1. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/CHANGELOG.md +13 -0
  2. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126/OctoBot_Trading.egg-info}/PKG-INFO +2 -2
  3. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/OctoBot_Trading.egg-info/requires.txt +1 -1
  4. {OctoBot-Trading-2.4.123/OctoBot_Trading.egg-info → OctoBot-Trading-2.4.126}/PKG-INFO +2 -2
  5. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/README.md +1 -1
  6. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/__init__.py +1 -1
  7. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/errors.py +24 -11
  8. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/funding/channel/funding_updater.py +3 -1
  9. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/kline/channel/kline_updater.py +7 -2
  10. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/ohlcv/channel/ohlcv_updater.py +7 -1
  11. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/order_book/channel/order_book_updater.py +5 -2
  12. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/prices/channel/prices_updater.py +3 -1
  13. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/recent_trades/channel/recent_trade_updater.py +12 -2
  14. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/ticker/channel/ticker_updater.py +8 -2
  15. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchanges/abstract_exchange.py +8 -3
  16. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchanges/config/exchange_config_data.py +9 -9
  17. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchanges/connectors/ccxt/ccxt_connector.py +53 -23
  18. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchanges/connectors/simulator/exchange_simulator_connector.py +10 -1
  19. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchanges/types/rest_exchange.py +61 -19
  20. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchanges/types/websocket_exchange.py +7 -3
  21. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/modes/abstract_trading_mode.py +47 -0
  22. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/modes/channel/abstract_mode_producer.py +24 -14
  23. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/modes/modes_util.py +61 -47
  24. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/orders/channel/orders_updater.py +2 -1
  25. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/portfolios/channel/balance_updater.py +11 -3
  26. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/positions/channel/positions_updater.py +14 -3
  27. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/trades/channel/trades_updater.py +3 -2
  28. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/trades/trades_manager.py +2 -1
  29. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/storage/candles_storage.py +9 -2
  30. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/util/initialization_util.py +21 -11
  31. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/requirements.txt +1 -1
  32. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/modes/test_modes_util.py +40 -5
  33. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/LICENSE +0 -0
  34. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/MANIFEST.in +0 -0
  35. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/OctoBot_Trading.egg-info/SOURCES.txt +0 -0
  36. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/OctoBot_Trading.egg-info/dependency_links.txt +0 -0
  37. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/OctoBot_Trading.egg-info/not-zip-safe +0 -0
  38. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/OctoBot_Trading.egg-info/top_level.txt +0 -0
  39. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/api/__init__.py +0 -0
  40. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/api/channels.py +0 -0
  41. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/api/contracts.py +0 -0
  42. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/api/exchange.py +0 -0
  43. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/api/modes.py +0 -0
  44. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/api/orders.py +0 -0
  45. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/api/portfolio.py +0 -0
  46. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/api/positions.py +0 -0
  47. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/api/profitability.py +0 -0
  48. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/api/storage.py +0 -0
  49. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/api/symbol_data.py +0 -0
  50. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/api/trader.py +0 -0
  51. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/api/trades.py +0 -0
  52. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/constants.py +0 -0
  53. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/enums.py +0 -0
  54. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_channel.py +0 -0
  55. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/__init__.py +0 -0
  56. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/contracts/__init__.py +0 -0
  57. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/contracts/contract_factory.py +0 -0
  58. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/contracts/future_contract.py +0 -0
  59. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/contracts/margin_contract.py +0 -0
  60. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/exchange_symbol_data.py +0 -0
  61. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/exchange_symbols_data.py +0 -0
  62. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/funding/__init__.py +0 -0
  63. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/funding/channel/__init__.py +0 -0
  64. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/funding/channel/funding.py +0 -0
  65. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/funding/channel/funding_updater_simulator.py +0 -0
  66. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/funding/funding_manager.py +0 -0
  67. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/kline/__init__.py +0 -0
  68. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/kline/channel/__init__.py +0 -0
  69. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/kline/channel/kline.py +0 -0
  70. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/kline/channel/kline_updater_simulator.py +0 -0
  71. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/kline/kline_manager.py +0 -0
  72. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/ohlcv/__init__.py +0 -0
  73. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/ohlcv/candles_adapter.py +0 -0
  74. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/ohlcv/candles_manager.py +0 -0
  75. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/ohlcv/channel/__init__.py +0 -0
  76. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/ohlcv/channel/ohlcv.py +0 -0
  77. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/ohlcv/channel/ohlcv_updater_simulator.py +0 -0
  78. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/ohlcv/preloaded_candles_manager.py +0 -0
  79. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/order_book/__init__.py +0 -0
  80. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/order_book/channel/__init__.py +0 -0
  81. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/order_book/channel/order_book.py +0 -0
  82. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/order_book/channel/order_book_updater_simulator.py +0 -0
  83. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/order_book/order_book_manager.py +0 -0
  84. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/prices/__init__.py +0 -0
  85. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/prices/channel/__init__.py +0 -0
  86. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/prices/channel/price.py +0 -0
  87. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/prices/channel/prices_updater_simulator.py +0 -0
  88. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/prices/price_events_manager.py +0 -0
  89. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/prices/prices_manager.py +0 -0
  90. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/recent_trades/__init__.py +0 -0
  91. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/recent_trades/channel/__init__.py +0 -0
  92. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/recent_trades/channel/recent_trade.py +0 -0
  93. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/recent_trades/channel/recent_trade_updater_simulator.py +0 -0
  94. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/recent_trades/recent_trades_manager.py +0 -0
  95. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/ticker/__init__.py +0 -0
  96. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/ticker/channel/__init__.py +0 -0
  97. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/ticker/channel/ticker.py +0 -0
  98. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/ticker/channel/ticker_updater_simulator.py +0 -0
  99. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchange_data/ticker/ticker_manager.py +0 -0
  100. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchanges/__init__.py +0 -0
  101. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchanges/abstract_websocket_exchange.py +0 -0
  102. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchanges/adapters/__init__.py +0 -0
  103. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchanges/adapters/abstract_adapter.py +0 -0
  104. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchanges/config/__init__.py +0 -0
  105. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchanges/config/backtesting_exchange_config.py +0 -0
  106. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchanges/config/proxy_config.py +0 -0
  107. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchanges/connectors/__init__.py +0 -0
  108. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchanges/connectors/ccxt/__init__.py +0 -0
  109. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchanges/connectors/ccxt/ccxt_adapter.py +0 -0
  110. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchanges/connectors/ccxt/ccxt_client_util.py +0 -0
  111. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchanges/connectors/ccxt/ccxt_clients_cache.py +0 -0
  112. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchanges/connectors/ccxt/ccxt_websocket_connector.py +0 -0
  113. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchanges/connectors/ccxt/constants.py +0 -0
  114. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchanges/connectors/ccxt/enums.py +0 -0
  115. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchanges/connectors/simulator/__init__.py +0 -0
  116. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchanges/connectors/simulator/ccxt_client_simulation.py +0 -0
  117. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchanges/connectors/simulator/exchange_simulator_adapter.py +0 -0
  118. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchanges/exchange_builder.py +0 -0
  119. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchanges/exchange_channels.py +0 -0
  120. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchanges/exchange_details.py +0 -0
  121. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchanges/exchange_factory.py +0 -0
  122. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchanges/exchange_manager.py +0 -0
  123. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchanges/exchange_websocket_factory.py +0 -0
  124. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchanges/exchanges.py +0 -0
  125. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchanges/implementations/__init__.py +0 -0
  126. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchanges/implementations/default_rest_exchange.py +0 -0
  127. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchanges/implementations/default_websocket_exchange.py +0 -0
  128. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchanges/implementations/exchange_simulator.py +0 -0
  129. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchanges/traders/__init__.py +0 -0
  130. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchanges/traders/trader.py +0 -0
  131. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchanges/traders/trader_simulator.py +0 -0
  132. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchanges/types/__init__.py +0 -0
  133. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchanges/util/__init__.py +0 -0
  134. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchanges/util/exchange_market_status_fixer.py +0 -0
  135. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchanges/util/exchange_util.py +0 -0
  136. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchanges/util/symbol_details.py +0 -0
  137. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/exchanges/util/websockets_util.py +0 -0
  138. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/modes/__init__.py +0 -0
  139. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/modes/channel/__init__.py +0 -0
  140. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/modes/channel/abstract_mode_consumer.py +0 -0
  141. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/modes/channel/mode.py +0 -0
  142. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/modes/mode_activity.py +0 -0
  143. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/modes/mode_config.py +0 -0
  144. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/modes/modes_factory.py +0 -0
  145. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/modes/script_keywords/__init__.py +0 -0
  146. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/modes/script_keywords/basic_keywords/__init__.py +0 -0
  147. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/modes/script_keywords/basic_keywords/account_balance.py +0 -0
  148. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/modes/script_keywords/basic_keywords/amount.py +0 -0
  149. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/modes/script_keywords/basic_keywords/configuration.py +0 -0
  150. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/modes/script_keywords/basic_keywords/position.py +0 -0
  151. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/modes/script_keywords/basic_keywords/price.py +0 -0
  152. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/modes/script_keywords/basic_keywords/run_persistence.py +0 -0
  153. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/modes/script_keywords/basic_keywords/trading_signals.py +0 -0
  154. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/modes/script_keywords/basic_keywords/user_inputs.py +0 -0
  155. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/modes/script_keywords/context_management.py +0 -0
  156. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/modes/script_keywords/dsl/__init__.py +0 -0
  157. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/modes/script_keywords/dsl/quantity.py +0 -0
  158. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/modes/script_keywords/dsl/values.py +0 -0
  159. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/modes/scripted_trading_mode/__init__.py +0 -0
  160. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/modes/scripted_trading_mode/abstract_scripted_trading_mode.py +0 -0
  161. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/octobot_channel_consumer.py +0 -0
  162. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/__init__.py +0 -0
  163. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/exchange_personal_data.py +0 -0
  164. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/orders/__init__.py +0 -0
  165. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/orders/channel/__init__.py +0 -0
  166. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/orders/channel/orders.py +0 -0
  167. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/orders/channel/orders_updater_simulator.py +0 -0
  168. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/orders/decimal_order_adapter.py +0 -0
  169. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/orders/groups/__init__.py +0 -0
  170. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/orders/groups/balanced_take_profit_and_stop_order_group.py +0 -0
  171. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/orders/groups/group_util.py +0 -0
  172. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/orders/groups/one_cancels_the_other_order_group.py +0 -0
  173. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/orders/order.py +0 -0
  174. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/orders/order_adapter.py +0 -0
  175. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/orders/order_factory.py +0 -0
  176. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/orders/order_group.py +0 -0
  177. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/orders/order_state.py +0 -0
  178. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/orders/order_util.py +0 -0
  179. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/orders/orders_manager.py +0 -0
  180. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/orders/orders_storage_operations.py +0 -0
  181. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/orders/states/__init__.py +0 -0
  182. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/orders/states/cancel_order_state.py +0 -0
  183. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/orders/states/close_order_state.py +0 -0
  184. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/orders/states/fill_order_state.py +0 -0
  185. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/orders/states/open_order_state.py +0 -0
  186. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/orders/states/order_state_factory.py +0 -0
  187. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/orders/states/pending_creation_chained_order_state.py +0 -0
  188. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/orders/states/pending_creation_order_state.py +0 -0
  189. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/orders/types/__init__.py +0 -0
  190. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/orders/types/limit/__init__.py +0 -0
  191. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/orders/types/limit/buy_limit_order.py +0 -0
  192. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/orders/types/limit/limit_order.py +0 -0
  193. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/orders/types/limit/sell_limit_order.py +0 -0
  194. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/orders/types/limit/stop_loss_limit_order.py +0 -0
  195. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/orders/types/limit/stop_loss_order.py +0 -0
  196. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/orders/types/limit/take_profit_limit_order.py +0 -0
  197. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/orders/types/limit/take_profit_order.py +0 -0
  198. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/orders/types/market/__init__.py +0 -0
  199. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/orders/types/market/buy_market_order.py +0 -0
  200. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/orders/types/market/market_order.py +0 -0
  201. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/orders/types/market/sell_market_order.py +0 -0
  202. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/orders/types/trailing/__init__.py +0 -0
  203. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/orders/types/trailing/trailing_stop_limit_order.py +0 -0
  204. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/orders/types/trailing/trailing_stop_order.py +0 -0
  205. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/orders/types/unknown_order.py +0 -0
  206. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/orders/types/unsupported_order.py +0 -0
  207. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/portfolios/__init__.py +0 -0
  208. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/portfolios/asset.py +0 -0
  209. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/portfolios/assets/__init__.py +0 -0
  210. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/portfolios/assets/future_asset.py +0 -0
  211. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/portfolios/assets/margin_asset.py +0 -0
  212. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/portfolios/assets/spot_asset.py +0 -0
  213. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/portfolios/channel/__init__.py +0 -0
  214. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/portfolios/channel/balance.py +0 -0
  215. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/portfolios/channel/balance_updater_simulator.py +0 -0
  216. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/portfolios/history/__init__.py +0 -0
  217. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/portfolios/history/historical_asset_value.py +0 -0
  218. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/portfolios/history/historical_asset_value_factory.py +0 -0
  219. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/portfolios/history/historical_portfolio_value_manager.py +0 -0
  220. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/portfolios/portfolio.py +0 -0
  221. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/portfolios/portfolio_factory.py +0 -0
  222. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/portfolios/portfolio_manager.py +0 -0
  223. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/portfolios/portfolio_profitability.py +0 -0
  224. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/portfolios/portfolio_util.py +0 -0
  225. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/portfolios/portfolio_value_holder.py +0 -0
  226. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/portfolios/sub_portfolio.py +0 -0
  227. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/portfolios/types/__init__.py +0 -0
  228. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/portfolios/types/future_portfolio.py +0 -0
  229. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/portfolios/types/margin_portfolio.py +0 -0
  230. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/portfolios/types/spot_portfolio.py +0 -0
  231. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/portfolios/value_converter.py +0 -0
  232. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/positions/__init__.py +0 -0
  233. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/positions/channel/__init__.py +0 -0
  234. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/positions/channel/positions.py +0 -0
  235. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/positions/channel/positions_updater_simulator.py +0 -0
  236. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/positions/position.py +0 -0
  237. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/positions/position_factory.py +0 -0
  238. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/positions/position_state.py +0 -0
  239. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/positions/position_util.py +0 -0
  240. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/positions/positions_manager.py +0 -0
  241. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/positions/states/__init__.py +0 -0
  242. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/positions/states/active_position_state.py +0 -0
  243. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/positions/states/idle_position_state.py +0 -0
  244. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/positions/states/liquidate_position_state.py +0 -0
  245. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/positions/states/position_state_factory.py +0 -0
  246. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/positions/types/__init__.py +0 -0
  247. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/positions/types/inverse_position.py +0 -0
  248. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/positions/types/linear_position.py +0 -0
  249. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/state.py +0 -0
  250. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/trades/__init__.py +0 -0
  251. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/trades/channel/__init__.py +0 -0
  252. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/trades/channel/trades.py +0 -0
  253. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/trades/trade.py +0 -0
  254. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/trades/trade_factory.py +0 -0
  255. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/trades/trade_pnl.py +0 -0
  256. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/trades/trades_util.py +0 -0
  257. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/transactions/__init__.py +0 -0
  258. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/transactions/transaction.py +0 -0
  259. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/transactions/transaction_factory.py +0 -0
  260. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/transactions/transactions_manager.py +0 -0
  261. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/transactions/types/__init__.py +0 -0
  262. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/transactions/types/blockchain_transaction.py +0 -0
  263. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/transactions/types/fee_transaction.py +0 -0
  264. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/transactions/types/realised_pnl_transaction.py +0 -0
  265. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/personal_data/transactions/types/transfer_transaction.py +0 -0
  266. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/signals/__init__.py +0 -0
  267. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/signals/channel/__init__.py +0 -0
  268. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/signals/channel/remote_trading_signal.py +0 -0
  269. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/signals/channel/remote_trading_signal_channel_factory.py +0 -0
  270. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/signals/channel/signal_producer.py +0 -0
  271. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/signals/signal_creation.py +0 -0
  272. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/signals/trading_signal_bundle_builder.py +0 -0
  273. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/signals/util.py +0 -0
  274. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/storage/__init__.py +0 -0
  275. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/storage/abstract_storage.py +0 -0
  276. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/storage/orders_storage.py +0 -0
  277. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/storage/portfolio_storage.py +0 -0
  278. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/storage/storage_manager.py +0 -0
  279. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/storage/trades_storage.py +0 -0
  280. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/storage/transactions_storage.py +0 -0
  281. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/storage/util.py +0 -0
  282. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/supervisors/__init__.py +0 -0
  283. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/supervisors/abstract_portfolio_supervisor.py +0 -0
  284. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/supervisors/abstract_supervisor.py +0 -0
  285. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/util/__init__.py +0 -0
  286. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/util/config_util.py +0 -0
  287. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/util/initializable.py +0 -0
  288. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/util/simulator_updater_utils.py +0 -0
  289. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/util/test_tools/__init__.py +0 -0
  290. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/util/test_tools/exchange_data.py +0 -0
  291. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/util/test_tools/exchanges_test_tools.py +0 -0
  292. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/util/test_tools/spot_rest_exchange_test_tools.py +0 -0
  293. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/octobot_trading/util/test_tools/websocket_test_tools.py +0 -0
  294. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/setup.cfg +0 -0
  295. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/setup.py +0 -0
  296. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/api/__init__.py +0 -0
  297. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/api/test_channels.py +0 -0
  298. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/api/test_exchange.py +0 -0
  299. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/api/test_modes.py +0 -0
  300. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/api/test_orders.py +0 -0
  301. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/api/test_portfolio.py +0 -0
  302. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/api/test_profitability.py +0 -0
  303. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/api/test_symbol_data.py +0 -0
  304. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/api/test_trader.py +0 -0
  305. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/api/test_trades.py +0 -0
  306. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/cli/__init__.py +0 -0
  307. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/exchange_data/__init__.py +0 -0
  308. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/exchange_data/contracts/__init__.py +0 -0
  309. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/exchange_data/contracts/test_future_contract.py +0 -0
  310. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/exchange_data/contracts/test_margin_contract.py +0 -0
  311. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/exchange_data/funding/__init__.py +0 -0
  312. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/exchange_data/funding/test_funding_manager.py +0 -0
  313. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/exchange_data/kline/__init__.py +0 -0
  314. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/exchange_data/kline/test_kline_manager.py +0 -0
  315. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/exchange_data/ohlcv/__init__.py +0 -0
  316. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/exchange_data/ohlcv/test_candles_adapter.py +0 -0
  317. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/exchange_data/ohlcv/test_candles_manager.py +0 -0
  318. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/exchange_data/order_book/__init__.py +0 -0
  319. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/exchange_data/order_book/test_order_book_manager.py +0 -0
  320. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/exchange_data/prices/__init__.py +0 -0
  321. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/exchange_data/prices/test_price_events_manager.py +0 -0
  322. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/exchange_data/prices/test_prices_manager.py +0 -0
  323. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/exchange_data/recent_trades/__init__.py +0 -0
  324. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/exchange_data/recent_trades/test_recent_trades_manager.py +0 -0
  325. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/exchange_data/test_exchange_symbols_data.py +0 -0
  326. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/exchange_data/ticker/__init__.py +0 -0
  327. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/exchange_data/ticker/test_ticker_manager.py +0 -0
  328. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/exchanges/__init__.py +0 -0
  329. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/exchanges/connectors/__init__.py +0 -0
  330. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/exchanges/connectors/ccxt/__init__.py +0 -0
  331. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/exchanges/connectors/ccxt/mock_exchanges_data.py +0 -0
  332. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/exchanges/connectors/ccxt/test_ccxt_connector.py +0 -0
  333. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/exchanges/implementations/__init__.py +0 -0
  334. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/exchanges/implementations/test_default_rest_exchange.py +0 -0
  335. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/exchanges/implementations/test_default_websocket_exchange.py +0 -0
  336. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/exchanges/test_abstract_exchange.py +0 -0
  337. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/exchanges/test_abstract_websocket_exchange.py +0 -0
  338. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/exchanges/test_exchange_builder.py +0 -0
  339. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/exchanges/test_exchange_config_data.py +0 -0
  340. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/exchanges/test_exchange_factory.py +0 -0
  341. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/exchanges/test_exchange_manager.py +0 -0
  342. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/exchanges/test_exchange_simulator.py +0 -0
  343. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/exchanges/test_exchanges.py +0 -0
  344. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/exchanges/traders/__init__.py +0 -0
  345. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/exchanges/traders/test_trader.py +0 -0
  346. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/exchanges/types/__init__.py +0 -0
  347. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/exchanges/types/test_websocket_exchange.py +0 -0
  348. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/exchanges/util/__init__.py +0 -0
  349. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/exchanges/util/test_exchange_market_status_fixer.py +0 -0
  350. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/exchanges/util/test_exchange_util.py +0 -0
  351. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/modes/__init__.py +0 -0
  352. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/modes/script_keywords/__init__.py +0 -0
  353. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/modes/script_keywords/basic_keywords/__init__.py +0 -0
  354. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/modes/script_keywords/basic_keywords/test_account_balance.py +0 -0
  355. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/modes/script_keywords/basic_keywords/test_amount.py +0 -0
  356. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/modes/script_keywords/basic_keywords/test_position.py +0 -0
  357. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/modes/script_keywords/basic_keywords/test_price.py +0 -0
  358. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/modes/script_keywords/dsl/__init__.py +0 -0
  359. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/modes/script_keywords/dsl/test_quantity.py +0 -0
  360. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/modes/test_abstract_mode_consumer.py +0 -0
  361. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/modes/test_abstract_trading_mode.py +0 -0
  362. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/__init__.py +0 -0
  363. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/orders/__init__.py +0 -0
  364. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/orders/groups/__init__.py +0 -0
  365. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/orders/groups/test_balanced_take_profit_and_stop_order_group.py +0 -0
  366. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/orders/groups/test_group_util.py +0 -0
  367. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/orders/groups/test_one_cancels_the_other_order_group.py +0 -0
  368. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/orders/states/__init__.py +0 -0
  369. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/orders/states/test_cancel_order_state.py +0 -0
  370. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/orders/states/test_close_order_state.py +0 -0
  371. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/orders/states/test_fill_order_state.py +0 -0
  372. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/orders/states/test_open_order_state.py +0 -0
  373. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/orders/states/test_order_state.py +0 -0
  374. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/orders/states/test_order_state_factory.py +0 -0
  375. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/orders/states/test_pending_creation_chained_order_state.py +0 -0
  376. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/orders/states/test_pending_creation_order_state.py +0 -0
  377. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/orders/test_decimal_order_adapter.py +0 -0
  378. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/orders/test_double_filled_order.py +0 -0
  379. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/orders/test_order.py +0 -0
  380. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/orders/test_order_adapter.py +0 -0
  381. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/orders/test_order_factory.py +0 -0
  382. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/orders/test_order_util.py +0 -0
  383. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/orders/test_orders_manager.py +0 -0
  384. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/orders/test_orders_storage_operations.py +0 -0
  385. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/orders/types/__init__.py +0 -0
  386. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/orders/types/limit/__init__.py +0 -0
  387. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/orders/types/limit/test_buy_limit_order.py +0 -0
  388. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/orders/types/limit/test_limit_order.py +0 -0
  389. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/orders/types/limit/test_sell_limit_order.py +0 -0
  390. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/orders/types/limit/test_stop_loss_limit_order.py +0 -0
  391. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/orders/types/limit/test_stop_loss_order.py +0 -0
  392. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/orders/types/limit/test_take_profit_limit_order.py +0 -0
  393. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/orders/types/limit/test_take_profit_order.py +0 -0
  394. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/orders/types/market/__init__.py +0 -0
  395. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/orders/types/market/test_buy_market_order.py +0 -0
  396. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/orders/types/market/test_sell_market_order.py +0 -0
  397. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/orders/types/test_unknown_order.py +0 -0
  398. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/orders/types/trailing/__init__.py +0 -0
  399. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/orders/types/trailing/test_trailing_stop_limit_order.py +0 -0
  400. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/orders/types/trailing/test_trailing_stop_order.py +0 -0
  401. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/portfolios/__init__.py +0 -0
  402. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/portfolios/assets/__init__.py +0 -0
  403. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/portfolios/assets/test_future_asset.py +0 -0
  404. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/portfolios/assets/test_margin_asset.py +0 -0
  405. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/portfolios/assets/test_spot_asset.py +0 -0
  406. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/portfolios/history/__init__.py +0 -0
  407. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/portfolios/history/test_historical_asset_value_factory.py +0 -0
  408. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/portfolios/history/test_historical_portfolio_value_manager.py +0 -0
  409. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/portfolios/test_asset.py +0 -0
  410. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/portfolios/test_portfolio.py +0 -0
  411. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/portfolios/test_portfolio_manager.py +0 -0
  412. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/portfolios/test_portfolio_profitability.py +0 -0
  413. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/portfolios/test_portfolio_value_holder.py +0 -0
  414. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/portfolios/test_value_converter.py +0 -0
  415. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/portfolios/types/__init__.py +0 -0
  416. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/portfolios/types/test_future_portfolio.py +0 -0
  417. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/portfolios/types/test_margin_portfolio.py +0 -0
  418. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/portfolios/types/test_spot_portfolio.py +0 -0
  419. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/positions/__init__.py +0 -0
  420. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/positions/channel/__init__.py +0 -0
  421. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/positions/states/__init__.py +0 -0
  422. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/positions/test_position.py +0 -0
  423. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/positions/test_position_factory.py +0 -0
  424. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/positions/test_positions_manager.py +0 -0
  425. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/positions/types/__init__.py +0 -0
  426. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/positions/types/test_inverse_position.py +0 -0
  427. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/positions/types/test_linear_position.py +0 -0
  428. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/trades/__init__.py +0 -0
  429. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/trades/test_trade_factory.py +0 -0
  430. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/trades/test_trade_manager.py +0 -0
  431. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/trades/test_trade_pnl.py +0 -0
  432. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/trades/test_trade_util.py +0 -0
  433. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/transactions/__init__.py +0 -0
  434. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/transactions/test_transaction_factory.py +0 -0
  435. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/personal_data/transactions/test_transactions_manager.py +0 -0
  436. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/signals/__init__.py +0 -0
  437. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/signals/test_trading_signal_bundle_builder.py +0 -0
  438. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/signals/test_util.py +0 -0
  439. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/test_utils/__init__.py +0 -0
  440. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/test_utils/order_util.py +0 -0
  441. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/test_utils/random_numbers.py +0 -0
  442. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/util/__init__.py +0 -0
  443. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests/util/test_config_util.py +0 -0
  444. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests_additional/__init__.py +0 -0
  445. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests_additional/real_exchanges/__init__.py +0 -0
  446. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests_additional/real_exchanges/real_exchange_tester.py +0 -0
  447. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests_additional/real_exchanges/real_futures_exchange_tester.py +0 -0
  448. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests_additional/real_exchanges/test_ascendex.py +0 -0
  449. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests_additional/real_exchanges/test_binance.py +0 -0
  450. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests_additional/real_exchanges/test_binance_futures.py +0 -0
  451. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests_additional/real_exchanges/test_bingx.py +0 -0
  452. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests_additional/real_exchanges/test_bitfinex.py +0 -0
  453. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests_additional/real_exchanges/test_bitget.py +0 -0
  454. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests_additional/real_exchanges/test_bithumb.py +0 -0
  455. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests_additional/real_exchanges/test_bitmart.py +0 -0
  456. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests_additional/real_exchanges/test_bitso.py +0 -0
  457. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests_additional/real_exchanges/test_bitstamp.py +0 -0
  458. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests_additional/real_exchanges/test_bybit.py +0 -0
  459. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests_additional/real_exchanges/test_bybit_futures.py +0 -0
  460. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests_additional/real_exchanges/test_coinbase.py +0 -0
  461. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests_additional/real_exchanges/test_coinex.py +0 -0
  462. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests_additional/real_exchanges/test_cryptocom.py +0 -0
  463. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests_additional/real_exchanges/test_gateio.py +0 -0
  464. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests_additional/real_exchanges/test_hitbtc.py +0 -0
  465. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests_additional/real_exchanges/test_hollaex.py +0 -0
  466. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests_additional/real_exchanges/test_htx.py +0 -0
  467. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests_additional/real_exchanges/test_kraken.py +0 -0
  468. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests_additional/real_exchanges/test_kucoin.py +0 -0
  469. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests_additional/real_exchanges/test_kucoin_futures.py +0 -0
  470. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests_additional/real_exchanges/test_mexc.py +0 -0
  471. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests_additional/real_exchanges/test_ndax.py +0 -0
  472. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests_additional/real_exchanges/test_okcoin.py +0 -0
  473. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests_additional/real_exchanges/test_okx.py +0 -0
  474. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests_additional/real_exchanges/test_okx_futures.py +0 -0
  475. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests_additional/real_exchanges/test_phemex.py +0 -0
  476. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests_additional/real_exchanges/test_poloniex.py +0 -0
  477. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests_additional/real_exchanges/test_upbit.py +0 -0
  478. {OctoBot-Trading-2.4.123 → OctoBot-Trading-2.4.126}/tests_additional/real_exchanges/test_wavesexchange.py +0 -0
@@ -4,6 +4,19 @@ 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.126] - 2023-11-24
8
+ ### Updated
9
+ [Backtesting] make backtesting more flexible for missing data
10
+
11
+ ## [2.4.125] - 2023-11-23
12
+ ### Added
13
+ [TradingMode] historical config
14
+
15
+ ## [2.4.124] - 2024-11-17
16
+ ### Updated
17
+ [Exchanges] Handle limit order in converter
18
+ [Exchanges] Handle more ccxt missed orders
19
+
7
20
  ## [2.4.123] - 2024-11-16
8
21
  ### Updated
9
22
  [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.123
3
+ Version: 2.4.126
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.123](https://github.com/Drakkar-Software/OctoBot-Trading/blob/master/CHANGELOG.md)
19
+ # OctoBot-Trading [2.4.126](https://github.com/Drakkar-Software/OctoBot-Trading/blob/master/CHANGELOG.md)
20
20
  [![Codacy Badge](https://api.codacy.com/project/badge/Grade/903b6b22bceb4661b608a86fea655f69)](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
  [![PyPI](https://img.shields.io/pypi/v/OctoBot-Trading.svg)](https://pypi.python.org/pypi/OctoBot-Trading/)
22
22
  [![Coverage Status](https://coveralls.io/repos/github/Drakkar-Software/OctoBot-Trading/badge.svg?branch=master)](https://coveralls.io/github/Drakkar-Software/OctoBot-Trading?branch=master)
@@ -1,7 +1,7 @@
1
1
  numpy==1.26.3
2
2
  OctoBot-Backtesting<1.10,>=1.9
3
3
  Async-Channel<2.3,>=2.2
4
- OctoBot-Commons<1.10,>=1.9.43
4
+ OctoBot-Commons<1.10,>=1.9.64
5
5
  OctoBot-Tentacles-Manager<2.10,>=2.9
6
6
  trading-backend>=1.2.7
7
7
  ccxt==4.3.85
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: OctoBot-Trading
3
- Version: 2.4.123
3
+ Version: 2.4.126
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.123](https://github.com/Drakkar-Software/OctoBot-Trading/blob/master/CHANGELOG.md)
19
+ # OctoBot-Trading [2.4.126](https://github.com/Drakkar-Software/OctoBot-Trading/blob/master/CHANGELOG.md)
20
20
  [![Codacy Badge](https://api.codacy.com/project/badge/Grade/903b6b22bceb4661b608a86fea655f69)](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
  [![PyPI](https://img.shields.io/pypi/v/OctoBot-Trading.svg)](https://pypi.python.org/pypi/OctoBot-Trading/)
22
22
  [![Coverage Status](https://coveralls.io/repos/github/Drakkar-Software/OctoBot-Trading/badge.svg?branch=master)](https://coveralls.io/github/Drakkar-Software/OctoBot-Trading?branch=master)
@@ -1,4 +1,4 @@
1
- # OctoBot-Trading [2.4.123](https://github.com/Drakkar-Software/OctoBot-Trading/blob/master/CHANGELOG.md)
1
+ # OctoBot-Trading [2.4.126](https://github.com/Drakkar-Software/OctoBot-Trading/blob/master/CHANGELOG.md)
2
2
  [![Codacy Badge](https://api.codacy.com/project/badge/Grade/903b6b22bceb4661b608a86fea655f69)](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
  [![PyPI](https://img.shields.io/pypi/v/OctoBot-Trading.svg)](https://pypi.python.org/pypi/OctoBot-Trading/)
4
4
  [![Coverage Status](https://coveralls.io/repos/github/Drakkar-Software/OctoBot-Trading/badge.svg?branch=master)](https://coveralls.io/github/Drakkar-Software/OctoBot-Trading?branch=master)
@@ -15,4 +15,4 @@
15
15
  # License along with this library.
16
16
 
17
17
  PROJECT_NAME = "OctoBot-Trading"
18
- VERSION = "2.4.123" # major.minor.revision
18
+ VERSION = "2.4.126" # major.minor.revision
@@ -15,13 +15,19 @@
15
15
  # License along with this library.
16
16
 
17
17
 
18
- class MissingFunds(Exception):
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(Exception):
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(Exception):
42
+ class OrderCreationError(OctoBotExchangeError):
37
43
  """
38
44
  Raised upon a failed order creation
39
45
  """
40
46
 
41
47
 
42
- class OrderEditError(Exception):
48
+ class OrderEditError(OctoBotExchangeError):
43
49
  """
44
50
  Raised upon a failed order edition
45
51
  """
46
52
 
47
53
 
48
- class OrderCancelError(Exception):
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(Exception):
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(Exception):
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(Exception):
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(Exception):
120
+ class AuthenticationError(OctoBotExchangeError):
115
121
  """
116
122
  Raised when an exchange failed to authenticate
117
123
  """
118
124
 
119
125
 
120
- class ExchangeCompliancyError(Exception):
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(Exception):
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} : {e}"
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 octobot_trading.errors as errors
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(e, True, f"Failed to update kline data in {time_frame} : {e}")
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(e, True, f"Failed to update ohlcv data for {pair} on {time_frame} : {e}")
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 octobot_trading.errors as errors
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(e, True, f"Fail to update order book : {e}")
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(e, True, f"Fail to initialize recent trades : {e}")
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(e, True, f"Fail to update recent trades : {e}")
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(e, True, f"Fail to update ticker : {e}")
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(str(e))
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
 
@@ -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}) (attempt {attempt}) ({err})"
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(f"Failed to create order : {error.__class__.__name__} {error}: ({order_desc})")
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(
@@ -105,18 +105,18 @@ class ExchangeConfig(util.Initializable):
105
105
  if self.exchange_manager.is_future \
106
106
  else trading_constants.DEFAULT_INITIALIZATION_EVENT_TOPICS:
107
107
  if topic in (
108
- commons_enums.InitializationEventExchangeTopics.POSITIONS,
109
- commons_enums.InitializationEventExchangeTopics.TRADES,
110
- commons_enums.InitializationEventExchangeTopics.ORDERS,
111
- commons_enums.InitializationEventExchangeTopics.CONTRACTS,
112
- commons_enums.InitializationEventExchangeTopics.CANDLES,
113
- commons_enums.InitializationEventExchangeTopics.PRICE,
114
- commons_enums.InitializationEventExchangeTopics.ORDER_BOOK,
115
- commons_enums.InitializationEventExchangeTopics.FUNDING,
108
+ commons_enums.InitializationEventExchangeTopics.POSITIONS,
109
+ commons_enums.InitializationEventExchangeTopics.TRADES,
110
+ commons_enums.InitializationEventExchangeTopics.ORDERS,
111
+ commons_enums.InitializationEventExchangeTopics.CONTRACTS,
112
+ commons_enums.InitializationEventExchangeTopics.CANDLES,
113
+ commons_enums.InitializationEventExchangeTopics.PRICE,
114
+ commons_enums.InitializationEventExchangeTopics.ORDER_BOOK,
115
+ commons_enums.InitializationEventExchangeTopics.FUNDING,
116
116
  ):
117
117
  for symbol in self.traded_symbol_pairs:
118
118
  if topic in (
119
- commons_enums.InitializationEventExchangeTopics.CANDLES,
119
+ commons_enums.InitializationEventExchangeTopics.CANDLES,
120
120
  ):
121
121
  for time_frame in self.traded_time_frames:
122
122
  tree_provider.create_event_at_path(
@@ -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__} on {err}"
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__} on {e}"
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(f"Failed to get_kline_price {e}")
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(f"Failed to get_order_book {e}")
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(f"Failed to get_order_books {e}")
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(f"Failed to get_recent_trades {e}")
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(f"Failed to get_price_ticker {e}")
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(f"Failed to get_all_currencies_price_ticker {e}")
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(e) from e
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, True, f"Unexpected error when cancelling all {symbol} orders | {e} ({e.__class__.__name__})"
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(e) from e
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(e) from e
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(e, True, f"Unexpected error when cancelling order with exchange id: "
668
- f"{exchange_order_id} failed to cancel | {e} ({e.__class__.__name__})")
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(f"Request timeout: {e}") from e
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
@@ -46,6 +46,7 @@ class ExchangeSimulatorConnector(abstract_exchange.AbstractExchange):
46
46
 
47
47
  self.is_authenticated = False
48
48
  self._forced_market_statuses: dict = None
49
+ self._missing_market_statuses: set = set()
49
50
 
50
51
  async def initialize_impl(self):
51
52
  self.exchange_importers = self.backtesting.get_importers(importers.ExchangeDataImporter)
@@ -150,7 +151,15 @@ class ExchangeSimulatorConnector(abstract_exchange.AbstractExchange):
150
151
  ).market_status
151
152
  return self._forced_market_statuses[symbol]
152
153
  except KeyError:
153
- raise errors.NotSupported
154
+ self._missing_market_statuses.add(symbol)
155
+ if len(self._missing_market_statuses) >= len(self.symbols) - 1:
156
+ # issue: almost all market statuses are missing
157
+ raise errors.NotSupported(
158
+ f"Missing too many market statuses: {self._missing_market_statuses}, "
159
+ f"traded symbols: {self.symbols}"
160
+ )
161
+ else:
162
+ self.logger.warning(f"Missing cached market status for {symbol}: using default market status")
154
163
  return self._get_default_market_status()
155
164
 
156
165
  def _get_default_market_status(self):