auto-sync: 2026-05-02 21:32:40
This commit is contained in:
@@ -98,7 +98,7 @@ def try_mkline(symbol: str, count: int = 800) -> Optional[pd.DataFrame]:
|
||||
"low": float(parts[3]),
|
||||
"close": float(parts[4]),
|
||||
"volume": str(int(float(parts[5]))),
|
||||
"amount": str(0.0), # mkline不返回amount
|
||||
"amount": str(round(float(parts[4]) * int(float(parts[5])), 2)), # close*volume估算
|
||||
})
|
||||
|
||||
if not rows:
|
||||
@@ -147,14 +147,15 @@ def try_minute_query_aggregate(symbol: str, date: str) -> Optional[pd.DataFrame]
|
||||
return _aggregate_1m_to_15m(df)
|
||||
except Exception as e:
|
||||
logger.debug("minute_query failed for %s: %s", symbol, e)
|
||||
None
|
||||
return None
|
||||
|
||||
|
||||
def _aggregate_1m_to_15m(df: pd.DataFrame) -> pd.DataFrame:
|
||||
"""将1分钟线聚合为15分钟线"""
|
||||
df["time"] = pd.to_datetime(df["time"])
|
||||
# 15分钟分组:按时间段切分(9:30-9:45, 9:45-10:00, ...)
|
||||
df["group"] = df["time"].dt.floor("15min")
|
||||
# end-of-bar对齐:已有84只数据用K线结束时间(09:45, 10:00...)
|
||||
df["group"] = df["time"].dt.floor("15min") + pd.Timedelta(minutes=15)
|
||||
|
||||
agg = df.groupby("group").agg(
|
||||
open=("price", "first"),
|
||||
|
||||
Reference in New Issue
Block a user