This commit is contained in:
2026-09-29 22:48:41 +08:00
parent a490fdc110
commit 4a27e35ff4
13 changed files with 719 additions and 15 deletions
+6 -2
View File
@@ -135,12 +135,16 @@ def _scan_batch(
if not candle_rows:
return trades
bars = pd.DataFrame(
candle_rows, columns=["symbol", "ts", "open", "high", "low", "close"]
candle_rows, columns=["symbol", "ts", "open", "high", "low", "close", "volume", "turnover"]
)
for symbol, g in bars.groupby("symbol", sort=False):
if len(g) < 30:
continue
g = g.reset_index(drop=True)
# pct_chg / amplitude 是派生列(candles 无现成涨跌幅/振幅):按股内环比补算,
# 与选股引擎 _load_bars 同口径——否则「日涨跌幅/当日振幅」条件进事件回测直接 KeyError
g["pct_chg"] = g["close"].pct_change() * 100
g["amplitude"] = (g["high"] - g["low"]) / g["close"].shift(1) * 100
ts_code_l = code_by_symbol[symbol]
cache: dict = {"_families": set()}
mask = _signal_mask(g, spec, cache)
@@ -243,7 +247,7 @@ async def run_event_backtest(
code_by_symbol = {sym: code for code, sym in batch}
candle_rows = (await session.execute(
select(Candle.symbol, Candle.ts, Candle.open, Candle.high,
Candle.low, Candle.close)
Candle.low, Candle.close, Candle.volume, Candle.turnover)
.where(and_(Candle.timeframe == "1d",
Candle.symbol.in_(symbols),
Candle.ts >= buffer_ts, Candle.ts <= end_ts))