OctoBot-Trading 2.4.61__tar.gz → 2.4.62__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/CHANGELOG.md +4 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62/OctoBot_Trading.egg-info}/PKG-INFO +2 -2
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/OctoBot_Trading.egg-info/SOURCES.txt +4 -0
- {OctoBot-Trading-2.4.61/OctoBot_Trading.egg-info → OctoBot-Trading-2.4.62}/PKG-INFO +2 -2
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/README.md +1 -1
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/__init__.py +1 -1
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/modes/script_keywords/__init__.py +8 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/modes/script_keywords/basic_keywords/__init__.py +14 -0
- OctoBot-Trading-2.4.62/octobot_trading/modes/script_keywords/basic_keywords/position.py +58 -0
- OctoBot-Trading-2.4.62/octobot_trading/modes/script_keywords/basic_keywords/price.py +64 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/modes/script_keywords/dsl/values.py +1 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/orders/channel/orders.py +1 -1
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/modes/script_keywords/__init__.py +1 -0
- OctoBot-Trading-2.4.62/tests/modes/script_keywords/basic_keywords/test_position.py +53 -0
- OctoBot-Trading-2.4.62/tests/modes/script_keywords/basic_keywords/test_price.py +135 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/modes/script_keywords/dsl/test_quantity.py +6 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/LICENSE +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/MANIFEST.in +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/OctoBot_Trading.egg-info/dependency_links.txt +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/OctoBot_Trading.egg-info/not-zip-safe +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/OctoBot_Trading.egg-info/requires.txt +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/OctoBot_Trading.egg-info/top_level.txt +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/api/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/api/channels.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/api/contracts.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/api/exchange.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/api/modes.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/api/orders.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/api/portfolio.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/api/positions.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/api/profitability.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/api/storage.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/api/symbol_data.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/api/trader.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/api/trades.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/constants.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/enums.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/errors.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_channel.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/contracts/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/contracts/contract_factory.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/contracts/future_contract.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/contracts/margin_contract.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/exchange_symbol_data.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/exchange_symbols_data.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/funding/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/funding/channel/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/funding/channel/funding.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/funding/channel/funding_updater.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/funding/channel/funding_updater_simulator.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/funding/funding_manager.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/kline/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/kline/channel/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/kline/channel/kline.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/kline/channel/kline_updater.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/kline/channel/kline_updater_simulator.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/kline/kline_manager.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/ohlcv/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/ohlcv/candles_adapter.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/ohlcv/candles_manager.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/ohlcv/channel/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/ohlcv/channel/ohlcv.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/ohlcv/channel/ohlcv_updater.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/ohlcv/channel/ohlcv_updater_simulator.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/ohlcv/preloaded_candles_manager.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/order_book/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/order_book/channel/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/order_book/channel/order_book.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/order_book/channel/order_book_updater.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/order_book/channel/order_book_updater_simulator.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/order_book/order_book_manager.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/prices/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/prices/channel/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/prices/channel/price.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/prices/channel/prices_updater.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/prices/channel/prices_updater_simulator.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/prices/price_events_manager.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/prices/prices_manager.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/recent_trades/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/recent_trades/channel/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/recent_trades/channel/recent_trade.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/recent_trades/channel/recent_trade_updater.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/recent_trades/channel/recent_trade_updater_simulator.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/recent_trades/recent_trades_manager.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/ticker/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/ticker/channel/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/ticker/channel/ticker.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/ticker/channel/ticker_updater.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/ticker/channel/ticker_updater_simulator.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/ticker/ticker_manager.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchanges/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchanges/abstract_exchange.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchanges/abstract_websocket_exchange.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchanges/adapters/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchanges/adapters/abstract_adapter.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchanges/config/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchanges/config/backtesting_exchange_config.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchanges/config/exchange_config_data.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchanges/connectors/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchanges/connectors/ccxt/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchanges/connectors/ccxt/ccxt_adapter.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchanges/connectors/ccxt/ccxt_client_util.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchanges/connectors/ccxt/ccxt_clients_cache.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchanges/connectors/ccxt/ccxt_connector.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchanges/connectors/ccxt/ccxt_websocket_connector.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchanges/connectors/ccxt/constants.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchanges/connectors/ccxt/enums.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchanges/connectors/simulator/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchanges/connectors/simulator/ccxt_client_simulation.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchanges/connectors/simulator/exchange_simulator_adapter.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchanges/connectors/simulator/exchange_simulator_connector.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchanges/exchange_builder.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchanges/exchange_channels.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchanges/exchange_details.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchanges/exchange_factory.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchanges/exchange_manager.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchanges/exchange_websocket_factory.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchanges/exchanges.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchanges/implementations/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchanges/implementations/default_rest_exchange.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchanges/implementations/default_websocket_exchange.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchanges/implementations/exchange_simulator.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchanges/traders/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchanges/traders/trader.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchanges/traders/trader_simulator.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchanges/types/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchanges/types/rest_exchange.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchanges/types/websocket_exchange.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchanges/util/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchanges/util/exchange_market_status_fixer.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchanges/util/exchange_util.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchanges/util/symbol_details.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchanges/util/websockets_util.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/modes/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/modes/abstract_trading_mode.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/modes/channel/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/modes/channel/abstract_mode_consumer.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/modes/channel/abstract_mode_producer.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/modes/channel/mode.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/modes/mode_config.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/modes/modes_factory.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/modes/modes_util.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/modes/script_keywords/basic_keywords/account_balance.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/modes/script_keywords/basic_keywords/amount.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/modes/script_keywords/basic_keywords/configuration.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/modes/script_keywords/basic_keywords/run_persistence.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/modes/script_keywords/basic_keywords/trading_signals.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/modes/script_keywords/basic_keywords/user_inputs.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/modes/script_keywords/context_management.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/modes/script_keywords/dsl/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/modes/script_keywords/dsl/quantity.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/modes/scripted_trading_mode/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/modes/scripted_trading_mode/abstract_scripted_trading_mode.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/octobot_channel_consumer.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/exchange_personal_data.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/orders/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/orders/channel/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/orders/channel/orders_updater.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/orders/channel/orders_updater_simulator.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/orders/decimal_order_adapter.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/orders/groups/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/orders/groups/balanced_take_profit_and_stop_order_group.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/orders/groups/group_util.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/orders/groups/one_cancels_the_other_order_group.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/orders/order.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/orders/order_adapter.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/orders/order_factory.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/orders/order_group.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/orders/order_state.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/orders/order_util.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/orders/orders_manager.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/orders/orders_storage_operations.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/orders/states/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/orders/states/cancel_order_state.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/orders/states/close_order_state.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/orders/states/fill_order_state.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/orders/states/open_order_state.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/orders/states/order_state_factory.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/orders/states/pending_creation_chained_order_state.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/orders/states/pending_creation_order_state.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/orders/types/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/orders/types/limit/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/orders/types/limit/buy_limit_order.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/orders/types/limit/limit_order.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/orders/types/limit/sell_limit_order.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/orders/types/limit/stop_loss_limit_order.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/orders/types/limit/stop_loss_order.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/orders/types/limit/take_profit_limit_order.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/orders/types/limit/take_profit_order.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/orders/types/market/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/orders/types/market/buy_market_order.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/orders/types/market/market_order.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/orders/types/market/sell_market_order.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/orders/types/trailing/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/orders/types/trailing/trailing_stop_limit_order.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/orders/types/trailing/trailing_stop_order.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/orders/types/unknown_order.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/orders/types/unsupported_order.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/portfolios/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/portfolios/asset.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/portfolios/assets/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/portfolios/assets/future_asset.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/portfolios/assets/margin_asset.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/portfolios/assets/spot_asset.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/portfolios/channel/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/portfolios/channel/balance.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/portfolios/channel/balance_updater.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/portfolios/channel/balance_updater_simulator.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/portfolios/history/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/portfolios/history/historical_asset_value.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/portfolios/history/historical_asset_value_factory.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/portfolios/history/historical_portfolio_value_manager.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/portfolios/portfolio.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/portfolios/portfolio_factory.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/portfolios/portfolio_manager.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/portfolios/portfolio_profitability.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/portfolios/portfolio_util.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/portfolios/portfolio_value_holder.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/portfolios/sub_portfolio.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/portfolios/types/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/portfolios/types/future_portfolio.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/portfolios/types/margin_portfolio.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/portfolios/types/spot_portfolio.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/portfolios/value_converter.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/positions/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/positions/channel/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/positions/channel/positions.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/positions/channel/positions_updater.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/positions/channel/positions_updater_simulator.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/positions/position.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/positions/position_factory.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/positions/position_state.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/positions/position_util.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/positions/positions_manager.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/positions/states/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/positions/states/active_position_state.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/positions/states/idle_position_state.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/positions/states/liquidate_position_state.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/positions/states/position_state_factory.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/positions/types/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/positions/types/inverse_position.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/positions/types/linear_position.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/state.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/trades/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/trades/channel/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/trades/channel/trades.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/trades/channel/trades_updater.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/trades/trade.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/trades/trade_factory.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/trades/trade_pnl.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/trades/trades_manager.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/trades/trades_util.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/transactions/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/transactions/transaction.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/transactions/transaction_factory.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/transactions/transactions_manager.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/transactions/types/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/transactions/types/blockchain_transaction.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/transactions/types/fee_transaction.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/transactions/types/realised_pnl_transaction.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/personal_data/transactions/types/transfer_transaction.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/signals/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/signals/channel/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/signals/channel/remote_trading_signal.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/signals/channel/remote_trading_signal_channel_factory.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/signals/channel/signal_producer.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/signals/signal_creation.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/signals/trading_signal_bundle_builder.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/signals/util.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/storage/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/storage/abstract_storage.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/storage/candles_storage.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/storage/orders_storage.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/storage/portfolio_storage.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/storage/storage_manager.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/storage/trades_storage.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/storage/transactions_storage.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/storage/util.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/supervisors/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/supervisors/abstract_portfolio_supervisor.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/supervisors/abstract_supervisor.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/util/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/util/config_util.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/util/initializable.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/util/initialization_util.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/util/simulator_updater_utils.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/util/test_tools/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/util/test_tools/exchange_data.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/util/test_tools/exchanges_test_tools.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/util/test_tools/spot_rest_exchange_test_tools.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/util/test_tools/websocket_test_tools.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/requirements.txt +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/setup.cfg +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/setup.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/api/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/api/test_channels.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/api/test_exchange.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/api/test_modes.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/api/test_orders.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/api/test_portfolio.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/api/test_profitability.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/api/test_symbol_data.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/api/test_trader.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/api/test_trades.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/cli/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/exchange_data/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/exchange_data/contracts/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/exchange_data/contracts/test_future_contract.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/exchange_data/contracts/test_margin_contract.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/exchange_data/funding/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/exchange_data/funding/test_funding_manager.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/exchange_data/kline/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/exchange_data/kline/test_kline_manager.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/exchange_data/ohlcv/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/exchange_data/ohlcv/test_candles_adapter.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/exchange_data/ohlcv/test_candles_manager.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/exchange_data/order_book/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/exchange_data/order_book/test_order_book_manager.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/exchange_data/prices/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/exchange_data/prices/test_price_events_manager.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/exchange_data/prices/test_prices_manager.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/exchange_data/recent_trades/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/exchange_data/recent_trades/test_recent_trades_manager.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/exchange_data/test_exchange_symbols_data.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/exchange_data/ticker/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/exchange_data/ticker/test_ticker_manager.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/exchanges/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/exchanges/connectors/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/exchanges/connectors/ccxt/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/exchanges/connectors/ccxt/mock_exchanges_data.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/exchanges/connectors/ccxt/test_ccxt_connector.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/exchanges/implementations/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/exchanges/implementations/test_default_rest_exchange.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/exchanges/implementations/test_default_websocket_exchange.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/exchanges/test_abstract_exchange.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/exchanges/test_abstract_websocket_exchange.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/exchanges/test_exchange_builder.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/exchanges/test_exchange_config_data.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/exchanges/test_exchange_factory.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/exchanges/test_exchange_manager.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/exchanges/test_exchange_simulator.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/exchanges/test_exchanges.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/exchanges/traders/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/exchanges/traders/test_trader.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/exchanges/types/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/exchanges/types/test_websocket_exchange.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/exchanges/util/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/exchanges/util/test_exchange_market_status_fixer.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/exchanges/util/test_exchange_util.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/modes/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/modes/script_keywords/basic_keywords/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/modes/script_keywords/basic_keywords/test_account_balance.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/modes/script_keywords/basic_keywords/test_amount.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/modes/script_keywords/dsl/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/modes/test_abstract_mode_consumer.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/modes/test_abstract_trading_mode.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/modes/test_modes_util.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/orders/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/orders/groups/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/orders/groups/test_balanced_take_profit_and_stop_order_group.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/orders/groups/test_group_util.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/orders/groups/test_one_cancels_the_other_order_group.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/orders/states/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/orders/states/test_cancel_order_state.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/orders/states/test_close_order_state.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/orders/states/test_fill_order_state.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/orders/states/test_open_order_state.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/orders/states/test_order_state.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/orders/states/test_order_state_factory.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/orders/states/test_pending_creation_chained_order_state.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/orders/states/test_pending_creation_order_state.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/orders/test_decimal_order_adapter.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/orders/test_double_filled_order.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/orders/test_order.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/orders/test_order_adapter.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/orders/test_order_factory.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/orders/test_order_util.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/orders/test_orders_manager.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/orders/test_orders_storage_operations.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/orders/types/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/orders/types/limit/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/orders/types/limit/test_buy_limit_order.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/orders/types/limit/test_limit_order.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/orders/types/limit/test_sell_limit_order.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/orders/types/limit/test_stop_loss_limit_order.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/orders/types/limit/test_stop_loss_order.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/orders/types/limit/test_take_profit_limit_order.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/orders/types/limit/test_take_profit_order.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/orders/types/market/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/orders/types/market/test_buy_market_order.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/orders/types/market/test_sell_market_order.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/orders/types/test_unknown_order.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/orders/types/trailing/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/orders/types/trailing/test_trailing_stop_limit_order.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/orders/types/trailing/test_trailing_stop_order.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/portfolios/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/portfolios/assets/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/portfolios/assets/test_future_asset.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/portfolios/assets/test_margin_asset.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/portfolios/assets/test_spot_asset.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/portfolios/history/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/portfolios/history/test_historical_asset_value_factory.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/portfolios/history/test_historical_portfolio_value_manager.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/portfolios/test_asset.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/portfolios/test_portfolio.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/portfolios/test_portfolio_manager.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/portfolios/test_portfolio_profitability.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/portfolios/test_portfolio_value_holder.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/portfolios/test_value_converter.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/portfolios/types/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/portfolios/types/test_future_portfolio.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/portfolios/types/test_margin_portfolio.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/portfolios/types/test_spot_portfolio.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/positions/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/positions/channel/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/positions/states/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/positions/test_position.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/positions/test_position_factory.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/positions/test_positions_manager.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/positions/types/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/positions/types/test_inverse_position.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/positions/types/test_linear_position.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/trades/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/trades/test_trade_factory.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/trades/test_trade_manager.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/trades/test_trade_pnl.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/trades/test_trade_util.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/transactions/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/transactions/test_transaction_factory.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/personal_data/transactions/test_transactions_manager.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/signals/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/signals/test_trading_signal_bundle_builder.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/signals/test_util.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/test_utils/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/test_utils/order_util.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/test_utils/random_numbers.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/util/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/util/test_config_util.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests_additional/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests_additional/real_exchanges/__init__.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests_additional/real_exchanges/real_exchange_tester.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests_additional/real_exchanges/real_futures_exchange_tester.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests_additional/real_exchanges/test_ascendex.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests_additional/real_exchanges/test_binance.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests_additional/real_exchanges/test_binance_futures.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests_additional/real_exchanges/test_bingx.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests_additional/real_exchanges/test_bitfinex.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests_additional/real_exchanges/test_bitget.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests_additional/real_exchanges/test_bithumb.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests_additional/real_exchanges/test_bitso.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests_additional/real_exchanges/test_bitstamp.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests_additional/real_exchanges/test_bybit.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests_additional/real_exchanges/test_bybit_futures.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests_additional/real_exchanges/test_coinbase.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests_additional/real_exchanges/test_coinex.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests_additional/real_exchanges/test_cryptocom.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests_additional/real_exchanges/test_gateio.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests_additional/real_exchanges/test_hitbtc.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests_additional/real_exchanges/test_hollaex.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests_additional/real_exchanges/test_htx.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests_additional/real_exchanges/test_kraken.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests_additional/real_exchanges/test_kucoin.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests_additional/real_exchanges/test_kucoin_futures.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests_additional/real_exchanges/test_mexc.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests_additional/real_exchanges/test_ndax.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests_additional/real_exchanges/test_okcoin.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests_additional/real_exchanges/test_okx.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests_additional/real_exchanges/test_okx_futures.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests_additional/real_exchanges/test_phemex.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests_additional/real_exchanges/test_poloniex.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests_additional/real_exchanges/test_upbit.py +0 -0
- {OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/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.62] - 2024-03-15
|
8
|
+
### Added
|
9
|
+
- [ScriptingKeywords] price offsets
|
10
|
+
|
7
11
|
## [2.4.61] - 2024-03-12
|
8
12
|
### Fixed
|
9
13
|
- [Orders] chained orders quantity after fees decimals
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: OctoBot-Trading
|
3
|
-
Version: 2.4.
|
3
|
+
Version: 2.4.62
|
4
4
|
Summary: OctoBot project trading package
|
5
5
|
Home-page: https://github.com/Drakkar-Software/OctoBot-Trading
|
6
6
|
Author: Drakkar-Software
|
@@ -16,7 +16,7 @@ Classifier: Operating System :: POSIX
|
|
16
16
|
Requires-Python: >=3.8
|
17
17
|
License-File: LICENSE
|
18
18
|
|
19
|
-
# OctoBot-Trading [2.4.
|
19
|
+
# OctoBot-Trading [2.4.62](https://github.com/Drakkar-Software/OctoBot-Trading/blob/master/CHANGELOG.md)
|
20
20
|
[](https://app.codacy.com/gh/Drakkar-Software/OctoBot-Trading?utm_source=github.com&utm_medium=referral&utm_content=Drakkar-Software/OctoBot-Trading&utm_campaign=Badge_Grade_Dashboard)
|
21
21
|
[](https://pypi.python.org/pypi/OctoBot-Trading/)
|
22
22
|
[](https://coveralls.io/github/Drakkar-Software/OctoBot-Trading?branch=master)
|
@@ -139,6 +139,8 @@ octobot_trading/modes/script_keywords/basic_keywords/__init__.py
|
|
139
139
|
octobot_trading/modes/script_keywords/basic_keywords/account_balance.py
|
140
140
|
octobot_trading/modes/script_keywords/basic_keywords/amount.py
|
141
141
|
octobot_trading/modes/script_keywords/basic_keywords/configuration.py
|
142
|
+
octobot_trading/modes/script_keywords/basic_keywords/position.py
|
143
|
+
octobot_trading/modes/script_keywords/basic_keywords/price.py
|
142
144
|
octobot_trading/modes/script_keywords/basic_keywords/run_persistence.py
|
143
145
|
octobot_trading/modes/script_keywords/basic_keywords/trading_signals.py
|
144
146
|
octobot_trading/modes/script_keywords/basic_keywords/user_inputs.py
|
@@ -349,6 +351,8 @@ tests/modes/script_keywords/__init__.py
|
|
349
351
|
tests/modes/script_keywords/basic_keywords/__init__.py
|
350
352
|
tests/modes/script_keywords/basic_keywords/test_account_balance.py
|
351
353
|
tests/modes/script_keywords/basic_keywords/test_amount.py
|
354
|
+
tests/modes/script_keywords/basic_keywords/test_position.py
|
355
|
+
tests/modes/script_keywords/basic_keywords/test_price.py
|
352
356
|
tests/modes/script_keywords/dsl/__init__.py
|
353
357
|
tests/modes/script_keywords/dsl/test_quantity.py
|
354
358
|
tests/personal_data/__init__.py
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: OctoBot-Trading
|
3
|
-
Version: 2.4.
|
3
|
+
Version: 2.4.62
|
4
4
|
Summary: OctoBot project trading package
|
5
5
|
Home-page: https://github.com/Drakkar-Software/OctoBot-Trading
|
6
6
|
Author: Drakkar-Software
|
@@ -16,7 +16,7 @@ Classifier: Operating System :: POSIX
|
|
16
16
|
Requires-Python: >=3.8
|
17
17
|
License-File: LICENSE
|
18
18
|
|
19
|
-
# OctoBot-Trading [2.4.
|
19
|
+
# OctoBot-Trading [2.4.62](https://github.com/Drakkar-Software/OctoBot-Trading/blob/master/CHANGELOG.md)
|
20
20
|
[](https://app.codacy.com/gh/Drakkar-Software/OctoBot-Trading?utm_source=github.com&utm_medium=referral&utm_content=Drakkar-Software/OctoBot-Trading&utm_campaign=Badge_Grade_Dashboard)
|
21
21
|
[](https://pypi.python.org/pypi/OctoBot-Trading/)
|
22
22
|
[](https://coveralls.io/github/Drakkar-Software/OctoBot-Trading?branch=master)
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# OctoBot-Trading [2.4.
|
1
|
+
# OctoBot-Trading [2.4.62](https://github.com/Drakkar-Software/OctoBot-Trading/blob/master/CHANGELOG.md)
|
2
2
|
[](https://app.codacy.com/gh/Drakkar-Software/OctoBot-Trading?utm_source=github.com&utm_medium=referral&utm_content=Drakkar-Software/OctoBot-Trading&utm_campaign=Badge_Grade_Dashboard)
|
3
3
|
[](https://pypi.python.org/pypi/OctoBot-Trading/)
|
4
4
|
[](https://coveralls.io/github/Drakkar-Software/OctoBot-Trading?branch=master)
|
{OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/modes/script_keywords/__init__.py
RENAMED
@@ -35,6 +35,10 @@ from octobot_trading.modes.script_keywords.basic_keywords import (
|
|
35
35
|
set_leverage,
|
36
36
|
set_partial_take_profit_stop_loss,
|
37
37
|
get_amount_from_input_amount,
|
38
|
+
get_price_with_offset,
|
39
|
+
get_position,
|
40
|
+
average_open_pos_entry,
|
41
|
+
is_in_one_way_position_mode,
|
38
42
|
total_account_balance,
|
39
43
|
available_account_balance,
|
40
44
|
adapt_amount_to_holdings,
|
@@ -67,6 +71,10 @@ __all__ = [
|
|
67
71
|
"set_leverage",
|
68
72
|
"set_partial_take_profit_stop_loss",
|
69
73
|
"get_amount_from_input_amount",
|
74
|
+
"get_price_with_offset",
|
75
|
+
"get_position",
|
76
|
+
"average_open_pos_entry",
|
77
|
+
"is_in_one_way_position_mode",
|
70
78
|
"total_account_balance",
|
71
79
|
"available_account_balance",
|
72
80
|
"adapt_amount_to_holdings",
|
@@ -36,6 +36,16 @@ from octobot_trading.modes.script_keywords.basic_keywords.amount import (
|
|
36
36
|
get_amount_from_input_amount,
|
37
37
|
)
|
38
38
|
|
39
|
+
from octobot_trading.modes.script_keywords.basic_keywords.price import (
|
40
|
+
get_price_with_offset,
|
41
|
+
)
|
42
|
+
|
43
|
+
from octobot_trading.modes.script_keywords.basic_keywords.position import (
|
44
|
+
get_position,
|
45
|
+
average_open_pos_entry,
|
46
|
+
is_in_one_way_position_mode,
|
47
|
+
)
|
48
|
+
|
39
49
|
from octobot_trading.modes.script_keywords.basic_keywords.account_balance import (
|
40
50
|
total_account_balance,
|
41
51
|
available_account_balance,
|
@@ -71,6 +81,10 @@ __all__ = [
|
|
71
81
|
"set_leverage",
|
72
82
|
"set_partial_take_profit_stop_loss",
|
73
83
|
"get_amount_from_input_amount",
|
84
|
+
"get_price_with_offset",
|
85
|
+
"get_position",
|
86
|
+
"average_open_pos_entry",
|
87
|
+
"is_in_one_way_position_mode",
|
74
88
|
"total_account_balance",
|
75
89
|
"available_account_balance",
|
76
90
|
"adapt_amount_to_holdings",
|
@@ -0,0 +1,58 @@
|
|
1
|
+
# Drakkar-Software OctoBot-Trading
|
2
|
+
# Copyright (c) Drakkar-Software, All rights reserved.
|
3
|
+
#
|
4
|
+
# This library is free software; you can redistribute it and/or
|
5
|
+
# modify it under the terms of the GNU Lesser General Public
|
6
|
+
# License as published by the Free Software Foundation; either
|
7
|
+
# version 3.0 of the License, or (at your option) any later version.
|
8
|
+
#
|
9
|
+
# This library is distributed in the hope that it will be useful,
|
10
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
12
|
+
# Lesser General Public License for more details.
|
13
|
+
#
|
14
|
+
# You should have received a copy of the GNU Lesser General Public
|
15
|
+
# License along with this library.
|
16
|
+
|
17
|
+
import octobot_trading.constants as trading_constants
|
18
|
+
import octobot_trading.enums as trading_enums
|
19
|
+
import octobot_trading.errors as trading_errors
|
20
|
+
|
21
|
+
|
22
|
+
def get_position(context, symbol=None, side=trading_enums.PositionSide.BOTH.value):
|
23
|
+
return context.exchange_manager.exchange_personal_data.positions_manager.get_symbol_position(
|
24
|
+
symbol or context.symbol,
|
25
|
+
_get_position_side(context, side)
|
26
|
+
)
|
27
|
+
|
28
|
+
|
29
|
+
async def average_open_pos_entry(context, side=trading_enums.PositionSide.LONG.value):
|
30
|
+
if context.exchange_manager.is_future:
|
31
|
+
return get_position(context, context.symbol, side).entry_price
|
32
|
+
elif context.exchange_manager.is_margin:
|
33
|
+
return trading_constants.ZERO
|
34
|
+
else:
|
35
|
+
return trading_constants.ZERO
|
36
|
+
|
37
|
+
|
38
|
+
def _get_position_side(ctx, side):
|
39
|
+
if is_in_one_way_position_mode(ctx):
|
40
|
+
return trading_enums.PositionSide.BOTH
|
41
|
+
|
42
|
+
# hedge mode
|
43
|
+
if side == trading_enums.PositionSide.LONG.value:
|
44
|
+
return trading_enums.PositionSide.LONG
|
45
|
+
elif side == trading_enums.PositionSide.SHORT.value:
|
46
|
+
return trading_enums.PositionSide.SHORT
|
47
|
+
elif side == trading_enums.PositionSide.BOTH.value:
|
48
|
+
raise trading_errors.InvalidArgumentError(
|
49
|
+
"average_open_pos_entry: both sides are not implemented yet for hedged mode"
|
50
|
+
)
|
51
|
+
else:
|
52
|
+
raise trading_errors.InvalidArgumentError(
|
53
|
+
'average_open_pos_entry: side needs to be "long", "short" or "both"'
|
54
|
+
)
|
55
|
+
|
56
|
+
|
57
|
+
def is_in_one_way_position_mode(ctx):
|
58
|
+
return ctx.exchange_manager.exchange.get_pair_future_contract(ctx.symbol).is_one_way_position_mode()
|
@@ -0,0 +1,64 @@
|
|
1
|
+
# Drakkar-Software OctoBot-Trading
|
2
|
+
# Copyright (c) Drakkar-Software, All rights reserved.
|
3
|
+
#
|
4
|
+
# This library is free software; you can redistribute it and/or
|
5
|
+
# modify it under the terms of the GNU Lesser General Public
|
6
|
+
# License as published by the Free Software Foundation; either
|
7
|
+
# version 3.0 of the License, or (at your option) any later version.
|
8
|
+
#
|
9
|
+
# This library is distributed in the hope that it will be useful,
|
10
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
12
|
+
# Lesser General Public License for more details.
|
13
|
+
#
|
14
|
+
# You should have received a copy of the GNU Lesser General Public
|
15
|
+
# License along with this library.
|
16
|
+
import octobot_trading.errors as errors
|
17
|
+
import octobot_trading.constants as constants
|
18
|
+
import octobot_trading.personal_data as personal_data
|
19
|
+
import octobot_trading.modes.script_keywords.dsl as dsl
|
20
|
+
import octobot_trading.modes.script_keywords.basic_keywords.position as position
|
21
|
+
|
22
|
+
|
23
|
+
async def get_price_with_offset(context, offset_input, use_delta_type_as_flat_value=False, side=None):
|
24
|
+
if offset_input is None:
|
25
|
+
raise errors.InvalidArgumentError("price or offset is required")
|
26
|
+
offset_type, offset_value = dsl.parse_quantity(offset_input)
|
27
|
+
|
28
|
+
# when use_delta_type_as_flat_value is True, consider a simple price input as a flat target instead of an offset
|
29
|
+
is_delta_type_considered_as_flat = offset_type is dsl.QuantityType.DELTA and use_delta_type_as_flat_value
|
30
|
+
|
31
|
+
if offset_type is dsl.QuantityType.DELTA_EXPLICIT or (
|
32
|
+
offset_type is dsl.QuantityType.DELTA and not is_delta_type_considered_as_flat
|
33
|
+
):
|
34
|
+
current_price_val = await personal_data.get_up_to_date_price(
|
35
|
+
context.exchange_manager, context.symbol, timeout=constants.ORDER_DATA_FETCHING_TIMEOUT
|
36
|
+
)
|
37
|
+
# offset should be negative when wanting to buy bellow current price
|
38
|
+
computed_price = current_price_val + offset_value
|
39
|
+
|
40
|
+
elif offset_type is dsl.QuantityType.PERCENT:
|
41
|
+
current_price_val = await personal_data.get_up_to_date_price(
|
42
|
+
context.exchange_manager, context.symbol, timeout=constants.ORDER_DATA_FETCHING_TIMEOUT
|
43
|
+
)
|
44
|
+
computed_price = current_price_val * (constants.ONE + (offset_value / constants.ONE_HUNDRED))
|
45
|
+
|
46
|
+
elif offset_type is dsl.QuantityType.ENTRY_PERCENT:
|
47
|
+
average_open_pos_entry_val = await position.average_open_pos_entry(context, side)
|
48
|
+
computed_price = average_open_pos_entry_val * (constants.ONE + (offset_value / constants.ONE_HUNDRED))
|
49
|
+
|
50
|
+
elif offset_type is dsl.QuantityType.ENTRY:
|
51
|
+
average_open_pos_entry_val = await position.average_open_pos_entry(context, side)
|
52
|
+
computed_price = average_open_pos_entry_val + offset_value
|
53
|
+
|
54
|
+
elif is_delta_type_considered_as_flat or offset_type is dsl.QuantityType.FLAT:
|
55
|
+
computed_price = offset_value
|
56
|
+
else:
|
57
|
+
raise errors.InvalidArgumentError(
|
58
|
+
f"'{offset_input}' is not supported. "
|
59
|
+
f"Make sure to use a supported syntax for price, supported parameters are: "
|
60
|
+
f"1.2, -0.222, -0.222d, @65100, 5%, e5%, e500"
|
61
|
+
)
|
62
|
+
|
63
|
+
symbol_market = context.exchange_manager.exchange.get_market_status(context.symbol, with_fixer=False)
|
64
|
+
return personal_data.decimal_adapt_price(symbol_market, computed_price)
|
@@ -29,7 +29,7 @@ class OrdersProducer(exchanges_channel.ExchangeChannelProducer):
|
|
29
29
|
|
30
30
|
async def perform(self, orders, is_from_bot=False, are_closed=False):
|
31
31
|
try:
|
32
|
-
self.logger.debug(f"Received order update for {len(orders)} orders.")
|
32
|
+
self.logger.debug(f"Received order update for {len(orders)} {'closed' if are_closed else ''} orders.")
|
33
33
|
has_new_order = False
|
34
34
|
waiting_complete_init_orders = []
|
35
35
|
symbols = set()
|
@@ -64,6 +64,7 @@ async def mock_context(backtesting_trader):
|
|
64
64
|
mock.Mock(),
|
65
65
|
)
|
66
66
|
context.signal_builder = mock.Mock()
|
67
|
+
context.is_trading_signal_emitter = mock.Mock(return_value=False)
|
67
68
|
context.orders_writer = mock.Mock(log_many=mock.AsyncMock())
|
68
69
|
portfolio_manager = exchange_manager.exchange_personal_data.portfolio_manager
|
69
70
|
# init portfolio with 0.5 BTC, 20 ETH and 30000 USDT and only 0.1 available BTC
|
@@ -0,0 +1,53 @@
|
|
1
|
+
# Drakkar-Software OctoBot-Trading
|
2
|
+
# Copyright (c) Drakkar-Software, All rights reserved.
|
3
|
+
#
|
4
|
+
# This library is free software; you can redistribute it and/or
|
5
|
+
# modify it under the terms of the GNU Lesser General Public
|
6
|
+
# License as published by the Free Software Foundation; either
|
7
|
+
# version 3.0 of the License, or (at your option) any later version.
|
8
|
+
#
|
9
|
+
# This library is distributed in the hope that it will be useful,
|
10
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
12
|
+
# Lesser General Public License for more details.
|
13
|
+
#
|
14
|
+
# You should have received a copy of the GNU Lesser General Public
|
15
|
+
# License along with this library.
|
16
|
+
import pytest
|
17
|
+
import mock
|
18
|
+
import decimal
|
19
|
+
|
20
|
+
import octobot_trading.modes.script_keywords as script_keywords
|
21
|
+
import octobot_trading.modes.script_keywords.basic_keywords.position as position
|
22
|
+
import octobot_trading.enums as enums
|
23
|
+
import octobot_trading.constants as constants
|
24
|
+
|
25
|
+
from tests import event_loop
|
26
|
+
from tests.modes.script_keywords import mock_context
|
27
|
+
from tests.exchanges import backtesting_trader, \
|
28
|
+
backtesting_config, backtesting_exchange_manager, fake_backtesting
|
29
|
+
|
30
|
+
|
31
|
+
# All test coroutines will be treated as marked.
|
32
|
+
pytestmark = pytest.mark.asyncio
|
33
|
+
|
34
|
+
|
35
|
+
@pytest.mark.parametrize("backtesting_config", ["USDT"], indirect=["backtesting_config"])
|
36
|
+
async def test_average_open_pos_entry(mock_context):
|
37
|
+
mock_context.exchange_manager.is_future = False
|
38
|
+
with mock.patch.object(position, "get_position",
|
39
|
+
mock.Mock(return_value=(mock.Mock(entry_price=decimal.Decimal("40000"))))) \
|
40
|
+
as get_position_mock:
|
41
|
+
mock_context.symbol = "ETH/USDT"
|
42
|
+
assert await script_keywords.average_open_pos_entry(mock_context, enums.TradeOrderSide.BUY.value) == \
|
43
|
+
constants.ZERO
|
44
|
+
mock_context.exchange_manager.is_future = True
|
45
|
+
mock_context.symbol = "ETH/USDT"
|
46
|
+
assert await script_keywords.average_open_pos_entry(mock_context, enums.TradeOrderSide.BUY.value) == \
|
47
|
+
decimal.Decimal("40000")
|
48
|
+
get_position_mock.assert_called_once_with(mock_context, "ETH/USDT", enums.TradeOrderSide.BUY.value)
|
49
|
+
get_position_mock.reset_mock()
|
50
|
+
mock_context.symbol = "BTC/USDT"
|
51
|
+
assert await script_keywords.average_open_pos_entry(mock_context, enums.TradeOrderSide.BUY.value) == \
|
52
|
+
decimal.Decimal("40000")
|
53
|
+
get_position_mock.assert_called_once_with(mock_context, "BTC/USDT", enums.TradeOrderSide.BUY.value)
|
@@ -0,0 +1,135 @@
|
|
1
|
+
# Drakkar-Software OctoBot-Trading
|
2
|
+
# Copyright (c) Drakkar-Software, All rights reserved.
|
3
|
+
#
|
4
|
+
# This library is free software; you can redistribute it and/or
|
5
|
+
# modify it under the terms of the GNU Lesser General Public
|
6
|
+
# License as published by the Free Software Foundation; either
|
7
|
+
# version 3.0 of the License, or (at your option) any later version.
|
8
|
+
#
|
9
|
+
# This library is distributed in the hope that it will be useful,
|
10
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
12
|
+
# Lesser General Public License for more details.
|
13
|
+
#
|
14
|
+
# You should have received a copy of the GNU Lesser General Public
|
15
|
+
# License along with this library.
|
16
|
+
import pytest
|
17
|
+
import mock
|
18
|
+
import decimal
|
19
|
+
|
20
|
+
import octobot_trading.modes.script_keywords as script_keywords
|
21
|
+
import octobot_trading.modes.script_keywords.dsl as dsl
|
22
|
+
import octobot_trading.modes.script_keywords.basic_keywords.position as position
|
23
|
+
import octobot_trading.personal_data as personal_data
|
24
|
+
import octobot_trading.errors as errors
|
25
|
+
import octobot_trading.constants as constants
|
26
|
+
from octobot_trading.enums import ExchangeConstantsMarketStatusColumns as Ecmsc
|
27
|
+
|
28
|
+
from tests import event_loop
|
29
|
+
from tests.modes.script_keywords import null_context
|
30
|
+
|
31
|
+
# All test coroutines will be treated as marked.
|
32
|
+
pytestmark = pytest.mark.asyncio
|
33
|
+
|
34
|
+
|
35
|
+
async def test_get_price_with_offset(null_context):
|
36
|
+
null_context.symbol = "blop/plop"
|
37
|
+
null_context.exchange_manager = mock.Mock(
|
38
|
+
exchange=mock.Mock(
|
39
|
+
get_market_status=mock.Mock(return_value={
|
40
|
+
Ecmsc.PRECISION.value: {
|
41
|
+
Ecmsc.PRECISION_PRICE.value: 2
|
42
|
+
}
|
43
|
+
})
|
44
|
+
)
|
45
|
+
)
|
46
|
+
|
47
|
+
with pytest.raises(errors.InvalidArgumentError):
|
48
|
+
await script_keywords.get_price_with_offset(null_context, "1sdsqdq")
|
49
|
+
|
50
|
+
with mock.patch.object(personal_data, "get_up_to_date_price", mock.AsyncMock(return_value=200)) \
|
51
|
+
as current_price_mock:
|
52
|
+
with mock.patch.object(dsl, "parse_quantity",
|
53
|
+
mock.Mock(return_value=(script_keywords.QuantityType.DELTA, decimal.Decimal(10)))) \
|
54
|
+
as parse_quantity_mock:
|
55
|
+
assert await script_keywords.get_price_with_offset(null_context, 10) == decimal.Decimal(210)
|
56
|
+
current_price_mock.assert_called_once_with(
|
57
|
+
null_context.exchange_manager, null_context.symbol, timeout=constants.ORDER_DATA_FETCHING_TIMEOUT
|
58
|
+
)
|
59
|
+
parse_quantity_mock.assert_called_once_with(10)
|
60
|
+
null_context.exchange_manager.exchange.get_market_status.assert_called_once_with(
|
61
|
+
"blop/plop", with_fixer=False
|
62
|
+
)
|
63
|
+
current_price_mock.reset_mock()
|
64
|
+
parse_quantity_mock.reset_mock()
|
65
|
+
|
66
|
+
assert await script_keywords.get_price_with_offset(null_context, 10, use_delta_type_as_flat_value=True) \
|
67
|
+
== decimal.Decimal(10)
|
68
|
+
current_price_mock.assert_not_called()
|
69
|
+
parse_quantity_mock.assert_called_once_with(10)
|
70
|
+
current_price_mock.reset_mock()
|
71
|
+
parse_quantity_mock.reset_mock()
|
72
|
+
|
73
|
+
with mock.patch.object(dsl, "parse_quantity",
|
74
|
+
mock.Mock(return_value=(script_keywords.QuantityType.DELTA_EXPLICIT, decimal.Decimal(10)))) \
|
75
|
+
as parse_quantity_mock:
|
76
|
+
assert await script_keywords.get_price_with_offset(null_context, 10) == decimal.Decimal(210)
|
77
|
+
current_price_mock.assert_called_once_with(
|
78
|
+
null_context.exchange_manager, null_context.symbol, timeout=constants.ORDER_DATA_FETCHING_TIMEOUT
|
79
|
+
)
|
80
|
+
parse_quantity_mock.assert_called_once_with(10)
|
81
|
+
current_price_mock.reset_mock()
|
82
|
+
parse_quantity_mock.reset_mock()
|
83
|
+
|
84
|
+
# DELTA_EXPLICIT ignores use_delta_type_as_flat_value
|
85
|
+
assert await script_keywords.get_price_with_offset(null_context, 10, use_delta_type_as_flat_value=True) \
|
86
|
+
== decimal.Decimal(210)
|
87
|
+
current_price_mock.assert_called_once_with(
|
88
|
+
null_context.exchange_manager, null_context.symbol, timeout=constants.ORDER_DATA_FETCHING_TIMEOUT
|
89
|
+
)
|
90
|
+
parse_quantity_mock.assert_called_once_with(10)
|
91
|
+
current_price_mock.reset_mock()
|
92
|
+
parse_quantity_mock.reset_mock()
|
93
|
+
|
94
|
+
with mock.patch.object(
|
95
|
+
dsl, "parse_quantity",
|
96
|
+
mock.Mock(return_value=(script_keywords.QuantityType.DELTA, decimal.Decimal("10.333333")))
|
97
|
+
) as parse_quantity_mock:
|
98
|
+
assert await script_keywords.get_price_with_offset(
|
99
|
+
null_context, 10.333333, use_delta_type_as_flat_value=True
|
100
|
+
) == decimal.Decimal("10.33") # rounded according to precision
|
101
|
+
current_price_mock.assert_not_called()
|
102
|
+
parse_quantity_mock.assert_called_once_with(10.333333)
|
103
|
+
current_price_mock.reset_mock()
|
104
|
+
parse_quantity_mock.reset_mock()
|
105
|
+
|
106
|
+
with mock.patch.object(dsl, "parse_quantity",
|
107
|
+
mock.Mock(return_value=(script_keywords.QuantityType.PERCENT, decimal.Decimal(-99)))):
|
108
|
+
assert await script_keywords.get_price_with_offset(null_context, 10) == decimal.Decimal(2)
|
109
|
+
|
110
|
+
with mock.patch.object(dsl, "parse_quantity",
|
111
|
+
mock.Mock(return_value=(script_keywords.QuantityType.PERCENT, decimal.Decimal(1000)))):
|
112
|
+
assert await script_keywords.get_price_with_offset(null_context, 10) == decimal.Decimal(2200)
|
113
|
+
|
114
|
+
with mock.patch.object(position, "average_open_pos_entry", mock.AsyncMock(return_value=500)) \
|
115
|
+
as average_open_pos_entry_mock:
|
116
|
+
with mock.patch.object(dsl, "parse_quantity",
|
117
|
+
mock.Mock(return_value=(script_keywords.QuantityType.ENTRY_PERCENT, decimal.Decimal(-50)))):
|
118
|
+
assert await script_keywords.get_price_with_offset(null_context, 10, side="sell") == decimal.Decimal(250)
|
119
|
+
average_open_pos_entry_mock.assert_called_once_with(null_context, "sell")
|
120
|
+
|
121
|
+
with mock.patch.object(position, "average_open_pos_entry", mock.AsyncMock(return_value=500)) \
|
122
|
+
as average_open_pos_entry_mock:
|
123
|
+
with mock.patch.object(dsl, "parse_quantity",
|
124
|
+
mock.Mock(return_value=(script_keywords.QuantityType.ENTRY, decimal.Decimal(50)))):
|
125
|
+
assert await script_keywords.get_price_with_offset(null_context, 10, side="sell") == decimal.Decimal(550)
|
126
|
+
average_open_pos_entry_mock.assert_called_once()
|
127
|
+
|
128
|
+
with mock.patch.object(dsl, "parse_quantity",
|
129
|
+
mock.Mock(return_value=(script_keywords.QuantityType.FLAT, decimal.Decimal(50)))):
|
130
|
+
assert await script_keywords.get_price_with_offset(null_context, 10) == decimal.Decimal(50)
|
131
|
+
|
132
|
+
with mock.patch.object(dsl, "parse_quantity",
|
133
|
+
mock.Mock(return_value=(script_keywords.QuantityType.UNKNOWN, decimal.Decimal(-50)))):
|
134
|
+
with pytest.raises(errors.InvalidArgumentError):
|
135
|
+
await script_keywords.get_price_with_offset(null_context, 10)
|
{OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/tests/modes/script_keywords/dsl/test_quantity.py
RENAMED
@@ -27,6 +27,12 @@ def test_parse_quantity_types():
|
|
27
27
|
assert script_keywords.parse_quantity(1.366666663347877) == \
|
28
28
|
(script_keywords.QuantityType.DELTA, decimal.Decimal("1.366666663347877"))
|
29
29
|
assert script_keywords.parse_quantity("-10") == (script_keywords.QuantityType.DELTA, decimal.Decimal(-10))
|
30
|
+
|
31
|
+
assert script_keywords.parse_quantity("-10d") == (script_keywords.QuantityType.DELTA_EXPLICIT, decimal.Decimal(-10))
|
32
|
+
assert script_keywords.parse_quantity("d-10") == (script_keywords.QuantityType.DELTA_EXPLICIT, decimal.Decimal(-10))
|
33
|
+
assert script_keywords.parse_quantity("d+10") == (script_keywords.QuantityType.DELTA_EXPLICIT, decimal.Decimal(10))
|
34
|
+
assert script_keywords.parse_quantity("d10") == (script_keywords.QuantityType.DELTA_EXPLICIT, decimal.Decimal(10))
|
35
|
+
|
30
36
|
assert script_keywords.parse_quantity("-10b") == (script_keywords.QuantityType.DELTA_BASE, decimal.Decimal(-10))
|
31
37
|
|
32
38
|
assert script_keywords.parse_quantity("q") == (script_keywords.QuantityType.DELTA_QUOTE, None)
|
File without changes
|
File without changes
|
{OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/OctoBot_Trading.egg-info/dependency_links.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/funding/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/kline/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{OctoBot-Trading-2.4.61 → OctoBot-Trading-2.4.62}/octobot_trading/exchange_data/ohlcv/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|