第一版策略
This commit is contained in:
@@ -18,20 +18,25 @@ PERIOD_MAP = {
|
||||
}
|
||||
|
||||
|
||||
def load_klines(period: str, start_date: str, end_date: str) -> pd.DataFrame:
|
||||
def load_klines(period: str, start_date: str, end_date: str, tz: str | None = None) -> pd.DataFrame:
|
||||
"""
|
||||
加载指定周期、指定日期范围的K线数据
|
||||
:param period: '1m','3m','5m','15m','30m','1h'
|
||||
:param start_date: 'YYYY-MM-DD'
|
||||
:param end_date: 'YYYY-MM-DD' (不包含该日)
|
||||
:param tz: 日期解释的时区,如 'Asia/Shanghai' 表示按北京时间;None 则用本地时区
|
||||
:return: DataFrame with columns: datetime, open, high, low, close
|
||||
"""
|
||||
table = PERIOD_MAP.get(period)
|
||||
if not table:
|
||||
raise ValueError(f"不支持的周期: {period}, 可选: {list(PERIOD_MAP.keys())}")
|
||||
|
||||
start_ts = int(pd.Timestamp(start_date).timestamp() * 1000)
|
||||
end_ts = int(pd.Timestamp(end_date).timestamp() * 1000)
|
||||
if tz:
|
||||
start_ts = int(pd.Timestamp(start_date, tz=tz).timestamp() * 1000)
|
||||
end_ts = int(pd.Timestamp(end_date, tz=tz).timestamp() * 1000)
|
||||
else:
|
||||
start_ts = int(pd.Timestamp(start_date).timestamp() * 1000)
|
||||
end_ts = int(pd.Timestamp(end_date).timestamp() * 1000)
|
||||
|
||||
db = SqliteDatabase(str(DB_PATH))
|
||||
db.connect()
|
||||
|
||||
Reference in New Issue
Block a user