| from pydantic import BaseModel, Field | |
| from typing import List, Dict, Any, Optional | |
| from enum import Enum | |
| class TimeFrame(str, Enum): | |
| MINUTE_1 = '1m' | |
| MINUTE_5 = '5m' | |
| MINUTE_15 = '15m' | |
| MINUTE_30 = '30m' | |
| HOUR_1 = '1h' | |
| HOUR_4 = '4h' | |
| DAY_1 = '1d' | |
| WEEK_1 = '1w' | |
| MONTH_1 = '1M' | |
| class CryptoPair(BaseModel): | |
| symbol: str | |
| base: str | |
| quote: str | |
| type: str = "spot" | |
| class ExchangeInfo(BaseModel): | |
| id: str | |
| name: str | |
| has_fetchOHLCV: bool = False | |
| timeframes: List[str] = [] | |
| class OHLCVData(BaseModel): | |
| timestamp: int | |
| datetime: str | |
| open: float | |
| high: float | |
| low: float | |
| close: float | |
| volume: float | |
| class IndicatorValues(BaseModel): | |
| timestamp: int | |
| datetime: str | |
| rsi: Optional[float] = None | |
| macd: Optional[float] = None | |
| macd_signal: Optional[float] = None | |
| macd_histogram: Optional[float] = None | |
| ema_9: Optional[float] = None | |
| ema_21: Optional[float] = None | |
| ema_50: Optional[float] = None | |
| ema_200: Optional[float] = None | |
| bb_upper: Optional[float] = None | |
| bb_middle: Optional[float] = None | |
| bb_lower: Optional[float] = None | |
| open: Optional[float] = None | |
| high: Optional[float] = None | |
| low: Optional[float] = None | |
| close: Optional[float] = None | |
| volume: Optional[float] = None | |