|
|
@ -1,5 +1,55 @@ |
|
|
|
<template> |
|
|
|
<card> |
|
|
|
<div class="row"> |
|
|
|
<div class="col-md-6"> |
|
|
|
<div class="row"> |
|
|
|
<div class="col-md-3"> |
|
|
|
<base-button @click="excelImport">导入数据源</base-button> |
|
|
|
</div> |
|
|
|
<div class="col-md-4"> |
|
|
|
<base-input> |
|
|
|
<el-date-picker |
|
|
|
class="select-danger" |
|
|
|
v-model="startTime" |
|
|
|
type="datetime" |
|
|
|
placeholder="选择开始日期与时间" |
|
|
|
> |
|
|
|
</el-date-picker> |
|
|
|
</base-input> |
|
|
|
</div> |
|
|
|
<div class="col-md-4"> |
|
|
|
<base-input> |
|
|
|
<el-date-picker |
|
|
|
v-model="endTime" |
|
|
|
type="datetime" |
|
|
|
placeholder="选择结束日期与时间" |
|
|
|
@change="timepIkcer" |
|
|
|
> |
|
|
|
</el-date-picker> |
|
|
|
</base-input> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="col-md-6"> |
|
|
|
<el-select |
|
|
|
class="select-danger" |
|
|
|
style="width:200px" |
|
|
|
placeholder="策略选择" |
|
|
|
v-model="policyMode" |
|
|
|
> |
|
|
|
<el-option |
|
|
|
v-for="item in RobotPolicyType" |
|
|
|
class="select-danger" |
|
|
|
:label="item.title" |
|
|
|
:key="item.value" |
|
|
|
:value="item.value" |
|
|
|
> |
|
|
|
</el-option> |
|
|
|
</el-select> |
|
|
|
<base-button @click="executeTest" class="ml-2">执行回测</base-button> |
|
|
|
<base-button class="ml-2">重置回测</base-button> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<!-- <a-row type="flex"> |
|
|
|
<a-col :span="16"> |
|
|
|
<a-row type="flex" |
|
|
@ -34,7 +84,7 @@ |
|
|
|
</a-row> --> |
|
|
|
|
|
|
|
<div> |
|
|
|
<el-tabs default-active-key="1"> |
|
|
|
<el-tabs value="1"> |
|
|
|
<el-tab-pane name="1" label="K线图表"> |
|
|
|
<div class="row"> |
|
|
|
<div class="col-md-3"> |
|
|
@ -101,13 +151,16 @@ |
|
|
|
<!-- <HQKline /> --> |
|
|
|
</el-tab-pane> |
|
|
|
<el-tab-pane name="2" label="编译策略"> |
|
|
|
<MomentumWavePolicy v-if="policyMode == 0" v-model="policyFormData" /> |
|
|
|
<movement-policy-form |
|
|
|
v-if="policyMode == 0" |
|
|
|
v-model="policyFormData" |
|
|
|
/> |
|
|
|
<!-- <top-end-policy v-else v-model="policyFormData" /> --> |
|
|
|
</el-tab-pane> |
|
|
|
</el-tabs> |
|
|
|
</div> |
|
|
|
<div> |
|
|
|
<el-tabs default-active-key="1"> |
|
|
|
<el-tabs value="1"> |
|
|
|
<!-- 交易清单 --> |
|
|
|
<el-tab-pane name="1" label="交易清单"> |
|
|
|
<order-table v-model="tradeData"></order-table> |
|
|
@ -116,15 +169,24 @@ |
|
|
|
<!-- 信号记录 --> |
|
|
|
<el-tab-pane name="2" label="信号记录"> |
|
|
|
根据时间范围筛选信号记录: |
|
|
|
<a-range-picker |
|
|
|
<!-- <a-range-picker |
|
|
|
style="margin: 10px 0" |
|
|
|
v-model="dateRange" |
|
|
|
:show-time="{ format: 'HH:mm' }" |
|
|
|
format="YYYY-MM-DD HH:mm" |
|
|
|
:placeholder="['开始时间', '结束时间']" |
|
|
|
@ok="onOk" |
|
|
|
/> |
|
|
|
<a-table |
|
|
|
@change="onOk" |
|
|
|
/> --> |
|
|
|
<el-date-picker |
|
|
|
v-model="dateRange" |
|
|
|
type="datetimerange" |
|
|
|
range-separator="~" |
|
|
|
start-placeholder="开始日期" |
|
|
|
end-placeholder="结束日期" |
|
|
|
@change="onOk" |
|
|
|
> |
|
|
|
</el-date-picker> |
|
|
|
<custom-base-table |
|
|
|
size="small" |
|
|
|
:columns="logColumns" |
|
|
|
:dataSource="logData.filter(logShowCondition)" |
|
|
@ -132,7 +194,7 @@ |
|
|
|
<template slot="LogType" slot-scope="text"> |
|
|
|
{{ LogTypes.filter(item => item.value == text)[0].title }} |
|
|
|
</template> |
|
|
|
</a-table> |
|
|
|
</custom-base-table> |
|
|
|
</el-tab-pane> |
|
|
|
<!-- 绩效总结 --> |
|
|
|
<el-tab-pane name="3" label="绩效总结"> |
|
|
@ -155,16 +217,18 @@ import { |
|
|
|
ResetMomentumWaveTest, |
|
|
|
LogTypes |
|
|
|
} from "../prePages/js/selectoptions"; |
|
|
|
import MomentumWavePolicy from "../../components/MovementPolicyForm"; |
|
|
|
import MovementPolicyForm from "../../components/MovementPolicyForm"; |
|
|
|
import moment from "moment"; |
|
|
|
import OrderTable from "./OrderTable"; |
|
|
|
import CustomBaseTable from "../../components/CustomBaseTable.vue"; |
|
|
|
// import TopEndPolicy from "../components/TopEndPolicy.vue"; |
|
|
|
export default { |
|
|
|
components: { |
|
|
|
KLine, |
|
|
|
AccountInfo, |
|
|
|
MomentumWavePolicy, |
|
|
|
OrderTable |
|
|
|
MovementPolicyForm, |
|
|
|
OrderTable, |
|
|
|
CustomBaseTable |
|
|
|
// HQKline |
|
|
|
|
|
|
|
// TopEndPolicy |
|
|
@ -185,9 +249,9 @@ export default { |
|
|
|
tradeData: [], |
|
|
|
startTime: null, |
|
|
|
endTime: null, |
|
|
|
kLineData: [], |
|
|
|
kLineData: {}, |
|
|
|
keyFilter: {}, |
|
|
|
policyFormData: ResetMomentumWaveTest, |
|
|
|
policyFormData: {}, |
|
|
|
kLineDataList: [], |
|
|
|
dateRange: [], |
|
|
|
accountInfo: {}, |
|
|
@ -197,10 +261,13 @@ export default { |
|
|
|
logShowCondition: i => true |
|
|
|
}; |
|
|
|
}, |
|
|
|
mounted() { |
|
|
|
this.policyFormData = ResetMomentumWaveTest; |
|
|
|
}, |
|
|
|
methods: { |
|
|
|
onOk(value) { |
|
|
|
this.logShowCondition = item => |
|
|
|
moment(item.CreateTime).isBetween(value[0], value[1]); |
|
|
|
moment(item.CreateTime).isBetween(moment(value[0]), moment(value[1])); |
|
|
|
}, |
|
|
|
changeFilter(value, type) { |
|
|
|
console.log(value, type); |
|
|
@ -411,16 +478,14 @@ export default { |
|
|
|
this.startTime && |
|
|
|
this.endTime && |
|
|
|
!moment(data[i][j] * 1000).isBetween( |
|
|
|
this.startTime.startOf("day"), |
|
|
|
this.endTime.endOf("day") |
|
|
|
moment(this.startTime), |
|
|
|
moment(this.endTime) |
|
|
|
) |
|
|
|
) { |
|
|
|
break; |
|
|
|
} else if ( |
|
|
|
this.startTime && |
|
|
|
!moment(data[i][j] * 1000).isAfter( |
|
|
|
this.startTime.startOf("day") |
|
|
|
) |
|
|
|
!moment(data[i][j] * 1000).isAfter(moment(this.startTime)) |
|
|
|
) { |
|
|
|
break; |
|
|
|
} |
|
|
@ -615,10 +680,10 @@ export default { |
|
|
|
console.log("回测成功"); |
|
|
|
this.logData = res.Data.ExecutionLogList; |
|
|
|
if (this.logData.length > 0) { |
|
|
|
this.dateRange[0] = moment( |
|
|
|
this.logData[this.logData.length - 1].CreateTime |
|
|
|
); |
|
|
|
this.dateRange[1] = moment(this.logData[0].CreateTime); |
|
|
|
this.dateRange[0] = this.logData[ |
|
|
|
this.logData.length - 1 |
|
|
|
].CreateTime; |
|
|
|
this.dateRange[1] = this.logData[0].CreateTime; |
|
|
|
} |
|
|
|
res.Data.OrderList.sort( |
|
|
|
(a, b) => b.PurchaseKLineId - a.PurchaseKLineId |
|
|
@ -643,6 +708,9 @@ export default { |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
}, |
|
|
|
timepIkcer() { |
|
|
|
console.log(this.startTime, this.endTime); |
|
|
|
} |
|
|
|
} |
|
|
|
}; |
|
|
|