Spaces:
Sleeping
Sleeping
from datetime import datetime | |
from typing import List, Dict, Any | |
from pydantic import BaseModel, Field | |
class KlineData(BaseModel): | |
timestamp: int = Field(..., description="Timestamp in milliseconds") | |
open: float | |
high: float | |
low: float | |
close: float | |
volume: float | |
def datetime(self) -> datetime: | |
return datetime.fromtimestamp(self.timestamp / 1000) | |
def from_kucoin_data(cls, data: List[Any]) -> "KlineData": | |
return cls( | |
timestamp=int(data[0]), | |
open=float(data[1]), | |
high=float(data[2]), | |
low=float(data[3]), | |
close=float(data[4]), | |
volume=float(data[5]), | |
) | |
class MarketData(BaseModel): | |
symbol: str | |
granularity: int | |
klines: List[KlineData] | |
def from_kucoin_response( | |
cls, response_data: Dict[str, Any], symbol: str, granularity: int | |
): | |
klines = [KlineData.from_kucoin_data(k) for k in response_data.get("data", [])] | |
return cls(symbol=symbol, granularity=granularity, klines=klines) | |
class SymbolInfo(BaseModel): | |
symbol: str | |
name: str | |
baseCurrency: str | |
quoteCurrency: str | |
maxLeverage: int | |
def from_kucoin_data(cls, data: Dict[str, Any]) -> "SymbolInfo": | |
return cls( | |
symbol=data.get("symbol", ""), | |
name=data.get("name", ""), | |
baseCurrency=data.get("baseCurrency", ""), | |
quoteCurrency=data.get("quoteCurrency", ""), | |
maxLeverage=int(data.get("maxLeverage", 0)), | |
) | |