Files
AITrading/python-app/app/data_protocol.py
2026-03-26 14:13:44 +08:00

60 lines
1.6 KiB
Python

from __future__ import annotations
from dataclasses import dataclass
from typing import Any, Dict
@dataclass
class KlineMessage:
type: str
source: str
symbol: str
interval: str
event_time: int
open_time: int
close_time: int
open: str
high: str
low: str
close: str
volume: str
trade_num: int
final: bool
@classmethod
def from_dict(cls, payload: Dict[str, Any]) -> "KlineMessage":
return cls(
type=str(payload["type"]),
source=str(payload["source"]),
symbol=str(payload["symbol"]),
interval=str(payload["interval"]),
event_time=int(payload["event_time"]),
open_time=int(payload["open_time"]),
close_time=int(payload["close_time"]),
open=str(payload["open"]),
high=str(payload["high"]),
low=str(payload["low"]),
close=str(payload["close"]),
volume=str(payload["volume"]),
trade_num=int(payload["trade_num"]),
final=bool(payload["final"]),
)
def to_dict(self) -> Dict[str, Any]:
return {
"type": self.type,
"source": self.source,
"symbol": self.symbol,
"interval": self.interval,
"event_time": self.event_time,
"open_time": self.open_time,
"close_time": self.close_time,
"open": self.open,
"high": self.high,
"low": self.low,
"close": self.close,
"volume": self.volume,
"trade_num": self.trade_num,
"final": self.final,
}