OctoBot-Trading 2.4.204__tar.gz → 2.4.206__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 (513) hide show
  1. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/CHANGELOG.md +9 -0
  2. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206/OctoBot_Trading.egg-info}/PKG-INFO +2 -2
  3. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/OctoBot_Trading.egg-info/SOURCES.txt +1 -0
  4. {OctoBot-Trading-2.4.204/OctoBot_Trading.egg-info → OctoBot-Trading-2.4.206}/PKG-INFO +2 -2
  5. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/README.md +1 -1
  6. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/__init__.py +1 -1
  7. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/api/portfolio.py +5 -8
  8. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchanges/connectors/ccxt/ccxt_connector.py +0 -1
  9. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchanges/traders/trader.py +16 -3
  10. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/__init__.py +2 -0
  11. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/exchange_personal_data.py +6 -0
  12. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/channel/orders_updater.py +1 -1
  13. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/channel/orders_updater_simulator.py +2 -1
  14. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/order.py +29 -12
  15. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/order_state.py +4 -1
  16. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/order_util.py +3 -0
  17. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/orders_manager.py +6 -6
  18. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/states/cancel_order_state.py +5 -2
  19. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/states/close_order_state.py +5 -2
  20. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/states/fill_order_state.py +5 -2
  21. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/states/open_order_state.py +13 -7
  22. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/states/order_state_factory.py +12 -5
  23. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/states/pending_creation_order_state.py +5 -2
  24. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/portfolios/__init__.py +6 -2
  25. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/portfolios/portfolio_manager.py +29 -8
  26. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/portfolios/portfolio_util.py +198 -40
  27. OctoBot-Trading-2.4.206/octobot_trading/personal_data/portfolios/resolved_orders_portfolio_delta.py +218 -0
  28. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/portfolios/sub_portfolio_data.py +65 -19
  29. OctoBot-Trading-2.4.206/tests/personal_data/orders/states/__init__.py +74 -0
  30. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/orders/states/test_cancel_order_state.py +9 -0
  31. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/orders/states/test_close_order_state.py +11 -2
  32. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/orders/states/test_fill_order_state.py +9 -0
  33. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/orders/states/test_open_order_state.py +10 -0
  34. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/orders/states/test_pending_creation_chained_order_state.py +15 -0
  35. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/orders/states/test_pending_creation_order_state.py +15 -0
  36. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/orders/test_order.py +53 -2
  37. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/portfolios/test_portfolio_manager.py +26 -4
  38. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/portfolios/test_portfolio_util.py +540 -94
  39. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/portfolios/test_sub_portfolio_data.py +26 -4
  40. OctoBot-Trading-2.4.204/tests_additional/__init__.py +0 -15
  41. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/LICENSE +0 -0
  42. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/MANIFEST.in +0 -0
  43. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/OctoBot_Trading.egg-info/dependency_links.txt +0 -0
  44. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/OctoBot_Trading.egg-info/not-zip-safe +0 -0
  45. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/OctoBot_Trading.egg-info/requires.txt +0 -0
  46. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/OctoBot_Trading.egg-info/top_level.txt +0 -0
  47. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/api/__init__.py +0 -0
  48. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/api/channels.py +0 -0
  49. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/api/contracts.py +0 -0
  50. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/api/exchange.py +0 -0
  51. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/api/modes.py +0 -0
  52. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/api/orders.py +0 -0
  53. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/api/positions.py +0 -0
  54. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/api/profitability.py +0 -0
  55. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/api/storage.py +0 -0
  56. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/api/symbol_data.py +0 -0
  57. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/api/trader.py +0 -0
  58. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/api/trades.py +0 -0
  59. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/constants.py +0 -0
  60. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/enums.py +0 -0
  61. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/errors.py +0 -0
  62. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_channel.py +0 -0
  63. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/__init__.py +0 -0
  64. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/contracts/__init__.py +0 -0
  65. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/contracts/contract_factory.py +0 -0
  66. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/contracts/future_contract.py +0 -0
  67. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/contracts/margin_contract.py +0 -0
  68. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/exchange_symbol_data.py +0 -0
  69. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/exchange_symbols_data.py +0 -0
  70. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/funding/__init__.py +0 -0
  71. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/funding/channel/__init__.py +0 -0
  72. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/funding/channel/funding.py +0 -0
  73. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/funding/channel/funding_updater.py +0 -0
  74. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/funding/channel/funding_updater_simulator.py +0 -0
  75. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/funding/funding_manager.py +0 -0
  76. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/kline/__init__.py +0 -0
  77. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/kline/channel/__init__.py +0 -0
  78. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/kline/channel/kline.py +0 -0
  79. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/kline/channel/kline_updater.py +0 -0
  80. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/kline/channel/kline_updater_simulator.py +0 -0
  81. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/kline/kline_manager.py +0 -0
  82. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/ohlcv/__init__.py +0 -0
  83. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/ohlcv/candles_adapter.py +0 -0
  84. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/ohlcv/candles_manager.py +0 -0
  85. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/ohlcv/channel/__init__.py +0 -0
  86. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/ohlcv/channel/ohlcv.py +0 -0
  87. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/ohlcv/channel/ohlcv_updater.py +0 -0
  88. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/ohlcv/channel/ohlcv_updater_simulator.py +0 -0
  89. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/ohlcv/preloaded_candles_manager.py +0 -0
  90. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/order_book/__init__.py +0 -0
  91. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/order_book/channel/__init__.py +0 -0
  92. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/order_book/channel/order_book.py +0 -0
  93. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/order_book/channel/order_book_updater.py +0 -0
  94. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/order_book/channel/order_book_updater_simulator.py +0 -0
  95. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/order_book/order_book_manager.py +0 -0
  96. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/prices/__init__.py +0 -0
  97. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/prices/channel/__init__.py +0 -0
  98. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/prices/channel/price.py +0 -0
  99. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/prices/channel/prices_updater.py +0 -0
  100. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/prices/channel/prices_updater_simulator.py +0 -0
  101. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/prices/price_events_manager.py +0 -0
  102. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/prices/prices_manager.py +0 -0
  103. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/recent_trades/__init__.py +0 -0
  104. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/recent_trades/channel/__init__.py +0 -0
  105. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/recent_trades/channel/recent_trade.py +0 -0
  106. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/recent_trades/channel/recent_trade_updater.py +0 -0
  107. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/recent_trades/channel/recent_trade_updater_simulator.py +0 -0
  108. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/recent_trades/recent_trades_manager.py +0 -0
  109. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/ticker/__init__.py +0 -0
  110. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/ticker/channel/__init__.py +0 -0
  111. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/ticker/channel/ticker.py +0 -0
  112. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/ticker/channel/ticker_updater.py +0 -0
  113. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/ticker/channel/ticker_updater_simulator.py +0 -0
  114. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchange_data/ticker/ticker_manager.py +0 -0
  115. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchanges/__init__.py +0 -0
  116. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchanges/abstract_exchange.py +0 -0
  117. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchanges/abstract_websocket_exchange.py +0 -0
  118. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchanges/adapters/__init__.py +0 -0
  119. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchanges/adapters/abstract_adapter.py +0 -0
  120. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchanges/config/__init__.py +0 -0
  121. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchanges/config/backtesting_exchange_config.py +0 -0
  122. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchanges/config/exchange_config_data.py +0 -0
  123. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchanges/config/exchange_credentials_data.py +0 -0
  124. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchanges/config/proxy_config.py +0 -0
  125. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchanges/connectors/__init__.py +0 -0
  126. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchanges/connectors/ccxt/__init__.py +0 -0
  127. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchanges/connectors/ccxt/ccxt_adapter.py +0 -0
  128. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchanges/connectors/ccxt/ccxt_client_util.py +0 -0
  129. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchanges/connectors/ccxt/ccxt_clients_cache.py +0 -0
  130. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchanges/connectors/ccxt/ccxt_websocket_connector.py +0 -0
  131. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchanges/connectors/ccxt/constants.py +0 -0
  132. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchanges/connectors/ccxt/enums.py +0 -0
  133. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchanges/connectors/simulator/__init__.py +0 -0
  134. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchanges/connectors/simulator/ccxt_client_simulation.py +0 -0
  135. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchanges/connectors/simulator/exchange_simulator_adapter.py +0 -0
  136. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchanges/connectors/simulator/exchange_simulator_connector.py +0 -0
  137. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchanges/connectors/util.py +0 -0
  138. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchanges/exchange_builder.py +0 -0
  139. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchanges/exchange_channels.py +0 -0
  140. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchanges/exchange_details.py +0 -0
  141. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchanges/exchange_factory.py +0 -0
  142. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchanges/exchange_manager.py +0 -0
  143. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchanges/exchange_websocket_factory.py +0 -0
  144. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchanges/exchanges.py +0 -0
  145. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchanges/implementations/__init__.py +0 -0
  146. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchanges/implementations/default_rest_exchange.py +0 -0
  147. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchanges/implementations/default_websocket_exchange.py +0 -0
  148. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchanges/implementations/exchange_simulator.py +0 -0
  149. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchanges/traders/__init__.py +0 -0
  150. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchanges/traders/trader_simulator.py +0 -0
  151. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchanges/types/__init__.py +0 -0
  152. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchanges/types/rest_exchange.py +0 -0
  153. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchanges/types/websocket_exchange.py +0 -0
  154. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchanges/util/__init__.py +0 -0
  155. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchanges/util/exchange_market_status_fixer.py +0 -0
  156. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchanges/util/exchange_util.py +0 -0
  157. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchanges/util/symbol_details.py +0 -0
  158. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/exchanges/util/websockets_util.py +0 -0
  159. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/modes/__init__.py +0 -0
  160. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/modes/abstract_trading_mode.py +0 -0
  161. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/modes/channel/__init__.py +0 -0
  162. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/modes/channel/abstract_mode_consumer.py +0 -0
  163. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/modes/channel/abstract_mode_producer.py +0 -0
  164. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/modes/channel/mode.py +0 -0
  165. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/modes/mode_activity.py +0 -0
  166. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/modes/mode_config.py +0 -0
  167. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/modes/modes_factory.py +0 -0
  168. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/modes/modes_util.py +0 -0
  169. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/modes/script_keywords/__init__.py +0 -0
  170. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/modes/script_keywords/basic_keywords/__init__.py +0 -0
  171. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/modes/script_keywords/basic_keywords/account_balance.py +0 -0
  172. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/modes/script_keywords/basic_keywords/amount.py +0 -0
  173. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/modes/script_keywords/basic_keywords/configuration.py +0 -0
  174. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/modes/script_keywords/basic_keywords/position.py +0 -0
  175. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/modes/script_keywords/basic_keywords/price.py +0 -0
  176. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/modes/script_keywords/basic_keywords/run_persistence.py +0 -0
  177. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/modes/script_keywords/basic_keywords/trading_signals.py +0 -0
  178. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/modes/script_keywords/basic_keywords/user_inputs.py +0 -0
  179. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/modes/script_keywords/context_management.py +0 -0
  180. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/modes/script_keywords/dsl/__init__.py +0 -0
  181. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/modes/script_keywords/dsl/quantity.py +0 -0
  182. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/modes/script_keywords/dsl/values.py +0 -0
  183. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/modes/scripted_trading_mode/__init__.py +0 -0
  184. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/modes/scripted_trading_mode/abstract_scripted_trading_mode.py +0 -0
  185. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/octobot_channel_consumer.py +0 -0
  186. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/__init__.py +0 -0
  187. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/active_order_swap_strategies/__init__.py +0 -0
  188. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/active_order_swap_strategies/active_order_swap_strategy.py +0 -0
  189. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/active_order_swap_strategies/stop_first_active_order_swap_strategy.py +0 -0
  190. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/active_order_swap_strategies/take_profit_first_active_order_swap_strategy.py +0 -0
  191. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/channel/__init__.py +0 -0
  192. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/channel/orders.py +0 -0
  193. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/decimal_order_adapter.py +0 -0
  194. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/groups/__init__.py +0 -0
  195. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/groups/balanced_take_profit_and_stop_order_group.py +0 -0
  196. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/groups/group_util.py +0 -0
  197. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/groups/one_cancels_the_other_order_group.py +0 -0
  198. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/groups/trailing_on_filled_tp_balanced_order_group.py +0 -0
  199. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/order_adapter.py +0 -0
  200. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/order_factory.py +0 -0
  201. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/order_group.py +0 -0
  202. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/orders_storage_operations.py +0 -0
  203. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/states/__init__.py +0 -0
  204. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/states/pending_creation_chained_order_state.py +0 -0
  205. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/trailing_profiles/__init__.py +0 -0
  206. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/trailing_profiles/filled_take_profit_trailing_profile.py +0 -0
  207. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/trailing_profiles/trailing_price_step.py +0 -0
  208. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/trailing_profiles/trailing_profile.py +0 -0
  209. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/trailing_profiles/trailing_profile_factory.py +0 -0
  210. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/trailing_profiles/trailing_profile_types.py +0 -0
  211. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/triggers/__init__.py +0 -0
  212. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/triggers/base_trigger.py +0 -0
  213. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/triggers/price_trigger.py +0 -0
  214. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/types/__init__.py +0 -0
  215. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/types/limit/__init__.py +0 -0
  216. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/types/limit/buy_limit_order.py +0 -0
  217. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/types/limit/limit_order.py +0 -0
  218. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/types/limit/sell_limit_order.py +0 -0
  219. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/types/limit/stop_loss_limit_order.py +0 -0
  220. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/types/limit/stop_loss_order.py +0 -0
  221. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/types/limit/take_profit_limit_order.py +0 -0
  222. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/types/limit/take_profit_order.py +0 -0
  223. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/types/market/__init__.py +0 -0
  224. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/types/market/buy_market_order.py +0 -0
  225. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/types/market/market_order.py +0 -0
  226. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/types/market/sell_market_order.py +0 -0
  227. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/types/trailing/__init__.py +0 -0
  228. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/types/trailing/trailing_stop_limit_order.py +0 -0
  229. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/types/trailing/trailing_stop_order.py +0 -0
  230. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/types/unknown_order.py +0 -0
  231. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/orders/types/unsupported_order.py +0 -0
  232. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/portfolios/asset.py +0 -0
  233. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/portfolios/assets/__init__.py +0 -0
  234. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/portfolios/assets/future_asset.py +0 -0
  235. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/portfolios/assets/margin_asset.py +0 -0
  236. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/portfolios/assets/spot_asset.py +0 -0
  237. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/portfolios/channel/__init__.py +0 -0
  238. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/portfolios/channel/balance.py +0 -0
  239. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/portfolios/channel/balance_updater.py +0 -0
  240. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/portfolios/channel/balance_updater_simulator.py +0 -0
  241. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/portfolios/history/__init__.py +0 -0
  242. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/portfolios/history/historical_asset_value.py +0 -0
  243. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/portfolios/history/historical_asset_value_factory.py +0 -0
  244. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/portfolios/history/historical_portfolio_value_manager.py +0 -0
  245. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/portfolios/portfolio.py +0 -0
  246. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/portfolios/portfolio_factory.py +0 -0
  247. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/portfolios/portfolio_profitability.py +0 -0
  248. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/portfolios/portfolio_value_holder.py +0 -0
  249. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/portfolios/sub_portfolio.py +0 -0
  250. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/portfolios/types/__init__.py +0 -0
  251. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/portfolios/types/future_portfolio.py +0 -0
  252. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/portfolios/types/margin_portfolio.py +0 -0
  253. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/portfolios/types/spot_portfolio.py +0 -0
  254. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/portfolios/value_converter.py +0 -0
  255. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/positions/__init__.py +0 -0
  256. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/positions/channel/__init__.py +0 -0
  257. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/positions/channel/positions.py +0 -0
  258. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/positions/channel/positions_updater.py +0 -0
  259. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/positions/channel/positions_updater_simulator.py +0 -0
  260. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/positions/position.py +0 -0
  261. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/positions/position_factory.py +0 -0
  262. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/positions/position_state.py +0 -0
  263. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/positions/position_util.py +0 -0
  264. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/positions/positions_manager.py +0 -0
  265. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/positions/states/__init__.py +0 -0
  266. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/positions/states/active_position_state.py +0 -0
  267. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/positions/states/idle_position_state.py +0 -0
  268. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/positions/states/liquidate_position_state.py +0 -0
  269. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/positions/states/position_state_factory.py +0 -0
  270. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/positions/types/__init__.py +0 -0
  271. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/positions/types/inverse_position.py +0 -0
  272. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/positions/types/linear_position.py +0 -0
  273. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/state.py +0 -0
  274. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/trades/__init__.py +0 -0
  275. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/trades/channel/__init__.py +0 -0
  276. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/trades/channel/trades.py +0 -0
  277. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/trades/channel/trades_updater.py +0 -0
  278. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/trades/trade.py +0 -0
  279. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/trades/trade_factory.py +0 -0
  280. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/trades/trade_pnl.py +0 -0
  281. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/trades/trades_manager.py +0 -0
  282. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/trades/trades_util.py +0 -0
  283. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/transactions/__init__.py +0 -0
  284. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/transactions/transaction.py +0 -0
  285. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/transactions/transaction_factory.py +0 -0
  286. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/transactions/transactions_manager.py +0 -0
  287. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/transactions/types/__init__.py +0 -0
  288. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/transactions/types/blockchain_transaction.py +0 -0
  289. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/transactions/types/fee_transaction.py +0 -0
  290. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/transactions/types/realised_pnl_transaction.py +0 -0
  291. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/personal_data/transactions/types/transfer_transaction.py +0 -0
  292. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/signals/__init__.py +0 -0
  293. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/signals/channel/__init__.py +0 -0
  294. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/signals/channel/remote_trading_signal.py +0 -0
  295. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/signals/channel/remote_trading_signal_channel_factory.py +0 -0
  296. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/signals/channel/signal_producer.py +0 -0
  297. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/signals/signal_creation.py +0 -0
  298. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/signals/trading_signal_bundle_builder.py +0 -0
  299. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/signals/util.py +0 -0
  300. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/storage/__init__.py +0 -0
  301. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/storage/abstract_storage.py +0 -0
  302. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/storage/candles_storage.py +0 -0
  303. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/storage/orders_storage.py +0 -0
  304. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/storage/portfolio_storage.py +0 -0
  305. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/storage/storage_manager.py +0 -0
  306. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/storage/trades_storage.py +0 -0
  307. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/storage/transactions_storage.py +0 -0
  308. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/storage/util.py +0 -0
  309. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/supervisors/__init__.py +0 -0
  310. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/supervisors/abstract_portfolio_supervisor.py +0 -0
  311. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/supervisors/abstract_supervisor.py +0 -0
  312. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/util/__init__.py +0 -0
  313. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/util/config_util.py +0 -0
  314. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/util/initializable.py +0 -0
  315. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/util/initialization_util.py +0 -0
  316. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/util/simulator_updater_utils.py +0 -0
  317. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/util/test_tools/__init__.py +0 -0
  318. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/util/test_tools/exchange_data.py +0 -0
  319. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/util/test_tools/exchanges_test_tools.py +0 -0
  320. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/util/test_tools/spot_rest_exchange_test_tools.py +0 -0
  321. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/octobot_trading/util/test_tools/websocket_test_tools.py +0 -0
  322. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/requirements.txt +0 -0
  323. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/setup.cfg +0 -0
  324. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/setup.py +0 -0
  325. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/api/__init__.py +0 -0
  326. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/api/test_channels.py +0 -0
  327. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/api/test_exchange.py +0 -0
  328. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/api/test_modes.py +0 -0
  329. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/api/test_orders.py +0 -0
  330. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/api/test_portfolio.py +0 -0
  331. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/api/test_profitability.py +0 -0
  332. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/api/test_symbol_data.py +0 -0
  333. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/api/test_trader.py +0 -0
  334. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/api/test_trades.py +0 -0
  335. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/cli/__init__.py +0 -0
  336. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/exchange_data/__init__.py +0 -0
  337. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/exchange_data/contracts/__init__.py +0 -0
  338. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/exchange_data/contracts/test_future_contract.py +0 -0
  339. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/exchange_data/contracts/test_margin_contract.py +0 -0
  340. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/exchange_data/funding/__init__.py +0 -0
  341. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/exchange_data/funding/test_funding_manager.py +0 -0
  342. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/exchange_data/kline/__init__.py +0 -0
  343. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/exchange_data/kline/test_kline_manager.py +0 -0
  344. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/exchange_data/ohlcv/__init__.py +0 -0
  345. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/exchange_data/ohlcv/test_candles_adapter.py +0 -0
  346. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/exchange_data/ohlcv/test_candles_manager.py +0 -0
  347. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/exchange_data/order_book/__init__.py +0 -0
  348. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/exchange_data/order_book/test_order_book_manager.py +0 -0
  349. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/exchange_data/prices/__init__.py +0 -0
  350. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/exchange_data/prices/test_price_events_manager.py +0 -0
  351. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/exchange_data/prices/test_prices_manager.py +0 -0
  352. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/exchange_data/recent_trades/__init__.py +0 -0
  353. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/exchange_data/recent_trades/test_recent_trades_manager.py +0 -0
  354. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/exchange_data/test_exchange_symbols_data.py +0 -0
  355. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/exchange_data/ticker/__init__.py +0 -0
  356. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/exchange_data/ticker/test_ticker_manager.py +0 -0
  357. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/exchanges/__init__.py +0 -0
  358. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/exchanges/connectors/__init__.py +0 -0
  359. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/exchanges/connectors/ccxt/__init__.py +0 -0
  360. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/exchanges/connectors/ccxt/mock_exchanges_data.py +0 -0
  361. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/exchanges/connectors/ccxt/test_ccxt_connector.py +0 -0
  362. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/exchanges/connectors/test_util.py +0 -0
  363. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/exchanges/implementations/__init__.py +0 -0
  364. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/exchanges/implementations/test_default_rest_exchange.py +0 -0
  365. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/exchanges/implementations/test_default_websocket_exchange.py +0 -0
  366. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/exchanges/test_abstract_exchange.py +0 -0
  367. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/exchanges/test_abstract_websocket_exchange.py +0 -0
  368. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/exchanges/test_exchange_builder.py +0 -0
  369. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/exchanges/test_exchange_config_data.py +0 -0
  370. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/exchanges/test_exchange_factory.py +0 -0
  371. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/exchanges/test_exchange_manager.py +0 -0
  372. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/exchanges/test_exchange_simulator.py +0 -0
  373. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/exchanges/test_exchanges.py +0 -0
  374. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/exchanges/traders/__init__.py +0 -0
  375. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/exchanges/traders/test_trader.py +0 -0
  376. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/exchanges/types/__init__.py +0 -0
  377. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/exchanges/types/test_websocket_exchange.py +0 -0
  378. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/exchanges/util/__init__.py +0 -0
  379. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/exchanges/util/test_exchange_market_status_fixer.py +0 -0
  380. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/exchanges/util/test_exchange_util.py +0 -0
  381. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/modes/__init__.py +0 -0
  382. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/modes/script_keywords/__init__.py +0 -0
  383. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/modes/script_keywords/basic_keywords/__init__.py +0 -0
  384. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/modes/script_keywords/basic_keywords/test_account_balance.py +0 -0
  385. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/modes/script_keywords/basic_keywords/test_amount.py +0 -0
  386. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/modes/script_keywords/basic_keywords/test_position.py +0 -0
  387. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/modes/script_keywords/basic_keywords/test_price.py +0 -0
  388. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/modes/script_keywords/dsl/__init__.py +0 -0
  389. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/modes/script_keywords/dsl/test_quantity.py +0 -0
  390. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/modes/test_abstract_mode_consumer.py +0 -0
  391. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/modes/test_abstract_trading_mode.py +0 -0
  392. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/modes/test_modes_util.py +0 -0
  393. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/__init__.py +0 -0
  394. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/orders/__init__.py +0 -0
  395. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/orders/active_order_swap_strategies/__init__.py +0 -0
  396. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/orders/active_order_swap_strategies/test_active_order_swap_strategy.py +0 -0
  397. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/orders/active_order_swap_strategies/test_stop_first_active_order_swap_strategy.py +0 -0
  398. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/orders/active_order_swap_strategies/test_take_profit_first_active_order_swap_strategy.py +0 -0
  399. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/orders/groups/__init__.py +0 -0
  400. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/orders/groups/test_balanced_take_profit_and_stop_order_group.py +0 -0
  401. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/orders/groups/test_group_util.py +0 -0
  402. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/orders/groups/test_one_cancels_the_other_order_group.py +0 -0
  403. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/orders/groups/test_trailing_on_filled_tp_balanced_order_group.py +0 -0
  404. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/orders/states/test_order_state.py +0 -0
  405. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/orders/states/test_order_state_factory.py +0 -0
  406. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/orders/test_decimal_order_adapter.py +0 -0
  407. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/orders/test_double_filled_order.py +0 -0
  408. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/orders/test_order_adapter.py +0 -0
  409. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/orders/test_order_factory.py +0 -0
  410. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/orders/test_order_util.py +0 -0
  411. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/orders/test_orders_manager.py +0 -0
  412. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/orders/test_orders_storage_operations.py +0 -0
  413. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/orders/trailing_profiles/__init__.py +0 -0
  414. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/orders/trailing_profiles/test_filled_take_profit_trailing_profile.py +0 -0
  415. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/orders/trailing_profiles/test_trailing_profile_factory.py +0 -0
  416. {OctoBot-Trading-2.4.204/tests/personal_data/orders/states → OctoBot-Trading-2.4.206/tests/personal_data/orders/triggers}/__init__.py +0 -0
  417. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/orders/triggers/test_base_trigger.py +0 -0
  418. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/orders/triggers/test_price_trigger.py +0 -0
  419. {OctoBot-Trading-2.4.204/tests/personal_data/orders/triggers → OctoBot-Trading-2.4.206/tests/personal_data/orders/types}/__init__.py +0 -0
  420. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/orders/types/limit/__init__.py +0 -0
  421. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/orders/types/limit/test_buy_limit_order.py +0 -0
  422. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/orders/types/limit/test_limit_order.py +0 -0
  423. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/orders/types/limit/test_sell_limit_order.py +0 -0
  424. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/orders/types/limit/test_stop_loss_limit_order.py +0 -0
  425. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/orders/types/limit/test_stop_loss_order.py +0 -0
  426. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/orders/types/limit/test_take_profit_limit_order.py +0 -0
  427. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/orders/types/limit/test_take_profit_order.py +0 -0
  428. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/orders/types/market/__init__.py +0 -0
  429. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/orders/types/market/test_buy_market_order.py +0 -0
  430. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/orders/types/market/test_sell_market_order.py +0 -0
  431. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/orders/types/test_unknown_order.py +0 -0
  432. {OctoBot-Trading-2.4.204/tests/personal_data/orders/types → OctoBot-Trading-2.4.206/tests/personal_data/orders/types/trailing}/__init__.py +0 -0
  433. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/orders/types/trailing/test_trailing_stop_limit_order.py +0 -0
  434. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/orders/types/trailing/test_trailing_stop_order.py +0 -0
  435. {OctoBot-Trading-2.4.204/tests/personal_data/orders/types/trailing → OctoBot-Trading-2.4.206/tests/personal_data/portfolios}/__init__.py +0 -0
  436. {OctoBot-Trading-2.4.204/tests/personal_data/portfolios → OctoBot-Trading-2.4.206/tests/personal_data/portfolios/assets}/__init__.py +0 -0
  437. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/portfolios/assets/test_future_asset.py +0 -0
  438. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/portfolios/assets/test_margin_asset.py +0 -0
  439. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/portfolios/assets/test_spot_asset.py +0 -0
  440. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/portfolios/history/__init__.py +0 -0
  441. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/portfolios/history/test_historical_asset_value_factory.py +0 -0
  442. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/portfolios/history/test_historical_portfolio_value_manager.py +0 -0
  443. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/portfolios/test_asset.py +0 -0
  444. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/portfolios/test_portfolio.py +0 -0
  445. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/portfolios/test_portfolio_profitability.py +0 -0
  446. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/portfolios/test_portfolio_value_holder.py +0 -0
  447. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/portfolios/test_value_converter.py +0 -0
  448. {OctoBot-Trading-2.4.204/tests/personal_data/portfolios/assets → OctoBot-Trading-2.4.206/tests/personal_data/portfolios/types}/__init__.py +0 -0
  449. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/portfolios/types/test_future_portfolio.py +0 -0
  450. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/portfolios/types/test_margin_portfolio.py +0 -0
  451. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/portfolios/types/test_spot_portfolio.py +0 -0
  452. {OctoBot-Trading-2.4.204/tests/personal_data/portfolios/types → OctoBot-Trading-2.4.206/tests/personal_data/positions}/__init__.py +0 -0
  453. {OctoBot-Trading-2.4.204/tests/personal_data/positions → OctoBot-Trading-2.4.206/tests/personal_data/positions/channel}/__init__.py +0 -0
  454. {OctoBot-Trading-2.4.204/tests/personal_data/positions/channel → OctoBot-Trading-2.4.206/tests/personal_data/positions/states}/__init__.py +0 -0
  455. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/positions/test_position.py +0 -0
  456. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/positions/test_position_factory.py +0 -0
  457. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/positions/test_positions_manager.py +0 -0
  458. {OctoBot-Trading-2.4.204/tests/personal_data/positions/states → OctoBot-Trading-2.4.206/tests/personal_data/positions/types}/__init__.py +0 -0
  459. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/positions/types/test_inverse_position.py +0 -0
  460. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/positions/types/test_linear_position.py +0 -0
  461. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/trades/__init__.py +0 -0
  462. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/trades/test_trade_factory.py +0 -0
  463. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/trades/test_trade_manager.py +0 -0
  464. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/trades/test_trade_pnl.py +0 -0
  465. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/trades/test_trade_util.py +0 -0
  466. {OctoBot-Trading-2.4.204/tests/personal_data/positions/types → OctoBot-Trading-2.4.206/tests/personal_data/transactions}/__init__.py +0 -0
  467. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/transactions/test_transaction_factory.py +0 -0
  468. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/personal_data/transactions/test_transactions_manager.py +0 -0
  469. {OctoBot-Trading-2.4.204/tests/personal_data/transactions → OctoBot-Trading-2.4.206/tests/signals}/__init__.py +0 -0
  470. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/signals/test_trading_signal_bundle_builder.py +0 -0
  471. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/signals/test_util.py +0 -0
  472. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/test_utils/__init__.py +0 -0
  473. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/test_utils/order_util.py +0 -0
  474. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/test_utils/random_numbers.py +0 -0
  475. {OctoBot-Trading-2.4.204/tests/signals → OctoBot-Trading-2.4.206/tests/util}/__init__.py +0 -0
  476. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests/util/test_config_util.py +0 -0
  477. {OctoBot-Trading-2.4.204/tests/util → OctoBot-Trading-2.4.206/tests_additional}/__init__.py +0 -0
  478. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests_additional/real_exchanges/__init__.py +0 -0
  479. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests_additional/real_exchanges/real_exchange_tester.py +0 -0
  480. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests_additional/real_exchanges/real_futures_exchange_tester.py +0 -0
  481. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests_additional/real_exchanges/test_ascendex.py +0 -0
  482. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests_additional/real_exchanges/test_binance.py +0 -0
  483. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests_additional/real_exchanges/test_binance_futures.py +0 -0
  484. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests_additional/real_exchanges/test_bingx.py +0 -0
  485. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests_additional/real_exchanges/test_bitfinex.py +0 -0
  486. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests_additional/real_exchanges/test_bitget.py +0 -0
  487. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests_additional/real_exchanges/test_bithumb.py +0 -0
  488. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests_additional/real_exchanges/test_bitmart.py +0 -0
  489. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests_additional/real_exchanges/test_bitmex.py +0 -0
  490. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests_additional/real_exchanges/test_bitso.py +0 -0
  491. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests_additional/real_exchanges/test_bitstamp.py +0 -0
  492. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests_additional/real_exchanges/test_bybit.py +0 -0
  493. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests_additional/real_exchanges/test_bybit_futures.py +0 -0
  494. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests_additional/real_exchanges/test_coinbase.py +0 -0
  495. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests_additional/real_exchanges/test_coinex.py +0 -0
  496. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests_additional/real_exchanges/test_cryptocom.py +0 -0
  497. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests_additional/real_exchanges/test_gateio.py +0 -0
  498. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests_additional/real_exchanges/test_hitbtc.py +0 -0
  499. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests_additional/real_exchanges/test_hollaex.py +0 -0
  500. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests_additional/real_exchanges/test_htx.py +0 -0
  501. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests_additional/real_exchanges/test_hyperliquid.py +0 -0
  502. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests_additional/real_exchanges/test_kraken.py +0 -0
  503. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests_additional/real_exchanges/test_kucoin.py +0 -0
  504. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests_additional/real_exchanges/test_kucoin_futures.py +0 -0
  505. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests_additional/real_exchanges/test_mexc.py +0 -0
  506. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests_additional/real_exchanges/test_ndax.py +0 -0
  507. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests_additional/real_exchanges/test_okcoin.py +0 -0
  508. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests_additional/real_exchanges/test_okx.py +0 -0
  509. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests_additional/real_exchanges/test_okx_futures.py +0 -0
  510. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests_additional/real_exchanges/test_phemex.py +0 -0
  511. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests_additional/real_exchanges/test_poloniex.py +0 -0
  512. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests_additional/real_exchanges/test_upbit.py +0 -0
  513. {OctoBot-Trading-2.4.204 → OctoBot-Trading-2.4.206}/tests_additional/real_exchanges/test_wavesexchange.py +0 -0
@@ -4,6 +4,15 @@ All notable changes to this project will be documented in this file.
4
4
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5
5
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## [2.4.206] - 2025-08-15
8
+ ### Updated
9
+ [SubPortfolio] forward locked assets in resolved subportfolios
10
+ [Portfolio] make available funds update more flexible
11
+
12
+ ## [2.4.205] - 2025-08-07
13
+ ### Updated
14
+ [SubPortfolio] add filled/cancelled orders inferring engine
15
+
7
16
  ## [2.4.204] - 2025-08-04
8
17
  ### Updated
9
18
  [SubPortfolio] handle local exchange symbols fees
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: OctoBot-Trading
3
- Version: 2.4.204
3
+ Version: 2.4.206
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.204](https://github.com/Drakkar-Software/OctoBot-Trading/blob/master/CHANGELOG.md)
19
+ # OctoBot-Trading [2.4.206](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)
@@ -222,6 +222,7 @@ octobot_trading/personal_data/portfolios/portfolio_manager.py
222
222
  octobot_trading/personal_data/portfolios/portfolio_profitability.py
223
223
  octobot_trading/personal_data/portfolios/portfolio_util.py
224
224
  octobot_trading/personal_data/portfolios/portfolio_value_holder.py
225
+ octobot_trading/personal_data/portfolios/resolved_orders_portfolio_delta.py
225
226
  octobot_trading/personal_data/portfolios/sub_portfolio.py
226
227
  octobot_trading/personal_data/portfolios/sub_portfolio_data.py
227
228
  octobot_trading/personal_data/portfolios/value_converter.py
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: OctoBot-Trading
3
- Version: 2.4.204
3
+ Version: 2.4.206
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.204](https://github.com/Drakkar-Software/OctoBot-Trading/blob/master/CHANGELOG.md)
19
+ # OctoBot-Trading [2.4.206](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.204](https://github.com/Drakkar-Software/OctoBot-Trading/blob/master/CHANGELOG.md)
1
+ # OctoBot-Trading [2.4.206](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.204" # major.minor.revision
18
+ VERSION = "2.4.206" # major.minor.revision
@@ -125,22 +125,19 @@ def is_usd_like_coin(coin) -> bool:
125
125
  def resolve_sub_portfolios(
126
126
  master_portfolio: personal_data.SubPortfolioData,
127
127
  sub_portfolios: list[personal_data.SubPortfolioData],
128
- allowed_filling_assets: list[str],
129
- forbidden_filling_assets: list[str],
130
128
  market_prices: dict[str, float],
131
129
  ) -> (personal_data.SubPortfolioData, list[personal_data.SubPortfolioData]):
132
- return personal_data.resolve_sub_portfolios(
133
- master_portfolio, sub_portfolios, allowed_filling_assets, forbidden_filling_assets, market_prices
134
- )
130
+ return personal_data.resolve_sub_portfolios(master_portfolio, sub_portfolios, market_prices)
135
131
 
136
132
 
137
133
  def get_portfolio_filled_orders_deltas(
138
134
  previous_portfolio_content: dict[str, dict[str, decimal.Decimal]],
139
135
  updated_portfolio_content: dict[str, dict[str, decimal.Decimal]],
140
- filled_orders: list[personal_data.Order]
141
- ) -> (dict[str, dict[str, decimal.Decimal]], dict[str, dict[str, decimal.Decimal]]):
136
+ filled_orders: list[personal_data.Order],
137
+ unknown_filled_or_cancelled_orders: list[personal_data.Order]
138
+ ) -> personal_data.ResolvedOrdersPortoflioDelta:
142
139
  return personal_data.get_portfolio_filled_orders_deltas(
143
- previous_portfolio_content, updated_portfolio_content, filled_orders
140
+ previous_portfolio_content, updated_portfolio_content, filled_orders, unknown_filled_or_cancelled_orders
144
141
  )
145
142
 
146
143
 
@@ -25,7 +25,6 @@ import binascii
25
25
  import copy
26
26
 
27
27
  import octobot_commons.enums
28
- import octobot_commons.logging
29
28
  import octobot_commons.symbols as commons_symbols
30
29
  import octobot_commons.html_util as html_util
31
30
 
@@ -205,7 +205,7 @@ class Trader(util.Initializable):
205
205
  )
206
206
  else:
207
207
  # consider order as cancelled to release portfolio amounts
208
- self.exchange_manager.exchange_personal_data.portfolio_manager.portfolio.update_portfolio_available(
208
+ self.exchange_manager.exchange_personal_data.portfolio_manager.refresh_portfolio_available_from_order(
209
209
  order, is_new_order=False
210
210
  )
211
211
  updated_price = edited_stop_price if edited_price is None else edited_price
@@ -218,7 +218,7 @@ class Trader(util.Initializable):
218
218
  current_price=edited_current_price,
219
219
  )
220
220
  # consider order as new order to lock portfolio amounts
221
- self.exchange_manager.exchange_personal_data.portfolio_manager.portfolio.update_portfolio_available(
221
+ self.exchange_manager.exchange_personal_data.portfolio_manager.refresh_portfolio_available_from_order(
222
222
  order, is_new_order=True
223
223
  )
224
224
  # push order edit into orders channel as edit update
@@ -262,9 +262,22 @@ class Trader(util.Initializable):
262
262
  self.logger.debug(
263
263
  f"Successfully edited order on {self.exchange_manager.exchange_name}, new order values: {edited_order}"
264
264
  )
265
+ if not self.exchange_manager.exchange_personal_data.portfolio_manager.enable_portfolio_exchange_sync:
266
+ # consider order as cancelled to release portfolio amounts before locking the updated value
267
+ self.exchange_manager.exchange_personal_data.portfolio_manager.refresh_portfolio_available_from_order(
268
+ order, is_new_order=False
269
+ )
265
270
  changed = order.update_from_raw(edited_order)
266
271
  # update portfolio from exchange
267
- await self.exchange_manager.exchange_personal_data.handle_portfolio_and_position_update_from_order(order)
272
+ if self.exchange_manager.exchange_personal_data.portfolio_manager.enable_portfolio_exchange_sync:
273
+ await self.exchange_manager.exchange_personal_data.handle_portfolio_and_position_update_from_order(
274
+ order, require_exchange_update=True
275
+ )
276
+ else:
277
+ # consider order as cancelled to release portfolio amounts before locking the updated value
278
+ self.exchange_manager.exchange_personal_data.portfolio_manager.refresh_portfolio_available_from_order(
279
+ order, is_new_order=True
280
+ )
268
281
  return changed
269
282
 
270
283
  async def _create_new_order(
@@ -177,6 +177,7 @@ from octobot_trading.personal_data.portfolios import (
177
177
  HistoricalAssetValue,
178
178
  HistoricalPortfolioValueManager,
179
179
  SubPortfolioData,
180
+ ResolvedOrdersPortoflioDelta,
180
181
  )
181
182
  from octobot_trading.personal_data import positions
182
183
  from octobot_trading.personal_data.positions import (
@@ -474,4 +475,5 @@ __all__ = [
474
475
  "create_fee_transaction",
475
476
  "create_transfer_transaction",
476
477
  "SubPortfolioData",
478
+ "ResolvedOrdersPortoflioDelta",
477
479
  ]
@@ -242,6 +242,12 @@ class ExchangePersonalData(util.Initializable):
242
242
  await self.handle_order_update_notification(order, update_type)
243
243
  return order.state is not None
244
244
 
245
+ def on_completed_orders_fetch(self):
246
+ # store the fact that all orders have been fetched from exchange
247
+ self.orders_manager.are_exchange_orders_initialized = True
248
+ # available funds can now be updated from fetched open orders
249
+ self.portfolio_manager.enable_portfolio_available_update_from_order = True
250
+
245
251
  def _is_out_of_sync_order(self, exchange_order_id) -> bool:
246
252
  return self.trades_manager.has_closing_trade_with_exchange_order_id(exchange_order_id)
247
253
 
@@ -106,7 +106,7 @@ class OrdersUpdater(orders_channel.OrdersProducer):
106
106
  retry_till_success=retry_till_success)
107
107
  finally:
108
108
  if self.channel is not None:
109
- self.channel.exchange_manager.exchange_personal_data.orders_manager.are_exchange_orders_initialized = True
109
+ self.channel.exchange_manager.exchange_personal_data.on_completed_orders_fetch()
110
110
  await asyncio.sleep(self.TIME_BETWEEN_ORDERS_REFRESH)
111
111
  try:
112
112
  # can raise, closed orders are not critical data
@@ -22,7 +22,8 @@ import octobot_trading.personal_data.orders.channel.orders_updater as orders_upd
22
22
 
23
23
  class OrdersUpdaterSimulator(orders_updater.OrdersUpdater):
24
24
  async def start(self):
25
- self.channel.exchange_manager.exchange_personal_data.orders_manager.are_exchange_orders_initialized = True
25
+ # on simulator, orders are fetched from the start
26
+ self.channel.exchange_manager.exchange_personal_data.on_completed_orders_fetch()
26
27
  await exchange_channel.get_chan(constants.RECENT_TRADES_CHANNEL, self.channel.exchange_manager.id) \
27
28
  .new_consumer(self.ignore_recent_trades_update)
28
29
  for symbol in self.channel.exchange_manager.exchange_config.traded_symbol_pairs:
@@ -544,17 +544,23 @@ class Order(util.Initializable):
544
544
  f"when creating active order from inactive order: {self}"
545
545
  )
546
546
 
547
- async def on_pending_creation(self, is_from_exchange_data=False, enable_associated_orders_creation=True):
547
+ async def on_pending_creation(self, is_from_exchange_data=False, enable_associated_orders_creation=True,
548
+ is_already_counted_in_available_funds=False
549
+ ):
548
550
  with self.order_state_creation():
549
551
  state_class = orders_states.PendingCreationChainedOrderState if self.is_waiting_for_chained_trigger \
550
552
  else orders_states.PendingCreationOrderState
551
553
  self.state = state_class(
552
554
  self, is_from_exchange_data=is_from_exchange_data,
553
- enable_associated_orders_creation=enable_associated_orders_creation
555
+ enable_associated_orders_creation=enable_associated_orders_creation,
556
+ is_already_counted_in_available_funds=is_already_counted_in_available_funds
554
557
  )
555
558
  await self.state.initialize()
556
559
 
557
- async def on_open(self, force_open=False, is_from_exchange_data=False, enable_associated_orders_creation=True):
560
+ async def on_open(
561
+ self, force_open=False, is_from_exchange_data=False, enable_associated_orders_creation=True,
562
+ is_already_counted_in_available_funds=False
563
+ ):
558
564
  with self.order_state_creation():
559
565
  if isinstance(self.state, orders_states.PendingCreationOrderState):
560
566
  await self.state.trigger_terminate()
@@ -566,11 +572,15 @@ class Order(util.Initializable):
566
572
  return
567
573
  self.state = orders_states.OpenOrderState(
568
574
  self, is_from_exchange_data=is_from_exchange_data,
569
- enable_associated_orders_creation=enable_associated_orders_creation
575
+ enable_associated_orders_creation=enable_associated_orders_creation,
576
+ is_already_counted_in_available_funds=is_already_counted_in_available_funds
570
577
  )
571
578
  await self.state.initialize(forced=force_open)
572
579
 
573
- async def on_fill(self, force_fill=False, is_from_exchange_data=False, enable_associated_orders_creation=None):
580
+ async def on_fill(
581
+ self, force_fill=False, is_from_exchange_data=False, enable_associated_orders_creation=None,
582
+ is_already_counted_in_available_funds=False
583
+ ):
574
584
  enable_associated_orders_creation = self.state.enable_associated_orders_creation \
575
585
  if (self.state and enable_associated_orders_creation is None) \
576
586
  else (True if enable_associated_orders_creation is None else enable_associated_orders_creation)
@@ -581,7 +591,8 @@ class Order(util.Initializable):
581
591
  with self.order_state_creation():
582
592
  self.state = orders_states.FillOrderState(
583
593
  self, is_from_exchange_data=is_from_exchange_data,
584
- enable_associated_orders_creation=enable_associated_orders_creation
594
+ enable_associated_orders_creation=enable_associated_orders_creation,
595
+ is_already_counted_in_available_funds=is_already_counted_in_available_funds
585
596
  )
586
597
  await self.state.initialize(forced=force_fill)
587
598
  else:
@@ -589,20 +600,23 @@ class Order(util.Initializable):
589
600
  f"or canceled order: "
590
601
  f"ignored fill call for {self}")
591
602
 
592
- async def on_close(self, force_close=False, is_from_exchange_data=False, enable_associated_orders_creation=None):
603
+ async def on_close(self, force_close=False, is_from_exchange_data=False, enable_associated_orders_creation=None,
604
+ is_already_counted_in_available_funds=False
605
+ ):
593
606
  enable_associated_orders_creation = self.state.enable_associated_orders_creation \
594
607
  if (self.state and enable_associated_orders_creation is None) \
595
608
  else (True if enable_associated_orders_creation is None else enable_associated_orders_creation)
596
609
  with self.order_state_creation():
597
610
  self.state = orders_states.CloseOrderState(
598
611
  self, is_from_exchange_data=is_from_exchange_data,
599
- enable_associated_orders_creation=enable_associated_orders_creation
612
+ enable_associated_orders_creation=enable_associated_orders_creation,
613
+ is_already_counted_in_available_funds=is_already_counted_in_available_funds
600
614
  )
601
615
  await self.state.initialize(forced=force_close)
602
616
 
603
617
  async def on_cancel(
604
618
  self, is_from_exchange_data=False, force_cancel=False, enable_associated_orders_creation=None,
605
- ignored_order=None
619
+ ignored_order=None, is_already_counted_in_available_funds=False
606
620
  ):
607
621
  enable_associated_orders_creation = self.state.enable_associated_orders_creation \
608
622
  if (self.state and enable_associated_orders_creation is None) \
@@ -610,7 +624,8 @@ class Order(util.Initializable):
610
624
  with self.order_state_creation():
611
625
  self.state = orders_states.CancelOrderState(
612
626
  self, is_from_exchange_data=is_from_exchange_data,
613
- enable_associated_orders_creation=enable_associated_orders_creation
627
+ enable_associated_orders_creation=enable_associated_orders_creation,
628
+ is_already_counted_in_available_funds=is_already_counted_in_available_funds
614
629
  )
615
630
  await self.state.initialize(forced=force_cancel, ignored_order=ignored_order)
616
631
 
@@ -828,7 +843,9 @@ class Order(util.Initializable):
828
843
  def generate_executed_time(self):
829
844
  return self.exchange_manager.exchange.get_exchange_current_time()
830
845
 
831
- def is_counted_in_available_funds(self):
846
+ def is_counted_in_available_funds(self) -> bool:
847
+ if self.state and self.state.is_already_counted_in_available_funds:
848
+ return False
832
849
  if self.is_active:
833
850
  if self.trader.simulate or (
834
851
  self.reduce_only and self.exchange_manager and self.exchange_manager.is_future
@@ -1142,7 +1159,7 @@ class Order(util.Initializable):
1142
1159
  return self.trader is not None
1143
1160
 
1144
1161
 
1145
- def parse_order_type(raw_order):
1162
+ def parse_order_type(raw_order) -> (enums.TradeOrderSide, enums.TraderOrderType):
1146
1163
  try:
1147
1164
  side: enums.TradeOrderSide = enums.TradeOrderSide(raw_order[enums.ExchangeConstantsOrderColumns.SIDE.value])
1148
1165
  order_type: enums.TradeOrderType = enums.TradeOrderType.UNKNOWN
@@ -27,7 +27,9 @@ import octobot_trading.personal_data.state as state_class
27
27
  class OrderState(state_class.State):
28
28
  MAX_SYNCHRONIZATION_ATTEMPTS = -1 # implement self._force_final_state() when this is enabled
29
29
 
30
- def __init__(self, order, is_from_exchange_data, enable_associated_orders_creation=True):
30
+ def __init__(self, order, is_from_exchange_data, enable_associated_orders_creation=True,
31
+ is_already_counted_in_available_funds=False
32
+ ):
31
33
  super().__init__(is_from_exchange_data)
32
34
 
33
35
  # ensure order has not been cleared
@@ -37,6 +39,7 @@ class OrderState(state_class.State):
37
39
  self.order = order
38
40
 
39
41
  self.enable_associated_orders_creation = enable_associated_orders_creation
42
+ self.is_already_counted_in_available_funds = is_already_counted_in_available_funds
40
43
 
41
44
  def is_created(self) -> bool:
42
45
  """
@@ -424,6 +424,9 @@ def get_orders_locked_amounts_by_asset(open_orders: list[order_import.Order]) ->
424
424
  return {}
425
425
  locked_funds_by_asset = {}
426
426
  for order in open_orders:
427
+ if not order.is_active:
428
+ # don't count inactive orders in locked funds
429
+ continue
427
430
  base, quote = symbol_util.parse_symbol(order.symbol).base_and_quote()
428
431
  # use get_order_locked_amount just like trader simulator to ensure locked funds integrity
429
432
  if order.side == enums.TradeOrderSide.BUY:
@@ -85,7 +85,7 @@ class OrdersManager(util.Initializable):
85
85
  until=until, limit=limit, tag=tag
86
86
  )
87
87
 
88
- def get_order(self, order_id, exchange_order_id=None):
88
+ def get_order(self, order_id: typing.Optional[str], exchange_order_id: typing.Optional[str]=None) -> order_class.Order:
89
89
  if order_id is None:
90
90
  for order in self.orders.values():
91
91
  if order.exchange_order_id == exchange_order_id:
@@ -93,7 +93,7 @@ class OrdersManager(util.Initializable):
93
93
  raise KeyError(exchange_order_id)
94
94
  return self.orders[order_id]
95
95
 
96
- def get_order_from_group(self, group_name):
96
+ def get_order_from_group(self, group_name: str) -> list[order_class.Order]:
97
97
  return [
98
98
  order
99
99
  for order in self.orders.values()
@@ -101,7 +101,7 @@ class OrdersManager(util.Initializable):
101
101
  ]
102
102
 
103
103
  def get_or_create_group(
104
- self, group_type, group_name,
104
+ self, group_type: type[order_group_import.OrderGroup], group_name: str,
105
105
  active_order_swap_strategy: typing.Optional[active_order_swap_strategy_import.ActiveOrderSwapStrategy] = None
106
106
  ):
107
107
  """
@@ -123,7 +123,7 @@ class OrdersManager(util.Initializable):
123
123
  )
124
124
 
125
125
  def create_group(
126
- self, group_type, group_name=None,
126
+ self, group_type: type[order_group_import.OrderGroup], group_name: typing.Optional[str]=None,
127
127
  active_order_swap_strategy: typing.Optional[active_order_swap_strategy_import.ActiveOrderSwapStrategy] = None
128
128
  ):
129
129
  """
@@ -139,7 +139,7 @@ class OrdersManager(util.Initializable):
139
139
  self.order_groups[group_name] = group
140
140
  return group
141
141
 
142
- async def upsert_order_from_raw(self, exchange_order_id, raw_order, is_from_exchange) -> (bool, order_class.Order):
142
+ async def upsert_order_from_raw(self, exchange_order_id: str, raw_order: dict, is_from_exchange: bool) -> tuple[bool, order_class.Order]:
143
143
  if not self.has_order(None, exchange_order_id=exchange_order_id):
144
144
  self.logger.info(f"Including new order fetched from exchange: {raw_order}")
145
145
  new_order = order_factory.create_order_instance_from_raw(self.trader, raw_order)
@@ -154,7 +154,7 @@ class OrdersManager(util.Initializable):
154
154
  order = self.get_order(None, exchange_order_id=exchange_order_id)
155
155
  return await _update_order_from_raw(order, raw_order), order
156
156
 
157
- def register_pending_creation_order(self, pending_order):
157
+ def register_pending_creation_order(self, pending_order: order_class.Order):
158
158
  if self.trader.simulate:
159
159
  self.logger.error(f"Called register_pending_creation_order on an simulated trader, "
160
160
  f"this should not happen. Order: {pending_order}")
@@ -25,9 +25,12 @@ import octobot_trading.personal_data.orders.states.order_state_factory as order_
25
25
  class CancelOrderState(order_state.OrderState):
26
26
  MAX_SYNCHRONIZATION_ATTEMPTS = 5
27
27
 
28
- def __init__(self, order, is_from_exchange_data, enable_associated_orders_creation=True):
28
+ def __init__(self, order, is_from_exchange_data, enable_associated_orders_creation=True,
29
+ is_already_counted_in_available_funds=False
30
+ ):
29
31
  super().__init__(
30
- order, is_from_exchange_data, enable_associated_orders_creation=enable_associated_orders_creation
32
+ order, is_from_exchange_data, enable_associated_orders_creation=enable_associated_orders_creation,
33
+ is_already_counted_in_available_funds=is_already_counted_in_available_funds
31
34
  )
32
35
  self.state = enums.OrderStates.CANCELING \
33
36
  if ((not self.order.simulated and not self.is_status_cancelled()) or self.is_status_pending()) \
@@ -19,9 +19,12 @@ import octobot_trading.personal_data.orders.order_state as order_state
19
19
 
20
20
 
21
21
  class CloseOrderState(order_state.OrderState):
22
- def __init__(self, order, is_from_exchange_data, enable_associated_orders_creation=True, force_close=True):
22
+ def __init__(self, order, is_from_exchange_data, enable_associated_orders_creation=True,
23
+ is_already_counted_in_available_funds=False, force_close=True
24
+ ):
23
25
  super().__init__(
24
- order, is_from_exchange_data, enable_associated_orders_creation=enable_associated_orders_creation
26
+ order, is_from_exchange_data, enable_associated_orders_creation=enable_associated_orders_creation,
27
+ is_already_counted_in_available_funds=is_already_counted_in_available_funds
25
28
  )
26
29
  self.state = enums.States.CLOSED if is_from_exchange_data or force_close or self.order.simulated \
27
30
  else enums.States.CLOSING
@@ -25,9 +25,12 @@ import octobot_trading.personal_data.orders.states.order_state_factory as order_
25
25
  class FillOrderState(order_state.OrderState):
26
26
  MAX_SYNCHRONIZATION_ATTEMPTS = 5
27
27
 
28
- def __init__(self, order, is_from_exchange_data, enable_associated_orders_creation=True):
28
+ def __init__(self, order, is_from_exchange_data, enable_associated_orders_creation=True,
29
+ is_already_counted_in_available_funds=False
30
+ ) :
29
31
  super().__init__(
30
- order, is_from_exchange_data, enable_associated_orders_creation=enable_associated_orders_creation
32
+ order, is_from_exchange_data, enable_associated_orders_creation=enable_associated_orders_creation,
33
+ is_already_counted_in_available_funds=is_already_counted_in_available_funds
31
34
  )
32
35
  self.state = enums.OrderStates.FILLING \
33
36
  if ((
@@ -21,9 +21,12 @@ import octobot_trading.personal_data.orders.states.order_state_factory as order_
21
21
 
22
22
 
23
23
  class OpenOrderState(order_state.OrderState):
24
- def __init__(self, order, is_from_exchange_data, enable_associated_orders_creation=True):
24
+ def __init__(self, order, is_from_exchange_data, enable_associated_orders_creation=True,
25
+ is_already_counted_in_available_funds=False
26
+ ):
25
27
  super().__init__(
26
- order, is_from_exchange_data, enable_associated_orders_creation=enable_associated_orders_creation
28
+ order, is_from_exchange_data, enable_associated_orders_creation=enable_associated_orders_creation,
29
+ is_already_counted_in_available_funds=is_already_counted_in_available_funds
27
30
  )
28
31
  self.state = enums.States.OPEN if \
29
32
  is_from_exchange_data \
@@ -45,15 +48,18 @@ class OpenOrderState(order_state.OrderState):
45
48
  if forced:
46
49
  self.state = enums.States.OPEN
47
50
 
48
- if self.order.exchange_manager.exchange_personal_data.orders_manager.are_exchange_orders_initialized:
51
+ if (
52
+ self.order.exchange_manager.exchange_personal_data.orders_manager.are_exchange_orders_initialized
53
+ or self.order.exchange_manager.exchange_personal_data.portfolio_manager.enable_portfolio_available_update_from_order
54
+ ):
49
55
  # update the availability of the currency in the portfolio if order is not
50
56
  # from exchange initialization (otherwise it's already taken into account in portfolio)
51
- portfolio = self.order.exchange_manager.exchange_personal_data.portfolio_manager.portfolio
52
- before_order_details = str(portfolio)
53
- portfolio.update_portfolio_available(self.order, is_new_order=True)
57
+ portfolio_manager = self.order.exchange_manager.exchange_personal_data.portfolio_manager
58
+ before_order_details = str(portfolio_manager.portfolio)
59
+ portfolio_manager.refresh_portfolio_available_from_order(self.order, True)
54
60
  self.get_logger().debug(
55
61
  f"Updated portfolio available after new open order. "
56
- f"Before order: {before_order_details}. After order: {portfolio}"
62
+ f"Before order: {before_order_details}. After order: {portfolio_manager.portfolio}"
57
63
  )
58
64
 
59
65
  return await super().initialize_impl()
@@ -18,28 +18,35 @@ import octobot_trading.constants as constants
18
18
 
19
19
 
20
20
  async def create_order_state(
21
- order, is_from_exchange_data=False, enable_associated_orders_creation=True, ignore_states=None
21
+ order, is_from_exchange_data=False, enable_associated_orders_creation=True,
22
+ is_already_counted_in_available_funds=False, ignore_states=None
22
23
  ):
23
24
  if ignore_states is None:
24
25
  ignore_states = []
25
26
 
26
27
  if order.status is enums.OrderStatus.PENDING_CREATION \
27
28
  and enums.States.PENDING_CREATION not in ignore_states:
28
- await order.on_pending_creation(enable_associated_orders_creation=enable_associated_orders_creation)
29
+ await order.on_pending_creation(
30
+ enable_associated_orders_creation=enable_associated_orders_creation,
31
+ is_already_counted_in_available_funds=is_already_counted_in_available_funds
32
+ )
29
33
  elif order.status is enums.OrderStatus.OPEN and enums.States.OPEN not in ignore_states:
30
34
  await order.on_open(
31
35
  force_open=False, is_from_exchange_data=is_from_exchange_data,
32
- enable_associated_orders_creation=enable_associated_orders_creation
36
+ enable_associated_orders_creation=enable_associated_orders_creation,
37
+ is_already_counted_in_available_funds=is_already_counted_in_available_funds
33
38
  )
34
39
  elif order.status in constants.FILL_ORDER_STATUS_SCOPE \
35
40
  and enums.OrderStates.FILLED not in ignore_states \
36
41
  and enums.States.CLOSED not in ignore_states:
37
42
  await order.on_fill(
38
43
  force_fill=False, is_from_exchange_data=is_from_exchange_data,
39
- enable_associated_orders_creation=enable_associated_orders_creation
44
+ enable_associated_orders_creation=enable_associated_orders_creation,
45
+ is_already_counted_in_available_funds=is_already_counted_in_available_funds
40
46
  )
41
47
  elif order.status in constants.CANCEL_ORDER_STATUS_SCOPE and enums.OrderStates.CANCELED not in ignore_states:
42
48
  await order.on_cancel(
43
49
  force_cancel=False, is_from_exchange_data=is_from_exchange_data,
44
- enable_associated_orders_creation=enable_associated_orders_creation
50
+ enable_associated_orders_creation=enable_associated_orders_creation,
51
+ is_already_counted_in_available_funds=is_already_counted_in_available_funds
45
52
  )
@@ -25,9 +25,12 @@ import octobot_trading.personal_data.orders.order_state as order_state
25
25
 
26
26
  class PendingCreationOrderState(order_state.OrderState):
27
27
 
28
- def __init__(self, order, is_from_exchange_data, enable_associated_orders_creation=True):
28
+ def __init__(self, order, is_from_exchange_data, enable_associated_orders_creation=True,
29
+ is_already_counted_in_available_funds=False
30
+ ):
29
31
  super().__init__(
30
- order, is_from_exchange_data, enable_associated_orders_creation=enable_associated_orders_creation
32
+ order, is_from_exchange_data, enable_associated_orders_creation=enable_associated_orders_creation,
33
+ is_already_counted_in_available_funds=is_already_counted_in_available_funds
31
34
  )
32
35
  self.state = enums.States.PENDING_CREATION
33
36
 
@@ -44,7 +44,7 @@ from octobot_trading.personal_data.portfolios import types
44
44
  from octobot_trading.personal_data.portfolios import portfolio_util
45
45
  from octobot_trading.personal_data.portfolios import history
46
46
  from octobot_trading.personal_data.portfolios import sub_portfolio_data
47
-
47
+ from octobot_trading.personal_data.portfolios import resolved_orders_portfolio_delta
48
48
 
49
49
  from octobot_trading.personal_data.portfolios.portfolio_factory import (
50
50
  create_portfolio_from_exchange_manager,
@@ -97,7 +97,10 @@ from octobot_trading.personal_data.portfolios.history import (
97
97
  from octobot_trading.personal_data.portfolios.sub_portfolio_data import (
98
98
  SubPortfolioData,
99
99
  )
100
-
100
+ from octobot_trading.personal_data.portfolios.resolved_orders_portfolio_delta import (
101
+ ResolvedOrdersPortoflioDelta,
102
+ )
103
+
101
104
  __all__ = [
102
105
  "BalanceUpdaterSimulator",
103
106
  "BalanceProfitabilityUpdaterSimulator",
@@ -139,4 +142,5 @@ __all__ = [
139
142
  "HistoricalAssetValue",
140
143
  "HistoricalPortfolioValueManager",
141
144
  "SubPortfolioData",
145
+ "ResolvedOrdersPortoflioDelta",
142
146
  ]