Browse Source

平生不做亏心事夜半敲门也不经

master
lizhixin 4 years ago
parent
commit
63b658888c
  1. 5
      src/components/MovementPolicyForm.vue
  2. 11
      src/layout/dashboard/DashboardLayout.vue
  3. 7
      src/pages/Account/index.vue
  4. 18
      src/pages/ReCheck/OrderTable.vue
  5. 31
      src/pages/ReCheck/index.vue
  6. 2
      src/pages/prePages/ReCheck.vue
  7. 31
      src/utils/util.js

5
src/components/MovementPolicyForm.vue

@ -380,7 +380,8 @@ export default {
// lowest_label_display: this.lowest_label_display // lowest_label_display: this.lowest_label_display
// }); // });
// }, // },
myForm() { myForm(newVal, oldVal) {
console.log(newVal, oldVal);
this.form = this.myForm; this.form = this.myForm;
} }
}, },
@ -394,7 +395,7 @@ export default {
periodSignal, periodSignal,
signals, signals,
orderModes, orderModes,
form: {}, form: this.myForm,
NotifyType: 5, NotifyType: 5,
ClosePrice: 0 ClosePrice: 0
}; };

11
src/layout/dashboard/DashboardLayout.vue

@ -33,18 +33,17 @@
<el-menu-item index="2-3" @click="to('/robot/1')" <el-menu-item index="2-3" @click="to('/robot/1')"
>机器人管理</el-menu-item >机器人管理</el-menu-item
> >
<el-menu-item index="2-2" @click="to('/capital')">
总资金管理</el-menu-item
>
</el-submenu> </el-submenu>
<el-menu-item index="3" @click="to('/reCheck')">
<i class="el-icon-bicycle"></i>
<span slot="title">回测</span>
</el-menu-item>
<el-menu-item index="4" @click="to('/winRate')"> <el-menu-item index="4" @click="to('/winRate')">
<i class="el-icon-aim"></i> <i class="el-icon-aim"></i>
<span slot="title">短线胜率测试</span> <span slot="title">短线胜率测试</span>
</el-menu-item> </el-menu-item>
<el-menu-item index="5" @click="to('/capital')"> <el-menu-item index="5" @click="to('/reCheck')">
<i class="el-icon-trophy"></i> <i class="el-icon-trophy"></i>
<span slot="title">总资金管理</span> <span slot="title">回测</span>
</el-menu-item> </el-menu-item>
</el-menu> </el-menu>
<!-- <template slot="links"> <!-- <template slot="links">

7
src/pages/Account/index.vue

@ -16,6 +16,13 @@
<small>新建账号</small> <small>新建账号</small>
</div> </div>
<form role="form"> <form role="form">
<!-- 账号名称-->
<!-- <base-input
label="账号名称"
placeholder="请填写账号名称"
v-model="form.Name"
>
</base-input> -->
<!-- 账号AccessKey --> <!-- 账号AccessKey -->
<base-input <base-input
label="账号AccessKey" label="账号AccessKey"

18
src/pages/ReCheck/OrderTable.vue

@ -13,11 +13,12 @@
<!-- 买卖时间 --> <!-- 买卖时间 -->
<template slot="KLineId" slot-scope="item"> <template slot="KLineId" slot-scope="item">
<p> <p>
{{ item.row.item.PurchaseKLineId {{
? item.row.item.PurchaseKLineId
moment(item.row.item.PurchaseKLineId * 1000).format( ? moment(item.row.item.PurchaseKLineId * 1000).format(
"YYYY-MM-DD HH:mm:ss" "YYYY-MM-DD HH:mm:ss"
) : "-" )
: "-"
}} }}
</p> </p>
<p> <p>
@ -64,7 +65,7 @@
<p v-if="item.row.item.TotalProfit"> <p v-if="item.row.item.TotalProfit">
{{ {{
( (
(item.row.item.TotalProfit / policyFormData.PositionFund) * (item.row.item.TotalProfit / item.row.item.TotalPurchasePrice) *
100 100
).toFixed(2) ).toFixed(2)
}}% }}%
@ -81,7 +82,10 @@ import { tradeColumns } from "../../pages/prePages/js/columns";
import moment from "moment"; import moment from "moment";
export default { export default {
model: { prop: "data", event: "tableDataChange" }, model: { prop: "data", event: "tableDataChange" },
props: { data: { type: Array, default: () => [] }, policyFormData: {} }, props: {
data: { type: Array, default: () => [] },
positionFund: { type: Number, default: 1 }
},
components: { CustomBaseTable }, components: { CustomBaseTable },
data() { data() {
return { moment, columns: tradeColumns }; return { moment, columns: tradeColumns };

31
src/pages/ReCheck/index.vue

@ -36,6 +36,7 @@
style="width:200px" style="width:200px"
placeholder="策略选择" placeholder="策略选择"
v-model="policyMode" v-model="policyMode"
@change="policyModeChange"
> >
<el-option <el-option
v-for="item in RobotPolicyType" v-for="item in RobotPolicyType"
@ -120,7 +121,7 @@
<KLine :data="kLineData" :keyFilter="keyFilter" /> <KLine :data="kLineData" :keyFilter="keyFilter" />
<!-- <HQKline /> --> <!-- <HQKline /> -->
</el-tab-pane> </el-tab-pane>
<el-tab-pane name="2" label="编策略"> <el-tab-pane name="2" label="编策略">
<movement-policy-form <movement-policy-form
v-if="policyMode == 0" v-if="policyMode == 0"
v-model="policyFormData" v-model="policyFormData"
@ -139,7 +140,7 @@
<el-tab-pane name="1" label="交易清单"> <el-tab-pane name="1" label="交易清单">
<order-table <order-table
v-model="tradeData" v-model="tradeData"
:policyFormData="policyFormData" :positionFund="PositionFund"
></order-table> ></order-table>
</el-tab-pane> </el-tab-pane>
@ -205,6 +206,7 @@ import moment from "moment";
import OrderTable from "./OrderTable"; import OrderTable from "./OrderTable";
import CustomBaseTable from "../../components/CustomBaseTable.vue"; import CustomBaseTable from "../../components/CustomBaseTable.vue";
import MoveTrend from "./MoveTrend"; import MoveTrend from "./MoveTrend";
import { deepClone } from "../../utils/util";
// import TopEndPolicy from "../components/TopEndPolicy.vue"; // import TopEndPolicy from "../components/TopEndPolicy.vue";
export default { export default {
components: { components: {
@ -229,6 +231,7 @@ export default {
tradeColumns, tradeColumns,
logColumns, logColumns,
logData: [], logData: [],
PositionFund: 1,
RobotPolicyType, RobotPolicyType,
policyMode: 0, policyMode: 0,
tradeData: [], tradeData: [],
@ -242,7 +245,7 @@ export default {
endTime: null, endTime: null,
kLineData: {}, kLineData: {},
keyFilter: {}, keyFilter: {},
policyFormData: {}, policyFormData: { ...ResetMomentumWaveTest },
kLineDataList: [], kLineDataList: [],
dateRange: [], dateRange: [],
accountInfo: {}, accountInfo: {},
@ -253,9 +256,19 @@ export default {
}; };
}, },
mounted() { mounted() {
this.policyFormData = ResetMomentumWaveTest; this.PositionFund = this.policyFormData.PositionFund;
}, },
methods: { methods: {
policyModeChange(value) {
console.log(value);
if (value == 2) {
this.PositionFund =
(this.trendForm.NowCapital - this.trendForm.FrozenProfit) /
(this.trendForm.TradeAmountRatio / 100);
} else if (value == 0) {
this.PositionFund = this.policyFormData.PositionFund;
}
},
onOk(value) { onOk(value) {
this.logShowCondition = item => this.logShowCondition = item =>
moment(item.CreateTime).isBetween(moment(value[0]), moment(value[1])); moment(item.CreateTime).isBetween(moment(value[0]), moment(value[1]));
@ -470,15 +483,15 @@ export default {
this.startTime && this.startTime &&
this.endTime && this.endTime &&
!moment(data[i][j] * 1000).isBetween( !moment(data[i][j] * 1000).isBetween(
this.startTime.startOf("day"), moment(this.startTime).startOf("day"),
this.endTime.endOf("day") moment(this.endTime).endOf("day")
) )
) { ) {
break; break;
} else if ( } else if (
this.startTime && this.startTime &&
!moment(data[i][j] * 1000).isAfter( !moment(data[i][j] * 1000).isAfter(
this.startTime.startOf("day") moment(this.startTime).startOf("day")
) )
) { ) {
break; break;
@ -738,8 +751,8 @@ export default {
.post("/Api/Simulation/MomentumTrendTest", { .post("/Api/Simulation/MomentumTrendTest", {
Capital: { Capital: {
...this.trendForm, ...this.trendForm,
FrozenProfit: this.trendForm.FrozenProfit / 100, FrozenProfit: this.trendForm.FrozenProfit,
TradeAmountRatio: this.trendForm.TradeAmountRatio / 100 TradeAmountRatio: this.trendForm.TradeAmountRatio
}, },
kLineDataList: this.kLineDataList kLineDataList: this.kLineDataList
}) })

2
src/pages/prePages/ReCheck.vue

@ -80,7 +80,7 @@
<KLine :data="kLineData" :keyFilter="keyFilter" /> <KLine :data="kLineData" :keyFilter="keyFilter" />
<!-- <HQKline /> --> <!-- <HQKline /> -->
</a-tab-pane> </a-tab-pane>
<a-tab-pane key="2" tab="编策略"> <a-tab-pane key="2" tab="编策略">
<MomentumWavePolicy v-if="policyMode == 0" v-model="policyFormData" /> <MomentumWavePolicy v-if="policyMode == 0" v-model="policyFormData" />
<top-end-policy v-else v-model="policyFormData" /> <top-end-policy v-else v-model="policyFormData" />
</a-tab-pane> </a-tab-pane>

31
src/utils/util.js

@ -0,0 +1,31 @@
//深拷贝
function deepClone(newObj, oldObj) {
for (let i in oldObj) {
let item = oldObj[i];
if (item instanceof Array) {
newObj[i] = [];
deepClone(newObj[i], item);
} else if (item instanceof Object) {
newObj[i] = {};
deepClone(newObj[i], item);
} else {
newObj[i] = item;
}
// console.log(newObj, "深拷贝的每一步", i, oldObj);
}
}
//节流函数
function debounce(fn, delay) {
var timer = null;
return function() {
if (!timer) {
timer = setTimeout(fn, delay);
} else {
clearTimeout(timer);
timer = setTimeout(fn, delay);
}
};
}
export { deepClone, debounce };
Loading…
Cancel
Save