mirror of
https://github.com/shy3130/tick-stock-panel.git
synced 2026-11-02 10:26:13 +00:00
refactor(core): 策略与信号全面去内置化, 转为用户自定义定义
- 策略: 引擎只加载 data/strategies/{custom,ai,composite} 与研究模板目录,
原 25 个内置策略一次性迁移为用户自定义文件(ID 不变, 引用零迁移);
研究模板移至 app/strategy/research, 打包 spec 同步; 新装环境策略库为空
- 信号: 管线不再硬编码任何信号表达式; 涨跌停判定价成为运行时列
limit_up_price/limit_down_price(生效价∓0.005 容差), 20 个信号转为
data/user_data/custom_signals 定义(显式 column 沿用 signal_* 原列名);
依赖解析/注入顺序/当日路径 prev-join 全部定义驱动; 语义统一为历史路径
口径(顺带修正当日路径 BOLL 比较符与翘板/炸板空值两处既有偏差)
- 前端: 信号库单列表(全部可编辑), SignalPicker/监控选项/信号标签全走
定义接口; 回测页新增免责声明(模拟性质/数据源准确性不作保证/不构成
投资建议)
- 测试: 25 个策略夹具与 20 个信号种子入库 tests/fixtures, 受影响测试
全部自包含化(不依赖运行目录用户数据); 77 万行 MA 死叉新旧表达式对拍
逐行一致; 回测实跑 45 笔卖点信号出场验证矩阵链路
- 同批包含工作区既有进度: 策略结果 ext 列同日投影修复(含测试)、数据源插件、fuyao/auth/api_gateway/data_integrity 调整、README 信号库
描述与 strategy.md 导入路径补充
验证: 后端 2592 passed(空数据目录 CI 模拟 2588 passed, 4 例为模拟环境
伪影复验排除); 前端 vitest 125 passed + tsc 0 错 + vite build 通过
This commit is contained in:
+2
-2
@@ -180,7 +180,7 @@ begin
|
||||
end;
|
||||
|
||||
// ── 卸载时询问是否删除用户数据 ─────────────────────────────────
|
||||
// 用户数据在 {app}\data\ (策略/选股/回测/监控/行情), 与程序同处 {app} 总目录。
|
||||
// 用户数据在 {app}\data\ (策略/回测/监控/行情), 与程序同处 {app} 总目录。
|
||||
// Inno Setup 卸载默认只删它装过的程序文件, data\ 会被保留 (覆盖安装/常规卸载都不丢)。
|
||||
// 这里仅在用户明确「彻底卸载」时, 才询问是否清理 data\ + {app} 空壳。
|
||||
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
|
||||
@@ -196,7 +196,7 @@ begin
|
||||
if SuppressibleMsgBox(
|
||||
'是否同时删除用户数据?' + #13#10 + #13#10 +
|
||||
'位置: ' + DataDir + #13#10 +
|
||||
'内容: 行情数据、策略、选股结果、回测记录、监控规则等' + #13#10 + #13#10 +
|
||||
'内容: 行情数据、策略、策略结果、回测记录、监控规则等' + #13#10 + #13#10 +
|
||||
'选「是」彻底卸载, 选「否」保留数据(重装后可恢复)。',
|
||||
mbConfirmation, MB_YESNO or MB_DEFBUTTON2, IDNO) = IDYES then
|
||||
begin
|
||||
|
||||
+6
-3
@@ -31,7 +31,7 @@ block_cipher = None
|
||||
ROOT = Path(SPECPATH).parent
|
||||
FRONTEND_DIST = str(ROOT / "frontend" / "dist")
|
||||
TIERS_YAML = str(ROOT / "tiers.yaml")
|
||||
BUILTIN_STRATEGIES = str(ROOT / "backend" / "app" / "strategy" / "builtin")
|
||||
RESEARCH_TEMPLATE = str(ROOT / "backend" / "app" / "strategy" / "research")
|
||||
# 图标按平台选: Windows 用 brand/icon.ico, macOS 用 brand/icon.icns —
|
||||
# 两者均由 brand/png/logo-tile-light-512.png 派生 (浅色圆角卡版, 品牌资产唯一来源,
|
||||
# 见 brand/README 接入指引), 无需 CI 现场生成。
|
||||
@@ -70,10 +70,13 @@ hiddenimports += collect_submodules("polars")
|
||||
# 注: 出于合规暂不进桌面包 (与 GHCR 镜像口径一致), 需要时仿照添加。
|
||||
datas += [
|
||||
(str(ROOT / "backend" / "app" / "plugins" / "fuyao" / "plugin.yaml"), "app/plugins/fuyao"),
|
||||
(str(ROOT / "backend" / "app" / "" / "plugin.yaml"), ""),
|
||||
]
|
||||
hiddenimports += [
|
||||
"app.plugins.fuyao.provider",
|
||||
"app.plugins.fuyao.client",
|
||||
"app..provider",
|
||||
"app..client",
|
||||
]
|
||||
|
||||
# ── 后端源码扩展 (app/custom/*) ──────────────────────────────────────
|
||||
@@ -146,8 +149,8 @@ datas += [(TIERS_YAML, ".")]
|
||||
# frontend/package.json → 包根 (app/__init__.py frozen 模式读 _MEIPASS/package.json,
|
||||
# __version__ 与安装包 AppVersion / 页面显示同源, 版本号只改 package.json 一处)
|
||||
datas += [(str(ROOT / "frontend" / "package.json"), ".")]
|
||||
# 内置策略 → app/strategy/builtin/ (importlib 动态加载, 不能进 PYZ)
|
||||
datas += [(BUILTIN_STRATEGIES, "app/strategy/builtin")]
|
||||
# 研究模板 → app/strategy/research/ (importlib 动态加载, 不能进 PYZ; 挖掘功能依赖)
|
||||
datas += [(RESEARCH_TEMPLATE, "app/strategy/research")]
|
||||
|
||||
# ── 排除不需要的重型依赖 (主包不含 vectorbt 回测链) ──────────────────
|
||||
excludes = [
|
||||
|
||||
Reference in New Issue
Block a user