auto-sync: 2026-05-02 21:32:40

This commit is contained in:
cfdaily
2026-05-02 21:32:40 +08:00
parent 6ba8540f41
commit 57615ef5cd
+4 -3
View File
@@ -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"),