计算判定改看「清空全部币」,并挡掉空窗口
判定原先比逐根的 queue_ms 与 inner_ms,结构上错了两处,十币下直接指反: 判据错。要紧的是一个收盘时刻清空所有币要多久,不是单币的 q 或 i。币同一秒 收盘,币数超 worker 数时后面的币串行等待,这笔代价不出现在任何单根的 q 或 i 里。现在按 kline_ts 聚合取各币最大 compute_ms,落到 clear_hist。 出路错。「排队为主 → 加核」只在还有空闲核时成立。worker 已等于核数时加 worker 不增吞吐,只把等待从 queue 挪到 inner。十币实测正是如此:inner 被 争抢从 144 抬到 192ms 反超 queue 135ms,于是判定落到「量级已低、无需优化」 ——而此时最后一个币已在 1376ms。现在币数超核数就直接指向增量路径。 顺带修一个瞬时故障:WS 重连瞬间 feed 的 deque 可能为空,空窗口放行会让 worker 抛「DataFrame for 1m is empty」,白占一个计算槽(币数超核数时会推迟 后面所有币),而报错文本还会让人以为是缺历史数据。加 MIN_BARS 守卫。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -18,8 +18,13 @@ NAME="${NAME:-shadow}"
|
||||
# 设 0 可退回 full,用来复量两模式的耗时差。
|
||||
SHADOW_LEAN="${SHADOW_LEAN:-1}"
|
||||
# 币池。默认三个流动性最好的做滑点测量;十币池是实际要交易的那批(TRX 剔除,
|
||||
# ATR 门控几乎全刷掉)。币数直接决定排队:所有币同一秒收盘,2 核上 10 个币
|
||||
# 需要约 640ms 墙钟才算完,最后一个币的信号会落在 800ms 哨兵线之外。
|
||||
# ATR 门控几乎全刷掉)。
|
||||
#
|
||||
# 币数超过核数时排队会成为主项:所有币同一秒收盘,2 核上十币实测清空要
|
||||
# 约 640ms,最后一个币的信号落在 1376ms。此时**加 worker 没用**——CPU 密集
|
||||
# 的活,worker 超过核数不增吞吐,只会把等待从 queue_ms 挪到 inner_ms。
|
||||
# 唯一出路是压单币耗时,走 init_stream/append_bar 增量路径(实测约 3.7x,
|
||||
# 换算后十币 / 2 核清空约 265ms)。
|
||||
SYMS="${SYMS:-BTC,ETH,SOL}"
|
||||
IMAGE="${SHADOW_IMAGE:-hummingbot/hummingbot:latest}"
|
||||
HOURS="${HOURS:-168}"
|
||||
|
||||
Reference in New Issue
Block a user