Initial commit: Quantum Terminal — Free & Open Source Trading Platform
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
"""
|
||||
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."""
|
||||
...
|
||||
Reference in New Issue
Block a user