Files
QuantumTerminal/backend/data_manager/fetchers/base_fetcher.py
T

55 lines
1.3 KiB
Python

"""
BaseFetcher — abstract interface for data source adapters.
Every fetcher (MT5, DXFeed, futures bridge, CSV import) implements this.
"""
from abc import ABC, abstractmethod
from datetime import datetime
from typing import Optional
import pandas as pd
class BaseFetcher(ABC):
"""
Abstract data fetcher interface.
Implementations must return DataFrames with:
- DatetimeIndex named 'time' (UTC)
- Lowercase column names: open, high, low, close, tick_volume, spread, real_volume
"""
name: str = "base" # Override in subclass
@abstractmethod
def fetch_bars(
self,
symbol: str,
timeframe: str,
date_from: datetime,
date_to: datetime,
) -> Optional[pd.DataFrame]:
"""
Fetch OHLCV bars for the given symbol/timeframe/date range.
Returns None on failure.
"""
...
@abstractmethod
def fetch_bars_n(
self,
symbol: str,
timeframe: str,
n_bars: int,
) -> Optional[pd.DataFrame]:
"""
Fetch the most recent N bars.
Returns None on failure.
"""
...
@abstractmethod
def is_available(self) -> bool:
"""Check if this data source is currently reachable."""
...