
jackyu66gitandCursor
0b4d7693b8
缠论引擎提速 2.6x,瓶颈是逐行 Series 查找而非指标计算
原以为浪费在 add_indicators 算了太多用不到的指标,实测它只占全量构建的
1.3%——talib 是向量化 C 代码,便宜。真正的两处:
cal_kl_data 占 96%:每根 K 线 df.iloc[i] 新建一个 40 列 Series,再在其上做
几十次逐键查找。改为预取 ndarray 后 2 万根 1946ms → 824ms。
ChanKLC.cal_all_ema_status 占 25%:每次合并 KLU 都立即重算,而它产出的
ema_status / ema52_pos / ema52_status 全仓无任何读取方(含前端)。改为惰性
求值,保留属性形式以防将来有人读。顺带删掉 get_klc_list 里累加一整轮后直接
丢弃的 ema_up_list / ema_down_list。
另加 TF_DF(lean=True):只构建到中枢,跳过线段/走势中枢/MACD 状态机——这些
只服务 bsp_list 与 web 展示,笔和中枢不依赖。研究与实盘走这条快 3.6x。
结果 2 万根 5m:full 1946 → 754ms,lean → 543ms。
step46_engine_parity.py 是配套的安全网,改引擎前先跑一次 --save。它对 KLC
端点与分型、笔起止价与 is_sure、中枢 zg/zd/available_ts/阶梯、信号全部输出列,
以及 26 个被下游消费的 dataframe 列取哈希。本次三处改动逐步验证,另用
git stash 切回改动前代码在 20 万根 × 5 用例上做了跨版本逐位对拍,全部一致;
增量路径与 web API 也各验一遍。
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-28 04:04:44 +08:00
..
2026-08-27 01:05:12 +08:00
2026-08-28 03:23:07 +08:00
2026-08-28 03:52:23 +08:00
2026-08-28 04:04:44 +08:00
2026-08-27 17:47:41 +08:00
2026-08-28 00:45:32 +08:00
2026-08-27 01:05:12 +08:00
2026-08-27 01:05:12 +08:00
2026-08-27 01:05:12 +08:00
2026-08-27 01:05:12 +08:00
2026-08-27 01:05:12 +08:00
2026-08-27 01:05:12 +08:00
2026-08-27 01:05:12 +08:00
2026-08-27 01:05:12 +08:00
2026-08-27 01:05:12 +08:00
2026-08-27 01:05:12 +08:00
2026-08-27 01:05:12 +08:00
2026-08-27 01:05:12 +08:00
2026-08-27 01:05:12 +08:00
2026-08-27 01:05:12 +08:00
2026-08-27 01:05:12 +08:00
2026-08-27 01:05:12 +08:00
2026-08-27 01:05:12 +08:00
2026-08-27 01:05:12 +08:00
2026-08-27 01:05:12 +08:00
2026-08-27 01:05:12 +08:00
2026-08-27 01:05:12 +08:00
2026-08-27 01:05:12 +08:00
2026-08-27 01:05:12 +08:00
2026-08-27 01:05:12 +08:00
2026-08-27 01:05:12 +08:00
2026-08-27 01:05:12 +08:00
2026-08-27 01:05:12 +08:00
2026-08-27 01:05:12 +08:00
2026-08-27 01:05:12 +08:00
2026-08-27 01:05:12 +08:00
2026-08-27 01:05:12 +08:00
2026-08-27 01:05:12 +08:00
2026-08-27 17:47:41 +08:00
2026-08-27 17:47:41 +08:00
2026-08-27 17:47:41 +08:00
2026-08-27 17:47:41 +08:00
2026-08-27 17:47:41 +08:00
2026-08-27 17:47:41 +08:00
2026-08-27 17:47:41 +08:00
2026-08-27 17:47:41 +08:00
2026-08-27 17:47:41 +08:00
2026-08-28 00:05:56 +08:00
2026-08-28 00:05:56 +08:00
2026-08-28 00:05:56 +08:00
2026-08-28 03:23:07 +08:00
2026-08-28 04:04:44 +08:00