1.kline基类实现
2.source基类实现 3.时间转换工具datetime convert实现 4.使用binance restapi获取数据实现 5.binance获取数据单元测试
This commit is contained in:
68
data_manager/data_structure/kline_base.py
Normal file
68
data_manager/data_structure/kline_base.py
Normal file
@@ -0,0 +1,68 @@
|
||||
# data_manager/data_structure/kline_base.py
|
||||
|
||||
from abc import ABC, abstractmethod
|
||||
import pandas as pd
|
||||
from datetime import datetime
|
||||
|
||||
class KlineBase(ABC):
|
||||
"""
|
||||
K线数据基类,定义所有K线必须具备的核心属性和方法。
|
||||
所有具体的K线类都应继承此基类。
|
||||
"""
|
||||
|
||||
def __init__(self, open_time: int, close_time: int, open_price: float, high_price: float,
|
||||
low_price: float, close_price: float, volume: float):
|
||||
"""
|
||||
初始化K线基础信息。
|
||||
|
||||
Args:
|
||||
open_time: 开盘时间戳 (毫秒)
|
||||
close_time: 收盘时间戳 (毫秒)
|
||||
open_price: 开盘价
|
||||
high_price: 最高价
|
||||
low_price: 最低价
|
||||
close_price: 收盘价
|
||||
volume: 成交量
|
||||
"""
|
||||
self.open_time = open_time
|
||||
self.close_time = close_time
|
||||
self.open_price = open_price
|
||||
self.high_price = high_price
|
||||
self.low_price = low_price
|
||||
self.close_price = close_price
|
||||
self.volume = volume
|
||||
|
||||
@property
|
||||
def open_datetime(self) -> datetime:
|
||||
"""获取开盘时间的datetime对象"""
|
||||
return pd.to_datetime(self.open_time, unit='ms')
|
||||
|
||||
@property
|
||||
def close_datetime(self) -> datetime:
|
||||
"""获取收盘时间的datetime对象"""
|
||||
return pd.to_datetime(self.close_time, unit='ms')
|
||||
|
||||
@abstractmethod
|
||||
def to_dict(self) -> dict:
|
||||
"""
|
||||
将K线数据转换为字典格式。
|
||||
子类必须实现此方法。
|
||||
"""
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def to_pandas_series(self) -> pd.Series:
|
||||
"""
|
||||
将K线数据转换为pandas Series。
|
||||
子类必须实现此方法。
|
||||
"""
|
||||
pass
|
||||
|
||||
def __str__(self):
|
||||
"""字符串表示"""
|
||||
return f"Kline({self.open_datetime.strftime('%Y-%m-%d %H:%M:%S')} - {self.close_datetime.strftime('%Y-%m-%d %H:%M:%S')}, " \
|
||||
f"Open: {self.open_price}, Close: {self.close_price}, High: {self.high_price}, Low: {self.low_price}, Vol: {self.volume})"
|
||||
|
||||
def __repr__(self):
|
||||
"""详细字符串表示"""
|
||||
return self.__str__()
|
||||
Reference in New Issue
Block a user