| 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 |
|
|