mirror of
https://ghfast.top/https://github.com/aeroxw/tick-stock-panel.git
synced 2026-09-12 17:54:15 +08:00
fix(walkforward): 前端对齐优化器已有防护 (切策略停任务 + 坏网格拦截)
对抗式审查发现 WF 页面偏离了 StrategyOptimizer 已修好的两处防护: - 切策略时直接传 clearWalkForward (只清前端状态), 不停后端任务 —— 对齐优化器 改为 if(pending) stopWalkForward() else clearWalkForward(), 真正 cancel+关SSE+清storage。 - canRun 缺 !sweep.gridError, 且 CombosHint 未传 gridError prop —— 坏网格(步长越界等) 既不显示错误也能提交到后端。补齐, 与优化器一致。
This commit is contained in:
@@ -67,7 +67,11 @@ export function StrategyWalkForward() {
|
||||
const { data: stratData } = useQuery({ queryKey: ['strategies'], queryFn: api.strategyList })
|
||||
const strategies: StrategyDetail[] = stratData?.strategies ?? []
|
||||
|
||||
const sweep = useParamSweep(strategies, clearWalkForward)
|
||||
// 切策略: 有任务在跑时先真正取消 (关 SSE + 后端 cancel + 清 localStorage), 不能静默丢
|
||||
const sweep = useParamSweep(strategies, () => {
|
||||
if (task?.isPending) stopWalkForward()
|
||||
else clearWalkForward()
|
||||
})
|
||||
const [objective, setObjective] = useState('sortino')
|
||||
const [start, setStart] = useState(THREE_YEARS_AGO)
|
||||
const [end, setEnd] = useState(TODAY)
|
||||
@@ -82,6 +86,7 @@ export function StrategyWalkForward() {
|
||||
}, [])
|
||||
|
||||
const canRun = sweep.strategyId && sweep.combos > 0 && sweep.combos <= GRID_MAX_COMBINATIONS
|
||||
&& !sweep.gridError
|
||||
&& Number(trainDays) > 0 && Number(testDays) > 0 && Number(stepDays) > 0 && !task?.isPending
|
||||
|
||||
const onRun = () => {
|
||||
@@ -160,7 +165,7 @@ export function StrategyWalkForward() {
|
||||
</div>
|
||||
|
||||
<SweepParamList params={sweep.params} sweeps={sweep.sweeps} updateSweep={sweep.updateSweep} />
|
||||
<CombosHint show={!!sweep.strategyId} combos={sweep.combos} />
|
||||
<CombosHint show={!!sweep.strategyId} combos={sweep.combos} gridError={sweep.gridError} />
|
||||
<div className="text-[11px] text-secondary">每折跑 {sweep.combos || 0} 组优化 × N 折,耗时较长</div>
|
||||
|
||||
{task?.isPending ? (
|
||||
|
||||
Reference in New Issue
Block a user