Remove OKX configuration file and enhance data collector with timeframes support
- Deleted the `okx_config.json` file as part of the configuration refactor. - Updated `BaseDataCollector` to include an optional `timeframes` parameter for more flexible data collection. - Modified `DataCollectionService` and `OKXCollector` to pass and utilize the new `timeframes` parameter. - Enhanced `ExchangeCollectorConfig` to validate timeframes, ensuring they are provided and correctly formatted. - Updated documentation to reflect the new configurable timeframes feature, improving clarity for users. These changes streamline the configuration process and improve the flexibility of data collection, aligning with project standards for maintainability and usability.
This commit is contained in:
@@ -15,7 +15,9 @@ from ...base_collector import (
|
||||
BaseDataCollector, DataType, CollectorStatus, MarketDataPoint,
|
||||
OHLCVData, DataValidationError, ConnectionError
|
||||
)
|
||||
from ...common import StandardizedTrade, OHLCVCandle
|
||||
from ...common import (
|
||||
StandardizedTrade, OHLCVCandle, CandleProcessingConfig
|
||||
)
|
||||
from .websocket import (
|
||||
OKXWebSocketClient, OKXSubscription, OKXChannelType,
|
||||
ConnectionState, OKXWebSocketError
|
||||
@@ -53,6 +55,8 @@ class OKXCollector(BaseDataCollector):
|
||||
health_check_interval: float = 30.0,
|
||||
store_raw_data: bool = True,
|
||||
force_update_candles: bool = False,
|
||||
timeframes: Optional[List[str]] = None,
|
||||
candle_config: Optional[CandleProcessingConfig] = None,
|
||||
logger = None,
|
||||
log_errors_only: bool = False):
|
||||
"""
|
||||
@@ -66,6 +70,8 @@ class OKXCollector(BaseDataCollector):
|
||||
health_check_interval: Seconds between health checks
|
||||
store_raw_data: Whether to store raw data for debugging
|
||||
force_update_candles: If True, update existing candles; if False, keep existing candles unchanged
|
||||
timeframes: List of timeframes to collect (e.g., ['1s', '5s', '1m'])
|
||||
candle_config: Optional CandleProcessingConfig instance (will create one if not provided)
|
||||
logger: Logger instance for conditional logging (None for no logging)
|
||||
log_errors_only: If True and logger provided, only log error-level messages
|
||||
"""
|
||||
@@ -82,6 +88,7 @@ class OKXCollector(BaseDataCollector):
|
||||
exchange_name="okx",
|
||||
symbols=[symbol],
|
||||
data_types=data_types,
|
||||
timeframes=timeframes, # Pass timeframes to base collector
|
||||
component_name=component_name,
|
||||
auto_restart=auto_restart,
|
||||
health_check_interval=health_check_interval,
|
||||
@@ -98,7 +105,12 @@ class OKXCollector(BaseDataCollector):
|
||||
self._ws_client: Optional[OKXWebSocketClient] = None
|
||||
|
||||
# Data processor using new common framework
|
||||
self._data_processor = OKXDataProcessor(symbol, component_name=f"{component_name}_processor", logger=logger)
|
||||
self._data_processor = OKXDataProcessor(
|
||||
symbol,
|
||||
config=candle_config or CandleProcessingConfig(timeframes=self.timeframes), # Use provided config or create new one
|
||||
component_name=f"{component_name}_processor",
|
||||
logger=logger
|
||||
)
|
||||
|
||||
# Add callbacks for processed data
|
||||
self._data_processor.add_trade_callback(self._on_trade_processed)
|
||||
@@ -122,6 +134,7 @@ class OKXCollector(BaseDataCollector):
|
||||
|
||||
if logger:
|
||||
logger.info(f"{component_name}: Initialized OKX collector for {symbol} with data types: {[dt.value for dt in data_types]}")
|
||||
logger.info(f"{component_name}: Using timeframes: {self.timeframes}")
|
||||
logger.info(f"{component_name}: Using common data processing framework")
|
||||
|
||||
async def connect(self) -> bool:
|
||||
@@ -511,6 +524,7 @@ class OKXCollector(BaseDataCollector):
|
||||
"websocket_state": self._ws_client.connection_state.value if self._ws_client else "disconnected",
|
||||
"store_raw_data": self.store_raw_data,
|
||||
"force_update_candles": self.force_update_candles,
|
||||
"timeframes": self.timeframes,
|
||||
"processing_stats": {
|
||||
"messages_received": self._message_count,
|
||||
"trades_processed": self._processed_trades,
|
||||
|
||||
Reference in New Issue
Block a user