OctoBot-Trading 2.4.80__tar.gz → 2.4.81__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 (476) hide show
  1. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/CHANGELOG.md +4 -0
  2. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81/OctoBot_Trading.egg-info}/PKG-INFO +2 -2
  3. {OctoBot-Trading-2.4.80/OctoBot_Trading.egg-info → OctoBot-Trading-2.4.81}/PKG-INFO +2 -2
  4. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/README.md +1 -1
  5. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/__init__.py +1 -1
  6. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/errors.py +6 -0
  7. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchanges/connectors/ccxt/ccxt_client_util.py +12 -0
  8. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchanges/connectors/ccxt/ccxt_connector.py +42 -9
  9. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/LICENSE +0 -0
  10. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/MANIFEST.in +0 -0
  11. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/OctoBot_Trading.egg-info/SOURCES.txt +0 -0
  12. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/OctoBot_Trading.egg-info/dependency_links.txt +0 -0
  13. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/OctoBot_Trading.egg-info/not-zip-safe +0 -0
  14. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/OctoBot_Trading.egg-info/requires.txt +0 -0
  15. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/OctoBot_Trading.egg-info/top_level.txt +0 -0
  16. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/api/__init__.py +0 -0
  17. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/api/channels.py +0 -0
  18. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/api/contracts.py +0 -0
  19. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/api/exchange.py +0 -0
  20. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/api/modes.py +0 -0
  21. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/api/orders.py +0 -0
  22. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/api/portfolio.py +0 -0
  23. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/api/positions.py +0 -0
  24. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/api/profitability.py +0 -0
  25. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/api/storage.py +0 -0
  26. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/api/symbol_data.py +0 -0
  27. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/api/trader.py +0 -0
  28. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/api/trades.py +0 -0
  29. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/constants.py +0 -0
  30. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/enums.py +0 -0
  31. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_channel.py +0 -0
  32. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/__init__.py +0 -0
  33. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/contracts/__init__.py +0 -0
  34. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/contracts/contract_factory.py +0 -0
  35. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/contracts/future_contract.py +0 -0
  36. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/contracts/margin_contract.py +0 -0
  37. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/exchange_symbol_data.py +0 -0
  38. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/exchange_symbols_data.py +0 -0
  39. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/funding/__init__.py +0 -0
  40. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/funding/channel/__init__.py +0 -0
  41. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/funding/channel/funding.py +0 -0
  42. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/funding/channel/funding_updater.py +0 -0
  43. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/funding/channel/funding_updater_simulator.py +0 -0
  44. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/funding/funding_manager.py +0 -0
  45. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/kline/__init__.py +0 -0
  46. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/kline/channel/__init__.py +0 -0
  47. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/kline/channel/kline.py +0 -0
  48. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/kline/channel/kline_updater.py +0 -0
  49. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/kline/channel/kline_updater_simulator.py +0 -0
  50. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/kline/kline_manager.py +0 -0
  51. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/ohlcv/__init__.py +0 -0
  52. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/ohlcv/candles_adapter.py +0 -0
  53. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/ohlcv/candles_manager.py +0 -0
  54. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/ohlcv/channel/__init__.py +0 -0
  55. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/ohlcv/channel/ohlcv.py +0 -0
  56. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/ohlcv/channel/ohlcv_updater.py +0 -0
  57. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/ohlcv/channel/ohlcv_updater_simulator.py +0 -0
  58. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/ohlcv/preloaded_candles_manager.py +0 -0
  59. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/order_book/__init__.py +0 -0
  60. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/order_book/channel/__init__.py +0 -0
  61. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/order_book/channel/order_book.py +0 -0
  62. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/order_book/channel/order_book_updater.py +0 -0
  63. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/order_book/channel/order_book_updater_simulator.py +0 -0
  64. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/order_book/order_book_manager.py +0 -0
  65. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/prices/__init__.py +0 -0
  66. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/prices/channel/__init__.py +0 -0
  67. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/prices/channel/price.py +0 -0
  68. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/prices/channel/prices_updater.py +0 -0
  69. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/prices/channel/prices_updater_simulator.py +0 -0
  70. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/prices/price_events_manager.py +0 -0
  71. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/prices/prices_manager.py +0 -0
  72. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/recent_trades/__init__.py +0 -0
  73. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/recent_trades/channel/__init__.py +0 -0
  74. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/recent_trades/channel/recent_trade.py +0 -0
  75. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/recent_trades/channel/recent_trade_updater.py +0 -0
  76. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/recent_trades/channel/recent_trade_updater_simulator.py +0 -0
  77. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/recent_trades/recent_trades_manager.py +0 -0
  78. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/ticker/__init__.py +0 -0
  79. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/ticker/channel/__init__.py +0 -0
  80. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/ticker/channel/ticker.py +0 -0
  81. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/ticker/channel/ticker_updater.py +0 -0
  82. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/ticker/channel/ticker_updater_simulator.py +0 -0
  83. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchange_data/ticker/ticker_manager.py +0 -0
  84. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchanges/__init__.py +0 -0
  85. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchanges/abstract_exchange.py +0 -0
  86. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchanges/abstract_websocket_exchange.py +0 -0
  87. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchanges/adapters/__init__.py +0 -0
  88. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchanges/adapters/abstract_adapter.py +0 -0
  89. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchanges/config/__init__.py +0 -0
  90. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchanges/config/backtesting_exchange_config.py +0 -0
  91. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchanges/config/exchange_config_data.py +0 -0
  92. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchanges/connectors/__init__.py +0 -0
  93. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchanges/connectors/ccxt/__init__.py +0 -0
  94. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchanges/connectors/ccxt/ccxt_adapter.py +0 -0
  95. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchanges/connectors/ccxt/ccxt_clients_cache.py +0 -0
  96. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchanges/connectors/ccxt/ccxt_websocket_connector.py +0 -0
  97. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchanges/connectors/ccxt/constants.py +0 -0
  98. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchanges/connectors/ccxt/enums.py +0 -0
  99. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchanges/connectors/simulator/__init__.py +0 -0
  100. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchanges/connectors/simulator/ccxt_client_simulation.py +0 -0
  101. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchanges/connectors/simulator/exchange_simulator_adapter.py +0 -0
  102. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchanges/connectors/simulator/exchange_simulator_connector.py +0 -0
  103. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchanges/exchange_builder.py +0 -0
  104. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchanges/exchange_channels.py +0 -0
  105. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchanges/exchange_details.py +0 -0
  106. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchanges/exchange_factory.py +0 -0
  107. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchanges/exchange_manager.py +0 -0
  108. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchanges/exchange_websocket_factory.py +0 -0
  109. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchanges/exchanges.py +0 -0
  110. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchanges/implementations/__init__.py +0 -0
  111. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchanges/implementations/default_rest_exchange.py +0 -0
  112. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchanges/implementations/default_websocket_exchange.py +0 -0
  113. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchanges/implementations/exchange_simulator.py +0 -0
  114. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchanges/traders/__init__.py +0 -0
  115. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchanges/traders/trader.py +0 -0
  116. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchanges/traders/trader_simulator.py +0 -0
  117. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchanges/types/__init__.py +0 -0
  118. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchanges/types/rest_exchange.py +0 -0
  119. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchanges/types/websocket_exchange.py +0 -0
  120. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchanges/util/__init__.py +0 -0
  121. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchanges/util/exchange_market_status_fixer.py +0 -0
  122. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchanges/util/exchange_util.py +0 -0
  123. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchanges/util/symbol_details.py +0 -0
  124. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/exchanges/util/websockets_util.py +0 -0
  125. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/modes/__init__.py +0 -0
  126. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/modes/abstract_trading_mode.py +0 -0
  127. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/modes/channel/__init__.py +0 -0
  128. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/modes/channel/abstract_mode_consumer.py +0 -0
  129. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/modes/channel/abstract_mode_producer.py +0 -0
  130. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/modes/channel/mode.py +0 -0
  131. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/modes/mode_activity.py +0 -0
  132. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/modes/mode_config.py +0 -0
  133. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/modes/modes_factory.py +0 -0
  134. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/modes/modes_util.py +0 -0
  135. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/modes/script_keywords/__init__.py +0 -0
  136. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/modes/script_keywords/basic_keywords/__init__.py +0 -0
  137. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/modes/script_keywords/basic_keywords/account_balance.py +0 -0
  138. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/modes/script_keywords/basic_keywords/amount.py +0 -0
  139. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/modes/script_keywords/basic_keywords/configuration.py +0 -0
  140. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/modes/script_keywords/basic_keywords/position.py +0 -0
  141. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/modes/script_keywords/basic_keywords/price.py +0 -0
  142. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/modes/script_keywords/basic_keywords/run_persistence.py +0 -0
  143. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/modes/script_keywords/basic_keywords/trading_signals.py +0 -0
  144. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/modes/script_keywords/basic_keywords/user_inputs.py +0 -0
  145. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/modes/script_keywords/context_management.py +0 -0
  146. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/modes/script_keywords/dsl/__init__.py +0 -0
  147. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/modes/script_keywords/dsl/quantity.py +0 -0
  148. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/modes/script_keywords/dsl/values.py +0 -0
  149. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/modes/scripted_trading_mode/__init__.py +0 -0
  150. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/modes/scripted_trading_mode/abstract_scripted_trading_mode.py +0 -0
  151. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/octobot_channel_consumer.py +0 -0
  152. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/__init__.py +0 -0
  153. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/exchange_personal_data.py +0 -0
  154. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/orders/__init__.py +0 -0
  155. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/orders/channel/__init__.py +0 -0
  156. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/orders/channel/orders.py +0 -0
  157. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/orders/channel/orders_updater.py +0 -0
  158. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/orders/channel/orders_updater_simulator.py +0 -0
  159. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/orders/decimal_order_adapter.py +0 -0
  160. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/orders/groups/__init__.py +0 -0
  161. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/orders/groups/balanced_take_profit_and_stop_order_group.py +0 -0
  162. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/orders/groups/group_util.py +0 -0
  163. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/orders/groups/one_cancels_the_other_order_group.py +0 -0
  164. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/orders/order.py +0 -0
  165. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/orders/order_adapter.py +0 -0
  166. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/orders/order_factory.py +0 -0
  167. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/orders/order_group.py +0 -0
  168. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/orders/order_state.py +0 -0
  169. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/orders/order_util.py +0 -0
  170. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/orders/orders_manager.py +0 -0
  171. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/orders/orders_storage_operations.py +0 -0
  172. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/orders/states/__init__.py +0 -0
  173. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/orders/states/cancel_order_state.py +0 -0
  174. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/orders/states/close_order_state.py +0 -0
  175. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/orders/states/fill_order_state.py +0 -0
  176. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/orders/states/open_order_state.py +0 -0
  177. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/orders/states/order_state_factory.py +0 -0
  178. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/orders/states/pending_creation_chained_order_state.py +0 -0
  179. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/orders/states/pending_creation_order_state.py +0 -0
  180. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/orders/types/__init__.py +0 -0
  181. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/orders/types/limit/__init__.py +0 -0
  182. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/orders/types/limit/buy_limit_order.py +0 -0
  183. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/orders/types/limit/limit_order.py +0 -0
  184. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/orders/types/limit/sell_limit_order.py +0 -0
  185. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/orders/types/limit/stop_loss_limit_order.py +0 -0
  186. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/orders/types/limit/stop_loss_order.py +0 -0
  187. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/orders/types/limit/take_profit_limit_order.py +0 -0
  188. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/orders/types/limit/take_profit_order.py +0 -0
  189. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/orders/types/market/__init__.py +0 -0
  190. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/orders/types/market/buy_market_order.py +0 -0
  191. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/orders/types/market/market_order.py +0 -0
  192. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/orders/types/market/sell_market_order.py +0 -0
  193. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/orders/types/trailing/__init__.py +0 -0
  194. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/orders/types/trailing/trailing_stop_limit_order.py +0 -0
  195. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/orders/types/trailing/trailing_stop_order.py +0 -0
  196. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/orders/types/unknown_order.py +0 -0
  197. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/orders/types/unsupported_order.py +0 -0
  198. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/portfolios/__init__.py +0 -0
  199. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/portfolios/asset.py +0 -0
  200. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/portfolios/assets/__init__.py +0 -0
  201. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/portfolios/assets/future_asset.py +0 -0
  202. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/portfolios/assets/margin_asset.py +0 -0
  203. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/portfolios/assets/spot_asset.py +0 -0
  204. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/portfolios/channel/__init__.py +0 -0
  205. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/portfolios/channel/balance.py +0 -0
  206. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/portfolios/channel/balance_updater.py +0 -0
  207. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/portfolios/channel/balance_updater_simulator.py +0 -0
  208. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/portfolios/history/__init__.py +0 -0
  209. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/portfolios/history/historical_asset_value.py +0 -0
  210. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/portfolios/history/historical_asset_value_factory.py +0 -0
  211. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/portfolios/history/historical_portfolio_value_manager.py +0 -0
  212. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/portfolios/portfolio.py +0 -0
  213. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/portfolios/portfolio_factory.py +0 -0
  214. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/portfolios/portfolio_manager.py +0 -0
  215. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/portfolios/portfolio_profitability.py +0 -0
  216. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/portfolios/portfolio_util.py +0 -0
  217. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/portfolios/portfolio_value_holder.py +0 -0
  218. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/portfolios/sub_portfolio.py +0 -0
  219. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/portfolios/types/__init__.py +0 -0
  220. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/portfolios/types/future_portfolio.py +0 -0
  221. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/portfolios/types/margin_portfolio.py +0 -0
  222. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/portfolios/types/spot_portfolio.py +0 -0
  223. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/portfolios/value_converter.py +0 -0
  224. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/positions/__init__.py +0 -0
  225. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/positions/channel/__init__.py +0 -0
  226. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/positions/channel/positions.py +0 -0
  227. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/positions/channel/positions_updater.py +0 -0
  228. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/positions/channel/positions_updater_simulator.py +0 -0
  229. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/positions/position.py +0 -0
  230. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/positions/position_factory.py +0 -0
  231. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/positions/position_state.py +0 -0
  232. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/positions/position_util.py +0 -0
  233. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/positions/positions_manager.py +0 -0
  234. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/positions/states/__init__.py +0 -0
  235. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/positions/states/active_position_state.py +0 -0
  236. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/positions/states/idle_position_state.py +0 -0
  237. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/positions/states/liquidate_position_state.py +0 -0
  238. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/positions/states/position_state_factory.py +0 -0
  239. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/positions/types/__init__.py +0 -0
  240. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/positions/types/inverse_position.py +0 -0
  241. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/positions/types/linear_position.py +0 -0
  242. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/state.py +0 -0
  243. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/trades/__init__.py +0 -0
  244. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/trades/channel/__init__.py +0 -0
  245. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/trades/channel/trades.py +0 -0
  246. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/trades/channel/trades_updater.py +0 -0
  247. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/trades/trade.py +0 -0
  248. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/trades/trade_factory.py +0 -0
  249. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/trades/trade_pnl.py +0 -0
  250. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/trades/trades_manager.py +0 -0
  251. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/trades/trades_util.py +0 -0
  252. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/transactions/__init__.py +0 -0
  253. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/transactions/transaction.py +0 -0
  254. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/transactions/transaction_factory.py +0 -0
  255. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/transactions/transactions_manager.py +0 -0
  256. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/transactions/types/__init__.py +0 -0
  257. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/transactions/types/blockchain_transaction.py +0 -0
  258. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/transactions/types/fee_transaction.py +0 -0
  259. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/transactions/types/realised_pnl_transaction.py +0 -0
  260. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/personal_data/transactions/types/transfer_transaction.py +0 -0
  261. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/signals/__init__.py +0 -0
  262. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/signals/channel/__init__.py +0 -0
  263. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/signals/channel/remote_trading_signal.py +0 -0
  264. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/signals/channel/remote_trading_signal_channel_factory.py +0 -0
  265. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/signals/channel/signal_producer.py +0 -0
  266. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/signals/signal_creation.py +0 -0
  267. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/signals/trading_signal_bundle_builder.py +0 -0
  268. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/signals/util.py +0 -0
  269. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/storage/__init__.py +0 -0
  270. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/storage/abstract_storage.py +0 -0
  271. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/storage/candles_storage.py +0 -0
  272. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/storage/orders_storage.py +0 -0
  273. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/storage/portfolio_storage.py +0 -0
  274. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/storage/storage_manager.py +0 -0
  275. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/storage/trades_storage.py +0 -0
  276. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/storage/transactions_storage.py +0 -0
  277. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/storage/util.py +0 -0
  278. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/supervisors/__init__.py +0 -0
  279. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/supervisors/abstract_portfolio_supervisor.py +0 -0
  280. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/supervisors/abstract_supervisor.py +0 -0
  281. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/util/__init__.py +0 -0
  282. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/util/config_util.py +0 -0
  283. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/util/initializable.py +0 -0
  284. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/util/initialization_util.py +0 -0
  285. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/util/simulator_updater_utils.py +0 -0
  286. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/util/test_tools/__init__.py +0 -0
  287. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/util/test_tools/exchange_data.py +0 -0
  288. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/util/test_tools/exchanges_test_tools.py +0 -0
  289. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/util/test_tools/spot_rest_exchange_test_tools.py +0 -0
  290. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/octobot_trading/util/test_tools/websocket_test_tools.py +0 -0
  291. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/requirements.txt +0 -0
  292. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/setup.cfg +0 -0
  293. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/setup.py +0 -0
  294. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/api/__init__.py +0 -0
  295. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/api/test_channels.py +0 -0
  296. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/api/test_exchange.py +0 -0
  297. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/api/test_modes.py +0 -0
  298. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/api/test_orders.py +0 -0
  299. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/api/test_portfolio.py +0 -0
  300. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/api/test_profitability.py +0 -0
  301. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/api/test_symbol_data.py +0 -0
  302. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/api/test_trader.py +0 -0
  303. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/api/test_trades.py +0 -0
  304. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/cli/__init__.py +0 -0
  305. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/exchange_data/__init__.py +0 -0
  306. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/exchange_data/contracts/__init__.py +0 -0
  307. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/exchange_data/contracts/test_future_contract.py +0 -0
  308. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/exchange_data/contracts/test_margin_contract.py +0 -0
  309. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/exchange_data/funding/__init__.py +0 -0
  310. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/exchange_data/funding/test_funding_manager.py +0 -0
  311. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/exchange_data/kline/__init__.py +0 -0
  312. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/exchange_data/kline/test_kline_manager.py +0 -0
  313. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/exchange_data/ohlcv/__init__.py +0 -0
  314. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/exchange_data/ohlcv/test_candles_adapter.py +0 -0
  315. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/exchange_data/ohlcv/test_candles_manager.py +0 -0
  316. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/exchange_data/order_book/__init__.py +0 -0
  317. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/exchange_data/order_book/test_order_book_manager.py +0 -0
  318. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/exchange_data/prices/__init__.py +0 -0
  319. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/exchange_data/prices/test_price_events_manager.py +0 -0
  320. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/exchange_data/prices/test_prices_manager.py +0 -0
  321. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/exchange_data/recent_trades/__init__.py +0 -0
  322. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/exchange_data/recent_trades/test_recent_trades_manager.py +0 -0
  323. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/exchange_data/test_exchange_symbols_data.py +0 -0
  324. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/exchange_data/ticker/__init__.py +0 -0
  325. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/exchange_data/ticker/test_ticker_manager.py +0 -0
  326. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/exchanges/__init__.py +0 -0
  327. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/exchanges/connectors/__init__.py +0 -0
  328. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/exchanges/connectors/ccxt/__init__.py +0 -0
  329. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/exchanges/connectors/ccxt/mock_exchanges_data.py +0 -0
  330. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/exchanges/connectors/ccxt/test_ccxt_connector.py +0 -0
  331. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/exchanges/implementations/__init__.py +0 -0
  332. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/exchanges/implementations/test_default_rest_exchange.py +0 -0
  333. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/exchanges/implementations/test_default_websocket_exchange.py +0 -0
  334. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/exchanges/test_abstract_exchange.py +0 -0
  335. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/exchanges/test_abstract_websocket_exchange.py +0 -0
  336. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/exchanges/test_exchange_builder.py +0 -0
  337. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/exchanges/test_exchange_config_data.py +0 -0
  338. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/exchanges/test_exchange_factory.py +0 -0
  339. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/exchanges/test_exchange_manager.py +0 -0
  340. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/exchanges/test_exchange_simulator.py +0 -0
  341. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/exchanges/test_exchanges.py +0 -0
  342. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/exchanges/traders/__init__.py +0 -0
  343. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/exchanges/traders/test_trader.py +0 -0
  344. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/exchanges/types/__init__.py +0 -0
  345. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/exchanges/types/test_websocket_exchange.py +0 -0
  346. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/exchanges/util/__init__.py +0 -0
  347. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/exchanges/util/test_exchange_market_status_fixer.py +0 -0
  348. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/exchanges/util/test_exchange_util.py +0 -0
  349. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/modes/__init__.py +0 -0
  350. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/modes/script_keywords/__init__.py +0 -0
  351. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/modes/script_keywords/basic_keywords/__init__.py +0 -0
  352. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/modes/script_keywords/basic_keywords/test_account_balance.py +0 -0
  353. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/modes/script_keywords/basic_keywords/test_amount.py +0 -0
  354. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/modes/script_keywords/basic_keywords/test_position.py +0 -0
  355. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/modes/script_keywords/basic_keywords/test_price.py +0 -0
  356. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/modes/script_keywords/dsl/__init__.py +0 -0
  357. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/modes/script_keywords/dsl/test_quantity.py +0 -0
  358. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/modes/test_abstract_mode_consumer.py +0 -0
  359. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/modes/test_abstract_trading_mode.py +0 -0
  360. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/modes/test_modes_util.py +0 -0
  361. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/__init__.py +0 -0
  362. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/orders/__init__.py +0 -0
  363. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/orders/groups/__init__.py +0 -0
  364. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/orders/groups/test_balanced_take_profit_and_stop_order_group.py +0 -0
  365. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/orders/groups/test_group_util.py +0 -0
  366. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/orders/groups/test_one_cancels_the_other_order_group.py +0 -0
  367. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/orders/states/__init__.py +0 -0
  368. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/orders/states/test_cancel_order_state.py +0 -0
  369. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/orders/states/test_close_order_state.py +0 -0
  370. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/orders/states/test_fill_order_state.py +0 -0
  371. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/orders/states/test_open_order_state.py +0 -0
  372. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/orders/states/test_order_state.py +0 -0
  373. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/orders/states/test_order_state_factory.py +0 -0
  374. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/orders/states/test_pending_creation_chained_order_state.py +0 -0
  375. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/orders/states/test_pending_creation_order_state.py +0 -0
  376. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/orders/test_decimal_order_adapter.py +0 -0
  377. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/orders/test_double_filled_order.py +0 -0
  378. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/orders/test_order.py +0 -0
  379. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/orders/test_order_adapter.py +0 -0
  380. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/orders/test_order_factory.py +0 -0
  381. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/orders/test_order_util.py +0 -0
  382. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/orders/test_orders_manager.py +0 -0
  383. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/orders/test_orders_storage_operations.py +0 -0
  384. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/orders/types/__init__.py +0 -0
  385. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/orders/types/limit/__init__.py +0 -0
  386. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/orders/types/limit/test_buy_limit_order.py +0 -0
  387. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/orders/types/limit/test_limit_order.py +0 -0
  388. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/orders/types/limit/test_sell_limit_order.py +0 -0
  389. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/orders/types/limit/test_stop_loss_limit_order.py +0 -0
  390. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/orders/types/limit/test_stop_loss_order.py +0 -0
  391. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/orders/types/limit/test_take_profit_limit_order.py +0 -0
  392. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/orders/types/limit/test_take_profit_order.py +0 -0
  393. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/orders/types/market/__init__.py +0 -0
  394. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/orders/types/market/test_buy_market_order.py +0 -0
  395. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/orders/types/market/test_sell_market_order.py +0 -0
  396. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/orders/types/test_unknown_order.py +0 -0
  397. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/orders/types/trailing/__init__.py +0 -0
  398. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/orders/types/trailing/test_trailing_stop_limit_order.py +0 -0
  399. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/orders/types/trailing/test_trailing_stop_order.py +0 -0
  400. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/portfolios/__init__.py +0 -0
  401. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/portfolios/assets/__init__.py +0 -0
  402. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/portfolios/assets/test_future_asset.py +0 -0
  403. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/portfolios/assets/test_margin_asset.py +0 -0
  404. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/portfolios/assets/test_spot_asset.py +0 -0
  405. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/portfolios/history/__init__.py +0 -0
  406. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/portfolios/history/test_historical_asset_value_factory.py +0 -0
  407. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/portfolios/history/test_historical_portfolio_value_manager.py +0 -0
  408. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/portfolios/test_asset.py +0 -0
  409. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/portfolios/test_portfolio.py +0 -0
  410. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/portfolios/test_portfolio_manager.py +0 -0
  411. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/portfolios/test_portfolio_profitability.py +0 -0
  412. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/portfolios/test_portfolio_value_holder.py +0 -0
  413. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/portfolios/test_value_converter.py +0 -0
  414. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/portfolios/types/__init__.py +0 -0
  415. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/portfolios/types/test_future_portfolio.py +0 -0
  416. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/portfolios/types/test_margin_portfolio.py +0 -0
  417. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/portfolios/types/test_spot_portfolio.py +0 -0
  418. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/positions/__init__.py +0 -0
  419. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/positions/channel/__init__.py +0 -0
  420. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/positions/states/__init__.py +0 -0
  421. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/positions/test_position.py +0 -0
  422. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/positions/test_position_factory.py +0 -0
  423. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/positions/test_positions_manager.py +0 -0
  424. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/positions/types/__init__.py +0 -0
  425. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/positions/types/test_inverse_position.py +0 -0
  426. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/positions/types/test_linear_position.py +0 -0
  427. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/trades/__init__.py +0 -0
  428. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/trades/test_trade_factory.py +0 -0
  429. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/trades/test_trade_manager.py +0 -0
  430. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/trades/test_trade_pnl.py +0 -0
  431. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/trades/test_trade_util.py +0 -0
  432. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/transactions/__init__.py +0 -0
  433. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/transactions/test_transaction_factory.py +0 -0
  434. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/personal_data/transactions/test_transactions_manager.py +0 -0
  435. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/signals/__init__.py +0 -0
  436. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/signals/test_trading_signal_bundle_builder.py +0 -0
  437. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/signals/test_util.py +0 -0
  438. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/test_utils/__init__.py +0 -0
  439. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/test_utils/order_util.py +0 -0
  440. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/test_utils/random_numbers.py +0 -0
  441. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/util/__init__.py +0 -0
  442. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests/util/test_config_util.py +0 -0
  443. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests_additional/__init__.py +0 -0
  444. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests_additional/real_exchanges/__init__.py +0 -0
  445. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests_additional/real_exchanges/real_exchange_tester.py +0 -0
  446. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests_additional/real_exchanges/real_futures_exchange_tester.py +0 -0
  447. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests_additional/real_exchanges/test_ascendex.py +0 -0
  448. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests_additional/real_exchanges/test_binance.py +0 -0
  449. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests_additional/real_exchanges/test_binance_futures.py +0 -0
  450. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests_additional/real_exchanges/test_bingx.py +0 -0
  451. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests_additional/real_exchanges/test_bitfinex.py +0 -0
  452. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests_additional/real_exchanges/test_bitget.py +0 -0
  453. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests_additional/real_exchanges/test_bithumb.py +0 -0
  454. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests_additional/real_exchanges/test_bitso.py +0 -0
  455. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests_additional/real_exchanges/test_bitstamp.py +0 -0
  456. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests_additional/real_exchanges/test_bybit.py +0 -0
  457. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests_additional/real_exchanges/test_bybit_futures.py +0 -0
  458. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests_additional/real_exchanges/test_coinbase.py +0 -0
  459. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests_additional/real_exchanges/test_coinex.py +0 -0
  460. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests_additional/real_exchanges/test_cryptocom.py +0 -0
  461. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests_additional/real_exchanges/test_gateio.py +0 -0
  462. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests_additional/real_exchanges/test_hitbtc.py +0 -0
  463. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests_additional/real_exchanges/test_hollaex.py +0 -0
  464. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests_additional/real_exchanges/test_htx.py +0 -0
  465. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests_additional/real_exchanges/test_kraken.py +0 -0
  466. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests_additional/real_exchanges/test_kucoin.py +0 -0
  467. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests_additional/real_exchanges/test_kucoin_futures.py +0 -0
  468. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests_additional/real_exchanges/test_mexc.py +0 -0
  469. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests_additional/real_exchanges/test_ndax.py +0 -0
  470. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests_additional/real_exchanges/test_okcoin.py +0 -0
  471. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests_additional/real_exchanges/test_okx.py +0 -0
  472. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests_additional/real_exchanges/test_okx_futures.py +0 -0
  473. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests_additional/real_exchanges/test_phemex.py +0 -0
  474. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests_additional/real_exchanges/test_poloniex.py +0 -0
  475. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests_additional/real_exchanges/test_upbit.py +0 -0
  476. {OctoBot-Trading-2.4.80 → OctoBot-Trading-2.4.81}/tests_additional/real_exchanges/test_wavesexchange.py +0 -0
@@ -4,6 +4,10 @@ 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.81] - 2024-05-10
8
+ ### Updated
9
+ - [Exchanges] wrap NotSupported and RateLimit ccxt errors
10
+
7
11
  ## [2.4.80] - 2024-05-10
8
12
  ### Fixed
9
13
  - [Orders] missing trading permission error
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: OctoBot-Trading
3
- Version: 2.4.80
3
+ Version: 2.4.81
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.80](https://github.com/Drakkar-Software/OctoBot-Trading/blob/master/CHANGELOG.md)
19
+ # OctoBot-Trading [2.4.81](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,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: OctoBot-Trading
3
- Version: 2.4.80
3
+ Version: 2.4.81
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.80](https://github.com/Drakkar-Software/OctoBot-Trading/blob/master/CHANGELOG.md)
19
+ # OctoBot-Trading [2.4.81](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.80](https://github.com/Drakkar-Software/OctoBot-Trading/blob/master/CHANGELOG.md)
1
+ # OctoBot-Trading [2.4.81](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.80" # major.minor.revision
18
+ VERSION = "2.4.81" # major.minor.revision
@@ -93,6 +93,12 @@ class FailedRequest(Exception):
93
93
  """
94
94
 
95
95
 
96
+ class RateLimitExceeded(Exception):
97
+ """
98
+ Raised upon an exchange API rate limit error
99
+ """
100
+
101
+
96
102
  class UnavailableOrderTypeForMarketError(Exception):
97
103
  """
98
104
  Raised when an exchange refuses to create a given type of order that should normally be supported
@@ -22,6 +22,7 @@ import ccxt.pro as ccxt_pro
22
22
  import octobot_commons.time_frame_manager as time_frame_manager
23
23
  import octobot_trading.constants as constants
24
24
  import octobot_trading.enums as enums
25
+ import octobot_trading.errors as errors
25
26
  import octobot_trading.exchanges.connectors.ccxt.enums as ccxt_enums
26
27
  import octobot_trading.exchanges.connectors.ccxt.ccxt_clients_cache as ccxt_clients_cache
27
28
  import octobot_trading.exchanges.util.exchange_util as exchange_util
@@ -228,6 +229,17 @@ def add_options(client, options_dict):
228
229
  client.options[option_key] = option_value
229
230
 
230
231
 
232
+ def converted_ccxt_common_errors(f):
233
+ async def wrapper(*args, **kwargs):
234
+ try:
235
+ return await f(*args, **kwargs)
236
+ except ccxt.RateLimitExceeded as err:
237
+ raise errors.RateLimitExceeded(err) from err
238
+ except ccxt.NotSupported as err:
239
+ raise errors.NotSupported(err) from err
240
+ return wrapper
241
+
242
+
231
243
  def _use_http_proxy_if_necessary(client):
232
244
  client.aiohttp_trust_env = constants.ENABLE_EXCHANGE_HTTP_PROXY_FROM_ENV
233
245
 
@@ -113,6 +113,7 @@ class CCXTConnector(abstract_exchange.AbstractExchange):
113
113
  # no user input in connector
114
114
  pass
115
115
 
116
+ @ccxt_client_util.converted_ccxt_common_errors
116
117
  async def load_symbol_markets(
117
118
  self,
118
119
  reload=False,
@@ -191,6 +192,7 @@ class CCXTConnector(abstract_exchange.AbstractExchange):
191
192
  if self.client is not None:
192
193
  ccxt_client_util.add_options(self.client, options_dict)
193
194
 
195
+ @ccxt_client_util.converted_ccxt_common_errors
194
196
  async def _ensure_auth(self):
195
197
  try:
196
198
  await self.get_balance()
@@ -238,6 +240,7 @@ class CCXTConnector(abstract_exchange.AbstractExchange):
238
240
  self.logger.error(f"Fail to get market status of {symbol}: {e}")
239
241
  return {}
240
242
 
243
+ @ccxt_client_util.converted_ccxt_common_errors
241
244
  async def get_balance(self, **kwargs: dict):
242
245
  """
243
246
  fetch balance (free + used) by currency
@@ -253,6 +256,7 @@ class CCXTConnector(abstract_exchange.AbstractExchange):
253
256
  except ccxt.NotSupported:
254
257
  raise octobot_trading.errors.NotSupported
255
258
 
259
+ @ccxt_client_util.converted_ccxt_common_errors
256
260
  async def get_symbol_prices(self,
257
261
  symbol: str,
258
262
  time_frame: octobot_commons.enums.TimeFrames,
@@ -271,6 +275,7 @@ class CCXTConnector(abstract_exchange.AbstractExchange):
271
275
  f"Failed to get_symbol_prices of {symbol} on {time_frame.value}: {e.__class__.__name__} on {e}"
272
276
  ) from e
273
277
 
278
+ @ccxt_client_util.converted_ccxt_common_errors
274
279
  async def get_kline_price(self,
275
280
  symbol: str,
276
281
  time_frame: octobot_commons.enums.TimeFrames,
@@ -288,6 +293,7 @@ class CCXTConnector(abstract_exchange.AbstractExchange):
288
293
  raise octobot_trading.errors.FailedRequest(f"Failed to get_kline_price {e}")
289
294
 
290
295
  # return up to ten bidasks on each side of the order book stack
296
+ @ccxt_client_util.converted_ccxt_common_errors
291
297
  async def get_order_book(self, symbol: str, limit: int = 5, **kwargs: dict) -> typing.Optional[dict]:
292
298
  try:
293
299
  with self.error_describer():
@@ -299,6 +305,7 @@ class CCXTConnector(abstract_exchange.AbstractExchange):
299
305
  except ccxt.BaseError as e:
300
306
  raise octobot_trading.errors.FailedRequest(f"Failed to get_order_book {e}")
301
307
 
308
+ @ccxt_client_util.converted_ccxt_common_errors
302
309
  async def get_recent_trades(self, symbol: str, limit: int = 50, **kwargs: dict) -> typing.Optional[list]:
303
310
  try:
304
311
  with self.error_describer():
@@ -311,6 +318,7 @@ class CCXTConnector(abstract_exchange.AbstractExchange):
311
318
  raise octobot_trading.errors.FailedRequest(f"Failed to get_recent_trades {e}")
312
319
 
313
320
  # A price ticker contains statistics for a particular market/symbol for some period of time in recent past (24h)
321
+ @ccxt_client_util.converted_ccxt_common_errors
314
322
  async def get_price_ticker(self, symbol: str, **kwargs: dict) -> typing.Optional[dict]:
315
323
  try:
316
324
  with self.error_describer():
@@ -322,6 +330,7 @@ class CCXTConnector(abstract_exchange.AbstractExchange):
322
330
  except ccxt.BaseError as e:
323
331
  raise octobot_trading.errors.FailedRequest(f"Failed to get_price_ticker {e}")
324
332
 
333
+ @ccxt_client_util.converted_ccxt_common_errors
325
334
  async def get_all_currencies_price_ticker(self, **kwargs: dict) -> typing.Optional[dict[str, dict]]:
326
335
  try:
327
336
  with self.error_describer():
@@ -337,6 +346,7 @@ class CCXTConnector(abstract_exchange.AbstractExchange):
337
346
  raise octobot_trading.errors.FailedRequest(f"Failed to get_all_currencies_price_ticker {e}")
338
347
 
339
348
  # ORDERS
349
+ @ccxt_client_util.converted_ccxt_common_errors
340
350
  async def get_order(self, exchange_order_id: str, symbol: str = None, **kwargs: dict) -> dict:
341
351
  if self.client.has['fetchOrder']:
342
352
  try:
@@ -370,6 +380,7 @@ class CCXTConnector(abstract_exchange.AbstractExchange):
370
380
 
371
381
  return None # OrderNotFound
372
382
 
383
+ @ccxt_client_util.converted_ccxt_common_errors
373
384
  async def get_all_orders(self, symbol: str = None, since: int = None,
374
385
  limit: int = None, **kwargs: dict) -> list:
375
386
  if self.client.has['fetchOrders']:
@@ -381,6 +392,7 @@ class CCXTConnector(abstract_exchange.AbstractExchange):
381
392
  else:
382
393
  raise octobot_trading.errors.NotSupported("This exchange doesn't support fetchOrders")
383
394
 
395
+ @ccxt_client_util.converted_ccxt_common_errors
384
396
  async def get_open_orders(self, symbol: str = None, since: int = None,
385
397
  limit: int = None, **kwargs: dict) -> list:
386
398
  if self.client.has['fetchOpenOrders']:
@@ -392,18 +404,16 @@ class CCXTConnector(abstract_exchange.AbstractExchange):
392
404
  else:
393
405
  raise octobot_trading.errors.NotSupported("This exchange doesn't support fetchOpenOrders")
394
406
 
407
+ @ccxt_client_util.converted_ccxt_common_errors
395
408
  async def get_closed_orders(self, symbol: str = None, since: int = None,
396
409
  limit: int = None, **kwargs: dict) -> list:
397
- try:
398
- with self.error_describer():
399
- return self.adapter.adapt_orders(
400
- await self.client.fetch_closed_orders(symbol=symbol, since=since, limit=limit, params=kwargs),
401
- symbol=symbol
402
- )
403
- except ccxt.NotSupported as e:
404
- # fetch_closed_orders is not supported
405
- raise octobot_trading.errors.NotSupported(e) from e
410
+ with self.error_describer():
411
+ return self.adapter.adapt_orders(
412
+ await self.client.fetch_closed_orders(symbol=symbol, since=since, limit=limit, params=kwargs),
413
+ symbol=symbol
414
+ )
406
415
 
416
+ @ccxt_client_util.converted_ccxt_common_errors
407
417
  async def get_my_recent_trades(self, symbol: str = None, since: int = None,
408
418
  limit: int = None, **kwargs: dict) -> list:
409
419
  if self.client.has['fetchMyTrades'] or self.client.has['fetchTrades']:
@@ -422,6 +432,7 @@ class CCXTConnector(abstract_exchange.AbstractExchange):
422
432
  else:
423
433
  raise octobot_trading.errors.NotSupported("This exchange doesn't support fetchMyTrades nor fetchTrades")
424
434
 
435
+ @ccxt_client_util.converted_ccxt_common_errors
425
436
  async def create_market_buy_order(self, symbol, quantity, price=None, params=None) -> dict:
426
437
  return self.adapter.adapt_order(
427
438
  # use create_order instead of create_market_buy_order to pass the price argument
@@ -432,12 +443,14 @@ class CCXTConnector(abstract_exchange.AbstractExchange):
432
443
  symbol=symbol, quantity=quantity
433
444
  )
434
445
 
446
+ @ccxt_client_util.converted_ccxt_common_errors
435
447
  async def create_limit_buy_order(self, symbol, quantity, price=None, params=None) -> dict:
436
448
  return self.adapter.adapt_order(
437
449
  await self.client.create_limit_buy_order(symbol, quantity, price, params=params),
438
450
  symbol=symbol, quantity=quantity
439
451
  )
440
452
 
453
+ @ccxt_client_util.converted_ccxt_common_errors
441
454
  async def create_market_sell_order(self, symbol, quantity, price=None, params=None) -> dict:
442
455
  return self.adapter.adapt_order(
443
456
  # use create_order instead of create_market_sell_order to pass the price argument
@@ -448,12 +461,14 @@ class CCXTConnector(abstract_exchange.AbstractExchange):
448
461
  symbol=symbol, quantity=quantity
449
462
  )
450
463
 
464
+ @ccxt_client_util.converted_ccxt_common_errors
451
465
  async def create_limit_sell_order(self, symbol, quantity, price=None, params=None) -> dict:
452
466
  return self.adapter.adapt_order(
453
467
  await self.client.create_limit_sell_order(symbol, quantity, price, params=params),
454
468
  symbol=symbol, quantity=quantity
455
469
  )
456
470
 
471
+ @ccxt_client_util.converted_ccxt_common_errors
457
472
  async def create_market_stop_loss_order(self, symbol, quantity, price, side, current_price, params=None) -> dict:
458
473
  if self.client.has.get("createStopMarketOrder"):
459
474
  try:
@@ -484,6 +499,7 @@ class CCXTConnector(abstract_exchange.AbstractExchange):
484
499
  return created_order
485
500
  raise NotImplementedError("create_market_stop_loss_order is not implemented")
486
501
 
502
+ @ccxt_client_util.converted_ccxt_common_errors
487
503
  async def create_limit_stop_loss_order(self, symbol, quantity, price, stop_price, side, params=None) -> dict:
488
504
  if self.client.has.get("createStopLimitOrder"):
489
505
  return self.adapter.adapt_order(
@@ -499,18 +515,23 @@ class CCXTConnector(abstract_exchange.AbstractExchange):
499
515
  )
500
516
  raise NotImplementedError("create_limit_stop_loss_order is not implemented")
501
517
 
518
+ @ccxt_client_util.converted_ccxt_common_errors
502
519
  async def create_market_take_profit_order(self, symbol, quantity, price=None, side=None, params=None) -> dict:
503
520
  raise NotImplementedError("create_market_take_profit_order is not implemented")
504
521
 
522
+ @ccxt_client_util.converted_ccxt_common_errors
505
523
  async def create_limit_take_profit_order(self, symbol, quantity, price=None, side=None, params=None) -> dict:
506
524
  raise NotImplementedError("create_limit_take_profit_order is not implemented")
507
525
 
526
+ @ccxt_client_util.converted_ccxt_common_errors
508
527
  async def create_market_trailing_stop_order(self, symbol, quantity, price=None, side=None, params=None) -> dict:
509
528
  raise NotImplementedError("create_market_trailing_stop_order is not implemented")
510
529
 
530
+ @ccxt_client_util.converted_ccxt_common_errors
511
531
  async def create_limit_trailing_stop_order(self, symbol, quantity, price=None, side=None, params=None) -> dict:
512
532
  raise NotImplementedError("create_limit_trailing_stop_order is not implemented")
513
533
 
534
+ @ccxt_client_util.converted_ccxt_common_errors
514
535
  async def edit_order(self, exchange_order_id: str, order_type: enums.TraderOrderType, symbol: str,
515
536
  quantity: float, price: float, stop_price: float = None, side: str = None,
516
537
  current_price: float = None, params: dict = None):
@@ -527,6 +548,7 @@ class CCXTConnector(abstract_exchange.AbstractExchange):
527
548
  symbol=symbol, quantity=quantity
528
549
  )
529
550
 
551
+ @ccxt_client_util.converted_ccxt_common_errors
530
552
  async def cancel_order(
531
553
  self, exchange_order_id: str, symbol: str, order_type: enums.TraderOrderType, **kwargs: dict
532
554
  ) -> enums.OrderStatus:
@@ -562,6 +584,7 @@ class CCXTConnector(abstract_exchange.AbstractExchange):
562
584
  f"{exchange_order_id} failed to cancel | {e} ({e.__class__.__name__})")
563
585
  raise e
564
586
 
587
+ @ccxt_client_util.converted_ccxt_common_errors
565
588
  async def get_positions(self, symbols=None, **kwargs: dict) -> list:
566
589
  try:
567
590
  return [
@@ -571,6 +594,7 @@ class CCXTConnector(abstract_exchange.AbstractExchange):
571
594
  except ccxt.NotSupported as err:
572
595
  raise NotImplementedError from err
573
596
 
597
+ @ccxt_client_util.converted_ccxt_common_errors
574
598
  async def get_position(self, symbol: str, **kwargs: dict) -> dict:
575
599
  try:
576
600
  return self.adapter.adapt_position(
@@ -579,22 +603,26 @@ class CCXTConnector(abstract_exchange.AbstractExchange):
579
603
  except ccxt.NotSupported as err:
580
604
  raise NotImplementedError from err
581
605
 
606
+ @ccxt_client_util.converted_ccxt_common_errors
582
607
  async def get_mocked_empty_position(self, symbol: str, **kwargs: dict) -> dict:
583
608
  return self.adapter.adapt_position(
584
609
  self.client.parse_position({}, market=self.client.market(symbol)),
585
610
  force_empty=True
586
611
  )
587
612
 
613
+ @ccxt_client_util.converted_ccxt_common_errors
588
614
  async def get_funding_rate(self, symbol: str, **kwargs: dict) -> dict:
589
615
  return self.adapter.adapt_funding_rate(
590
616
  await self.client.fetch_funding_rate(symbol=symbol, params=kwargs)
591
617
  )
592
618
 
619
+ @ccxt_client_util.converted_ccxt_common_errors
593
620
  async def get_funding_rate_history(self, symbol: str, limit: int = 1, **kwargs: dict) -> list:
594
621
  return self.adapter.adapt_funding_rate(
595
622
  await self.client.fetch_funding_rate_history(symbol=symbol, limit=limit, params=kwargs)
596
623
  )
597
624
 
625
+ @ccxt_client_util.converted_ccxt_common_errors
598
626
  async def get_leverage_tiers(self, symbols: list = None, **kwargs: dict) -> dict:
599
627
  if self.client.has.get("fetchLeverageTiers"):
600
628
  return self.adapter.adapt_leverage_tiers(
@@ -605,14 +633,17 @@ class CCXTConnector(abstract_exchange.AbstractExchange):
605
633
  def get_contract_size(self, symbol: str):
606
634
  return decimal.Decimal(str(ccxt_client_util.get_contract_size(self.client, symbol)))
607
635
 
636
+ @ccxt_client_util.converted_ccxt_common_errors
608
637
  async def get_symbol_leverage(self, symbol: str, **kwargs: dict):
609
638
  return self.adapter.adapt_leverage(
610
639
  await self.client.fetch_leverage(symbol=symbol, params=kwargs)
611
640
  )
612
641
 
642
+ @ccxt_client_util.converted_ccxt_common_errors
613
643
  async def set_symbol_leverage(self, symbol: str, leverage: float, **kwargs: dict):
614
644
  return await self.client.set_leverage(leverage=int(leverage), symbol=symbol, params=kwargs)
615
645
 
646
+ @ccxt_client_util.converted_ccxt_common_errors
616
647
  async def set_symbol_margin_type(self, symbol: str, isolated: bool, **kwargs: dict):
617
648
  return await self.client.set_margin_mode(
618
649
  ccxt_enums.ExchangeMarginTypes.ISOLATED.value if isolated else ccxt_enums.ExchangeMarginTypes.CROSS.value,
@@ -620,9 +651,11 @@ class CCXTConnector(abstract_exchange.AbstractExchange):
620
651
  params=kwargs,
621
652
  )
622
653
 
654
+ @ccxt_client_util.converted_ccxt_common_errors
623
655
  async def set_symbol_position_mode(self, symbol: str, one_way: bool):
624
656
  return await self.client.set_position_mode(self, hedged=not one_way, symbol=symbol)
625
657
 
658
+ @ccxt_client_util.converted_ccxt_common_errors
626
659
  async def set_symbol_partial_take_profit_stop_loss(self, symbol: str, inverse: bool,
627
660
  tp_sl_mode: enums.TakeProfitStopLossMode):
628
661
  raise NotImplementedError("set_symbol_partial_take_profit_stop_loss is not implemented")