OctoBot-Trading 2.4.76__tar.gz → 2.4.77__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.76 → OctoBot-Trading-2.4.77}/CHANGELOG.md +4 -0
  2. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77/OctoBot_Trading.egg-info}/PKG-INFO +2 -2
  3. {OctoBot-Trading-2.4.76/OctoBot_Trading.egg-info → OctoBot-Trading-2.4.77}/PKG-INFO +2 -2
  4. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/README.md +1 -1
  5. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/__init__.py +1 -1
  6. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchanges/connectors/ccxt/ccxt_client_util.py +9 -1
  7. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchanges/connectors/ccxt/ccxt_connector.py +3 -3
  8. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchanges/connectors/ccxt/ccxt_websocket_connector.py +1 -1
  9. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/exchanges/test_exchange_config_data.py +13 -5
  10. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests_additional/real_exchanges/real_exchange_tester.py +9 -0
  11. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests_additional/real_exchanges/test_ascendex.py +1 -4
  12. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests_additional/real_exchanges/test_binance.py +2 -4
  13. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests_additional/real_exchanges/test_binance_futures.py +1 -4
  14. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests_additional/real_exchanges/test_bingx.py +1 -4
  15. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests_additional/real_exchanges/test_bitfinex.py +1 -4
  16. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests_additional/real_exchanges/test_bitget.py +1 -4
  17. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests_additional/real_exchanges/test_bithumb.py +1 -4
  18. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests_additional/real_exchanges/test_bitso.py +1 -4
  19. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests_additional/real_exchanges/test_bitstamp.py +1 -4
  20. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests_additional/real_exchanges/test_bybit.py +1 -4
  21. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests_additional/real_exchanges/test_bybit_futures.py +1 -4
  22. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests_additional/real_exchanges/test_coinbase.py +1 -4
  23. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests_additional/real_exchanges/test_coinex.py +1 -4
  24. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests_additional/real_exchanges/test_cryptocom.py +1 -4
  25. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests_additional/real_exchanges/test_gateio.py +1 -4
  26. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests_additional/real_exchanges/test_hitbtc.py +1 -4
  27. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests_additional/real_exchanges/test_hollaex.py +1 -4
  28. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests_additional/real_exchanges/test_htx.py +1 -4
  29. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests_additional/real_exchanges/test_kraken.py +1 -4
  30. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests_additional/real_exchanges/test_kucoin.py +1 -4
  31. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests_additional/real_exchanges/test_kucoin_futures.py +1 -4
  32. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests_additional/real_exchanges/test_mexc.py +1 -4
  33. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests_additional/real_exchanges/test_ndax.py +1 -4
  34. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests_additional/real_exchanges/test_okcoin.py +1 -4
  35. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests_additional/real_exchanges/test_okx.py +1 -4
  36. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests_additional/real_exchanges/test_okx_futures.py +1 -4
  37. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests_additional/real_exchanges/test_phemex.py +1 -4
  38. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests_additional/real_exchanges/test_poloniex.py +1 -4
  39. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests_additional/real_exchanges/test_upbit.py +1 -4
  40. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests_additional/real_exchanges/test_wavesexchange.py +1 -4
  41. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/LICENSE +0 -0
  42. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/MANIFEST.in +0 -0
  43. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/OctoBot_Trading.egg-info/SOURCES.txt +0 -0
  44. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/OctoBot_Trading.egg-info/dependency_links.txt +0 -0
  45. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/OctoBot_Trading.egg-info/not-zip-safe +0 -0
  46. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/OctoBot_Trading.egg-info/requires.txt +0 -0
  47. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/OctoBot_Trading.egg-info/top_level.txt +0 -0
  48. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/api/__init__.py +0 -0
  49. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/api/channels.py +0 -0
  50. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/api/contracts.py +0 -0
  51. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/api/exchange.py +0 -0
  52. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/api/modes.py +0 -0
  53. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/api/orders.py +0 -0
  54. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/api/portfolio.py +0 -0
  55. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/api/positions.py +0 -0
  56. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/api/profitability.py +0 -0
  57. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/api/storage.py +0 -0
  58. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/api/symbol_data.py +0 -0
  59. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/api/trader.py +0 -0
  60. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/api/trades.py +0 -0
  61. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/constants.py +0 -0
  62. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/enums.py +0 -0
  63. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/errors.py +0 -0
  64. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_channel.py +0 -0
  65. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/__init__.py +0 -0
  66. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/contracts/__init__.py +0 -0
  67. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/contracts/contract_factory.py +0 -0
  68. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/contracts/future_contract.py +0 -0
  69. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/contracts/margin_contract.py +0 -0
  70. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/exchange_symbol_data.py +0 -0
  71. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/exchange_symbols_data.py +0 -0
  72. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/funding/__init__.py +0 -0
  73. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/funding/channel/__init__.py +0 -0
  74. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/funding/channel/funding.py +0 -0
  75. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/funding/channel/funding_updater.py +0 -0
  76. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/funding/channel/funding_updater_simulator.py +0 -0
  77. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/funding/funding_manager.py +0 -0
  78. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/kline/__init__.py +0 -0
  79. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/kline/channel/__init__.py +0 -0
  80. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/kline/channel/kline.py +0 -0
  81. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/kline/channel/kline_updater.py +0 -0
  82. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/kline/channel/kline_updater_simulator.py +0 -0
  83. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/kline/kline_manager.py +0 -0
  84. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/ohlcv/__init__.py +0 -0
  85. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/ohlcv/candles_adapter.py +0 -0
  86. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/ohlcv/candles_manager.py +0 -0
  87. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/ohlcv/channel/__init__.py +0 -0
  88. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/ohlcv/channel/ohlcv.py +0 -0
  89. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/ohlcv/channel/ohlcv_updater.py +0 -0
  90. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/ohlcv/channel/ohlcv_updater_simulator.py +0 -0
  91. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/ohlcv/preloaded_candles_manager.py +0 -0
  92. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/order_book/__init__.py +0 -0
  93. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/order_book/channel/__init__.py +0 -0
  94. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/order_book/channel/order_book.py +0 -0
  95. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/order_book/channel/order_book_updater.py +0 -0
  96. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/order_book/channel/order_book_updater_simulator.py +0 -0
  97. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/order_book/order_book_manager.py +0 -0
  98. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/prices/__init__.py +0 -0
  99. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/prices/channel/__init__.py +0 -0
  100. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/prices/channel/price.py +0 -0
  101. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/prices/channel/prices_updater.py +0 -0
  102. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/prices/channel/prices_updater_simulator.py +0 -0
  103. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/prices/price_events_manager.py +0 -0
  104. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/prices/prices_manager.py +0 -0
  105. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/recent_trades/__init__.py +0 -0
  106. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/recent_trades/channel/__init__.py +0 -0
  107. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/recent_trades/channel/recent_trade.py +0 -0
  108. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/recent_trades/channel/recent_trade_updater.py +0 -0
  109. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/recent_trades/channel/recent_trade_updater_simulator.py +0 -0
  110. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/recent_trades/recent_trades_manager.py +0 -0
  111. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/ticker/__init__.py +0 -0
  112. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/ticker/channel/__init__.py +0 -0
  113. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/ticker/channel/ticker.py +0 -0
  114. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/ticker/channel/ticker_updater.py +0 -0
  115. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/ticker/channel/ticker_updater_simulator.py +0 -0
  116. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchange_data/ticker/ticker_manager.py +0 -0
  117. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchanges/__init__.py +0 -0
  118. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchanges/abstract_exchange.py +0 -0
  119. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchanges/abstract_websocket_exchange.py +0 -0
  120. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchanges/adapters/__init__.py +0 -0
  121. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchanges/adapters/abstract_adapter.py +0 -0
  122. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchanges/config/__init__.py +0 -0
  123. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchanges/config/backtesting_exchange_config.py +0 -0
  124. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchanges/config/exchange_config_data.py +0 -0
  125. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchanges/connectors/__init__.py +0 -0
  126. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchanges/connectors/ccxt/__init__.py +0 -0
  127. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchanges/connectors/ccxt/ccxt_adapter.py +0 -0
  128. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchanges/connectors/ccxt/ccxt_clients_cache.py +0 -0
  129. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchanges/connectors/ccxt/constants.py +0 -0
  130. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchanges/connectors/ccxt/enums.py +0 -0
  131. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchanges/connectors/simulator/__init__.py +0 -0
  132. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchanges/connectors/simulator/ccxt_client_simulation.py +0 -0
  133. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchanges/connectors/simulator/exchange_simulator_adapter.py +0 -0
  134. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchanges/connectors/simulator/exchange_simulator_connector.py +0 -0
  135. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchanges/exchange_builder.py +0 -0
  136. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchanges/exchange_channels.py +0 -0
  137. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchanges/exchange_details.py +0 -0
  138. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchanges/exchange_factory.py +0 -0
  139. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchanges/exchange_manager.py +0 -0
  140. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchanges/exchange_websocket_factory.py +0 -0
  141. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchanges/exchanges.py +0 -0
  142. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchanges/implementations/__init__.py +0 -0
  143. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchanges/implementations/default_rest_exchange.py +0 -0
  144. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchanges/implementations/default_websocket_exchange.py +0 -0
  145. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchanges/implementations/exchange_simulator.py +0 -0
  146. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchanges/traders/__init__.py +0 -0
  147. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchanges/traders/trader.py +0 -0
  148. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchanges/traders/trader_simulator.py +0 -0
  149. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchanges/types/__init__.py +0 -0
  150. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchanges/types/rest_exchange.py +0 -0
  151. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchanges/types/websocket_exchange.py +0 -0
  152. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchanges/util/__init__.py +0 -0
  153. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchanges/util/exchange_market_status_fixer.py +0 -0
  154. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchanges/util/exchange_util.py +0 -0
  155. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchanges/util/symbol_details.py +0 -0
  156. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/exchanges/util/websockets_util.py +0 -0
  157. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/modes/__init__.py +0 -0
  158. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/modes/abstract_trading_mode.py +0 -0
  159. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/modes/channel/__init__.py +0 -0
  160. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/modes/channel/abstract_mode_consumer.py +0 -0
  161. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/modes/channel/abstract_mode_producer.py +0 -0
  162. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/modes/channel/mode.py +0 -0
  163. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/modes/mode_activity.py +0 -0
  164. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/modes/mode_config.py +0 -0
  165. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/modes/modes_factory.py +0 -0
  166. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/modes/modes_util.py +0 -0
  167. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/modes/script_keywords/__init__.py +0 -0
  168. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/modes/script_keywords/basic_keywords/__init__.py +0 -0
  169. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/modes/script_keywords/basic_keywords/account_balance.py +0 -0
  170. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/modes/script_keywords/basic_keywords/amount.py +0 -0
  171. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/modes/script_keywords/basic_keywords/configuration.py +0 -0
  172. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/modes/script_keywords/basic_keywords/position.py +0 -0
  173. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/modes/script_keywords/basic_keywords/price.py +0 -0
  174. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/modes/script_keywords/basic_keywords/run_persistence.py +0 -0
  175. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/modes/script_keywords/basic_keywords/trading_signals.py +0 -0
  176. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/modes/script_keywords/basic_keywords/user_inputs.py +0 -0
  177. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/modes/script_keywords/context_management.py +0 -0
  178. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/modes/script_keywords/dsl/__init__.py +0 -0
  179. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/modes/script_keywords/dsl/quantity.py +0 -0
  180. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/modes/script_keywords/dsl/values.py +0 -0
  181. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/modes/scripted_trading_mode/__init__.py +0 -0
  182. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/modes/scripted_trading_mode/abstract_scripted_trading_mode.py +0 -0
  183. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/octobot_channel_consumer.py +0 -0
  184. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/__init__.py +0 -0
  185. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/exchange_personal_data.py +0 -0
  186. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/orders/__init__.py +0 -0
  187. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/orders/channel/__init__.py +0 -0
  188. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/orders/channel/orders.py +0 -0
  189. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/orders/channel/orders_updater.py +0 -0
  190. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/orders/channel/orders_updater_simulator.py +0 -0
  191. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/orders/decimal_order_adapter.py +0 -0
  192. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/orders/groups/__init__.py +0 -0
  193. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/orders/groups/balanced_take_profit_and_stop_order_group.py +0 -0
  194. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/orders/groups/group_util.py +0 -0
  195. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/orders/groups/one_cancels_the_other_order_group.py +0 -0
  196. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/orders/order.py +0 -0
  197. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/orders/order_adapter.py +0 -0
  198. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/orders/order_factory.py +0 -0
  199. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/orders/order_group.py +0 -0
  200. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/orders/order_state.py +0 -0
  201. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/orders/order_util.py +0 -0
  202. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/orders/orders_manager.py +0 -0
  203. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/orders/orders_storage_operations.py +0 -0
  204. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/orders/states/__init__.py +0 -0
  205. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/orders/states/cancel_order_state.py +0 -0
  206. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/orders/states/close_order_state.py +0 -0
  207. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/orders/states/fill_order_state.py +0 -0
  208. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/orders/states/open_order_state.py +0 -0
  209. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/orders/states/order_state_factory.py +0 -0
  210. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/orders/states/pending_creation_chained_order_state.py +0 -0
  211. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/orders/states/pending_creation_order_state.py +0 -0
  212. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/orders/types/__init__.py +0 -0
  213. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/orders/types/limit/__init__.py +0 -0
  214. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/orders/types/limit/buy_limit_order.py +0 -0
  215. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/orders/types/limit/limit_order.py +0 -0
  216. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/orders/types/limit/sell_limit_order.py +0 -0
  217. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/orders/types/limit/stop_loss_limit_order.py +0 -0
  218. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/orders/types/limit/stop_loss_order.py +0 -0
  219. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/orders/types/limit/take_profit_limit_order.py +0 -0
  220. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/orders/types/limit/take_profit_order.py +0 -0
  221. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/orders/types/market/__init__.py +0 -0
  222. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/orders/types/market/buy_market_order.py +0 -0
  223. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/orders/types/market/market_order.py +0 -0
  224. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/orders/types/market/sell_market_order.py +0 -0
  225. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/orders/types/trailing/__init__.py +0 -0
  226. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/orders/types/trailing/trailing_stop_limit_order.py +0 -0
  227. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/orders/types/trailing/trailing_stop_order.py +0 -0
  228. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/orders/types/unknown_order.py +0 -0
  229. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/orders/types/unsupported_order.py +0 -0
  230. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/portfolios/__init__.py +0 -0
  231. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/portfolios/asset.py +0 -0
  232. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/portfolios/assets/__init__.py +0 -0
  233. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/portfolios/assets/future_asset.py +0 -0
  234. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/portfolios/assets/margin_asset.py +0 -0
  235. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/portfolios/assets/spot_asset.py +0 -0
  236. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/portfolios/channel/__init__.py +0 -0
  237. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/portfolios/channel/balance.py +0 -0
  238. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/portfolios/channel/balance_updater.py +0 -0
  239. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/portfolios/channel/balance_updater_simulator.py +0 -0
  240. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/portfolios/history/__init__.py +0 -0
  241. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/portfolios/history/historical_asset_value.py +0 -0
  242. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/portfolios/history/historical_asset_value_factory.py +0 -0
  243. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/portfolios/history/historical_portfolio_value_manager.py +0 -0
  244. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/portfolios/portfolio.py +0 -0
  245. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/portfolios/portfolio_factory.py +0 -0
  246. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/portfolios/portfolio_manager.py +0 -0
  247. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/portfolios/portfolio_profitability.py +0 -0
  248. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/portfolios/portfolio_util.py +0 -0
  249. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/portfolios/portfolio_value_holder.py +0 -0
  250. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/portfolios/sub_portfolio.py +0 -0
  251. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/portfolios/types/__init__.py +0 -0
  252. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/portfolios/types/future_portfolio.py +0 -0
  253. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/portfolios/types/margin_portfolio.py +0 -0
  254. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/portfolios/types/spot_portfolio.py +0 -0
  255. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/portfolios/value_converter.py +0 -0
  256. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/positions/__init__.py +0 -0
  257. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/positions/channel/__init__.py +0 -0
  258. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/positions/channel/positions.py +0 -0
  259. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/positions/channel/positions_updater.py +0 -0
  260. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/positions/channel/positions_updater_simulator.py +0 -0
  261. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/positions/position.py +0 -0
  262. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/positions/position_factory.py +0 -0
  263. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/positions/position_state.py +0 -0
  264. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/positions/position_util.py +0 -0
  265. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/positions/positions_manager.py +0 -0
  266. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/positions/states/__init__.py +0 -0
  267. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/positions/states/active_position_state.py +0 -0
  268. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/positions/states/idle_position_state.py +0 -0
  269. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/positions/states/liquidate_position_state.py +0 -0
  270. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/positions/states/position_state_factory.py +0 -0
  271. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/positions/types/__init__.py +0 -0
  272. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/positions/types/inverse_position.py +0 -0
  273. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/positions/types/linear_position.py +0 -0
  274. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/state.py +0 -0
  275. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/trades/__init__.py +0 -0
  276. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/trades/channel/__init__.py +0 -0
  277. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/trades/channel/trades.py +0 -0
  278. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/trades/channel/trades_updater.py +0 -0
  279. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/trades/trade.py +0 -0
  280. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/trades/trade_factory.py +0 -0
  281. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/trades/trade_pnl.py +0 -0
  282. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/trades/trades_manager.py +0 -0
  283. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/trades/trades_util.py +0 -0
  284. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/transactions/__init__.py +0 -0
  285. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/transactions/transaction.py +0 -0
  286. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/transactions/transaction_factory.py +0 -0
  287. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/transactions/transactions_manager.py +0 -0
  288. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/transactions/types/__init__.py +0 -0
  289. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/transactions/types/blockchain_transaction.py +0 -0
  290. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/transactions/types/fee_transaction.py +0 -0
  291. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/transactions/types/realised_pnl_transaction.py +0 -0
  292. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/personal_data/transactions/types/transfer_transaction.py +0 -0
  293. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/signals/__init__.py +0 -0
  294. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/signals/channel/__init__.py +0 -0
  295. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/signals/channel/remote_trading_signal.py +0 -0
  296. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/signals/channel/remote_trading_signal_channel_factory.py +0 -0
  297. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/signals/channel/signal_producer.py +0 -0
  298. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/signals/signal_creation.py +0 -0
  299. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/signals/trading_signal_bundle_builder.py +0 -0
  300. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/signals/util.py +0 -0
  301. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/storage/__init__.py +0 -0
  302. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/storage/abstract_storage.py +0 -0
  303. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/storage/candles_storage.py +0 -0
  304. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/storage/orders_storage.py +0 -0
  305. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/storage/portfolio_storage.py +0 -0
  306. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/storage/storage_manager.py +0 -0
  307. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/storage/trades_storage.py +0 -0
  308. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/storage/transactions_storage.py +0 -0
  309. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/storage/util.py +0 -0
  310. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/supervisors/__init__.py +0 -0
  311. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/supervisors/abstract_portfolio_supervisor.py +0 -0
  312. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/supervisors/abstract_supervisor.py +0 -0
  313. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/util/__init__.py +0 -0
  314. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/util/config_util.py +0 -0
  315. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/util/initializable.py +0 -0
  316. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/util/initialization_util.py +0 -0
  317. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/util/simulator_updater_utils.py +0 -0
  318. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/util/test_tools/__init__.py +0 -0
  319. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/util/test_tools/exchange_data.py +0 -0
  320. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/util/test_tools/exchanges_test_tools.py +0 -0
  321. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/util/test_tools/spot_rest_exchange_test_tools.py +0 -0
  322. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/octobot_trading/util/test_tools/websocket_test_tools.py +0 -0
  323. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/requirements.txt +0 -0
  324. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/setup.cfg +0 -0
  325. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/setup.py +0 -0
  326. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/api/__init__.py +0 -0
  327. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/api/test_channels.py +0 -0
  328. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/api/test_exchange.py +0 -0
  329. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/api/test_modes.py +0 -0
  330. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/api/test_orders.py +0 -0
  331. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/api/test_portfolio.py +0 -0
  332. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/api/test_profitability.py +0 -0
  333. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/api/test_symbol_data.py +0 -0
  334. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/api/test_trader.py +0 -0
  335. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/api/test_trades.py +0 -0
  336. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/cli/__init__.py +0 -0
  337. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/exchange_data/__init__.py +0 -0
  338. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/exchange_data/contracts/__init__.py +0 -0
  339. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/exchange_data/contracts/test_future_contract.py +0 -0
  340. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/exchange_data/contracts/test_margin_contract.py +0 -0
  341. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/exchange_data/funding/__init__.py +0 -0
  342. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/exchange_data/funding/test_funding_manager.py +0 -0
  343. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/exchange_data/kline/__init__.py +0 -0
  344. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/exchange_data/kline/test_kline_manager.py +0 -0
  345. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/exchange_data/ohlcv/__init__.py +0 -0
  346. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/exchange_data/ohlcv/test_candles_adapter.py +0 -0
  347. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/exchange_data/ohlcv/test_candles_manager.py +0 -0
  348. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/exchange_data/order_book/__init__.py +0 -0
  349. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/exchange_data/order_book/test_order_book_manager.py +0 -0
  350. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/exchange_data/prices/__init__.py +0 -0
  351. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/exchange_data/prices/test_price_events_manager.py +0 -0
  352. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/exchange_data/prices/test_prices_manager.py +0 -0
  353. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/exchange_data/recent_trades/__init__.py +0 -0
  354. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/exchange_data/recent_trades/test_recent_trades_manager.py +0 -0
  355. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/exchange_data/test_exchange_symbols_data.py +0 -0
  356. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/exchange_data/ticker/__init__.py +0 -0
  357. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/exchange_data/ticker/test_ticker_manager.py +0 -0
  358. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/exchanges/__init__.py +0 -0
  359. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/exchanges/connectors/__init__.py +0 -0
  360. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/exchanges/connectors/ccxt/__init__.py +0 -0
  361. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/exchanges/connectors/ccxt/mock_exchanges_data.py +0 -0
  362. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/exchanges/connectors/ccxt/test_ccxt_connector.py +0 -0
  363. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/exchanges/implementations/__init__.py +0 -0
  364. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/exchanges/implementations/test_default_rest_exchange.py +0 -0
  365. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/exchanges/implementations/test_default_websocket_exchange.py +0 -0
  366. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/exchanges/test_abstract_exchange.py +0 -0
  367. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/exchanges/test_abstract_websocket_exchange.py +0 -0
  368. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/exchanges/test_exchange_builder.py +0 -0
  369. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/exchanges/test_exchange_factory.py +0 -0
  370. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/exchanges/test_exchange_manager.py +0 -0
  371. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/exchanges/test_exchange_simulator.py +0 -0
  372. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/exchanges/test_exchanges.py +0 -0
  373. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/exchanges/traders/__init__.py +0 -0
  374. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/exchanges/traders/test_trader.py +0 -0
  375. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/exchanges/types/__init__.py +0 -0
  376. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/exchanges/types/test_websocket_exchange.py +0 -0
  377. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/exchanges/util/__init__.py +0 -0
  378. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/exchanges/util/test_exchange_market_status_fixer.py +0 -0
  379. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/exchanges/util/test_exchange_util.py +0 -0
  380. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/modes/__init__.py +0 -0
  381. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/modes/script_keywords/__init__.py +0 -0
  382. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/modes/script_keywords/basic_keywords/__init__.py +0 -0
  383. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/modes/script_keywords/basic_keywords/test_account_balance.py +0 -0
  384. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/modes/script_keywords/basic_keywords/test_amount.py +0 -0
  385. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/modes/script_keywords/basic_keywords/test_position.py +0 -0
  386. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/modes/script_keywords/basic_keywords/test_price.py +0 -0
  387. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/modes/script_keywords/dsl/__init__.py +0 -0
  388. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/modes/script_keywords/dsl/test_quantity.py +0 -0
  389. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/modes/test_abstract_mode_consumer.py +0 -0
  390. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/modes/test_abstract_trading_mode.py +0 -0
  391. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/modes/test_modes_util.py +0 -0
  392. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/__init__.py +0 -0
  393. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/orders/__init__.py +0 -0
  394. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/orders/groups/__init__.py +0 -0
  395. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/orders/groups/test_balanced_take_profit_and_stop_order_group.py +0 -0
  396. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/orders/groups/test_group_util.py +0 -0
  397. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/orders/groups/test_one_cancels_the_other_order_group.py +0 -0
  398. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/orders/states/__init__.py +0 -0
  399. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/orders/states/test_cancel_order_state.py +0 -0
  400. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/orders/states/test_close_order_state.py +0 -0
  401. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/orders/states/test_fill_order_state.py +0 -0
  402. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/orders/states/test_open_order_state.py +0 -0
  403. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/orders/states/test_order_state.py +0 -0
  404. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/orders/states/test_order_state_factory.py +0 -0
  405. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/orders/states/test_pending_creation_chained_order_state.py +0 -0
  406. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/orders/states/test_pending_creation_order_state.py +0 -0
  407. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/orders/test_decimal_order_adapter.py +0 -0
  408. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/orders/test_double_filled_order.py +0 -0
  409. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/orders/test_order.py +0 -0
  410. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/orders/test_order_adapter.py +0 -0
  411. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/orders/test_order_factory.py +0 -0
  412. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/orders/test_order_util.py +0 -0
  413. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/orders/test_orders_manager.py +0 -0
  414. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/orders/test_orders_storage_operations.py +0 -0
  415. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/orders/types/__init__.py +0 -0
  416. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/orders/types/limit/__init__.py +0 -0
  417. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/orders/types/limit/test_buy_limit_order.py +0 -0
  418. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/orders/types/limit/test_limit_order.py +0 -0
  419. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/orders/types/limit/test_sell_limit_order.py +0 -0
  420. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/orders/types/limit/test_stop_loss_limit_order.py +0 -0
  421. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/orders/types/limit/test_stop_loss_order.py +0 -0
  422. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/orders/types/limit/test_take_profit_limit_order.py +0 -0
  423. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/orders/types/limit/test_take_profit_order.py +0 -0
  424. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/orders/types/market/__init__.py +0 -0
  425. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/orders/types/market/test_buy_market_order.py +0 -0
  426. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/orders/types/market/test_sell_market_order.py +0 -0
  427. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/orders/types/test_unknown_order.py +0 -0
  428. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/orders/types/trailing/__init__.py +0 -0
  429. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/orders/types/trailing/test_trailing_stop_limit_order.py +0 -0
  430. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/orders/types/trailing/test_trailing_stop_order.py +0 -0
  431. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/portfolios/__init__.py +0 -0
  432. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/portfolios/assets/__init__.py +0 -0
  433. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/portfolios/assets/test_future_asset.py +0 -0
  434. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/portfolios/assets/test_margin_asset.py +0 -0
  435. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/portfolios/assets/test_spot_asset.py +0 -0
  436. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/portfolios/history/__init__.py +0 -0
  437. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/portfolios/history/test_historical_asset_value_factory.py +0 -0
  438. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/portfolios/history/test_historical_portfolio_value_manager.py +0 -0
  439. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/portfolios/test_asset.py +0 -0
  440. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/portfolios/test_portfolio.py +0 -0
  441. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/portfolios/test_portfolio_manager.py +0 -0
  442. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/portfolios/test_portfolio_profitability.py +0 -0
  443. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/portfolios/test_portfolio_value_holder.py +0 -0
  444. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/portfolios/test_value_converter.py +0 -0
  445. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/portfolios/types/__init__.py +0 -0
  446. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/portfolios/types/test_future_portfolio.py +0 -0
  447. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/portfolios/types/test_margin_portfolio.py +0 -0
  448. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/portfolios/types/test_spot_portfolio.py +0 -0
  449. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/positions/__init__.py +0 -0
  450. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/positions/channel/__init__.py +0 -0
  451. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/positions/states/__init__.py +0 -0
  452. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/positions/test_position.py +0 -0
  453. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/positions/test_position_factory.py +0 -0
  454. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/positions/test_positions_manager.py +0 -0
  455. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/positions/types/__init__.py +0 -0
  456. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/positions/types/test_inverse_position.py +0 -0
  457. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/positions/types/test_linear_position.py +0 -0
  458. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/trades/__init__.py +0 -0
  459. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/trades/test_trade_factory.py +0 -0
  460. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/trades/test_trade_manager.py +0 -0
  461. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/trades/test_trade_pnl.py +0 -0
  462. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/trades/test_trade_util.py +0 -0
  463. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/transactions/__init__.py +0 -0
  464. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/transactions/test_transaction_factory.py +0 -0
  465. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/personal_data/transactions/test_transactions_manager.py +0 -0
  466. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/signals/__init__.py +0 -0
  467. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/signals/test_trading_signal_bundle_builder.py +0 -0
  468. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/signals/test_util.py +0 -0
  469. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/test_utils/__init__.py +0 -0
  470. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/test_utils/order_util.py +0 -0
  471. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/test_utils/random_numbers.py +0 -0
  472. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/util/__init__.py +0 -0
  473. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests/util/test_config_util.py +0 -0
  474. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests_additional/__init__.py +0 -0
  475. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests_additional/real_exchanges/__init__.py +0 -0
  476. {OctoBot-Trading-2.4.76 → OctoBot-Trading-2.4.77}/tests_additional/real_exchanges/real_futures_exchange_tester.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.77] - 2024-04-13
8
+ ### Added
9
+ - [Exchanges] Handle inactive markets
10
+
7
11
  ## [2.4.76] - 2024-04-12
8
12
  ### Added
9
13
  - [Exchanges] Handle order type open status for symbol
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: OctoBot-Trading
3
- Version: 2.4.76
3
+ Version: 2.4.77
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.76](https://github.com/Drakkar-Software/OctoBot-Trading/blob/master/CHANGELOG.md)
19
+ # OctoBot-Trading [2.4.77](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.76
3
+ Version: 2.4.77
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.76](https://github.com/Drakkar-Software/OctoBot-Trading/blob/master/CHANGELOG.md)
19
+ # OctoBot-Trading [2.4.77](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.76](https://github.com/Drakkar-Software/OctoBot-Trading/blob/master/CHANGELOG.md)
1
+ # OctoBot-Trading [2.4.77](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.76" # major.minor.revision
18
+ VERSION = "2.4.77" # major.minor.revision
@@ -134,8 +134,16 @@ def get_ccxt_client_login_options(exchange_manager):
134
134
  return {'defaultType': 'spot'}
135
135
 
136
136
 
137
- def get_symbols(client):
137
+ def get_symbols(client, active_only):
138
138
  try:
139
+ if active_only:
140
+ return set(
141
+ symbol
142
+ for symbol in client.symbols
143
+ if client.markets.get(symbol, {}).get(
144
+ enums.ExchangeConstantsMarketStatusColumns.ACTIVE.value, True
145
+ )
146
+ )
139
147
  return set(client.symbols)
140
148
  except (AttributeError, TypeError):
141
149
  # ccxt exchange load_markets failed
@@ -97,7 +97,7 @@ class CCXTConnector(abstract_exchange.AbstractExchange):
97
97
  )
98
98
 
99
99
  # initialize symbols and timeframes
100
- self.symbols = self.get_client_symbols()
100
+ self.symbols = self.get_client_symbols(active_only=True)
101
101
  self.time_frames = self.get_client_time_frames()
102
102
 
103
103
  except (ccxt.ExchangeNotAvailable, ccxt.RequestTimeout) as e:
@@ -157,8 +157,8 @@ class CCXTConnector(abstract_exchange.AbstractExchange):
157
157
  else:
158
158
  raise
159
159
 
160
- def get_client_symbols(self):
161
- return ccxt_client_util.get_symbols(self.client)
160
+ def get_client_symbols(self, active_only=True):
161
+ return ccxt_client_util.get_symbols(self.client, active_only)
162
162
 
163
163
  def get_client_time_frames(self):
164
164
  return ccxt_client_util.get_time_frames(self.client)
@@ -766,7 +766,7 @@ class CCXTWebsocketConnector(abstract_websocket_exchange.AbstractWebsocketExchan
766
766
  return self.EXCHANGE_FEEDS.get(Feeds.CANDLE, Feeds.UNSUPPORTED.value) != Feeds.UNSUPPORTED.value
767
767
 
768
768
  def _is_supported_pair(self, pair):
769
- return pair in ccxt_client_util.get_symbols(self.client)
769
+ return pair in ccxt_client_util.get_symbols(self.client, True)
770
770
 
771
771
  def _is_pair_independent_feed(self, feed):
772
772
  return feed in self.PAIR_INDEPENDENT_CHANNELS
@@ -80,7 +80,6 @@ class TestExchangeConfig:
80
80
  }
81
81
  _, exchange_manager = await self.init_default(config=config)
82
82
 
83
- assert "UNI/BTC" in exchange_manager.exchange_config.traded_cryptocurrencies["Bitcoin"]
84
83
  assert "AVAX/BTC" in exchange_manager.exchange_config.traded_cryptocurrencies["Bitcoin"]
85
84
  assert "ADA/BTC" in exchange_manager.exchange_config.traded_cryptocurrencies["Bitcoin"]
86
85
  assert "MATIC/BTC" in exchange_manager.exchange_config.traded_cryptocurrencies["Bitcoin"]
@@ -90,6 +89,9 @@ class TestExchangeConfig:
90
89
  assert "AVAX/BNB" not in exchange_manager.exchange_config.traded_cryptocurrencies["Bitcoin"]
91
90
  assert "ETH/BTC" in exchange_manager.exchange_config.traded_symbol_pairs
92
91
 
92
+ # inactive markets
93
+ assert "UNI/BTC" not in exchange_manager.exchange_config.traded_cryptocurrencies["Bitcoin"]
94
+
93
95
  # disabled
94
96
  assert "Ethereum" not in exchange_manager.exchange_config.traded_cryptocurrencies
95
97
  assert "ADA/ETH" not in exchange_manager.exchange_config.traded_symbol_pairs
@@ -113,10 +115,12 @@ class TestExchangeConfig:
113
115
  }
114
116
  _, exchange_manager = await self.init_default(config=config)
115
117
 
116
- assert "TRX/BTC" in exchange_manager.exchange_config.traded_symbol_pairs
117
118
  assert "ADA/BTC" in exchange_manager.exchange_config.traded_symbol_pairs
118
119
  assert "Bitcoin" in exchange_manager.exchange_config.traded_cryptocurrencies
119
120
 
121
+ # inactive markets
122
+ assert "TRX/BTC" not in exchange_manager.exchange_config.traded_cryptocurrencies["Bitcoin"]
123
+
120
124
  # invalid ETH wildcard config
121
125
  assert "Ethereum" not in exchange_manager.exchange_config.traded_cryptocurrencies
122
126
 
@@ -141,7 +145,6 @@ class TestExchangeConfig:
141
145
 
142
146
  _, exchange_manager = await self.init_default(config=config)
143
147
 
144
- assert "UNI/BTC" in exchange_manager.exchange_config.traded_cryptocurrencies["Bitcoin"]
145
148
  assert "AVAX/BTC" in exchange_manager.exchange_config.traded_cryptocurrencies["Bitcoin"]
146
149
  assert "ADA/BTC" in exchange_manager.exchange_config.traded_cryptocurrencies["Bitcoin"]
147
150
  assert "MATIC/BTC" in exchange_manager.exchange_config.traded_cryptocurrencies["Bitcoin"]
@@ -152,6 +155,9 @@ class TestExchangeConfig:
152
155
  assert "AVAX/BNB" not in exchange_manager.exchange_config.traded_cryptocurrencies["Bitcoin"]
153
156
  assert "BTC/USDT" in exchange_manager.exchange_config.traded_symbol_pairs
154
157
 
158
+ # inactive markets
159
+ assert "UNI/BTC" not in exchange_manager.exchange_config.traded_cryptocurrencies["Bitcoin"]
160
+
155
161
  # disabled
156
162
  assert "Ethereum" not in exchange_manager.exchange_config.traded_cryptocurrencies
157
163
  assert "ADA/ETH" not in exchange_manager.exchange_config.traded_symbol_pairs
@@ -189,11 +195,13 @@ class TestExchangeConfig:
189
195
  _, exchange_manager = await self.init_default(config=config)
190
196
 
191
197
  assert exchange_manager.exchange_config.traded_cryptocurrencies["Binance Coin"] == ["BNB/USDT"]
192
- assert exchange_manager.exchange_config.traded_cryptocurrencies["Binance USD"] == ["BNB/BUSD"]
193
198
  assert exchange_manager.exchange_config.traded_cryptocurrencies["Bitcoin"] == ["BNB/BTC"]
194
199
  assert exchange_manager.exchange_config.traded_cryptocurrencies["Tether"] == ["BNB/USDT"]
195
200
 
196
- sorted_pairs_without_redundancy = sorted(["BNB/USDT", "BNB/BUSD", "BNB/BTC"])
201
+ # inactive markets
202
+ assert exchange_manager.exchange_config.traded_cryptocurrencies["Binance USD"] == []
203
+
204
+ sorted_pairs_without_redundancy = sorted(["BNB/USDT", "BNB/BTC"])
197
205
  assert sorted(exchange_manager.exchange_config.traded_symbol_pairs) == sorted_pairs_without_redundancy
198
206
 
199
207
  cancel_ccxt_throttle_task()
@@ -35,6 +35,7 @@ class RealExchangeTester:
35
35
  SYMBOL = None
36
36
  SYMBOL_2 = None
37
37
  SYMBOL_3 = None
38
+ INACTIVE_MARKETS = []
38
39
  # default is 1h, change if necessary
39
40
  TIME_FRAME = commons_enums.TimeFrames.ONE_HOUR
40
41
  ALLOWED_TIMEFRAMES_WITHOUT_CANDLE = 0
@@ -102,6 +103,14 @@ class RealExchangeTester:
102
103
  # async def test_create_order(self):
103
104
  # pass
104
105
 
106
+ def ensure_required_market_status_values(self, market_status):
107
+ assert market_status
108
+ assert market_status[Ecmsc.TYPE.value] == self.MARKET_STATUS_TYPE
109
+ assert market_status[Ecmsc.SYMBOL.value] in (self.SYMBOL, self.SYMBOL_2, self.SYMBOL_3)
110
+ assert market_status[Ecmsc.ACTIVE.value] \
111
+ is False if market_status[Ecmsc.SYMBOL.value] in self.INACTIVE_MARKETS else True
112
+ assert market_status[Ecmsc.PRECISION.value]
113
+
105
114
  async def test_get_historical_ohlcv(self):
106
115
  # common implementation, should always work if candles history is supported
107
116
  historical_ohlcv = await self.get_historical_ohlcv()
@@ -52,10 +52,7 @@ class TestAscendExRealExchangeTester(RealExchangeTester):
52
52
 
53
53
  async def test_get_market_status(self):
54
54
  for market_status in await self.get_market_statuses():
55
- assert market_status
56
- assert market_status[Ecmsc.TYPE.value] == self.MARKET_STATUS_TYPE
57
- assert market_status[Ecmsc.SYMBOL.value] in (self.SYMBOL, self.SYMBOL_2, self.SYMBOL_3)
58
- assert market_status[Ecmsc.PRECISION.value]
55
+ self.ensure_required_market_status_values(market_status)
59
56
  # on AscendEx, precision is a decimal instead of a number of digits
60
57
  assert 0 < market_status[Ecmsc.PRECISION.value][
61
58
  Ecmsc.PRECISION_AMOUNT.value] <= 1 # to be fixed in AscendEx tentacle
@@ -32,6 +32,7 @@ class TestBinanceRealExchangeTester(RealExchangeTester):
32
32
  SYMBOL = "BTC/USDT"
33
33
  SYMBOL_2 = "ETH/BTC"
34
34
  SYMBOL_3 = "XRP/BTC"
35
+ INACTIVE_MARKETS = [SYMBOL_3]
35
36
 
36
37
  async def test_time_frames(self):
37
38
  time_frames = await self.time_frames()
@@ -55,10 +56,7 @@ class TestBinanceRealExchangeTester(RealExchangeTester):
55
56
 
56
57
  async def test_get_market_status(self):
57
58
  for market_status in await self.get_market_statuses():
58
- assert market_status
59
- assert market_status[Ecmsc.TYPE.value] == self.MARKET_STATUS_TYPE
60
- assert market_status[Ecmsc.SYMBOL.value] in (self.SYMBOL, self.SYMBOL_2, self.SYMBOL_3)
61
- assert market_status[Ecmsc.PRECISION.value]
59
+ self.ensure_required_market_status_values(market_status)
62
60
  assert int(market_status[Ecmsc.PRECISION.value][Ecmsc.PRECISION_AMOUNT.value]) == \
63
61
  market_status[Ecmsc.PRECISION.value][Ecmsc.PRECISION_AMOUNT.value]
64
62
  assert int(market_status[Ecmsc.PRECISION.value][Ecmsc.PRECISION_PRICE.value]) == \
@@ -59,10 +59,7 @@ class TestBinanceFuturesRealExchangeTester(RealFuturesExchangeTester):
59
59
 
60
60
  async def test_get_market_status(self):
61
61
  for market_status in await self.get_market_statuses():
62
- assert market_status
63
- assert market_status[Ecmsc.TYPE.value] == self.MARKET_STATUS_TYPE
64
- assert market_status[Ecmsc.SYMBOL.value] in (self.SYMBOL, self.SYMBOL_2, self.SYMBOL_3)
65
- assert market_status[Ecmsc.PRECISION.value]
62
+ self.ensure_required_market_status_values(market_status)
66
63
  assert int(market_status[Ecmsc.PRECISION.value][Ecmsc.PRECISION_AMOUNT.value]) == \
67
64
  market_status[Ecmsc.PRECISION.value][Ecmsc.PRECISION_AMOUNT.value]
68
65
  assert int(market_status[Ecmsc.PRECISION.value][Ecmsc.PRECISION_PRICE.value]) == \
@@ -56,10 +56,7 @@ class TestBingxRealExchangeTester(RealExchangeTester):
56
56
 
57
57
  async def test_get_market_status(self):
58
58
  for market_status in await self.get_market_statuses():
59
- assert market_status
60
- assert market_status[Ecmsc.TYPE.value] == self.MARKET_STATUS_TYPE
61
- assert market_status[Ecmsc.SYMBOL.value] in (self.SYMBOL, self.SYMBOL_2, self.SYMBOL_3)
62
- assert market_status[Ecmsc.PRECISION.value]
59
+ self.ensure_required_market_status_values(market_status)
63
60
  assert int(market_status[Ecmsc.PRECISION.value][Ecmsc.PRECISION_AMOUNT.value]) == \
64
61
  market_status[Ecmsc.PRECISION.value][Ecmsc.PRECISION_AMOUNT.value]
65
62
  assert int(market_status[Ecmsc.PRECISION.value][Ecmsc.PRECISION_PRICE.value]) == \
@@ -55,10 +55,7 @@ class TestBitfinexRealExchangeTester(RealExchangeTester):
55
55
 
56
56
  async def test_get_market_status(self):
57
57
  for market_status in await self.get_market_statuses():
58
- assert market_status
59
- assert market_status[Ecmsc.TYPE.value] == self.MARKET_STATUS_TYPE
60
- assert market_status[Ecmsc.SYMBOL.value] in (self.SYMBOL, self.SYMBOL_2, self.SYMBOL_3)
61
- assert market_status[Ecmsc.PRECISION.value]
58
+ self.ensure_required_market_status_values(market_status)
62
59
  assert int(market_status[Ecmsc.PRECISION.value][Ecmsc.PRECISION_AMOUNT.value]) == \
63
60
  market_status[Ecmsc.PRECISION.value][Ecmsc.PRECISION_AMOUNT.value]
64
61
  assert int(market_status[Ecmsc.PRECISION.value][Ecmsc.PRECISION_PRICE.value]) == \
@@ -57,10 +57,7 @@ class TestBitgetRealExchangeTester(RealExchangeTester):
57
57
 
58
58
  async def test_get_market_status(self):
59
59
  for market_status in await self.get_market_statuses():
60
- assert market_status
61
- assert market_status[Ecmsc.TYPE.value] == self.MARKET_STATUS_TYPE
62
- assert market_status[Ecmsc.SYMBOL.value] in (self.SYMBOL, self.SYMBOL_2, self.SYMBOL_3)
63
- assert market_status[Ecmsc.PRECISION.value]
60
+ self.ensure_required_market_status_values(market_status)
64
61
  # on Bitget, precision is a decimal instead of a number of digits
65
62
  assert 0 < market_status[Ecmsc.PRECISION.value][
66
63
  Ecmsc.PRECISION_AMOUNT.value] < 1 # to be fixed in Bitget tentacle
@@ -50,10 +50,7 @@ class TestBithumbRealExchangeTester(RealExchangeTester):
50
50
 
51
51
  async def test_get_market_status(self):
52
52
  for market_status in await self.get_market_statuses():
53
- assert market_status
54
- assert market_status[Ecmsc.TYPE.value] == self.MARKET_STATUS_TYPE
55
- assert market_status[Ecmsc.SYMBOL.value] in (self.SYMBOL, self.SYMBOL_2, self.SYMBOL_3)
56
- assert market_status[Ecmsc.PRECISION.value]
53
+ self.ensure_required_market_status_values(market_status)
57
54
  assert int(market_status[Ecmsc.PRECISION.value][Ecmsc.PRECISION_AMOUNT.value]) == \
58
55
  market_status[Ecmsc.PRECISION.value][Ecmsc.PRECISION_AMOUNT.value]
59
56
  assert int(market_status[Ecmsc.PRECISION.value][Ecmsc.PRECISION_PRICE.value]) == \
@@ -49,10 +49,7 @@ class TestBitsoRealExchangeTester(RealExchangeTester):
49
49
 
50
50
  async def test_get_market_status(self):
51
51
  for market_status in await self.get_market_statuses():
52
- assert market_status
53
- assert market_status[Ecmsc.TYPE.value] == self.MARKET_STATUS_TYPE
54
- assert market_status[Ecmsc.SYMBOL.value] in (self.SYMBOL, self.SYMBOL_2, self.SYMBOL_3)
55
- assert market_status[Ecmsc.PRECISION.value]
52
+ self.ensure_required_market_status_values(market_status)
56
53
  # on this exchange, precision is a decimal instead of a number of digits
57
54
  assert 0 < market_status[Ecmsc.PRECISION.value][
58
55
  Ecmsc.PRECISION_AMOUNT.value] <= 1 # to be fixed in this exchange tentacle
@@ -53,10 +53,7 @@ class TestBitstampRealExchangeTester(RealExchangeTester):
53
53
 
54
54
  async def test_get_market_status(self):
55
55
  for market_status in await self.get_market_statuses():
56
- assert market_status
57
- assert market_status[Ecmsc.TYPE.value] == self.MARKET_STATUS_TYPE
58
- assert market_status[Ecmsc.SYMBOL.value] in (self.SYMBOL, self.SYMBOL_2, self.SYMBOL_3)
59
- assert market_status[Ecmsc.PRECISION.value]
56
+ self.ensure_required_market_status_values(market_status)
60
57
  # on this exchange, precision is a decimal instead of a number of digits
61
58
  assert 0 < market_status[Ecmsc.PRECISION.value][
62
59
  Ecmsc.PRECISION_AMOUNT.value] <= 1 # to be fixed in this exchange tentacle
@@ -53,10 +53,7 @@ class TestBybitRealExchangeTester(RealExchangeTester):
53
53
 
54
54
  async def test_get_market_status(self):
55
55
  for market_status in await self.get_market_statuses():
56
- assert market_status
57
- assert market_status[Ecmsc.TYPE.value] == self.MARKET_STATUS_TYPE
58
- assert market_status[Ecmsc.SYMBOL.value] in (self.SYMBOL, self.SYMBOL_2, self.SYMBOL_3)
59
- assert market_status[Ecmsc.PRECISION.value]
56
+ self.ensure_required_market_status_values(market_status)
60
57
  # on Bybit, precision is a decimal instead of a number of digits
61
58
  assert 0 < market_status[Ecmsc.PRECISION.value][
62
59
  Ecmsc.PRECISION_AMOUNT.value] <= 1 # to be fixed in Bybit tentacle
@@ -59,10 +59,7 @@ class TestBybitRealExchangeTester(RealFuturesExchangeTester):
59
59
 
60
60
  async def test_get_market_status(self):
61
61
  for market_status in await self.get_market_statuses():
62
- assert market_status
63
- assert market_status[Ecmsc.TYPE.value] == self.MARKET_STATUS_TYPE
64
- assert market_status[Ecmsc.SYMBOL.value] in (self.SYMBOL, self.SYMBOL_2, self.SYMBOL_3)
65
- assert market_status[Ecmsc.PRECISION.value]
62
+ self.ensure_required_market_status_values(market_status)
66
63
  # on Bybit, precision is a decimal instead of a number of digits
67
64
  assert 0 < market_status[Ecmsc.PRECISION.value][
68
65
  Ecmsc.PRECISION_AMOUNT.value] <= 1 # to be fixed in Bybit tentacle
@@ -50,10 +50,7 @@ class TestCoinbaseRealExchangeTester(RealExchangeTester):
50
50
 
51
51
  async def test_get_market_status(self):
52
52
  for market_status in await self.get_market_statuses():
53
- assert market_status
54
- assert market_status[Ecmsc.TYPE.value] == self.MARKET_STATUS_TYPE
55
- assert market_status[Ecmsc.SYMBOL.value] in (self.SYMBOL, self.SYMBOL_2, self.SYMBOL_3)
56
- assert market_status[Ecmsc.PRECISION.value]
53
+ self.ensure_required_market_status_values(market_status)
57
54
  assert 0 < market_status[Ecmsc.PRECISION.value][
58
55
  Ecmsc.PRECISION_AMOUNT.value] <= 1 # to be fixed in coinbase tentacle
59
56
  assert 0 < market_status[Ecmsc.PRECISION.value][
@@ -53,10 +53,7 @@ class TestCoinexRealExchangeTester(RealExchangeTester):
53
53
 
54
54
  async def test_get_market_status(self):
55
55
  for market_status in await self.get_market_statuses():
56
- assert market_status
57
- assert market_status[Ecmsc.TYPE.value] == self.MARKET_STATUS_TYPE
58
- assert market_status[Ecmsc.SYMBOL.value] in (self.SYMBOL, self.SYMBOL_2, self.SYMBOL_3)
59
- assert market_status[Ecmsc.PRECISION.value]
56
+ self.ensure_required_market_status_values(market_status)
60
57
  # on this exchange, precision is a decimal instead of a number of digits
61
58
  assert 0 < market_status[Ecmsc.PRECISION.value][
62
59
  Ecmsc.PRECISION_AMOUNT.value] <= 1 # to be fixed in this exchange tentacle
@@ -51,10 +51,7 @@ class TestCryptoComRealExchangeTester(RealExchangeTester):
51
51
 
52
52
  async def test_get_market_status(self):
53
53
  for market_status in await self.get_market_statuses():
54
- assert market_status
55
- assert market_status[Ecmsc.TYPE.value] == self.MARKET_STATUS_TYPE
56
- assert market_status[Ecmsc.SYMBOL.value] in (self.SYMBOL, self.SYMBOL_2, self.SYMBOL_3)
57
- assert market_status[Ecmsc.PRECISION.value]
54
+ self.ensure_required_market_status_values(market_status)
58
55
  # on CryptoCom, precision is a decimal instead of a number of digits
59
56
  assert 0 < market_status[Ecmsc.PRECISION.value][
60
57
  Ecmsc.PRECISION_AMOUNT.value] <= 1 # to be fixed in CryptoCom tentacle
@@ -49,10 +49,7 @@ class TestGateIORealExchangeTester(RealExchangeTester):
49
49
 
50
50
  async def test_get_market_status(self):
51
51
  for market_status in await self.get_market_statuses():
52
- assert market_status
53
- assert market_status[Ecmsc.TYPE.value] == self.MARKET_STATUS_TYPE
54
- assert market_status[Ecmsc.SYMBOL.value] in (self.SYMBOL, self.SYMBOL_2, self.SYMBOL_3)
55
- assert market_status[Ecmsc.PRECISION.value]
52
+ self.ensure_required_market_status_values(market_status)
56
53
  assert 1e-08 <= market_status[Ecmsc.PRECISION.value][
57
54
  Ecmsc.PRECISION_AMOUNT.value] < 1 # to be fixed in tentacle
58
55
  assert 1e-08 <= market_status[Ecmsc.PRECISION.value][
@@ -50,10 +50,7 @@ class TestHitBtcRealExchangeTester(RealExchangeTester):
50
50
 
51
51
  async def test_get_market_status(self):
52
52
  for market_status in await self.get_market_statuses():
53
- assert market_status
54
- assert market_status[Ecmsc.TYPE.value] == self.MARKET_STATUS_TYPE
55
- assert market_status[Ecmsc.SYMBOL.value] in (self.SYMBOL, self.SYMBOL_2, self.SYMBOL_3)
56
- assert market_status[Ecmsc.PRECISION.value]
53
+ self.ensure_required_market_status_values(market_status)
57
54
  assert 1e-08 <= market_status[Ecmsc.PRECISION.value][
58
55
  Ecmsc.PRECISION_AMOUNT.value] < 1 # to be fixed in hitbtc tentacle
59
56
  assert 1e-09 <= market_status[Ecmsc.PRECISION.value][
@@ -44,10 +44,7 @@ class TestHollaexRealExchangeTester(RealExchangeTester):
44
44
 
45
45
  async def test_get_market_status(self):
46
46
  for market_status in await self.get_market_statuses():
47
- assert market_status
48
- assert market_status[Ecmsc.TYPE.value] == self.MARKET_STATUS_TYPE
49
- assert market_status[Ecmsc.SYMBOL.value] in (self.SYMBOL, self.SYMBOL_2, self.SYMBOL_3)
50
- assert market_status[Ecmsc.PRECISION.value]
47
+ self.ensure_required_market_status_values(market_status)
51
48
  assert 1e-08 <= market_status[Ecmsc.PRECISION.value][
52
49
  Ecmsc.PRECISION_AMOUNT.value] < 1.0 # to be fixed in tentacle
53
50
  assert 1e-08 <= market_status[Ecmsc.PRECISION.value][
@@ -50,10 +50,7 @@ class TestHTXRealExchangeTester(RealExchangeTester):
50
50
 
51
51
  async def test_get_market_status(self):
52
52
  for market_status in await self.get_market_statuses():
53
- assert market_status
54
- assert market_status[Ecmsc.TYPE.value] == self.MARKET_STATUS_TYPE
55
- assert market_status[Ecmsc.SYMBOL.value] in (self.SYMBOL, self.SYMBOL_2, self.SYMBOL_3)
56
- assert market_status[Ecmsc.PRECISION.value]
53
+ self.ensure_required_market_status_values(market_status)
57
54
  assert 1e-06 <= market_status[Ecmsc.PRECISION.value][
58
55
  Ecmsc.PRECISION_AMOUNT.value] <= 1 # to be fixed in tentacle
59
56
  assert 1e-09 <= market_status[Ecmsc.PRECISION.value][
@@ -49,10 +49,7 @@ class TestKrakenRealExchangeTester(RealExchangeTester):
49
49
 
50
50
  async def test_get_market_status(self):
51
51
  for market_status in await self.get_market_statuses():
52
- assert market_status
53
- assert market_status[Ecmsc.TYPE.value] == self.MARKET_STATUS_TYPE
54
- assert market_status[Ecmsc.SYMBOL.value] in (self.SYMBOL, self.SYMBOL_2, self.SYMBOL_3)
55
- assert market_status[Ecmsc.PRECISION.value]
52
+ self.ensure_required_market_status_values(market_status)
56
53
  # on this exchange, precision is a decimal instead of a number of digits
57
54
  assert 0 < market_status[Ecmsc.PRECISION.value][
58
55
  Ecmsc.PRECISION_AMOUNT.value] <= 1 # to be fixed in this exchange tentacle
@@ -54,10 +54,7 @@ class TestKucoinRealExchangeTester(RealExchangeTester):
54
54
 
55
55
  async def test_get_market_status(self):
56
56
  for market_status in await self.get_market_statuses():
57
- assert market_status
58
- assert market_status[Ecmsc.TYPE.value] == self.MARKET_STATUS_TYPE
59
- assert market_status[Ecmsc.SYMBOL.value] in (self.SYMBOL, self.SYMBOL_2, self.SYMBOL_3)
60
- assert market_status[Ecmsc.PRECISION.value]
57
+ self.ensure_required_market_status_values(market_status)
61
58
  # on this exchange, precision is a decimal instead of a number of digits
62
59
  assert 0 < market_status[Ecmsc.PRECISION.value][
63
60
  Ecmsc.PRECISION_AMOUNT.value] <= 1 # to be fixed in this exchange tentacle
@@ -56,10 +56,7 @@ class TestKucoinFuturesRealExchangeTester(RealFuturesExchangeTester):
56
56
 
57
57
  async def test_get_market_status(self):
58
58
  for market_status in await self.get_market_statuses():
59
- assert market_status
60
- assert market_status[Ecmsc.TYPE.value] == self.MARKET_STATUS_TYPE
61
- assert market_status[Ecmsc.SYMBOL.value] in (self.SYMBOL, self.SYMBOL_2, self.SYMBOL_3)
62
- assert market_status[Ecmsc.PRECISION.value]
59
+ self.ensure_required_market_status_values(market_status)
63
60
  # on this exchange, precision is a decimal instead of a number of digits
64
61
  assert 0 < market_status[Ecmsc.PRECISION.value][
65
62
  Ecmsc.PRECISION_AMOUNT.value] <= 1 # to be fixed in this exchange tentacle
@@ -50,10 +50,7 @@ class TestMEXCRealExchangeTester(RealExchangeTester):
50
50
 
51
51
  async def test_get_market_status(self):
52
52
  for market_status in await self.get_market_statuses():
53
- assert market_status
54
- assert market_status[Ecmsc.TYPE.value] == self.MARKET_STATUS_TYPE
55
- assert market_status[Ecmsc.SYMBOL.value] in (self.SYMBOL, self.SYMBOL_2, self.SYMBOL_3)
56
- assert market_status[Ecmsc.PRECISION.value]
53
+ self.ensure_required_market_status_values(market_status)
57
54
  assert 1e-06 <= market_status[Ecmsc.PRECISION.value][
58
55
  Ecmsc.PRECISION_AMOUNT.value] <= 1 # to be fixed in tentacle
59
56
  assert 1e-09 <= market_status[Ecmsc.PRECISION.value][
@@ -53,10 +53,7 @@ class TestNdaxRealExchangeTester(RealExchangeTester):
53
53
 
54
54
  async def test_get_market_status(self):
55
55
  for market_status in await self.get_market_statuses():
56
- assert market_status
57
- assert market_status[Ecmsc.TYPE.value] == self.MARKET_STATUS_TYPE
58
- assert market_status[Ecmsc.SYMBOL.value] in (self.SYMBOL, self.SYMBOL_2, self.SYMBOL_3)
59
- assert market_status[Ecmsc.PRECISION.value]
56
+ self.ensure_required_market_status_values(market_status)
60
57
  # on this exchange, precision is a decimal instead of a number of digits
61
58
  assert 0 < market_status[Ecmsc.PRECISION.value][
62
59
  Ecmsc.PRECISION_AMOUNT.value] <= 1 # to be fixed in this exchange tentacle
@@ -33,10 +33,7 @@ class _TestOkcoinRealExchangeTester(TestOkxRealExchangeTester): #unreachable ?
33
33
 
34
34
  async def test_get_market_status(self):
35
35
  for market_status in await self.get_market_statuses():
36
- assert market_status
37
- assert market_status[Ecmsc.TYPE.value] == self.MARKET_STATUS_TYPE
38
- assert market_status[Ecmsc.SYMBOL.value] in (self.SYMBOL, self.SYMBOL_2, self.SYMBOL_3)
39
- assert market_status[Ecmsc.PRECISION.value]
36
+ self.ensure_required_market_status_values(market_status)
40
37
  assert 1e-08 <= market_status[Ecmsc.PRECISION.value][
41
38
  Ecmsc.PRECISION_AMOUNT.value] < 1 # to be fixed in tentacle
42
39
  assert 1e-08 <= market_status[Ecmsc.PRECISION.value][
@@ -53,10 +53,7 @@ class TestOkxRealExchangeTester(RealExchangeTester):
53
53
 
54
54
  async def test_get_market_status(self):
55
55
  for market_status in await self.get_market_statuses():
56
- assert market_status
57
- assert market_status[Ecmsc.TYPE.value] == self.MARKET_STATUS_TYPE
58
- assert market_status[Ecmsc.SYMBOL.value] in (self.SYMBOL, self.SYMBOL_2, self.SYMBOL_3)
59
- assert market_status[Ecmsc.PRECISION.value]
56
+ self.ensure_required_market_status_values(market_status)
60
57
  assert 1e-08 <= market_status[Ecmsc.PRECISION.value][
61
58
  Ecmsc.PRECISION_AMOUNT.value] < 1 # to be fixed in tentacle
62
59
  assert 1e-08 <= market_status[Ecmsc.PRECISION.value][
@@ -53,10 +53,7 @@ class TestOkxFuturesRealExchangeTester(RealFuturesExchangeTester):
53
53
 
54
54
  async def test_get_market_status(self):
55
55
  for market_status in await self.get_market_statuses():
56
- assert market_status
57
- assert market_status[Ecmsc.TYPE.value] == self.MARKET_STATUS_TYPE
58
- assert market_status[Ecmsc.SYMBOL.value] in (self.SYMBOL, self.SYMBOL_2, self.SYMBOL_3)
59
- assert market_status[Ecmsc.PRECISION.value]
56
+ self.ensure_required_market_status_values(market_status)
60
57
  assert 1e-08 <= market_status[Ecmsc.PRECISION.value][
61
58
  Ecmsc.PRECISION_AMOUNT.value] <= 1 # to be fixed in tentacle
62
59
  assert 1e-08 <= market_status[Ecmsc.PRECISION.value][
@@ -56,10 +56,7 @@ class TestPhemexRealExchangeTester(RealExchangeTester):
56
56
 
57
57
  async def test_get_market_status(self):
58
58
  for market_status in await self.get_market_statuses():
59
- assert market_status
60
- assert market_status[Ecmsc.TYPE.value] == self.MARKET_STATUS_TYPE
61
- assert market_status[Ecmsc.SYMBOL.value] in (self.SYMBOL, self.SYMBOL_2, self.SYMBOL_3)
62
- assert market_status[Ecmsc.PRECISION.value]
59
+ self.ensure_required_market_status_values(market_status)
63
60
  # on Phemex, precision is a decimal instead of a number of digits
64
61
  assert 0 < market_status[Ecmsc.PRECISION.value][
65
62
  Ecmsc.PRECISION_AMOUNT.value] <= 1 # to be fixed in Phemex tentacle
@@ -47,10 +47,7 @@ class TestPoloniexRealExchangeTester(RealExchangeTester):
47
47
 
48
48
  async def test_get_market_status(self):
49
49
  for market_status in await self.get_market_statuses():
50
- assert market_status
51
- assert market_status[Ecmsc.TYPE.value] == self.MARKET_STATUS_TYPE
52
- assert market_status[Ecmsc.SYMBOL.value] in (self.SYMBOL, self.SYMBOL_2, self.SYMBOL_3)
53
- assert market_status[Ecmsc.PRECISION.value]
50
+ self.ensure_required_market_status_values(market_status)
54
51
  assert 1e-08 <= market_status[Ecmsc.PRECISION.value][
55
52
  Ecmsc.PRECISION_AMOUNT.value] <= 1 # to be fixed in tentacle
56
53
  assert 1e-08 <= market_status[Ecmsc.PRECISION.value][
@@ -50,10 +50,7 @@ class TestUpbitRealExchangeTester(RealExchangeTester):
50
50
 
51
51
  async def test_get_market_status(self):
52
52
  for market_status in await self.get_market_statuses():
53
- assert market_status
54
- assert market_status[Ecmsc.TYPE.value] == self.MARKET_STATUS_TYPE
55
- assert market_status[Ecmsc.SYMBOL.value] in (self.SYMBOL, self.SYMBOL_2, self.SYMBOL_3)
56
- assert market_status[Ecmsc.PRECISION.value]
53
+ self.ensure_required_market_status_values(market_status)
57
54
  # on this exchange, precision is a decimal instead of a number of digits
58
55
  assert 0 < market_status[Ecmsc.PRECISION.value][
59
56
  Ecmsc.PRECISION_AMOUNT.value] <= 1 # to be fixed in this exchange tentacle
@@ -55,10 +55,7 @@ class TestWavesExchangeRealExchangeTester(RealExchangeTester):
55
55
 
56
56
  async def test_get_market_status(self):
57
57
  for market_status in await self.get_market_statuses():
58
- assert market_status
59
- assert market_status[Ecmsc.TYPE.value] == self.MARKET_STATUS_TYPE
60
- assert market_status[Ecmsc.SYMBOL.value] in (self.SYMBOL, self.SYMBOL_2, self.SYMBOL_3)
61
- assert market_status[Ecmsc.PRECISION.value]
58
+ self.ensure_required_market_status_values(market_status)
62
59
  assert int(market_status[Ecmsc.PRECISION.value][Ecmsc.PRECISION_AMOUNT.value]) == \
63
60
  market_status[Ecmsc.PRECISION.value][Ecmsc.PRECISION_AMOUNT.value]
64
61
  assert int(market_status[Ecmsc.PRECISION.value][Ecmsc.PRECISION_PRICE.value]) == \