investing-algorithm-framework 3.7.0__tar.gz → 3.7.2__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.
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/PKG-INFO +1 -1
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/models/time_frame.py +9 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/services/market_data_sources.py +11 -3
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/infrastructure/models/market_data_sources/ccxt.py +13 -2
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/infrastructure/models/market_data_sources/csv.py +19 -14
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/infrastructure/services/market_service/ccxt_market_service.py +5 -3
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/pyproject.toml +1 -1
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/LICENSE +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/README.md +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/__init__.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/app/__init__.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/app/algorithm.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/app/app.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/app/stateless/__init__.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/app/stateless/action_handlers/__init__.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/app/stateless/action_handlers/action_handler_strategy.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/app/stateless/action_handlers/check_online_handler.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/app/stateless/action_handlers/run_strategy_handler.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/app/stateless/exception_handler.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/app/strategy.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/app/task.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/app/web/__init__.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/app/web/controllers/__init__.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/app/web/controllers/orders.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/app/web/controllers/portfolio.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/app/web/controllers/positions.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/app/web/create_app.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/app/web/error_handler.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/app/web/responses.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/app/web/run_strategies.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/app/web/schemas/__init__.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/app/web/schemas/order.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/app/web/schemas/portfolio.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/app/web/schemas/position.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/app/web/setup_cors.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/create_app.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/dependency_container.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/__init__.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/config.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/constants.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/data_structures.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/decimal_parsing.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/exceptions.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/graphs.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/metrics/__init__.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/metrics/price_efficiency.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/models/__init__.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/models/app_mode.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/models/backtesting/__init__.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/models/backtesting/backtest_date_range.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/models/backtesting/backtest_position.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/models/backtesting/backtest_report.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/models/backtesting/backtest_reports_evaluation.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/models/base_model.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/models/market/__init__.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/models/market/market_credential.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/models/order/__init__.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/models/order/order.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/models/order/order_side.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/models/order/order_status.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/models/order/order_type.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/models/portfolio/__init__.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/models/portfolio/portfolio.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/models/portfolio/portfolio_configuration.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/models/portfolio/portfolio_snapshot.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/models/position/__init__.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/models/position/position.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/models/position/position_snapshot.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/models/strategy_profile.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/models/time_interval.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/models/time_unit.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/models/tracing/__init__.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/models/tracing/trace.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/models/trade/__init__.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/models/trade/trade.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/models/trade/trade_status.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/models/trading_data_types.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/models/trading_time_frame.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/services/__init__.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/services/market_credential_service.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/services/market_service.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/services/portfolios/__init__.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/services/portfolios/portfolio_sync_service.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/services/rounding_service.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/singleton.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/stateless_actions.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/strategy.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/utils/__init__.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/utils/backtesting.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/utils/csv.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/utils/random.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/utils/signatures.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/utils/stoppable_thread.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/domain/utils/synchronized.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/infrastructure/__init__.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/infrastructure/database/__init__.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/infrastructure/database/sql_alchemy.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/infrastructure/models/__init__.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/infrastructure/models/decimal_parser.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/infrastructure/models/market_data_sources/__init__.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/infrastructure/models/market_data_sources/us_treasury_yield.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/infrastructure/models/model_extension.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/infrastructure/models/order/__init__.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/infrastructure/models/order/order.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/infrastructure/models/portfolio/__init__.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/infrastructure/models/portfolio/portfolio.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/infrastructure/models/portfolio/portfolio_snapshot.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/infrastructure/models/position/__init__.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/infrastructure/models/position/position.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/infrastructure/models/position/position_snapshot.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/infrastructure/repositories/__init__.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/infrastructure/repositories/order_repository.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/infrastructure/repositories/portfolio_repository.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/infrastructure/repositories/portfolio_snapshot_repository.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/infrastructure/repositories/position_repository.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/infrastructure/repositories/position_snapshot_repository.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/infrastructure/repositories/repository.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/infrastructure/services/__init__.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/infrastructure/services/market_service/__init__.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/infrastructure/services/performance_service/__init__.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/infrastructure/services/performance_service/backtest_performance_service.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/infrastructure/services/performance_service/performance_service.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/services/__init__.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/services/backtesting/__init__.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/services/backtesting/backtest_report_writer_service.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/services/backtesting/backtest_service.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/services/backtesting/graphs.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/services/configuration_service.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/services/market_credential_service.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/services/market_data_source_service/__init__.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/services/market_data_source_service/backtest_market_data_source_service.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/services/market_data_source_service/market_data_source_service.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/services/order_service/__init__.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/services/order_service/order_backtest_service.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/services/order_service/order_service.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/services/portfolios/__init__.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/services/portfolios/backtest_portfolio_service.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/services/portfolios/portfolio_configuration_service.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/services/portfolios/portfolio_service.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/services/portfolios/portfolio_snapshot_service.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/services/portfolios/portfolio_sync_service.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/services/position_service.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/services/position_snapshot_service.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/services/repository_service.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/services/strategy_orchestrator_service.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/services/trade_service/__init__.py +0 -0
- {investing_algorithm_framework-3.7.0 → investing_algorithm_framework-3.7.2}/investing_algorithm_framework/services/trade_service/trade_service.py +0 -0
|
@@ -36,6 +36,15 @@ class TimeFrame(Enum):
|
|
|
36
36
|
if value == entry.value.replace("H", "h"):
|
|
37
37
|
return entry
|
|
38
38
|
|
|
39
|
+
# For hour timeframes compare with and without H
|
|
40
|
+
if "d" in entry.value:
|
|
41
|
+
|
|
42
|
+
if value == entry.value:
|
|
43
|
+
return entry
|
|
44
|
+
|
|
45
|
+
if value == entry.value.replace("d", "D"):
|
|
46
|
+
return entry
|
|
47
|
+
|
|
39
48
|
if value == entry.value:
|
|
40
49
|
return entry
|
|
41
50
|
|
|
@@ -243,9 +243,7 @@ class OHLCVMarketDataSource(MarketDataSource, ABC):
|
|
|
243
243
|
symbol=symbol,
|
|
244
244
|
)
|
|
245
245
|
self._window_size = window_size
|
|
246
|
-
|
|
247
|
-
if timeframe is not None:
|
|
248
|
-
self._timeframe = TimeFrame.from_value(timeframe)
|
|
246
|
+
self._timeframe = timeframe
|
|
249
247
|
|
|
250
248
|
@property
|
|
251
249
|
def timeframe(self):
|
|
@@ -266,6 +264,16 @@ class OHLCVMarketDataSource(MarketDataSource, ABC):
|
|
|
266
264
|
def window_size(self):
|
|
267
265
|
return self._window_size
|
|
268
266
|
|
|
267
|
+
@window_size.setter
|
|
268
|
+
def window_size(self, value):
|
|
269
|
+
|
|
270
|
+
if not isinstance(value, int):
|
|
271
|
+
raise OperationalException(
|
|
272
|
+
"Window size must be an integer"
|
|
273
|
+
)
|
|
274
|
+
|
|
275
|
+
self._window_size = value
|
|
276
|
+
|
|
269
277
|
def get_date_ranges(
|
|
270
278
|
self,
|
|
271
279
|
start_date: datetime,
|
|
@@ -119,7 +119,7 @@ class CCXTOHLCVBacktestMarketDataSource(
|
|
|
119
119
|
market_service.config = config
|
|
120
120
|
ohlcv = market_service.get_ohlcv(
|
|
121
121
|
symbol=self.symbol,
|
|
122
|
-
time_frame=self.timeframe
|
|
122
|
+
time_frame=self.timeframe,
|
|
123
123
|
from_timestamp=backtest_data_start_date,
|
|
124
124
|
to_timestamp=backtest_end_date,
|
|
125
125
|
market=self.market
|
|
@@ -142,7 +142,7 @@ class CCXTOHLCVBacktestMarketDataSource(
|
|
|
142
142
|
OHLCV_{symbol}_{market}_{timeframe}_{start_date}_{end_date}.csv
|
|
143
143
|
"""
|
|
144
144
|
symbol_string = self.symbol.replace("/", "-")
|
|
145
|
-
time_frame_string = self.timeframe.
|
|
145
|
+
time_frame_string = self.timeframe.replace("_", "")
|
|
146
146
|
backtest_data_start_date = \
|
|
147
147
|
self.backtest_data_start_date.strftime(DATETIME_FORMAT_BACKTESTING)
|
|
148
148
|
backtest_data_end_date = \
|
|
@@ -438,6 +438,9 @@ class CCXTOHLCVMarketDataSource(OHLCVMarketDataSource):
|
|
|
438
438
|
if self.config is not None:
|
|
439
439
|
market_service.config = self.config
|
|
440
440
|
|
|
441
|
+
if "window_size" in kwargs:
|
|
442
|
+
self.window_size = kwargs["window_size"]
|
|
443
|
+
|
|
441
444
|
if "start_date" in kwargs:
|
|
442
445
|
start_date = kwargs["start_date"]
|
|
443
446
|
|
|
@@ -451,6 +454,14 @@ class CCXTOHLCVMarketDataSource(OHLCVMarketDataSource):
|
|
|
451
454
|
)
|
|
452
455
|
|
|
453
456
|
if "end_date" not in kwargs:
|
|
457
|
+
|
|
458
|
+
if self.window_size is None:
|
|
459
|
+
raise OperationalException(
|
|
460
|
+
"Either end_date or window_size "
|
|
461
|
+
"should be passed as a "
|
|
462
|
+
"parameter for CCXTOHLCVMarketDataSource"
|
|
463
|
+
)
|
|
464
|
+
|
|
454
465
|
end_date = self.create_end_date(
|
|
455
466
|
start_date, self.timeframe, self.window_size
|
|
456
467
|
)
|
|
@@ -88,6 +88,9 @@ class CSVOHLCVMarketDataSource(OHLCVMarketDataSource):
|
|
|
88
88
|
end_date = kwargs.get("end_date")
|
|
89
89
|
backtest_index_date = kwargs.get("backtest_index_date")
|
|
90
90
|
|
|
91
|
+
if "window_size" in kwargs:
|
|
92
|
+
self.window_size = kwargs["window_size"]
|
|
93
|
+
|
|
91
94
|
if start_date is None \
|
|
92
95
|
and end_date is None \
|
|
93
96
|
and backtest_index_date is None:
|
|
@@ -97,11 +100,27 @@ class CSVOHLCVMarketDataSource(OHLCVMarketDataSource):
|
|
|
97
100
|
|
|
98
101
|
if backtest_index_date is not None:
|
|
99
102
|
end_date = backtest_index_date
|
|
103
|
+
|
|
104
|
+
if self.window_size is None:
|
|
105
|
+
raise OperationalException(
|
|
106
|
+
"Either end_date or window_size "
|
|
107
|
+
"should be passed as a "
|
|
108
|
+
"parameter for CCXTOHLCVMarketDataSource"
|
|
109
|
+
)
|
|
110
|
+
|
|
100
111
|
start_date = self.create_start_date(
|
|
101
112
|
end_date, self.timeframe, self.window_size
|
|
102
113
|
)
|
|
103
114
|
else:
|
|
104
115
|
if start_date is None:
|
|
116
|
+
|
|
117
|
+
if self.window_size is None:
|
|
118
|
+
raise OperationalException(
|
|
119
|
+
"Either end_date or window_size "
|
|
120
|
+
"should be passed as a "
|
|
121
|
+
"parameter for CCXTOHLCVMarketDataSource"
|
|
122
|
+
)
|
|
123
|
+
|
|
105
124
|
start_date = self.create_start_date(
|
|
106
125
|
end_date, self.timeframe, self.window_size
|
|
107
126
|
)
|
|
@@ -111,20 +130,6 @@ class CSVOHLCVMarketDataSource(OHLCVMarketDataSource):
|
|
|
111
130
|
start_date, self.timeframe, self.window_size
|
|
112
131
|
)
|
|
113
132
|
|
|
114
|
-
# # Check if start or end date are out of range with
|
|
115
|
-
# # the dates of the datasource.
|
|
116
|
-
# if self._start_date_data_source > start_date:
|
|
117
|
-
# raise OperationalException(
|
|
118
|
-
# f"Given start date {start_date} is before the start date "
|
|
119
|
-
# f"of the data source {self._start_date_data_source}"
|
|
120
|
-
# )
|
|
121
|
-
#
|
|
122
|
-
# if self._end_date_data_source < end_date:
|
|
123
|
-
# raise OperationalException(
|
|
124
|
-
# f"End date {end_date} is after the end date "
|
|
125
|
-
# f"of the data source {self._end_date_data_source}"
|
|
126
|
-
# )
|
|
127
|
-
|
|
128
133
|
df = polars.read_csv(
|
|
129
134
|
self.csv_file_path, columns=self._columns, separator=","
|
|
130
135
|
)
|
|
@@ -8,7 +8,7 @@ import polars as pl
|
|
|
8
8
|
from dateutil import parser
|
|
9
9
|
|
|
10
10
|
from investing_algorithm_framework.domain import OperationalException, Order, \
|
|
11
|
-
MarketService, DATETIME_FORMAT
|
|
11
|
+
MarketService, DATETIME_FORMAT
|
|
12
12
|
|
|
13
13
|
logger = logging.getLogger(__name__)
|
|
14
14
|
|
|
@@ -356,7 +356,6 @@ class CCXTMarketService(MarketService):
|
|
|
356
356
|
def get_ohlcv(
|
|
357
357
|
self, symbol, time_frame, from_timestamp, market, to_timestamp=None
|
|
358
358
|
) -> pl.DataFrame:
|
|
359
|
-
time_frame = TimeFrame.from_value(time_frame).value
|
|
360
359
|
|
|
361
360
|
if self.config is not None and "DATETIME_FORMAT" in self.config:
|
|
362
361
|
datetime_format = self.config["DATETIME_FORMAT"]
|
|
@@ -414,6 +413,10 @@ class CCXTMarketService(MarketService):
|
|
|
414
413
|
# Combine the Series into a DataFrame with given column names
|
|
415
414
|
df = pl.DataFrame(data)
|
|
416
415
|
|
|
416
|
+
# Check if width is 0
|
|
417
|
+
if len(df) == 0:
|
|
418
|
+
return df
|
|
419
|
+
|
|
417
420
|
# Assign column names after DataFrame creation
|
|
418
421
|
df.columns = col_names
|
|
419
422
|
return df
|
|
@@ -427,7 +430,6 @@ class CCXTMarketService(MarketService):
|
|
|
427
430
|
to_timestamp=None
|
|
428
431
|
) -> Dict[str, pl.DataFrame]:
|
|
429
432
|
ohlcvs = {}
|
|
430
|
-
time_frame = TimeFrame.from_value(time_frame).value
|
|
431
433
|
|
|
432
434
|
for symbol in symbols:
|
|
433
435
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|