feat(portfolio): max_pool 字段透传(model+handler+前端,解除30硬编码)
model 加 max_pool 字段(默认30,0=全市场不限);handler 用 req.max_pool 替换硬编码30; 前端加选股池上限 input + onSubmit 透传。下游 submit_portfolio→spec→argv--max-pool 链路异步化时已存在,本次只补入口。全周期验收可传 max_pool=0 对比 docker exec 旁证
This commit is contained in:
@@ -3,6 +3,7 @@ import { apiClient } from './client'
|
||||
export interface PortfolioBacktestReq {
|
||||
pool: string
|
||||
strategy?: string
|
||||
max_pool?: number
|
||||
start_date: string
|
||||
end_date: string
|
||||
initial_cash: number
|
||||
|
||||
@@ -29,6 +29,7 @@ let pollTimer: ReturnType<typeof setInterval> | null = null
|
||||
const form = reactive({
|
||||
pool: 'hs300_subset',
|
||||
strategy: 'all_weather',
|
||||
max_pool: 30,
|
||||
start: '2024-01-01',
|
||||
end: '2024-02-29',
|
||||
cash: 1_000_000,
|
||||
@@ -108,6 +109,7 @@ async function onSubmit(): Promise<void> {
|
||||
const tid = await postPortfolioBacktest({
|
||||
pool: form.pool,
|
||||
strategy: form.strategy,
|
||||
max_pool: form.max_pool,
|
||||
start_date: form.start,
|
||||
end_date: form.end,
|
||||
initial_cash: form.cash,
|
||||
@@ -193,6 +195,16 @@ async function onSubmit(): Promise<void> {
|
||||
</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"
|
||||
/>
|
||||
<span class="muted form-hint">0=全市场不限, N=前N只(MVP验证用, 默认30)</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="开始日期">
|
||||
<el-date-picker
|
||||
v-model="form.start"
|
||||
|
||||
@@ -37,6 +37,7 @@ class PortfolioBacktestRequest(BaseModel):
|
||||
default="all_weather",
|
||||
description="策略: all_weather/momentum_timing/value_selection/small_cap",
|
||||
)
|
||||
max_pool: int = Field(default=30, description="选股池上限: 0=全市场不限, N=前N只(MVP验证用)")
|
||||
|
||||
|
||||
@router.post("/portfolio/backtest", dependencies=[Depends(verify_token)])
|
||||
@@ -48,7 +49,7 @@ async def run_portfolio_backtest(req: PortfolioBacktestRequest):
|
||||
cash=req.initial_cash,
|
||||
benchmark=req.benchmark,
|
||||
strategy=req.strategy,
|
||||
max_pool=30,
|
||||
max_pool=req.max_pool,
|
||||
provider_config=None,
|
||||
)
|
||||
return {"task_id": tid}
|
||||
|
||||
Reference in New Issue
Block a user