investing-algorithm-framework 7.19.1__tar.gz → 7.19.3__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.
Potentially problematic release.
This version of investing-algorithm-framework might be problematic. Click here for more details.
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/PKG-INFO +1 -1
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/app.py +4 -1
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/utils/polars.py +6 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/data_providers/data_provider_service.py +45 -4
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/pyproject.toml +1 -1
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/LICENSE +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/README.md +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/algorithm/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/algorithm/algorithm.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/algorithm/algorithm_factory.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/analysis/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/analysis/backtest_data_ranges.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/analysis/backtest_utils.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/analysis/permutation.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/analysis/ranking.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/app_hook.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/context.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/eventloop.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/reporting/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/reporting/ascii.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/reporting/backtest_report.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/reporting/charts/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/reporting/charts/entry_exist_signals.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/reporting/charts/equity_curve.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/reporting/charts/equity_curve_drawdown.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/reporting/charts/line_chart.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/reporting/charts/monthly_returns_heatmap.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/reporting/charts/ohlcv_data_completeness.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/reporting/charts/rolling_sharp_ratio.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/reporting/charts/yearly_returns_barchart.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/reporting/generate.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/reporting/tables/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/reporting/tables/key_metrics_table.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/reporting/tables/stop_loss_table.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/reporting/tables/time_metrics_table.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/reporting/tables/trade_metrics_table.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/reporting/tables/trades_table.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/reporting/tables/utils.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/reporting/templates/report_template.html.j2 +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/stateless/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/stateless/action_handlers/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/stateless/action_handlers/action_handler_strategy.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/stateless/action_handlers/check_online_handler.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/stateless/action_handlers/run_strategy_handler.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/stateless/exception_handler.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/strategy.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/task.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/web/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/web/controllers/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/web/controllers/orders.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/web/controllers/portfolio.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/web/controllers/positions.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/web/create_app.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/web/error_handler.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/web/responses.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/web/run_strategies.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/web/schemas/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/web/schemas/order.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/web/schemas/portfolio.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/web/schemas/position.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/app/web/setup_cors.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/cli/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/cli/cli.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/cli/deploy_to_aws_lambda.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/cli/deploy_to_azure_function.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/cli/initialize_app.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/cli/templates/.gitignore.template +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/cli/templates/app.py.template +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/cli/templates/app_aws_lambda_function.py.template +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/cli/templates/app_azure_function.py.template +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/cli/templates/app_web.py.template +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/cli/templates/aws_lambda_dockerfile.template +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/cli/templates/aws_lambda_dockerignore.template +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/cli/templates/aws_lambda_readme.md.template +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/cli/templates/aws_lambda_requirements.txt.template +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/cli/templates/azure_function_function_app.py.template +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/cli/templates/azure_function_host.json.template +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/cli/templates/azure_function_local.settings.json.template +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/cli/templates/azure_function_requirements.txt.template +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/cli/templates/data_providers.py.template +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/cli/templates/env.example.template +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/cli/templates/env_azure_function.example.template +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/cli/templates/market_data_providers.py.template +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/cli/templates/readme.md.template +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/cli/templates/requirements.txt.template +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/cli/templates/run_backtest.py.template +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/cli/templates/strategy.py.template +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/create_app.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/dependency_container.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/backtesting/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/backtesting/backtest.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/backtesting/backtest_date_range.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/backtesting/backtest_evaluation_focuss.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/backtesting/backtest_metrics.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/backtesting/backtest_permutation_test.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/backtesting/backtest_run.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/backtesting/backtest_summary_metrics.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/backtesting/combine_backtests.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/config.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/constants.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/data_provider.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/data_structures.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/decimal_parsing.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/exceptions.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/models/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/models/app_mode.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/models/base_model.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/models/data/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/models/data/data_source.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/models/data/data_type.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/models/event.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/models/market/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/models/market/market_credential.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/models/order/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/models/order/order.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/models/order/order_side.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/models/order/order_status.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/models/order/order_type.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/models/portfolio/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/models/portfolio/portfolio.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/models/portfolio/portfolio_configuration.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/models/portfolio/portfolio_snapshot.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/models/position/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/models/position/position.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/models/position/position_snapshot.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/models/snapshot_interval.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/models/strategy_profile.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/models/time_frame.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/models/time_interval.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/models/time_unit.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/models/tracing/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/models/tracing/trace.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/models/trade/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/models/trade/trade.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/models/trade/trade_risk_type.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/models/trade/trade_status.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/models/trade/trade_stop_loss.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/models/trade/trade_take_profit.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/order_executor.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/portfolio_provider.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/positions/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/positions/position_size.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/services/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/services/market_credential_service.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/services/portfolios/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/services/portfolios/portfolio_sync_service.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/services/rounding_service.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/services/state_handler.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/stateless_actions.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/strategy.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/utils/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/utils/csv.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/utils/custom_tqdm.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/utils/dates.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/utils/jupyter_notebook_detection.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/utils/random.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/utils/signatures.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/utils/stoppable_thread.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/domain/utils/synchronized.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/download_data.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/infrastructure/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/infrastructure/data_providers/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/infrastructure/data_providers/ccxt.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/infrastructure/data_providers/csv.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/infrastructure/data_providers/pandas.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/infrastructure/database/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/infrastructure/database/sql_alchemy.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/infrastructure/models/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/infrastructure/models/decimal_parser.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/infrastructure/models/model_extension.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/infrastructure/models/order/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/infrastructure/models/order/order.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/infrastructure/models/order/order_metadata.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/infrastructure/models/order_trade_association.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/infrastructure/models/portfolio/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/infrastructure/models/portfolio/portfolio_snapshot.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/infrastructure/models/portfolio/sql_portfolio.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/infrastructure/models/position/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/infrastructure/models/position/position.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/infrastructure/models/position/position_snapshot.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/infrastructure/models/trades/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/infrastructure/models/trades/trade.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/infrastructure/models/trades/trade_stop_loss.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/infrastructure/models/trades/trade_take_profit.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/infrastructure/order_executors/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/infrastructure/order_executors/backtest_oder_executor.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/infrastructure/order_executors/ccxt_order_executor.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/infrastructure/portfolio_providers/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/infrastructure/portfolio_providers/ccxt_portfolio_provider.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/infrastructure/repositories/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/infrastructure/repositories/order_metadata_repository.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/infrastructure/repositories/order_repository.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/infrastructure/repositories/portfolio_repository.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/infrastructure/repositories/portfolio_snapshot_repository.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/infrastructure/repositories/position_repository.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/infrastructure/repositories/position_snapshot_repository.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/infrastructure/repositories/repository.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/infrastructure/repositories/trade_repository.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/infrastructure/repositories/trade_stop_loss_repository.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/infrastructure/repositories/trade_take_profit_repository.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/infrastructure/services/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/infrastructure/services/aws/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/infrastructure/services/aws/state_handler.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/infrastructure/services/azure/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/infrastructure/services/azure/state_handler.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/backtesting/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/backtesting/backtest_service.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/configuration_service.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/data_providers/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/market_credential_service.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/metrics/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/metrics/alpha.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/metrics/beta.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/metrics/cagr.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/metrics/calmar_ratio.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/metrics/drawdown.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/metrics/equity_curve.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/metrics/exposure.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/metrics/generate.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/metrics/mean_daily_return.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/metrics/price_efficiency.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/metrics/profit_factor.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/metrics/recovery.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/metrics/returns.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/metrics/risk_free_rate.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/metrics/sharpe_ratio.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/metrics/sortino_ratio.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/metrics/standard_deviation.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/metrics/trades.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/metrics/treynor_ratio.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/metrics/ulcer.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/metrics/value_at_risk.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/metrics/volatility.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/metrics/win_rate.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/order_service/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/order_service/order_backtest_service.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/order_service/order_executor_lookup.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/order_service/order_service.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/portfolios/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/portfolios/backtest_portfolio_service.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/portfolios/portfolio_configuration_service.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/portfolios/portfolio_provider_lookup.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/portfolios/portfolio_service.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/portfolios/portfolio_snapshot_service.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/portfolios/portfolio_sync_service.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/positions/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/positions/position_service.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/positions/position_snapshot_service.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/repository_service.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/trade_order_evaluator/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/trade_order_evaluator/backtest_trade_oder_evaluator.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/trade_order_evaluator/default_trade_order_evaluator.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/trade_order_evaluator/trade_order_evaluator.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/trade_service/__init__.py +0 -0
- {investing_algorithm_framework-7.19.1 → investing_algorithm_framework-7.19.3}/investing_algorithm_framework/services/trade_service/trade_service.py +0 -0
|
@@ -831,7 +831,10 @@ class App:
|
|
|
831
831
|
symbol=data_source.symbol,
|
|
832
832
|
start_date=backtest_date_range.start_date,
|
|
833
833
|
end_date=backtest_date_range.end_date,
|
|
834
|
-
pandas=True
|
|
834
|
+
pandas=True,
|
|
835
|
+
add_pandas_index=False,
|
|
836
|
+
add_datetime_column=True,
|
|
837
|
+
time_frame=data_source.time_frame
|
|
835
838
|
)
|
|
836
839
|
df = df.copy()
|
|
837
840
|
df['Datetime'] = pd.to_datetime(df['Datetime'])
|
|
@@ -6,6 +6,7 @@ def convert_polars_to_pandas(
|
|
|
6
6
|
data: PolarsDataFrame,
|
|
7
7
|
remove_duplicates=True,
|
|
8
8
|
add_index=True,
|
|
9
|
+
add_datetime_column=True,
|
|
9
10
|
datetime_column_name="Datetime"
|
|
10
11
|
):
|
|
11
12
|
"""
|
|
@@ -21,6 +22,8 @@ def convert_polars_to_pandas(
|
|
|
21
22
|
dates will be removed from the dataframe
|
|
22
23
|
add_index: Boolean - If set to true, an index will
|
|
23
24
|
be added to the dataframe
|
|
25
|
+
add_datetime_column: Boolean - If set to true, a datetime
|
|
26
|
+
column will be added to the dataframe
|
|
24
27
|
datetime_column_name: String - the column name that has the
|
|
25
28
|
datetime object. By default this is set to column name Datetime
|
|
26
29
|
This is only used if add_index is set to True
|
|
@@ -35,6 +38,9 @@ def convert_polars_to_pandas(
|
|
|
35
38
|
|
|
36
39
|
df = data.to_pandas().copy()
|
|
37
40
|
|
|
41
|
+
if add_datetime_column and datetime_column_name not in df.columns:
|
|
42
|
+
df[datetime_column_name] = pd.to_datetime(df.index)
|
|
43
|
+
|
|
38
44
|
# Ensure datetime column is datetime type
|
|
39
45
|
df[datetime_column_name] = pd.to_datetime(df[datetime_column_name])
|
|
40
46
|
|
|
@@ -7,7 +7,7 @@ from typing import List, Tuple, Optional, Dict, Any
|
|
|
7
7
|
|
|
8
8
|
from investing_algorithm_framework.domain import DataProvider, \
|
|
9
9
|
OperationalException, ImproperlyConfigured, DataSource, DataType, \
|
|
10
|
-
BacktestDateRange, tqdm, convert_polars_to_pandas
|
|
10
|
+
BacktestDateRange, tqdm, convert_polars_to_pandas, TimeFrame
|
|
11
11
|
|
|
12
12
|
logger = logging.getLogger("investing_algorithm_framework")
|
|
13
13
|
|
|
@@ -26,6 +26,7 @@ class DataProviderIndex:
|
|
|
26
26
|
self.data_providers_lookup = defaultdict()
|
|
27
27
|
self.ohlcv_data_providers = defaultdict()
|
|
28
28
|
self.ohlcv_data_providers_no_market = defaultdict()
|
|
29
|
+
self.ohlcv_data_providers_with_timeframe = defaultdict()
|
|
29
30
|
self.ticker_data_providers = defaultdict()
|
|
30
31
|
|
|
31
32
|
def add(self, data_provider: DataProvider):
|
|
@@ -80,11 +81,15 @@ class DataProviderIndex:
|
|
|
80
81
|
|
|
81
82
|
symbol = data_source.symbol
|
|
82
83
|
market = data_source.market
|
|
84
|
+
time_frame = data_source.time_frame
|
|
83
85
|
|
|
84
86
|
if DataType.OHLCV.equals(data_source.data_type):
|
|
85
87
|
if symbol not in self.ohlcv_data_providers:
|
|
86
88
|
self.ohlcv_data_providers[(symbol, market)] = best_provider
|
|
87
89
|
self.ohlcv_data_providers_no_market[symbol] = best_provider
|
|
90
|
+
self.ohlcv_data_providers_with_timeframe[
|
|
91
|
+
(symbol, market, time_frame)
|
|
92
|
+
] = best_provider
|
|
88
93
|
else:
|
|
89
94
|
try:
|
|
90
95
|
# If the symbol already exists, we can update the provider
|
|
@@ -105,6 +110,11 @@ class DataProviderIndex:
|
|
|
105
110
|
self.ohlcv_data_providers_no_market[symbol] =\
|
|
106
111
|
best_provider
|
|
107
112
|
|
|
113
|
+
time_frame_key = (symbol, market, time_frame)
|
|
114
|
+
self.ohlcv_data_providers_with_timeframe[
|
|
115
|
+
time_frame_key
|
|
116
|
+
] = best_provider
|
|
117
|
+
|
|
108
118
|
except Exception:
|
|
109
119
|
# If the existing provider does not have a time_frame
|
|
110
120
|
# attribute, we can safely ignore this
|
|
@@ -165,12 +175,16 @@ class DataProviderIndex:
|
|
|
165
175
|
|
|
166
176
|
symbol = data_source.symbol
|
|
167
177
|
market = data_source.market
|
|
178
|
+
time_frame = data_source.time_frame
|
|
168
179
|
|
|
169
180
|
if DataType.OHLCV.equals(data_source.data_type):
|
|
170
181
|
|
|
171
182
|
if symbol not in self.ohlcv_data_providers:
|
|
172
183
|
self.ohlcv_data_providers[(symbol, market)] = best_provider
|
|
173
184
|
self.ohlcv_data_providers_no_market[symbol] = best_provider
|
|
185
|
+
self.ohlcv_data_providers_with_timeframe[
|
|
186
|
+
(symbol, market, time_frame)
|
|
187
|
+
] = best_provider
|
|
174
188
|
else:
|
|
175
189
|
try:
|
|
176
190
|
# If the symbol already exists, we can update the provider
|
|
@@ -192,6 +206,11 @@ class DataProviderIndex:
|
|
|
192
206
|
self.ohlcv_data_providers_no_market[symbol] = \
|
|
193
207
|
best_provider
|
|
194
208
|
|
|
209
|
+
time_frame_key = (symbol, market, data_source.time_frame)
|
|
210
|
+
self.ohlcv_data_providers_with_timeframe[
|
|
211
|
+
time_frame_key
|
|
212
|
+
] = best_provider
|
|
213
|
+
|
|
195
214
|
except Exception:
|
|
196
215
|
# If the existing provider does not have a time_frame
|
|
197
216
|
# attribute, we can safely ignore this
|
|
@@ -264,7 +283,10 @@ class DataProviderIndex:
|
|
|
264
283
|
return len(self.data_providers_lookup)
|
|
265
284
|
|
|
266
285
|
def get_ohlcv_data_provider(
|
|
267
|
-
self,
|
|
286
|
+
self,
|
|
287
|
+
symbol: str,
|
|
288
|
+
market: Optional[str] = None,
|
|
289
|
+
time_frame: Optional[str] = None
|
|
268
290
|
) -> Optional[DataProvider]:
|
|
269
291
|
"""
|
|
270
292
|
Get the OHLCV data provider for a given symbol and market.
|
|
@@ -272,12 +294,20 @@ class DataProviderIndex:
|
|
|
272
294
|
Args:
|
|
273
295
|
symbol (str): The symbol to get the data provider for.
|
|
274
296
|
market (Optional[str]): The market to get the data provider for.
|
|
297
|
+
time_frame (Optional[str]): The time frame to get the
|
|
298
|
+
data provider for.
|
|
275
299
|
|
|
276
300
|
Returns:
|
|
277
301
|
DataProvider: The OHLCV data provider for the symbol and market,
|
|
278
302
|
or None if no provider is found.
|
|
279
303
|
"""
|
|
280
304
|
|
|
305
|
+
if market is not None and time_frame is not None:
|
|
306
|
+
time_frame = TimeFrame.from_value(time_frame)
|
|
307
|
+
return self.ohlcv_data_providers_with_timeframe.get(
|
|
308
|
+
(symbol, market, time_frame), None
|
|
309
|
+
)
|
|
310
|
+
|
|
281
311
|
if market is None:
|
|
282
312
|
# If no market is specified
|
|
283
313
|
return self.ohlcv_data_providers_no_market.get(symbol, None)
|
|
@@ -462,7 +492,9 @@ class DataProviderService:
|
|
|
462
492
|
start_date: Optional[datetime] = None,
|
|
463
493
|
end_date: Optional[datetime] = None,
|
|
464
494
|
window_size: Optional[int] = None,
|
|
465
|
-
pandas: bool = False
|
|
495
|
+
pandas: bool = False,
|
|
496
|
+
add_pandas_index: bool = True,
|
|
497
|
+
add_datetime_column: bool = False,
|
|
466
498
|
):
|
|
467
499
|
"""
|
|
468
500
|
Function to get OHLCV data from the data provider.
|
|
@@ -476,6 +508,10 @@ class DataProviderService:
|
|
|
476
508
|
end_date (datetime): The end date for the OHLCV data.
|
|
477
509
|
window_size (int): The window size for the OHLCV data.
|
|
478
510
|
pandas (bool): Whether to return the data as a pandas DataFrame.
|
|
511
|
+
add_pandas_index (bool): Whether to add a pandas index to
|
|
512
|
+
the DataFrame if pandas is True.
|
|
513
|
+
add_datetime_column (bool): Whether to add a datetime column
|
|
514
|
+
to the DataFrame if pandas is True.
|
|
479
515
|
|
|
480
516
|
Returns:
|
|
481
517
|
DataFrame: The OHLCV data for the given symbol and market.
|
|
@@ -483,6 +519,7 @@ class DataProviderService:
|
|
|
483
519
|
data_provider = self.data_provider_index.get_ohlcv_data_provider(
|
|
484
520
|
symbol=symbol,
|
|
485
521
|
market=market,
|
|
522
|
+
time_frame=time_frame
|
|
486
523
|
)
|
|
487
524
|
|
|
488
525
|
if data_provider is None:
|
|
@@ -511,7 +548,11 @@ class DataProviderService:
|
|
|
511
548
|
|
|
512
549
|
if pandas:
|
|
513
550
|
if isinstance(data, pl.DataFrame):
|
|
514
|
-
return convert_polars_to_pandas(
|
|
551
|
+
return convert_polars_to_pandas(
|
|
552
|
+
data,
|
|
553
|
+
add_index=add_pandas_index,
|
|
554
|
+
add_datetime_column=add_datetime_column
|
|
555
|
+
)
|
|
515
556
|
else:
|
|
516
557
|
return data
|
|
517
558
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|