feat(portfolio): 组合回测接入A股费用(佣金/印花税/最低佣金/滑点)对齐个股回测; BulletTrade set_order_cost/set_slippage [vps]
This commit is contained in:
@@ -57,6 +57,11 @@ const form = reactive({
|
||||
end: dr.end,
|
||||
cash: 1_000_000,
|
||||
benchmark: '000300.XSHG',
|
||||
// A 股费用(对齐个股回测)
|
||||
commission_rate: 0.0003,
|
||||
stamp_duty_rate: 0.001,
|
||||
min_commission: 5,
|
||||
slippage: 0.001,
|
||||
})
|
||||
watch(
|
||||
() => [form.start, form.end],
|
||||
@@ -199,6 +204,10 @@ async function onSubmit(): Promise<void> {
|
||||
end_date: form.end,
|
||||
initial_cash: form.cash,
|
||||
benchmark: form.benchmark,
|
||||
commission_rate: Number(form.commission_rate),
|
||||
stamp_duty_rate: Number(form.stamp_duty_rate),
|
||||
min_commission: Number(form.min_commission),
|
||||
slippage: Number(form.slippage),
|
||||
})
|
||||
try {
|
||||
localStorage.setItem('last_portfolio_task', tid)
|
||||
@@ -328,6 +337,22 @@ function fmtNum(v: number | null | undefined, digits = 2): string {
|
||||
<el-option v-for="b in BENCHMARK_OPTIONS" :key="b.value" :label="b.label" :value="b.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="佣金率">
|
||||
<el-input v-model="form.commission_rate" style="width: 160px" />
|
||||
<span class="muted form-hint">0.0003=万3(双边,最低5元)</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="印花税率">
|
||||
<el-input v-model="form.stamp_duty_rate" style="width: 160px" />
|
||||
<span class="muted form-hint">0.001=千1(仅卖出)</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="最低佣金">
|
||||
<el-input v-model="form.min_commission" style="width: 160px" />
|
||||
<span class="muted form-hint">元/笔</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="滑点(比率)">
|
||||
<el-input v-model="form.slippage" style="width: 160px" />
|
||||
<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>
|
||||
|
||||
Reference in New Issue
Block a user