feat(s3): 历史任务 + 参数优化端到端跑通
- result_store.load_result_by_task_id + orchestrator.get_result DB 兜底(历史回看)
- GET /task 列表、GET /task/{id}/optimization-results
- Task.raw_result 存优化结果 list(内存)
- cta_optimizer 修同款 bug(interval d / capital 1M / vnpy DB SETTINGS)
- get_status 返回 error_msg(str 守卫)
- 前端 优化页(网格输入+轮询+结果表)、历史页(任务列表+回看)、侧栏子菜单
- 修 5 个旧 test_routes 回归;73 tests passed
- 冒烟:历史 3 任务 + 优化 9 组合
This commit is contained in:
@@ -87,3 +87,45 @@ export async function getKline(symbol: string, start: string, end: string): Prom
|
||||
const { data } = await apiClient.get<{ kline: KlineBar[] }>('/kline', { params: { symbol, start, end } })
|
||||
return data.kline
|
||||
}
|
||||
|
||||
// ----- S3: history + optimization -----
|
||||
|
||||
export interface TaskListItem {
|
||||
id: number
|
||||
task_id: string
|
||||
type: string
|
||||
status: string
|
||||
strategy: string
|
||||
symbol: string
|
||||
start: string
|
||||
end: string
|
||||
}
|
||||
|
||||
export async function getTasks(type?: string): Promise<TaskListItem[]> {
|
||||
const { data } = await apiClient.get<{ tasks: TaskListItem[] }>('/task', { params: type ? { type } : {} })
|
||||
return data.tasks
|
||||
}
|
||||
|
||||
export interface OptimizeSubmit {
|
||||
symbol: string
|
||||
strategy: string
|
||||
grid: Record<string, [number, number, number]>
|
||||
start: string
|
||||
end: string
|
||||
}
|
||||
|
||||
export async function submitOptimize(req: OptimizeSubmit): Promise<string> {
|
||||
const { data } = await apiClient.post<{ task_id: string }>('/backtest/optimize', req)
|
||||
return data.task_id
|
||||
}
|
||||
|
||||
export interface OptRow {
|
||||
params: Record<string, unknown>
|
||||
statistics: Record<string, unknown>
|
||||
}
|
||||
|
||||
export async function getOptimizationResults(taskId: string): Promise<OptRow[]> {
|
||||
const { data } = await apiClient.get<{ results: OptRow[] }>(`/task/${taskId}/optimization-results`)
|
||||
return data.results
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user