第一版策略

This commit is contained in:
ddrwode
2026-02-26 16:34:30 +08:00
parent 0edf741849
commit cf499863a3
19 changed files with 6067 additions and 21 deletions

View File

@@ -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()