- Introduced a dedicated sub-package for technical indicators under `data/common/indicators/`, improving modularity and maintainability. - Moved `TechnicalIndicators` and `IndicatorResult` classes to their respective files, along with utility functions for configuration management. - Updated import paths throughout the codebase to reflect the new structure, ensuring compatibility. - Added comprehensive safety net tests for the indicators module to verify core functionality and prevent regressions during refactoring. - Enhanced documentation to provide clear usage examples and details on the new package structure. These changes improve the overall architecture of the technical indicators module, making it more scalable and easier to manage.
60 lines
1.7 KiB
Python
60 lines
1.7 KiB
Python
"""
|
|
Technical Indicator Utilities
|
|
|
|
This module provides utility functions for managing technical indicator
|
|
configurations and validation.
|
|
"""
|
|
|
|
from typing import Dict, Any
|
|
|
|
|
|
def create_default_indicators_config() -> Dict[str, Dict[str, Any]]:
|
|
"""
|
|
Create default configuration for common technical indicators.
|
|
|
|
Returns:
|
|
Dictionary with default indicator configurations
|
|
"""
|
|
return {
|
|
'sma_20': {'type': 'sma', 'period': 20},
|
|
'sma_50': {'type': 'sma', 'period': 50},
|
|
'ema_12': {'type': 'ema', 'period': 12},
|
|
'ema_26': {'type': 'ema', 'period': 26},
|
|
'rsi_14': {'type': 'rsi', 'period': 14},
|
|
'macd_default': {'type': 'macd'},
|
|
'bollinger_bands_20': {'type': 'bollinger_bands', 'period': 20}
|
|
}
|
|
|
|
|
|
def validate_indicator_config(config: Dict[str, Any]) -> bool:
|
|
"""
|
|
Validate technical indicator configuration.
|
|
|
|
Args:
|
|
config: Indicator configuration dictionary
|
|
|
|
Returns:
|
|
True if configuration is valid, False otherwise
|
|
"""
|
|
required_fields = ['type']
|
|
|
|
# Check required fields
|
|
for field in required_fields:
|
|
if field not in config:
|
|
return False
|
|
|
|
# Validate indicator type
|
|
valid_types = ['sma', 'ema', 'rsi', 'macd', 'bollinger_bands']
|
|
if config['type'] not in valid_types:
|
|
return False
|
|
|
|
# Validate period fields
|
|
if 'period' in config and (not isinstance(config['period'], int) or config['period'] <= 0):
|
|
return False
|
|
|
|
# Validate standard deviation for Bollinger Bands
|
|
if config['type'] == 'bollinger_bands' and 'std_dev' in config:
|
|
if not isinstance(config['std_dev'], (int, float)) or config['std_dev'] <= 0:
|
|
return False
|
|
|
|
return True |