Qubx 1.0.6.dev3__tar.gz → 1.0.6.dev5__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.0.6.dev3 → qubx-1.0.6.dev5}/PKG-INFO +1 -1
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/_version.py +2 -2
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/ccxt/handlers/ohlc.py +28 -6
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/core/account.py +1 -1
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/core/basics.py +3 -2
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/data/cache.py +4 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/.gitignore +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/LICENSE +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/README.md +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/pyproject.toml +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/scripts/build.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/__init__.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/_nb_magic.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/backtester/__init__.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/backtester/account.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/backtester/broker.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/backtester/data.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/backtester/iteratedstream.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/backtester/management.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/backtester/ome.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/backtester/optimization.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/backtester/runner.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/backtester/sentinels.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/backtester/simulated_data.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/backtester/simulated_exchange.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/backtester/simulator.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/backtester/transfers.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/backtester/utils.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/cli/__init__.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/cli/commands.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/cli/deploy.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/cli/misc.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/cli/release.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/cli/resolver.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/cli/theme.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/cli/tui.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/config.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/__init__.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/ccxt/__init__.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/ccxt/account.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/ccxt/adapters/__init__.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/ccxt/adapters/polling_adapter.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/ccxt/broker.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/ccxt/connection_manager.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/ccxt/data.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/ccxt/exceptions.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/ccxt/exchange_manager.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/ccxt/exchanges/__init__.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/ccxt/exchanges/base.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/ccxt/exchanges/binance/broker.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/ccxt/exchanges/binance/exchange.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/ccxt/exchanges/bitfinex/bitfinex.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/ccxt/exchanges/bitfinex/bitfinex_account.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/ccxt/exchanges/gateio/__init__.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/ccxt/exchanges/gateio/gateio.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/ccxt/exchanges/hyperliquid/__init__.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/ccxt/exchanges/hyperliquid/account.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/ccxt/exchanges/hyperliquid/broker.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/ccxt/exchanges/hyperliquid/hyperliquid.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/ccxt/exchanges/kraken/kraken.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/ccxt/exchanges/okx/__init__.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/ccxt/exchanges/okx/account.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/ccxt/exchanges/okx/broker.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/ccxt/exchanges/okx/okx.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/ccxt/factory.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/ccxt/handlers/__init__.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/ccxt/handlers/base.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/ccxt/handlers/factory.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/ccxt/handlers/funding_rate.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/ccxt/handlers/liquidation.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/ccxt/handlers/open_interest.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/ccxt/handlers/orderbook.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/ccxt/handlers/quote.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/ccxt/handlers/trade.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/ccxt/subscription_config.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/ccxt/subscription_manager.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/ccxt/subscription_orchestrator.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/ccxt/utils.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/ccxt/warmup_service.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/registry.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/tardis/data.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/tardis/utils.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/core/__init__.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/core/context.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/core/detectors/__init__.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/core/detectors/delisting.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/core/detectors/stale.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/core/errors.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/core/exceptions.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/core/helpers.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/core/initializer.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/core/interfaces.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/core/loggers.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/core/lookups.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/core/metrics.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/core/mixins/__init__.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/core/mixins/market.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/core/mixins/processing.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/core/mixins/subscription.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/core/mixins/trading.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/core/mixins/universe.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/core/mixins/utils.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/core/series.pxd +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/core/series.pyi +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/core/series.pyx +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/core/utils.pyi +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/core/utils.pyx +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/data/__init__.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/data/containers.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/data/guards.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/data/registry.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/data/storage.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/data/storages/ccxt.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/data/storages/csv.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/data/storages/handy.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/data/storages/multi.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/data/storages/questdb.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/data/storages/stub.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/data/storages/utils.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/data/transformers.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/emitters/__init__.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/emitters/base.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/emitters/composite.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/emitters/csv.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/emitters/indicator.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/emitters/inmemory.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/emitters/prometheus.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/emitters/questdb.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/exporters/__init__.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/exporters/composite.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/exporters/formatters/__init__.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/exporters/formatters/base.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/exporters/formatters/incremental.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/exporters/formatters/slack.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/exporters/formatters/target_position.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/exporters/redis_streams.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/exporters/slack.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/gathering/simplest.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/health/__init__.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/health/base.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/health/dummy.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/health/server.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/loggers/__init__.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/loggers/csv.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/loggers/factory.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/loggers/inmemory.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/loggers/mongo.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/notifications/__init__.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/notifications/composite.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/notifications/slack.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/notifications/throttler.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/pandaz/__init__.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/pandaz/stats.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/pandaz/ta.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/pandaz/utils.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/plugins/__init__.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/plugins/loader.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/resources/_build.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/resources/crypto-fees.ini +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/resources/instruments/hyperliquid-spot.json +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/resources/instruments/hyperliquid.f-perpetual.json +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/resources/instruments/symbols-binance-spot.json +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/resources/instruments/symbols-binance.cm-future.json +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/resources/instruments/symbols-binance.cm-perpetual.json +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/resources/instruments/symbols-binance.um-future.json +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/resources/instruments/symbols-binance.um-perpetual.json +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/resources/instruments/symbols-bitfinex.f-perpetual.json +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/resources/instruments/symbols-kraken-spot.json +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/resources/instruments/symbols-kraken.f-future.json +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/resources/instruments/symbols-kraken.f-perpetual.json +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/restarts/__init__.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/restarts/state_resolvers.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/restarts/time_finders.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/restorers/__init__.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/restorers/balance.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/restorers/factory.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/restorers/interfaces.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/restorers/position.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/restorers/signal.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/restorers/state.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/restorers/utils.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/state/__init__.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/state/dummy.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/state/redis.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/ta/__init__.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/ta/indicators.pxd +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/ta/indicators.pyi +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/ta/indicators.pyx +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/templates/__init__.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/templates/base.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/templates/project/accounts.toml.j2 +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/templates/project/config.yml.j2 +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/templates/project/jlive.sh.j2 +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/templates/project/jpaper.sh.j2 +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/templates/project/pyproject.toml.j2 +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/templates/project/src/{{ strategy_name }}/__init__.py.j2 +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/templates/project/src/{{ strategy_name }}/strategy.py.j2 +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/templates/project/template.yml +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/templates/simple/__init__.py.j2 +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/templates/simple/accounts.toml.j2 +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/templates/simple/config.yml.j2 +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/templates/simple/jlive.sh.j2 +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/templates/simple/jpaper.sh.j2 +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/templates/simple/strategy.py.j2 +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/templates/simple/template.yml +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/trackers/__init__.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/trackers/advanced.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/trackers/composite.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/trackers/rebalancers.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/trackers/riskctrl.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/trackers/sizers.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/__init__.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/_pyxreloader.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/charting/lookinglass.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/charting/mpl_helpers.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/charting/orderbook.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/collections.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/hft/__init__.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/hft/numba_utils.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/hft/orderbook.pyi +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/hft/orderbook.pyx +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/marketdata/binance.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/marketdata/ccxt.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/marketdata/dukas.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/misc.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/nonce.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/ntp.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/numbers_utils.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/orderbook.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/plotting/__init__.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/plotting/dashboard.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/plotting/data.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/plotting/interfaces.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/plotting/renderers/__init__.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/plotting/renderers/plotly.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/questdb.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/rate_limiter.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/results.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/ringbuffer.pxd +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/ringbuffer.pyi +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/ringbuffer.pyx +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/runner/__init__.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/runner/_jupyter_runner.pyt +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/runner/accounts.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/runner/configs.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/runner/factory.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/runner/kernel_service.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/runner/runner.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/runner/textual/__init__.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/runner/textual/app.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/runner/textual/handlers.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/runner/textual/init_code.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/runner/textual/kernel.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/runner/textual/styles.tcss +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/runner/textual/widgets/__init__.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/runner/textual/widgets/command_input.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/runner/textual/widgets/debug_log.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/runner/textual/widgets/orders_table.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/runner/textual/widgets/positions_table.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/runner/textual/widgets/quotes_table.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/runner/textual/widgets/repl_output.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/slack.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/throttler.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/time.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/utils/websocket_manager.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/tests/strategies/macd_crossover/src/macd_crossover/indicators/macd.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/tests/strategies/macd_crossover/src/macd_crossover/models/macd_crossover.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/tests/strategies/macd_crossover/src/macd_crossover/models/utils.py +0 -0
- {qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/tests/strategies/obi_trader/src/obi_trader/models/obi_trader.py +0 -0
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
|
28
28
|
commit_id: COMMIT_ID
|
|
29
29
|
__commit_id__: COMMIT_ID
|
|
30
30
|
|
|
31
|
-
__version__ = version = '1.0.6.
|
|
32
|
-
__version_tuple__ = version_tuple = (1, 0, 6, '
|
|
31
|
+
__version__ = version = '1.0.6.dev5'
|
|
32
|
+
__version_tuple__ = version_tuple = (1, 0, 6, 'dev5')
|
|
33
33
|
|
|
34
34
|
__commit_id__ = commit_id = None
|
|
@@ -91,14 +91,29 @@ class OhlcDataHandler(BaseDataTypeHandler):
|
|
|
91
91
|
"""
|
|
92
92
|
nbarsback = pd.Timedelta(warmup_period) // pd.Timedelta(timeframe)
|
|
93
93
|
exch_timeframe = self._data_provider._get_exch_timeframe(timeframe)
|
|
94
|
+
_tf_msec = pd.to_timedelta(timeframe).value // 1_000_000
|
|
94
95
|
|
|
95
96
|
for instrument in instruments:
|
|
96
|
-
|
|
97
|
+
start_since = self._data_provider._time_msec_nbars_back(timeframe, nbarsback)
|
|
97
98
|
ccxt_symbol = instrument_to_ccxt_symbol(instrument)
|
|
98
|
-
ohlcv = await self._exchange_manager.exchange.fetch_ohlcv(
|
|
99
|
-
ccxt_symbol, exch_timeframe, since=start, limit=nbarsback + 1
|
|
100
|
-
)
|
|
101
99
|
|
|
100
|
+
# Paginate: exchanges may return fewer bars than requested per call
|
|
101
|
+
ohlcv_map: dict[int, list] = {}
|
|
102
|
+
while len(ohlcv_map) < nbarsback:
|
|
103
|
+
batch = await self._exchange_manager.exchange.fetch_ohlcv(
|
|
104
|
+
ccxt_symbol, exch_timeframe, since=start_since,
|
|
105
|
+
limit=min(nbarsback - len(ohlcv_map), self.MAX_BARS_PER_REQUEST_FOR_PROVIDER) + 1,
|
|
106
|
+
)
|
|
107
|
+
if not batch:
|
|
108
|
+
break
|
|
109
|
+
prev_count = len(ohlcv_map)
|
|
110
|
+
for bar in batch:
|
|
111
|
+
ohlcv_map[bar[0]] = bar
|
|
112
|
+
if len(ohlcv_map) == prev_count:
|
|
113
|
+
break
|
|
114
|
+
start_since = batch[-1][0] + _tf_msec
|
|
115
|
+
|
|
116
|
+
ohlcv = list(ohlcv_map.values())
|
|
102
117
|
logger.debug(f"<yellow>{self._exchange_id}</yellow> {instrument}: loaded {len(ohlcv)} {timeframe} bars")
|
|
103
118
|
|
|
104
119
|
channel.send(
|
|
@@ -134,11 +149,13 @@ class OhlcDataHandler(BaseDataTypeHandler):
|
|
|
134
149
|
exch_timeframe = self._data_provider._get_exch_timeframe(timeframe)
|
|
135
150
|
|
|
136
151
|
loaded_bars = {}
|
|
137
|
-
n_tries = nbarsback // self.MAX_BARS_PER_REQUEST_FOR_PROVIDER + 1
|
|
138
152
|
_tf_msec = pd.to_timedelta(timeframe).value // 1_000_000 # convert to msec
|
|
139
153
|
|
|
140
154
|
# - retrieve OHLC data from exchange by chunks as some providers limit number of bars per request
|
|
141
|
-
|
|
155
|
+
# Loop until we have enough bars or exchange stops returning data.
|
|
156
|
+
# n_tries is not pre-calculated because exchanges return varying page sizes
|
|
157
|
+
# (e.g., OKX returns ~100 bars vs Binance's ~1000).
|
|
158
|
+
while len(loaded_bars) < nbarsback:
|
|
142
159
|
bars_to_request = min((nbarsback - len(loaded_bars)), self.MAX_BARS_PER_REQUEST_FOR_PROVIDER)
|
|
143
160
|
if not (
|
|
144
161
|
ohlcv_data := await self._exchange_manager.exchange.fetch_ohlcv(
|
|
@@ -147,9 +164,14 @@ class OhlcDataHandler(BaseDataTypeHandler):
|
|
|
147
164
|
):
|
|
148
165
|
break
|
|
149
166
|
|
|
167
|
+
prev_count = len(loaded_bars)
|
|
150
168
|
for oh in ohlcv_data:
|
|
151
169
|
loaded_bars[oh[0]] = self._convert_ohlcv_to_bar(oh) # use timestamp as key to avoid duplicates
|
|
152
170
|
|
|
171
|
+
# Stop if no new bars were added (exchange has no more data)
|
|
172
|
+
if len(loaded_bars) == prev_count:
|
|
173
|
+
break
|
|
174
|
+
|
|
153
175
|
start_since = ohlcv_data[-1][0] + _tf_msec
|
|
154
176
|
|
|
155
177
|
return list(loaded_bars.values())
|
|
@@ -515,7 +515,7 @@ class BasicAccountProcessor(IAccountProcessor):
|
|
|
515
515
|
# how many shares are closed/open
|
|
516
516
|
qty_closing = min(abs(pos.quantity), abs(pos_change)) * direction if prev_direction != direction else 0
|
|
517
517
|
qty_opening = pos_change if prev_direction == direction else pos_change - qty_closing
|
|
518
|
-
excess = abs(qty_opening) * order.price
|
|
518
|
+
excess = abs(qty_opening) * order.instrument.quantity_multiplier * order.price
|
|
519
519
|
|
|
520
520
|
# TODO: locking likely doesn't work correctly for spot accounts (Account)
|
|
521
521
|
# Example: if we have 1 BTC at price 100k and set a limit order for 0.1 BTC at 110k
|
|
@@ -579,10 +579,11 @@ class TransactionCostsCalculator:
|
|
|
579
579
|
def get_execution_fees(
|
|
580
580
|
self, instrument: Instrument, exec_price: float, amount: float, crossed_market=False, conversion_rate=1.0
|
|
581
581
|
):
|
|
582
|
+
notional = abs(amount * instrument.quantity_multiplier * exec_price)
|
|
582
583
|
if crossed_market:
|
|
583
|
-
return
|
|
584
|
+
return notional * self.taker / conversion_rate
|
|
584
585
|
else:
|
|
585
|
-
return
|
|
586
|
+
return notional * self.maker / conversion_rate
|
|
586
587
|
|
|
587
588
|
def get_overnight_fees(self, instrument: Instrument, amount: float):
|
|
588
589
|
return 0.0
|
|
@@ -372,6 +372,10 @@ class CachedReader(IReader):
|
|
|
372
372
|
chunksize: int = 0,
|
|
373
373
|
**kwargs,
|
|
374
374
|
) -> Iterator[Transformable] | Transformable:
|
|
375
|
+
# Normalize start/stop so that start <= stop regardless of caller ordering
|
|
376
|
+
if start is not None and stop is not None and pd.Timestamp(start) > pd.Timestamp(stop):
|
|
377
|
+
start, stop = stop, start
|
|
378
|
+
|
|
375
379
|
cache_key = _make_cache_key(dtype, **kwargs)
|
|
376
380
|
|
|
377
381
|
# - detect "all symbols" request (empty collection)
|
|
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.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/ccxt/exchanges/bitfinex/bitfinex_account.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/ccxt/exchanges/hyperliquid/__init__.py
RENAMED
|
File without changes
|
{qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/ccxt/exchanges/hyperliquid/account.py
RENAMED
|
File without changes
|
{qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/connectors/ccxt/exchanges/hyperliquid/broker.py
RENAMED
|
File without changes
|
{qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/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
|
{qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/resources/instruments/hyperliquid.f-perpetual.json
RENAMED
|
File without changes
|
{qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/resources/instruments/symbols-binance-spot.json
RENAMED
|
File without changes
|
{qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/resources/instruments/symbols-binance.cm-future.json
RENAMED
|
File without changes
|
{qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/resources/instruments/symbols-binance.cm-perpetual.json
RENAMED
|
File without changes
|
{qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/resources/instruments/symbols-binance.um-future.json
RENAMED
|
File without changes
|
{qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/resources/instruments/symbols-binance.um-perpetual.json
RENAMED
|
File without changes
|
{qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/resources/instruments/symbols-bitfinex.f-perpetual.json
RENAMED
|
File without changes
|
|
File without changes
|
{qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/src/qubx/resources/instruments/symbols-kraken.f-future.json
RENAMED
|
File without changes
|
{qubx-1.0.6.dev3 → qubx-1.0.6.dev5}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|