1、策略下单

This commit is contained in:
2025-04-12 18:35:32 +08:00
parent ee5934973c
commit a5e774e6f1
4 changed files with 64 additions and 20 deletions

View File

@ -396,6 +396,14 @@
<template v-if="inForm.price_pattern === 'mixture'" slot="append">{{ comTakePrice }}</template>
</el-input>
</el-form-item>
<el-form-item :label="inForm.price_pattern === 'mixture' ? '止损价格' : '止损价百分比'" prop="stop_loss">
<el-input
v-model="inForm.stop_loss"
min="0"
type="number"
:placeholder="inForm.price_pattern === 'mixture' ? '止损价格' : '止损价百分比'"
/>
</el-form-item>
<el-form-item label="止盈数量百分比" prop="profit_num_ratio">
<el-input v-model="inForm.profit_num_ratio" placeholder="止盈数量百分比" />
</el-form-item>
@ -481,14 +489,6 @@
<el-radio label="0">直接执行</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item :label="inForm.price_pattern === 'mixture' ? '止损价格' : '止损价百分比'" prop="stop_loss">
<el-input
v-model="inForm.stop_loss"
min="0"
type="number"
:placeholder="inForm.price_pattern === 'mixture' ? '止损价格' : '止损价百分比'"
/>
</el-form-item>
<el-form-item label="减仓策略">
<el-select
v-model="inForm.reduce_strategy_id"
@ -821,6 +821,8 @@ export default {
],
profit: [{ required: true, message: '请输入', trigger: 'blur' },
{ validator: this.validateProfit, trigger: 'blur' }],
stop_loss: [{ required: true, message: '请输入止损', trigger: 'blur' }, { validator: this.validateStopLoss, trigger: 'blur' }],
reduce_price: [
{ required: true, message: '主单亏损不能为空', trigger: 'blur' },
{ validator: this.validateReducePrice, trigger: 'blur' }],
@ -968,6 +970,16 @@ export default {
})
},
methods: {
/** 主单止损价 */
validateStopLoss(rule, value, callback) {
if (value < 0) {
callback(new Error('止损价不能小于0'))
} else if (this.form.price_pattern !== 'mixture' && value > 100) {
callback(new Error('止损价不能大于100'))
} else {
callback()
}
},
validatePercentage(rule, value, callback) {
if (value <= 0 || value === undefined || value === null || value === '') {
callback(new Error('百分比必须大于0'))

View File

@ -505,11 +505,11 @@
</el-form-item>
<el-form-item label="策略类型">
<el-radio-group v-model="form.strategy_template_type" @input="changeStrategyTemplateType">
<!-- :disabled="item.value === 1" -->
<el-radio
v-for="(item, index) in strategyTemplateTypeOptions"
:key="'strategyTemplateType' + index"
:label="item.value"
:disabled="item.value === 1"
>{{ item.label }}</el-radio>
</el-radio-group>
</el-form-item>
@ -597,6 +597,14 @@
<template v-if="form.price_pattern === 'mixture'" slot="append">{{ comTakePrice }}</template>
</el-input>
</el-form-item>
<el-form-item :label="form.price_pattern === 'mixture' ? '止损价格' : '止损百分比'" prop="stop_loss">
<el-input
v-model="form.stop_loss"
min="0"
type="number"
:placeholder="form.price_pattern === 'mixture' ? '止损价格' : '止损价百分比'"
/>
</el-form-item>
<el-form-item label="止盈数量百分比" prop="profit_num_ratio">
<el-input v-model="form.profit_num_ratio" placeholder="止盈数量百分比" />
</el-form-item>
@ -634,14 +642,6 @@
<el-radio label="0">直接执行</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item :label="form.price_pattern === 'mixture' ? '止损价格' : '止损价百分比'" prop="stop_loss">
<el-input
v-model="form.stop_loss"
min="0"
type="number"
:placeholder="form.price_pattern === 'mixture' ? '止损价格' : '止损价百分比'"
/>
</el-form-item>
<el-form-item label="减仓策略">
<el-select
v-model="form.reduce_strategy_id"

View File

@ -152,7 +152,7 @@
:gutter="20"
>
<!-- <el-card shadow="hover"> -->
<el-col :span="7">
<el-col :span="6">
<el-form-item
label="亏损比例"
:prop="'items.' + index + '.lossPercent'"
@ -161,7 +161,12 @@
<el-input v-model="item.lossPercent" size="mini" placeholder="请输入亏损比例" />
</el-form-item>
</el-col>
<el-col :span="7">
<el-col :span="6">
<el-form-item label="减仓比例" :prop="'items.' + index + '.quantityPercent'" :rules="rules.quantityPercent">
<el-input v-model="item.quantityPercent" size="mini" placeholder="请输入减仓数量比例" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item
label="订单类型"
:prop="'items.' + index + '.orderType'"
@ -259,6 +264,9 @@ export default {
lossPercent: [{ required: true, message: '亏损百分比不能为空', trigger: 'blur' },
{ validator: this.validateOrderType, trigger: 'blur' }],
orderType: [{ required: true, message: '订单类型不能为空', trigger: 'blur' }
],
quantityPercent: [{ required: true, message: '减仓数量百分比不能为空', trigger: 'blur' },
{ validator: this.validateQuantityPercent, trigger: 'blur' }
]
}
}
@ -286,6 +294,21 @@ export default {
callback()
}
},
validateQuantityPercent(rule, value, callback) {
// const index = rule.fullField.split('.')[1] // 获取索引
if (value === '') {
callback(new Error('不能为空'))
} else if (isNaN(value)) {
callback(new Error('必须输入数字'))
} else if (value < 0) {
callback(new Error('百分比不能小于 0'))
} else if (value > 100) {
callback(new Error('百分比不能大于 100'))
} else {
callback()
}
},
/** 查询参数列表 */
getList() {
this.loading = true

View File

@ -19,6 +19,11 @@
align="center"
prop="reducePremium"
/>
<el-table-column
label="减仓策略提前触发百分比"
align="center"
prop="reduceEarlyTriggerPercent"
/>
<!-- <el-table-column
label="主账号加仓溢价百分比"
align="center"
@ -143,6 +148,9 @@
<el-form-item label="限价减仓溢价" prop="reducePremium">
<el-input v-model="form.reducePremium" placeholder="限价减仓溢价" />
</el-form-item>
<el-form-item label="减仓策略提前触发百分比" prop="reduceEarlyTriggerPercent">
<el-input v-model="form.reduceEarlyTriggerPercent" placeholder="减仓策略提前触发百分比" />
</el-form-item>
<!-- <el-form-item label="主账号加仓溢价百分比" prop="scaleOrderTypeARate">
<el-input v-model="form.scaleOrderTypeARate" placeholder="主账号限价加仓买入百分比" />
</el-form-item>
@ -221,7 +229,8 @@ export default {
rules: {
stopLossPremium: [{ required: true, message: '限价止损溢价不能为空', trigger: 'blur' }],
addPositionPremium: [{ required: true, message: '限价加仓溢价不能为空', trigger: 'blur' }],
reducePremium: [{ required: true, message: '限价减仓溢价不能为空', trigger: 'blur' }]
reducePremium: [{ required: true, message: '限价减仓溢价不能为空', trigger: 'blur' }],
reduceEarlyTriggerPercent: [{ required: true, message: '减仓策略提前触发百分比不能为空', trigger: 'blur' }]
}
}