feat(portfolio): 参数表单分块(策略与选股/时间与资金/基准与费用); 进行中页加「发起新回测」(治等待页无法新建) [nas]
This commit is contained in:
@@ -270,69 +270,51 @@ function fmtNum(v: number | null | undefined, digits = 2): string {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 表单 -->
|
||||
<!-- 策略与选股 -->
|
||||
<el-card v-if="phase === 'form'" class="blk" shadow="never">
|
||||
<template #header><span class="section-title">回测参数</span></template>
|
||||
<template #header><span class="section-title">策略与选股</span></template>
|
||||
<el-form :model="form" label-width="120px">
|
||||
<el-form-item label="标的池">
|
||||
<el-select v-model="form.pool" style="width: 320px">
|
||||
<el-option
|
||||
v-for="opt in poolOptions"
|
||||
:key="opt.value"
|
||||
:label="opt.label"
|
||||
:value="opt.value"
|
||||
/>
|
||||
<el-option v-for="opt in poolOptions" :key="opt.value" :label="opt.label" :value="opt.value" />
|
||||
</el-select>
|
||||
<span class="muted form-hint">MVP 默认 HS300 子集(20-30 只),快速验证链路</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="策略">
|
||||
<el-select v-model="form.strategy" style="width: 320px">
|
||||
<el-option
|
||||
v-for="opt in strategyOptions"
|
||||
:key="opt.value"
|
||||
:label="opt.label"
|
||||
:value="opt.value"
|
||||
/>
|
||||
<el-option v-for="opt in strategyOptions" :key="opt.value" :label="opt.label" :value="opt.value" />
|
||||
</el-select>
|
||||
<span class="muted form-hint">选择回测策略</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="选股池上限">
|
||||
<el-input-number
|
||||
v-model="form.max_pool"
|
||||
:min="0"
|
||||
:step="10"
|
||||
:controls="false"
|
||||
style="width: 220px"
|
||||
/>
|
||||
<el-input-number v-model="form.max_pool" :min="0" :step="10" :controls="false" style="width: 220px" />
|
||||
<span class="muted form-hint">0=全市场不限, N=前N只(MVP验证用, 默认30)</span>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
|
||||
<!-- 时间与资金 -->
|
||||
<el-card v-if="phase === 'form'" class="blk" shadow="never">
|
||||
<template #header><span class="section-title">时间与资金</span></template>
|
||||
<el-form :model="form" label-width="120px">
|
||||
<el-form-item label="开始日期">
|
||||
<el-date-picker
|
||||
v-model="form.start"
|
||||
type="date"
|
||||
value-format="YYYY-MM-DD"
|
||||
style="width: 220px"
|
||||
/>
|
||||
<el-date-picker v-model="form.start" type="date" value-format="YYYY-MM-DD" style="width: 220px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="结束日期">
|
||||
<el-date-picker
|
||||
v-model="form.end"
|
||||
type="date"
|
||||
value-format="YYYY-MM-DD"
|
||||
style="width: 220px"
|
||||
/>
|
||||
<el-date-picker v-model="form.end" type="date" value-format="YYYY-MM-DD" style="width: 220px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="初始资金">
|
||||
<el-input-number
|
||||
v-model="form.cash"
|
||||
:min="10000"
|
||||
:step="100000"
|
||||
:controls="false"
|
||||
style="width: 220px"
|
||||
/>
|
||||
<el-input-number v-model="form.cash" :min="10000" :step="100000" :controls="false" style="width: 220px" />
|
||||
<span class="muted form-hint">元</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="基准">
|
||||
</el-form>
|
||||
</el-card>
|
||||
|
||||
<!-- 基准与费用 -->
|
||||
<el-card v-if="phase === 'form'" class="blk" shadow="never">
|
||||
<template #header><span class="section-title">基准与费用</span></template>
|
||||
<el-form :model="form" label-width="120px">
|
||||
<el-form-item label="比较基准">
|
||||
<el-select v-model="form.benchmark" style="width: 220px">
|
||||
<el-option v-for="b in BENCHMARK_OPTIONS" :key="b.value" :label="b.label" :value="b.value" />
|
||||
</el-select>
|
||||
@@ -354,12 +336,14 @@ function fmtNum(v: number | null | undefined, digits = 2): string {
|
||||
<span class="muted form-hint">0.001=万10,0=不加</span>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div class="submit-bar">
|
||||
<el-button type="primary" size="large" @click="onSubmit">开始回测</el-button>
|
||||
<span class="muted form-hint">提交后可切换其他页面,回来自动续看进度/结果</span>
|
||||
</div>
|
||||
</el-card>
|
||||
|
||||
<!-- 提交 -->
|
||||
<div v-if="phase === 'form'" class="submit-bar">
|
||||
<el-button type="primary" size="large" @click="onSubmit">开始回测</el-button>
|
||||
<span class="muted form-hint">提交后可切换其他页面,回来自动续看进度/结果</span>
|
||||
</div>
|
||||
|
||||
<!-- 进行中(可切走,回来恢复) -->
|
||||
<el-card v-if="phase === 'running'" class="blk" shadow="never">
|
||||
<template #header><span class="section-title">回测进行中</span></template>
|
||||
@@ -372,6 +356,10 @@ function fmtNum(v: number | null | undefined, digits = 2): string {
|
||||
task: <span class="mono">{{ trackingTid }}</span> · 组合回测加载大库数据预计 1-3 分钟。
|
||||
<strong>可切换其他页面,本页保留进度,回来继续。</strong>
|
||||
</p>
|
||||
<div class="submit-bar">
|
||||
<el-button @click="resetToForm">发起新回测</el-button>
|
||||
<span class="muted form-hint">当前回测仍在后台运行,完成后可在「历史任务」查看</span>
|
||||
</div>
|
||||
</el-card>
|
||||
|
||||
<!-- 失败 -->
|
||||
|
||||
Reference in New Issue
Block a user