Qubx 1.2.3.dev4__tar.gz → 1.3.0__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.
- {qubx-1.2.3.dev4 → qubx-1.3.0}/PKG-INFO +1 -1
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/_version.py +2 -2
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/ta/indicators.pxd +2 -1
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/ta/indicators.pyx +23 -9
- {qubx-1.2.3.dev4 → qubx-1.3.0}/.gitignore +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/LICENSE +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/README.md +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/pyproject.toml +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/scripts/build.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/__init__.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/_nb_magic.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/backtester/__init__.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/backtester/account.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/backtester/broker.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/backtester/data.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/backtester/iteratedstream.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/backtester/management.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/backtester/ome.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/backtester/optimization.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/backtester/runner.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/backtester/sentinels.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/backtester/simulated_data.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/backtester/simulated_exchange.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/backtester/simulator.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/backtester/transfers.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/backtester/utils.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/cli/__init__.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/cli/commands.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/cli/deploy.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/cli/misc.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/cli/release.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/cli/resolver.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/cli/s3.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/cli/theme.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/cli/tui.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/cli/user_config.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/config.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/__init__.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/__init__.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/account.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/adapters/__init__.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/adapters/polling_adapter.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/broker.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/connection_manager.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/data.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/exceptions.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/exchange_manager.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/exchanges/__init__.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/exchanges/base.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/exchanges/binance/broker.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/exchanges/binance/exchange.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/exchanges/bitfinex/bitfinex.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/exchanges/bitfinex/bitfinex_account.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/exchanges/gateio/__init__.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/exchanges/gateio/gateio.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/exchanges/hyperliquid/__init__.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/exchanges/hyperliquid/account.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/exchanges/hyperliquid/broker.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/exchanges/hyperliquid/hyperliquid.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/exchanges/kraken/kraken.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/exchanges/okx/__init__.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/exchanges/okx/account.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/exchanges/okx/broker.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/exchanges/okx/okx.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/factory.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/handlers/__init__.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/handlers/base.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/handlers/factory.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/handlers/funding_rate.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/handlers/liquidation.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/handlers/ohlc.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/handlers/open_interest.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/handlers/orderbook.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/handlers/quote.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/handlers/trade.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/rate_limits.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/subscription_config.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/subscription_manager.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/subscription_orchestrator.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/utils.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/warmup_service.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/registry.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/tardis/data.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/tardis/utils.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/control/__init__.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/control/builtin.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/control/decorator.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/control/executor.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/control/interfaces.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/control/server.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/control/types.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/__init__.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/account.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/basics.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/context.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/detectors/__init__.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/detectors/delisting.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/detectors/stale.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/errors.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/exceptions.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/helpers.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/initializer.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/interfaces.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/loggers.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/lookups.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/metrics.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/mixins/__init__.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/mixins/market.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/mixins/processing.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/mixins/subscription.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/mixins/trading.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/mixins/universe.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/mixins/utils.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/series.pxd +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/series.pyi +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/series.pyx +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/utils.pyi +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/utils.pyx +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/data/__init__.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/data/cache.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/data/containers.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/data/guards.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/data/registry.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/data/storage.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/data/storages/ccxt.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/data/storages/csv.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/data/storages/handy.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/data/storages/multi.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/data/storages/questdb.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/data/storages/stub.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/data/storages/utils.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/data/transformers.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/emitters/__init__.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/emitters/base.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/emitters/composite.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/emitters/csv.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/emitters/indicator.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/emitters/inmemory.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/emitters/prometheus.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/emitters/questdb.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/exporters/__init__.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/exporters/composite.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/exporters/formatters/__init__.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/exporters/formatters/base.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/exporters/formatters/incremental.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/exporters/formatters/slack.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/exporters/formatters/target_position.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/exporters/redis_streams.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/exporters/slack.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/gathering/simplest.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/health/__init__.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/health/base.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/health/dummy.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/loggers/__init__.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/loggers/csv.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/loggers/factory.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/loggers/inmemory.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/loggers/mongo.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/loggers/postgres.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/notifications/__init__.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/notifications/composite.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/notifications/slack.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/notifications/throttler.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/pandaz/__init__.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/pandaz/stats.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/pandaz/ta.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/pandaz/utils.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/plugins/__init__.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/plugins/loader.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/rate_limiting/__init__.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/rate_limiting/backend.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/rate_limiting/config.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/rate_limiting/engine.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/rate_limiting/ip_resolver.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/rate_limiting/manager.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/rate_limiting/pools.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/rate_limiting/redis_backend.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/resources/_build.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/resources/crypto-fees.ini +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/resources/instruments/hyperliquid-spot.json +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/resources/instruments/hyperliquid.f-perpetual.json +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/resources/instruments/symbols-binance-spot.json +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/resources/instruments/symbols-binance.cm-future.json +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/resources/instruments/symbols-binance.cm-perpetual.json +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/resources/instruments/symbols-binance.um-future.json +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/resources/instruments/symbols-binance.um-perpetual.json +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/resources/instruments/symbols-bitfinex.f-perpetual.json +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/resources/instruments/symbols-kraken-spot.json +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/resources/instruments/symbols-kraken.f-future.json +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/resources/instruments/symbols-kraken.f-perpetual.json +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/restarts/__init__.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/restarts/state_resolvers.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/restarts/time_finders.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/restorers/__init__.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/restorers/balance.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/restorers/factory.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/restorers/interfaces.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/restorers/position.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/restorers/signal.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/restorers/state.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/restorers/utils.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/state/__init__.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/state/dummy.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/state/redis.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/ta/__init__.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/ta/indicators.pyi +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/__init__.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/base.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/project/accounts.toml.j2 +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/project/config.yml.j2 +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/project/jlive.sh.j2 +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/project/jpaper.sh.j2 +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/project/pyproject.toml.j2 +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/project/src/{{ strategy_name }}/__init__.py.j2 +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/project/src/{{ strategy_name }}/strategy.py.j2 +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/project/template.yml +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/repo/.claude/skills/qubx-cli/SKILL.md +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/repo/.claude/skills/qubx-indicators/SKILL.md +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/repo/.claude/skills/simulation-explorer/SKILL.md +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/repo/.claude/skills/strategy-release/SKILL.md +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/repo/.github/workflows/ci.yml.j2 +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/repo/.gitignore.j2 +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/repo/.python-version +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/repo/.vscode/launch.json +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/repo/.vscode/settings.json +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/repo/.vscode/tasks.json +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/repo/CLAUDE.md.j2 +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/repo/README.md.j2 +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/repo/configs/.gitkeep +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/repo/justfile.j2 +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/repo/pyproject.toml.j2 +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/repo/research/.gitkeep +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/repo/src/{{ strategy_name }}/__init__.py.j2 +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/repo/src/{{ strategy_name }}/cli.py.j2 +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/repo/src/{{ strategy_name }}/strategy.py.j2 +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/repo/template.yml +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/repo/tests/test_strategy.py.j2 +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/simple/__init__.py.j2 +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/simple/accounts.toml.j2 +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/simple/config.yml.j2 +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/simple/jlive.sh.j2 +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/simple/jpaper.sh.j2 +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/simple/strategy.py.j2 +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/simple/template.yml +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/trackers/__init__.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/trackers/advanced.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/trackers/composite.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/trackers/rebalancers.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/trackers/riskctrl.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/trackers/sizers.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/__init__.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/_pyxreloader.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/charting/lookinglass.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/charting/mpl_helpers.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/charting/orderbook.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/collections.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/hft/__init__.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/hft/numba_utils.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/hft/orderbook.pyi +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/hft/orderbook.pyx +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/marketdata/binance.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/marketdata/ccxt.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/marketdata/dukas.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/misc.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/nonce.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/ntp.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/numbers_utils.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/orderbook.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/plotting/__init__.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/plotting/dashboard.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/plotting/data.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/plotting/interfaces.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/plotting/renderers/__init__.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/plotting/renderers/plotly.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/questdb.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/rate_limiter.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/results.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/ringbuffer.pxd +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/ringbuffer.pyi +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/ringbuffer.pyx +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/runner/__init__.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/runner/_jupyter_runner.pyt +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/runner/accounts.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/runner/configs.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/runner/factory.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/runner/kernel_service.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/runner/runner.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/runner/textual/__init__.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/runner/textual/app.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/runner/textual/handlers.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/runner/textual/init_code.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/runner/textual/kernel.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/runner/textual/styles.tcss +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/runner/textual/widgets/__init__.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/runner/textual/widgets/account_summary.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/runner/textual/widgets/command_input.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/runner/textual/widgets/debug_log.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/runner/textual/widgets/orders_table.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/runner/textual/widgets/positions_table.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/runner/textual/widgets/quotes_table.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/runner/textual/widgets/repl_output.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/s3.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/slack.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/throttler.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/time.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/websocket_manager.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/tests/strategies/macd_crossover/src/macd_crossover/indicators/macd.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/tests/strategies/macd_crossover/src/macd_crossover/models/macd_crossover.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/tests/strategies/macd_crossover/src/macd_crossover/models/utils.py +0 -0
- {qubx-1.2.3.dev4 → qubx-1.3.0}/tests/strategies/obi_trader/src/obi_trader/models/obi_trader.py +0 -0
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '1.
|
|
22
|
-
__version_tuple__ = version_tuple = (1,
|
|
21
|
+
__version__ = version = '1.3.0'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 3, 0)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -198,7 +198,8 @@ cdef class Rsi(Indicator):
|
|
|
198
198
|
cdef object down_moves
|
|
199
199
|
cdef object smooth_up
|
|
200
200
|
cdef object smooth_down
|
|
201
|
-
cdef double prev_value
|
|
201
|
+
cdef double prev_value # - close of the previous COMPLETED bar (reference for diff)
|
|
202
|
+
cdef double last_value # - current bar's working value (updates on every tick)
|
|
202
203
|
|
|
203
204
|
cpdef double calculate(self, long long time, double value, short new_item_started)
|
|
204
205
|
|
|
@@ -1264,6 +1264,7 @@ cdef class Rsi(Indicator):
|
|
|
1264
1264
|
def __init__(self, str name, TimeSeries series, int period, str smoother="ema"):
|
|
1265
1265
|
self.period = period
|
|
1266
1266
|
self.prev_value = np.nan
|
|
1267
|
+
self.last_value = np.nan
|
|
1267
1268
|
|
|
1268
1269
|
# - create internal series for up and down moves
|
|
1269
1270
|
self.up_moves = TimeSeries("up_moves", series.timeframe, series.max_series_length)
|
|
@@ -1278,20 +1279,33 @@ cdef class Rsi(Indicator):
|
|
|
1278
1279
|
cpdef double calculate(self, long long time, double value, short new_item_started):
|
|
1279
1280
|
cdef double diff, up_move, down_move, smooth_u, smooth_d
|
|
1280
1281
|
|
|
1281
|
-
# -
|
|
1282
|
-
|
|
1283
|
-
|
|
1282
|
+
# - very first tick ever: initialize working value, emit 0 up/down moves,
|
|
1283
|
+
# - keep prev_value = NaN so no diff is computed until the first bar finalizes
|
|
1284
|
+
if np.isnan(self.last_value):
|
|
1285
|
+
self.last_value = value
|
|
1284
1286
|
self.up_moves.update(time, 0.0)
|
|
1285
1287
|
self.down_moves.update(time, 0.0)
|
|
1286
1288
|
return np.nan
|
|
1287
1289
|
|
|
1288
|
-
# -
|
|
1290
|
+
# - on new bar: the previously tracked working value (last_value) has just
|
|
1291
|
+
# - been finalized as the previous bar's close — promote it to prev_value
|
|
1292
|
+
# - so diff is measured against the true previous-bar close, not against
|
|
1293
|
+
# - any intrabar tick we may have seen earlier.
|
|
1289
1294
|
if new_item_started:
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
+
self.prev_value = self.last_value
|
|
1296
|
+
|
|
1297
|
+
# - track current working value for the bar (updates on every tick)
|
|
1298
|
+
self.last_value = value
|
|
1299
|
+
|
|
1300
|
+
# - still in the first bar (no finalized prev close yet): emit 0 moves
|
|
1301
|
+
# - and NaN — matches the single-call init path from batch replay
|
|
1302
|
+
if np.isnan(self.prev_value):
|
|
1303
|
+
self.up_moves.update(time, 0.0)
|
|
1304
|
+
self.down_moves.update(time, 0.0)
|
|
1305
|
+
return np.nan
|
|
1306
|
+
|
|
1307
|
+
# - diff is always against the previous COMPLETED bar's close
|
|
1308
|
+
diff = value - self.prev_value
|
|
1295
1309
|
|
|
1296
1310
|
# - calculate up and down moves
|
|
1297
1311
|
if diff > 0:
|
|
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
|
|
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
|
{qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/exchanges/bitfinex/bitfinex_account.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/exchanges/hyperliquid/hyperliquid.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
|
|
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
|
|
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
|
|
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
|
|
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
|
{qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/resources/instruments/symbols-binance.cm-future.json
RENAMED
|
File without changes
|
{qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/resources/instruments/symbols-binance.cm-perpetual.json
RENAMED
|
File without changes
|
{qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/resources/instruments/symbols-binance.um-future.json
RENAMED
|
File without changes
|
{qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/resources/instruments/symbols-binance.um-perpetual.json
RENAMED
|
File without changes
|
{qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/resources/instruments/symbols-bitfinex.f-perpetual.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/resources/instruments/symbols-kraken.f-perpetual.json
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
|