Refactor technical indicators to return DataFrames and enhance documentation
- Updated all technical indicators to return pandas DataFrames instead of lists, improving consistency and usability. - Modified the `calculate` method in `TechnicalIndicators` to directly return DataFrames with relevant indicator values. - Enhanced the `data_integration.py` to utilize the new DataFrame outputs for better integration with charting. - Updated documentation to reflect the new DataFrame-centric approach, including usage examples and output structures. - Improved error handling to ensure empty DataFrames are returned when insufficient data is available. These changes streamline the indicator calculations and improve the overall architecture, aligning with project standards for maintainability and performance.
This commit is contained in:
@@ -11,6 +11,7 @@ from datetime import datetime, timezone
|
||||
from decimal import Decimal
|
||||
import json
|
||||
from enum import Enum
|
||||
import pandas as pd
|
||||
|
||||
from data.common.indicators import TechnicalIndicators, IndicatorResult, create_default_indicators_config, validate_indicator_config
|
||||
from data.common.data_types import OHLCVCandle
|
||||
@@ -475,7 +476,7 @@ def convert_database_candles_to_ohlcv(candles: List[Dict[str, Any]]) -> List[OHL
|
||||
|
||||
def calculate_indicators(candles: List[Dict[str, Any]],
|
||||
indicator_configs: List[str],
|
||||
custom_configs: Optional[Dict[str, ChartIndicatorConfig]] = None) -> Dict[str, List[IndicatorResult]]:
|
||||
custom_configs: Optional[Dict[str, ChartIndicatorConfig]] = None) -> Dict[str, pd.DataFrame]:
|
||||
"""
|
||||
Calculate technical indicators for chart display.
|
||||
|
||||
@@ -485,7 +486,7 @@ def calculate_indicators(candles: List[Dict[str, Any]],
|
||||
custom_configs: Optional custom indicator configurations
|
||||
|
||||
Returns:
|
||||
Dictionary mapping indicator names to their calculation results
|
||||
Dictionary mapping indicator names to their calculation results as DataFrames
|
||||
"""
|
||||
if not candles:
|
||||
logger.warning("Indicator Definitions: No candles provided for indicator calculation")
|
||||
@@ -520,6 +521,7 @@ def calculate_indicators(candles: List[Dict[str, Any]],
|
||||
# Calculate indicators
|
||||
try:
|
||||
results = indicators_calc.calculate_multiple_indicators(ohlcv_candles, configs_to_calculate)
|
||||
# results is now a dict of DataFrames
|
||||
logger.debug(f"Indicator Definitions: Calculated {len(results)} indicators successfully")
|
||||
return results
|
||||
|
||||
|
||||
Reference in New Issue
Block a user