st-comp 0.0.171 → 0.0.172
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/KlinePlus.cjs +3 -3
- package/es/KlinePlus.js +182 -192
- package/es/style.css +1 -1
- package/lib/bundle.js +1 -1
- package/lib/bundle.umd.cjs +2 -2
- package/lib/{index-42745784.js → index-d9f6d2bc.js} +16 -26
- package/lib/{python-bea23b43.js → python-e8bc0c16.js} +1 -1
- package/lib/style.css +1 -1
- package/package.json +1 -1
- package/packages/KlinePlus/components/SliderChart.vue +4 -19
- package/packages/KlinePlus/index.vue +5 -5
package/es/KlinePlus.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import "./base-4bcd2756.js";
|
|
2
|
-
import { v as
|
|
3
|
-
import { E as
|
|
2
|
+
import { v as he } from "./el-loading-5d29f26d.js";
|
|
3
|
+
import { E as be } from "./el-empty-64b2ea8a.js";
|
|
4
4
|
import "./el-tag-6036f51c.js";
|
|
5
5
|
import { E as ke, a as ve } from "./el-select-d3bce4d1.js";
|
|
6
6
|
import "./el-scrollbar-bcf29780.js";
|
|
7
7
|
import "./el-popper-85365d5b.js";
|
|
8
|
-
import { openBlock as F, createElementBlock as _, Fragment as me, renderList as Ae, normalizeStyle as Ee, toDisplayString as Me, inject as we, ref as U, onMounted as pe, nextTick as Se, watch as te, onUnmounted as xe, computed as re, withDirectives as Qe, createElementVNode as $, createVNode as ee, createCommentVNode as
|
|
8
|
+
import { openBlock as F, createElementBlock as _, Fragment as me, renderList as Ae, normalizeStyle as Ee, toDisplayString as Me, inject as we, ref as U, onMounted as pe, nextTick as Se, watch as te, onUnmounted as xe, computed as re, withDirectives as Qe, createElementVNode as $, createVNode as ee, createCommentVNode as Ne, withCtx as Pe, createBlock as Ie } from "vue";
|
|
9
9
|
import { d as I } from "./dayjs.min-54a4e095.js";
|
|
10
|
-
import * as
|
|
10
|
+
import * as se from "echarts";
|
|
11
11
|
import { x as fe, G as ae, D as Re } from "./index-7ed0999e.js";
|
|
12
12
|
import { _ as ze } from "./_plugin-vue_export-helper-dad06003.js";
|
|
13
13
|
import "./use-global-config-946f61a4.js";
|
|
@@ -46,8 +46,8 @@ const Ue = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPS
|
|
|
46
46
|
// 每周1根(按5个交易日算)
|
|
47
47
|
8: 0.033
|
|
48
48
|
// 每月1根(按21个交易日算)
|
|
49
|
-
}, Ye = ({ startTime: i, endTime: z, cycle:
|
|
50
|
-
const { maxValueSpan: j } = W, Y = Math.ceil((j + 1e3) / _e[
|
|
49
|
+
}, Ye = ({ startTime: i, endTime: z, cycle: r, type: N = "end" }) => {
|
|
50
|
+
const { maxValueSpan: j } = W, Y = Math.ceil((j + 1e3) / _e[r]), g = I(i);
|
|
51
51
|
if (I(z).diff(g, "day") <= Y)
|
|
52
52
|
return [i, z];
|
|
53
53
|
if (N === "end")
|
|
@@ -60,19 +60,19 @@ const Ue = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPS
|
|
|
60
60
|
];
|
|
61
61
|
}
|
|
62
62
|
}, Be = (i, z) => {
|
|
63
|
-
const
|
|
64
|
-
return
|
|
63
|
+
const r = i[z], N = z === 0 ? i[z] : i[z - 1];
|
|
64
|
+
return r[0] === r[1] ? r[0] >= N[1] ? {
|
|
65
65
|
color: "transparent",
|
|
66
66
|
borderColor: "#FF0000"
|
|
67
67
|
} : {
|
|
68
68
|
color: "#00FFFF"
|
|
69
|
-
} :
|
|
69
|
+
} : r[1] > r[0] ? {
|
|
70
70
|
color: "transparent",
|
|
71
71
|
borderColor: "#FF0000"
|
|
72
72
|
} : {
|
|
73
73
|
color: "#00FFFF"
|
|
74
74
|
};
|
|
75
|
-
}, Ze = (i, z,
|
|
75
|
+
}, Ze = (i, z, r) => {
|
|
76
76
|
var j, Y, g, d;
|
|
77
77
|
const N = i.subIndicator.map((e) => {
|
|
78
78
|
if (e.series === "bar")
|
|
@@ -127,7 +127,7 @@ const Ue = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPS
|
|
|
127
127
|
{
|
|
128
128
|
type: "inside",
|
|
129
129
|
startValue: z,
|
|
130
|
-
endValue:
|
|
130
|
+
endValue: r,
|
|
131
131
|
maxValueSpan: W.maxValueSpan
|
|
132
132
|
}
|
|
133
133
|
],
|
|
@@ -199,49 +199,49 @@ const Ue = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPS
|
|
|
199
199
|
],
|
|
200
200
|
series: N
|
|
201
201
|
};
|
|
202
|
-
}, ue = (i, z,
|
|
202
|
+
}, ue = (i, z, r = "strict") => {
|
|
203
203
|
let N = 0, j = i.length - 1, Y = -1;
|
|
204
204
|
for (; N <= j; ) {
|
|
205
205
|
let g = Math.floor((N + j) / 2);
|
|
206
|
-
if (
|
|
206
|
+
if (r === "strict") {
|
|
207
207
|
if (i[g] === z)
|
|
208
208
|
return g;
|
|
209
209
|
i[g] < z ? N = g + 1 : j = g - 1;
|
|
210
210
|
} else
|
|
211
|
-
|
|
211
|
+
r === "gte" && (i[g] >= z ? (Y = g, j = g - 1) : N = g + 1);
|
|
212
212
|
}
|
|
213
|
-
return
|
|
213
|
+
return r === "strict" ? -1 : Y;
|
|
214
214
|
}, Le = (i, z) => ({
|
|
215
215
|
data: [...i.data, ...z.data.slice(1)],
|
|
216
|
-
mainIndicator: i.mainIndicator.map((
|
|
217
|
-
...
|
|
218
|
-
data: [...
|
|
216
|
+
mainIndicator: i.mainIndicator.map((r, N) => ({
|
|
217
|
+
...r,
|
|
218
|
+
data: [...r.data, ...z.mainIndicator[N].data.slice(1)]
|
|
219
219
|
})),
|
|
220
|
-
subIndicator: i.subIndicator.map((
|
|
221
|
-
...
|
|
222
|
-
data: [...
|
|
220
|
+
subIndicator: i.subIndicator.map((r, N) => ({
|
|
221
|
+
...r,
|
|
222
|
+
data: [...r.data, ...z.subIndicator[N].data.slice(1)]
|
|
223
223
|
})),
|
|
224
224
|
time: [...i.time, ...z.time.slice(1)]
|
|
225
|
-
}), je = (i, z,
|
|
226
|
-
switch (
|
|
225
|
+
}), je = (i, z, r) => {
|
|
226
|
+
switch (r) {
|
|
227
227
|
case "5": {
|
|
228
228
|
let L = [
|
|
229
229
|
...new Set(
|
|
230
230
|
i.slice(-20).map((D) => {
|
|
231
|
-
const a = new Date(D),
|
|
232
|
-
return `${
|
|
231
|
+
const a = new Date(D), s = String(a.getHours()).padStart(2, "0"), m = String(a.getMinutes()).padStart(2, "0"), b = String(a.getSeconds()).padStart(2, "0");
|
|
232
|
+
return `${s}:${m}:${b}`;
|
|
233
233
|
})
|
|
234
234
|
)
|
|
235
235
|
];
|
|
236
236
|
L.includes("00:00:00") && (L.splice(L.indexOf("00:00:00"), 1), L.push("24:00:00")), L = L.sort((D, a) => (/* @__PURE__ */ new Date(`2000-01-30 ${D}`)).getTime() - (/* @__PURE__ */ new Date(`2000-01-30 ${a}`)).getTime());
|
|
237
|
-
const T = new Date(z),
|
|
237
|
+
const T = new Date(z), c = T.getFullYear(), u = String(T.getMonth() + 1).padStart(2, "0"), M = String(T.getDate()).padStart(2, "0"), p = String(T.getHours()).padStart(2, "0"), l = String(T.getMinutes()).padStart(2, "0"), n = String(T.getSeconds()).padStart(2, "0");
|
|
238
238
|
if (`${p}:${l}:${n}` == "00:00:00")
|
|
239
|
-
return `${
|
|
239
|
+
return `${c}-${u}-${M} 01:00:00`;
|
|
240
240
|
{
|
|
241
241
|
let D = null;
|
|
242
242
|
for (let a = 0; a < L.length; a++) {
|
|
243
|
-
const
|
|
244
|
-
if (+`${
|
|
243
|
+
const s = L[a].split(":");
|
|
244
|
+
if (+`${s[0]}${s[1]}${s[2]}` >= +`${p}${l}${n}`) {
|
|
245
245
|
D = L[a];
|
|
246
246
|
break;
|
|
247
247
|
}
|
|
@@ -249,49 +249,49 @@ const Ue = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPS
|
|
|
249
249
|
if (D === "24:00:00") {
|
|
250
250
|
const a = new Date(z);
|
|
251
251
|
a.setDate(a.getDate() + 1);
|
|
252
|
-
const
|
|
253
|
-
return `${
|
|
252
|
+
const s = a.getFullYear(), m = String(a.getMonth() + 1).padStart(2, "0"), b = String(a.getDate()).padStart(2, "0");
|
|
253
|
+
return `${s}-${m}-${b} 00:00:00`;
|
|
254
254
|
}
|
|
255
|
-
return `${
|
|
255
|
+
return `${c}-${u}-${M} ${D}`;
|
|
256
256
|
}
|
|
257
257
|
}
|
|
258
258
|
case "6": {
|
|
259
259
|
const L = new Date(z), T = L.getHours();
|
|
260
260
|
if (T >= 4 && T < 21) {
|
|
261
|
-
const
|
|
262
|
-
return `${
|
|
261
|
+
const c = L.getFullYear(), u = String(L.getMonth() + 1).padStart(2, "0"), M = String(L.getDate()).padStart(2, "0");
|
|
262
|
+
return `${c}-${u}-${M} 09:00:00`;
|
|
263
263
|
} else {
|
|
264
|
-
const
|
|
265
|
-
|
|
266
|
-
const u =
|
|
264
|
+
const c = new Date(z);
|
|
265
|
+
c.getHours() >= 21 && c.setDate(c.getDate() + 1);
|
|
266
|
+
const u = c.getFullYear(), M = String(c.getMonth() + 1).padStart(2, "0"), p = String(c.getDate()).padStart(2, "0"), l = `${u}-${M}-${p} 09:00:00`, n = ue(i, l, "gte");
|
|
267
267
|
return n === -1 ? l : i[n];
|
|
268
268
|
}
|
|
269
269
|
}
|
|
270
270
|
case "7": {
|
|
271
271
|
const L = new Date(z), T = new Date(L);
|
|
272
272
|
T.setDate(L.getDate() - L.getDay()), T.setHours(0, 0, 0, 0);
|
|
273
|
-
const
|
|
274
|
-
|
|
273
|
+
const c = new Date(T);
|
|
274
|
+
c.setDate(T.getDate() + 5), c.setHours(23, 59, 59, 0);
|
|
275
275
|
const u = new Date(T);
|
|
276
276
|
u.setDate(T.getDate() + 12), u.setHours(9, 0, 0, 0);
|
|
277
|
-
const M = L <=
|
|
277
|
+
const M = L <= c ? c : u, p = M.getFullYear(), l = String(M.getMonth() + 1).padStart(2, "0"), n = String(M.getDate()).padStart(2, "0");
|
|
278
278
|
return `${p}-${l}-${n} 09:00:00`;
|
|
279
279
|
}
|
|
280
280
|
case "8": {
|
|
281
|
-
const L = new Date(z), T = new Date(L.getFullYear(), L.getMonth() + 1, 1),
|
|
282
|
-
|
|
283
|
-
const u =
|
|
281
|
+
const L = new Date(z), T = new Date(L.getFullYear(), L.getMonth() + 1, 1), c = new Date(T);
|
|
282
|
+
c.setDate(T.getDate() - 1), c.setHours(9, 0, 0, 0);
|
|
283
|
+
const u = c.getFullYear(), M = String(c.getMonth() + 1).padStart(2, "0"), p = String(c.getDate()).padStart(2, "0");
|
|
284
284
|
return `${u}-${M}-${p} 09:00:00`;
|
|
285
285
|
}
|
|
286
286
|
}
|
|
287
287
|
const N = new Date(z), j = N.getFullYear(), Y = N.getMonth(), g = N.getDate(), d = N.getHours(), e = N.getMinutes(), O = N.getSeconds(), E = (L) => {
|
|
288
288
|
let T = null;
|
|
289
|
-
const
|
|
290
|
-
e % L === 0 && O === 0 ? T = e : T = (
|
|
291
|
-
const u = Math.floor(T / 60), M = d + u, p = T % 60, l = new Date(j, Y, g, M, p, 0), n = (S) => String(S).padStart(2, "0"), D = l.getFullYear(), a = n(l.getMonth() + 1),
|
|
292
|
-
return `${D}-${a}-${
|
|
289
|
+
const c = Math.floor(e / L);
|
|
290
|
+
e % L === 0 && O === 0 ? T = e : T = (c + 1) * L;
|
|
291
|
+
const u = Math.floor(T / 60), M = d + u, p = T % 60, l = new Date(j, Y, g, M, p, 0), n = (S) => String(S).padStart(2, "0"), D = l.getFullYear(), a = n(l.getMonth() + 1), s = n(l.getDate()), m = n(l.getHours()), b = n(l.getMinutes());
|
|
292
|
+
return `${D}-${a}-${s} ${m}:${b}:00`;
|
|
293
293
|
};
|
|
294
|
-
switch (
|
|
294
|
+
switch (r) {
|
|
295
295
|
case "1":
|
|
296
296
|
return E(1);
|
|
297
297
|
case "2":
|
|
@@ -301,12 +301,12 @@ const Ue = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPS
|
|
|
301
301
|
case "4":
|
|
302
302
|
return E(30);
|
|
303
303
|
default:
|
|
304
|
-
throw new Error(`Unsupported cycle: ${z} ${
|
|
304
|
+
throw new Error(`Unsupported cycle: ${z} ${r}`);
|
|
305
305
|
}
|
|
306
|
-
}, ce = (i, z,
|
|
306
|
+
}, ce = (i, z, r) => {
|
|
307
307
|
let N = null, j = null;
|
|
308
308
|
const [Y, g] = z;
|
|
309
|
-
switch (
|
|
309
|
+
switch (r) {
|
|
310
310
|
case "6": {
|
|
311
311
|
N = i.find((d) => new Date(I(d).format("YYYY-MM-DD 23:59:59")).getTime() >= new Date(Y).getTime()), j = i.findLast((d) => new Date(I(d).format("YYYY-MM-DD 00:00:00")).getTime() <= new Date(g).getTime());
|
|
312
312
|
break;
|
|
@@ -326,14 +326,14 @@ const Ue = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPS
|
|
|
326
326
|
return [N, j];
|
|
327
327
|
}, Ge = (i) => {
|
|
328
328
|
const z = [];
|
|
329
|
-
return i.reduce((
|
|
330
|
-
const j = `${N.coord[0]}+${N.label.position}`, Y = N.label.position === "top" ? -16 : 16, g =
|
|
331
|
-
return g ? (
|
|
329
|
+
return i.reduce((r, N) => {
|
|
330
|
+
const j = `${N.coord[0]}+${N.label.position}`, Y = N.label.position === "top" ? -16 : 16, g = r.get(j);
|
|
331
|
+
return g ? (r.set(j, g + 1), N.symbolOffset[1] = Y * (g + 1)) : (r.set(j, 1), N.symbolOffset[1] = N.label.position === "top" ? -7 : 7), z.push(N), r;
|
|
332
332
|
}, /* @__PURE__ */ new Map()), z;
|
|
333
|
-
}, $e = (i, z,
|
|
334
|
-
const Y = (T,
|
|
333
|
+
}, $e = (i, z, r, N, j) => {
|
|
334
|
+
const Y = (T, c) => {
|
|
335
335
|
const { direction: u = "", tradeAction: M = "", tradeType: p = "" } = T, l = p ?? u + M;
|
|
336
|
-
switch (
|
|
336
|
+
switch (c) {
|
|
337
337
|
case 0:
|
|
338
338
|
return (/* @__PURE__ */ new Map([
|
|
339
339
|
["开多", "买"],
|
|
@@ -344,18 +344,18 @@ const Ue = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPS
|
|
|
344
344
|
case 1:
|
|
345
345
|
return p ?? u + M;
|
|
346
346
|
}
|
|
347
|
-
}, g = (T,
|
|
347
|
+
}, g = (T, c, u, M) => T.reduce((p, l) => {
|
|
348
348
|
var S;
|
|
349
349
|
const n = Y(l, 0), D = T.filter((P) => P.klineTime === l.klineTime), a = [...new Set(D.map((P) => Y(P, 0)))];
|
|
350
|
-
let
|
|
351
|
-
a.length > 1 ?
|
|
352
|
-
const m = ue(u, l.klineTime),
|
|
353
|
-
return
|
|
350
|
+
let s = null;
|
|
351
|
+
a.length > 1 ? s = "image://" + new URL("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNjgzNzAzMjI4MjAyIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjMwNzgiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTE5OC4wMTYgMTA5LjczODY2N0E3Ny44NjY2NjcgNzcuODY2NjY3IDAgMCAwIDE3MC42NjY2NjcgMTY3LjY4bDAuNTEyIDQxOC45NDRjMCAyMi44NjkzMzMgNi40IDQ4IDE5LjAyOTMzMyA3NS4zMDY2NjcgMTIuNjcyIDI3LjIyMTMzMyAyNy45ODkzMzMgNDguOTM4NjY3IDQ1Ljk1MiA2NC45Mzg2NjZsMjExLjE1NzMzMyAxODguMjAyNjY3YzE3LjA2NjY2NyAxNS40ODggNDAuNTc2IDIzLjk3ODY2NyA2NC45Mzg2NjcgMjMuNTk0NjY3IDI1LjY4NTMzMy0wLjA4NTMzMyA0Ny4zNi03LjkzNiA2NC45ODEzMzMtMjMuNTk0NjY3bDIxMS4yLTE4OC4yMDI2NjdjMTcuOTItMTYgMzMuMTk0NjY3LTM3LjYzMiA0NS44NjY2NjctNjQuOTM4NjY2IDEyLjY3Mi0yNy4zMDY2NjcgMTguNzczMzMzLTUyLjIyNCAxOC41MTczMzMtNzQuOTIyNjY3TDg1My4zMzMzMzMgMTY3LjI1MzMzM2MwLTIyLjI3Mi04Ljk2LTQxLjQ3Mi0yNi44MzczMzMtNTcuNDcyLTE3LjU3ODY2Ny0xNS42MTYtMzkuMzM4NjY3LTIzLjg5MzMzMy02NC45Mzg2NjctMjQuNDA1MzMzbC00OTkuMDI5MzMzIDAuNDY5MzMzYTkzLjMxMiA5My4zMTIgMCAwIDAtNjQuNTEyIDIzLjg5MzMzNHoiIGZpbGw9IiNDODgwRkYiIHAtaWQ9IjMwNzkiPjwvcGF0aD48cGF0aCBkPSJNMTcwLjY2NjY2NyAxNjcuNjhjMC4xMjgtMjEuNzYgOS45NDEzMzMtNDIuNjY2NjY3IDI3LjM0OTMzMy01Ny45NDEzMzNhOTMuMzEyIDkzLjMxMiAwIDAgMSA2NC41MTItMjMuODkzMzM0TDc2MS41NTczMzMgODUuMzMzMzMzYzI1LjYgMC41NTQ2NjcgNDcuMzYgOC43ODkzMzMgNjQuOTM4NjY3IDI0LjQwNTMzNCAxNy45MiAxNiAyNi44MzczMzMgMzUuMiAyNi44MzczMzMgNTcuNDcybC0wLjUxMiA0MTkuODRjMC4yOTg2NjcgMjIuNjU2LTUuODQ1MzMzIDQ3LjYxNi0xOC41MTczMzMgNzQuODgtMTIuNjcyIDI3LjMwNjY2Ny0yNy45NDY2NjcgNDguOTM4NjY3LTQ1Ljg2NjY2NyA2NC45Mzg2NjZsLTIxMS4yIDE4OC4yMDI2NjdjLTE3LjYyMTMzMyAxNS42NTg2NjctMzkuMjUzMzMzIDIzLjUwOTMzMy02NC45ODEzMzMgMjMuNTk0NjY3YTk0LjcyIDk0LjcyIDAgMCAxLTY0LjkzODY2Ny0yMy41OTQ2NjdsLTIxMS4yLTE4OC4yMDI2NjdjLTE3LjkyLTE2LTMzLjIzNzMzMy0zNy43MTczMzMtNDUuOTA5MzMzLTY0LjkzODY2Ni0xMi42MjkzMzMtMjcuMzA2NjY3LTE5LjAyOTMzMy01Mi40MzczMzMtMTkuMDI5MzMzLTc1LjMwNjY2N0wxNzAuNjY2NjY3IDE2Ny42OHogbTQyLjYyNCAwLjI1NmwwLjU1NDY2NiA0MTguNjg4YzAgMTYuMTcwNjY3IDQuODY0IDM1LjMyOCAxNS4wNjEzMzQgNTcuMzQ0IDEwLjM2OCAyMi4yNzIgMjIuMzE0NjY3IDM5LjE2OCAzNS42MjY2NjYgNTEuMDI5MzMzbDIxMS40MTMzMzQgMTg4LjQxNmM4Ljk2IDguMTA2NjY3IDIxLjg4OCAxMi44IDM2LjIyNCAxMi41ODY2NjcgMTUuNTMwNjY3LTAuMDQyNjY3IDI3LjA5MzMzMy00LjI2NjY2NyAzNi42OTMzMzMtMTIuOGwyMTEuMTE0NjY3LTE4OC4xNmMxMy4zNTQ2NjctMTEuOTQ2NjY3IDI1LjMwMTMzMy0yOC44NDI2NjcgMzUuNjI2NjY2LTUxLjA3MiAxMC4xMTItMjEuNzYgMTQuNzYyNjY3LTQwLjUzMzMzMyAxNC41MDY2NjctNTcuMDAyNjY3TDgxMC42NjY2NjcgMTY3LjIxMDY2N2MwLTkuODk4NjY3LTMuNTg0LTE3LjYyMTMzMy0xMi41MDEzMzQtMjUuNkE1NC42OTg2NjcgNTQuNjk4NjY3IDAgMCAwIDc2MS42IDEyOGwtNDk5LjYyNjY2NyAwLjQ2OTMzM2E1MS4zMjggNTEuMzI4IDAgMCAwLTM1Ljc1NDY2NiAxMy4yNjkzMzQgMzYuNTY1MzMzIDM2LjU2NTMzMyAwIDAgMC0xMi41MDEzMzQgMjEuNTA0bC0wLjQyNjY2NiA0LjY5MzMzM3oiIGZpbGw9IiNBRTQ0RkYiIHAtaWQ9IjMwODAiPjwvcGF0aD48cGF0aCBkPSJNNDc1LjMwNjY2NyA2NTguMjE4NjY3aDczLjQ3MlYzMDYuMzg5MzMzaDExNi40OFYyNDguNDQ4aC0zMDcuNjI2NjY3djU3Ljk0MTMzM2gxMTcuNjc0NjY3eiIgZmlsbD0iI0ZGRkZGRiIgcC1pZD0iMzA4MSI+PC9wYXRoPjwvc3ZnPg==", self.location).href : s = "image://" + new URL((/* @__PURE__ */ Object.assign({ "./images/buy.svg": Ue, "./images/sell.svg": Fe, "./images/t.svg": Ve }))[`./images/${n === "买" ? "buy" : "sell"}.svg`], self.location).href;
|
|
352
|
+
const m = ue(u, l.klineTime), b = (S = M[m]) == null ? void 0 : S[3];
|
|
353
|
+
return c.forEach((P) => {
|
|
354
354
|
var B;
|
|
355
355
|
const K = n === "买" ? 0 : 1;
|
|
356
356
|
P.range[K] === l.klineTime && (P.rangeValue[K] = (B = M[m]) == null ? void 0 : B[n === "买" ? 2 : 3]);
|
|
357
357
|
}), p.push({
|
|
358
|
-
symbol:
|
|
358
|
+
symbol: s,
|
|
359
359
|
symbolSize: 25,
|
|
360
360
|
symbolRotate: 0,
|
|
361
361
|
symbolOffset: [0, 0],
|
|
@@ -363,7 +363,7 @@ const Ue = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPS
|
|
|
363
363
|
show: !1,
|
|
364
364
|
position: "top"
|
|
365
365
|
},
|
|
366
|
-
coord: [l.klineTime,
|
|
366
|
+
coord: [l.klineTime, b],
|
|
367
367
|
silent: !0,
|
|
368
368
|
animation: !1,
|
|
369
369
|
customData: {
|
|
@@ -380,10 +380,10 @@ const Ue = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPS
|
|
|
380
380
|
// 收仓价
|
|
381
381
|
}
|
|
382
382
|
}), p;
|
|
383
|
-
}, []), d = (T,
|
|
384
|
-
var
|
|
385
|
-
const D = Y(l, 1), a = ["开多", "开空"].includes(D) ? "top" : "bottom",
|
|
386
|
-
return
|
|
383
|
+
}, []), d = (T, c, u, M) => T.reduce((p, l, n) => {
|
|
384
|
+
var b, S;
|
|
385
|
+
const D = Y(l, 1), a = ["开多", "开空"].includes(D) ? "top" : "bottom", s = ue(u, l.klineTime), m = a === "top" ? (b = M[s]) == null ? void 0 : b[3] : (S = M[s]) == null ? void 0 : S[2];
|
|
386
|
+
return c.forEach((P) => {
|
|
387
387
|
(a === "top" ? P.range[0] : P.range[1]) === l.klineTime && (P.rangeValue[a === "top" ? 0 : 1] = m);
|
|
388
388
|
}), p.push({
|
|
389
389
|
symbol: "triangle",
|
|
@@ -414,54 +414,54 @@ const Ue = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPS
|
|
|
414
414
|
// 收仓价
|
|
415
415
|
}
|
|
416
416
|
}), p;
|
|
417
|
-
}, []), e = (T,
|
|
417
|
+
}, []), e = (T, c, u) => {
|
|
418
418
|
const { basePointData: M, baseLineData: p } = T.reduce(
|
|
419
|
-
(a,
|
|
419
|
+
(a, s) => {
|
|
420
420
|
const m = {
|
|
421
|
-
pointTime:
|
|
421
|
+
pointTime: s.openTime,
|
|
422
422
|
// 交易点位的真实时间
|
|
423
|
-
klineTime: je(u,
|
|
423
|
+
klineTime: je(u, s.openTime, c),
|
|
424
424
|
// 交易点位的K线时间
|
|
425
425
|
tradeAction: "开",
|
|
426
426
|
// 交易行为
|
|
427
|
-
tradeDirection:
|
|
427
|
+
tradeDirection: s.tradeDirection ? "空" : "多",
|
|
428
428
|
// 交易方向 1:空, 0:多
|
|
429
|
-
tradeType: `开${
|
|
429
|
+
tradeType: `开${s.tradeDirection ? "空" : "多"}`,
|
|
430
430
|
part: null,
|
|
431
431
|
// 份数,
|
|
432
|
-
amount:
|
|
432
|
+
amount: s.tradeVolume,
|
|
433
433
|
// 手数
|
|
434
|
-
profitAndLoss:
|
|
434
|
+
profitAndLoss: s.profitAndLoss,
|
|
435
435
|
// 盈亏
|
|
436
|
-
openPriceAll:
|
|
436
|
+
openPriceAll: s.openPrice * s.tradeVolume,
|
|
437
437
|
// 开仓价格
|
|
438
|
-
closePriceAll:
|
|
438
|
+
closePriceAll: s.closePrice * s.tradeVolume
|
|
439
439
|
// 平仓价格
|
|
440
|
-
},
|
|
441
|
-
pointTime:
|
|
440
|
+
}, b = {
|
|
441
|
+
pointTime: s.closeTime,
|
|
442
442
|
// 交易点位的真实时间
|
|
443
|
-
klineTime: je(u,
|
|
443
|
+
klineTime: je(u, s.closeTime, c),
|
|
444
444
|
// 交易点位的K线时间
|
|
445
445
|
tradeAction: "平",
|
|
446
446
|
// 交易行为
|
|
447
|
-
tradeDirection:
|
|
447
|
+
tradeDirection: s.tradeDirection ? "空" : "多",
|
|
448
448
|
// 交易方向 1:空, 0:多
|
|
449
|
-
tradeType: `平${
|
|
449
|
+
tradeType: `平${s.tradeDirection ? "空" : "多"}`,
|
|
450
450
|
part: null,
|
|
451
451
|
// 份数,
|
|
452
|
-
amount:
|
|
452
|
+
amount: s.tradeVolume,
|
|
453
453
|
// 手数
|
|
454
|
-
profitAndLoss:
|
|
454
|
+
profitAndLoss: s.profitAndLoss,
|
|
455
455
|
// 盈亏
|
|
456
|
-
openPriceAll:
|
|
456
|
+
openPriceAll: s.openPrice * s.tradeVolume,
|
|
457
457
|
// 开仓价格
|
|
458
|
-
closePriceAll:
|
|
458
|
+
closePriceAll: s.closePrice * s.tradeVolume
|
|
459
459
|
// 平仓价格
|
|
460
460
|
};
|
|
461
|
-
return a.basePointData.push(m,
|
|
462
|
-
range: [m.klineTime,
|
|
461
|
+
return a.basePointData.push(m, b), a.baseLineData.push({
|
|
462
|
+
range: [m.klineTime, b.klineTime],
|
|
463
463
|
rangeValue: [null, null],
|
|
464
|
-
color:
|
|
464
|
+
color: b.profitAndLoss > 0 ? "#FF0000" : "#389e0d"
|
|
465
465
|
}), a;
|
|
466
466
|
},
|
|
467
467
|
{
|
|
@@ -470,52 +470,52 @@ const Ue = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPS
|
|
|
470
470
|
baseLineData: []
|
|
471
471
|
// 连线数据
|
|
472
472
|
}
|
|
473
|
-
), n = [...M.reduce((a,
|
|
474
|
-
const m = JSON.parse(JSON.stringify(
|
|
475
|
-
if (a.has(
|
|
476
|
-
const S = a.get(
|
|
473
|
+
), n = [...M.reduce((a, s) => {
|
|
474
|
+
const m = JSON.parse(JSON.stringify(s)), b = m.klineTime + m.tradeType;
|
|
475
|
+
if (a.has(b)) {
|
|
476
|
+
const S = a.get(b);
|
|
477
477
|
m.amount += S.amount, m.part += S.part, m.profitAndLoss += S.profitAndLoss, m.openPriceAll += S.openPriceAll, m.closePriceAll += S.closePriceAll;
|
|
478
478
|
}
|
|
479
|
-
return a.set(
|
|
480
|
-
}, /* @__PURE__ */ new Map([])).values()].sort((a,
|
|
479
|
+
return a.set(b, m), a;
|
|
480
|
+
}, /* @__PURE__ */ new Map([])).values()].sort((a, s) => new Date(a.klineTime) - new Date(s.klineTime)), D = p.filter(({ range: a }) => a[0] !== a[1]);
|
|
481
481
|
return { pointData: n, lineData: D };
|
|
482
482
|
}, { pointData: O, lineData: E } = e(i, z, N);
|
|
483
483
|
return {
|
|
484
|
-
tradePointData: (
|
|
485
|
-
tradeLineData: E.map(({ range: T, rangeValue:
|
|
484
|
+
tradePointData: (r === 0 ? g : d)(O, E, N, j),
|
|
485
|
+
tradeLineData: E.map(({ range: T, rangeValue: c, color: u }) => [
|
|
486
486
|
{
|
|
487
487
|
symbol: "none",
|
|
488
|
-
coord: [T[0],
|
|
488
|
+
coord: [T[0], c[0]],
|
|
489
489
|
lineStyle: { color: u, width: 2, type: "solid" },
|
|
490
490
|
silent: !0,
|
|
491
491
|
animation: !1
|
|
492
492
|
},
|
|
493
493
|
{
|
|
494
494
|
symbol: "none",
|
|
495
|
-
coord: [T[1],
|
|
495
|
+
coord: [T[1], c[1]],
|
|
496
496
|
silent: !0,
|
|
497
497
|
animation: !1
|
|
498
498
|
}
|
|
499
499
|
])
|
|
500
500
|
};
|
|
501
501
|
}, We = (i, z) => {
|
|
502
|
-
let
|
|
502
|
+
let r = [];
|
|
503
503
|
if (Number(z) <= 5)
|
|
504
|
-
|
|
504
|
+
r = i.map(({ tradeDate: N, netPositionValue: j }) => [I(N).format("YYYY-MM-DD HH:mm:ss"), j]);
|
|
505
505
|
else if (Number(z) === 6) {
|
|
506
506
|
const N = i.reduce((j, Y) => {
|
|
507
507
|
const { tradeDate: g, netPositionValue: d } = Y;
|
|
508
508
|
return j.set(I(g).format("YYYY-MM-DD 09:00:00"), d), j;
|
|
509
509
|
}, /* @__PURE__ */ new Map());
|
|
510
|
-
|
|
510
|
+
r = Array.from(N, ([j, Y]) => [j, Y]);
|
|
511
511
|
} else
|
|
512
|
-
|
|
513
|
-
return { netPositionLineData:
|
|
514
|
-
}, Je = (i, z,
|
|
512
|
+
r = [];
|
|
513
|
+
return { netPositionLineData: r };
|
|
514
|
+
}, Je = (i, z, r, N) => {
|
|
515
515
|
let j = [];
|
|
516
516
|
if (["6", "7", "8"].includes(z)) {
|
|
517
517
|
const Y = i.reduce((g, d) => {
|
|
518
|
-
const e = je(N, d.date, z), O = d[
|
|
518
|
+
const e = je(N, d.date, z), O = d[r === 0 ? "simple" : "compound"];
|
|
519
519
|
return g.set(e, O), g;
|
|
520
520
|
}, /* @__PURE__ */ new Map());
|
|
521
521
|
j = Array.from(Y, ([g, d]) => [g, d]);
|
|
@@ -532,7 +532,7 @@ const Ke = { class: "tips" }, qe = {
|
|
|
532
532
|
}
|
|
533
533
|
},
|
|
534
534
|
setup(i) {
|
|
535
|
-
return (z,
|
|
535
|
+
return (z, r) => (F(), _("div", Ke, [
|
|
536
536
|
(F(!0), _(me, null, Ae(i.data, (N, j) => (F(), _("span", {
|
|
537
537
|
key: j,
|
|
538
538
|
class: "item",
|
|
@@ -551,9 +551,9 @@ const Xe = {
|
|
|
551
551
|
// 品种市场类型: 0-期货, 1-股票, 2-期权
|
|
552
552
|
varietyStock: { type: Number, required: !0 },
|
|
553
553
|
// 复权选项 [股票]
|
|
554
|
-
rightType: { type: Number,
|
|
554
|
+
rightType: { type: [Number, null], default: null },
|
|
555
555
|
// 常用选项 [期货]
|
|
556
|
-
klineType: { type: Number,
|
|
556
|
+
klineType: { type: [Number, null], default: null },
|
|
557
557
|
// 业务系统相关
|
|
558
558
|
deleteFirstNumber: { type: Number, default: 1 },
|
|
559
559
|
// 绩效标记
|
|
@@ -561,55 +561,44 @@ const Xe = {
|
|
|
561
561
|
// 三方标记(不需要token授权)
|
|
562
562
|
},
|
|
563
563
|
emits: ["change"],
|
|
564
|
-
setup(i, { expose: z, emit:
|
|
564
|
+
setup(i, { expose: z, emit: r }) {
|
|
565
565
|
const { request: N } = we("stConfig");
|
|
566
566
|
let j = null;
|
|
567
|
-
const Y = U(null), g =
|
|
567
|
+
const Y = U(null), g = r, d = i, e = U({
|
|
568
568
|
data: [],
|
|
569
569
|
// <[开 收 低 高 成交额 涨跌值 涨跌百分比]>
|
|
570
570
|
mainIndicator: [],
|
|
571
571
|
subIndicator: [],
|
|
572
572
|
time: []
|
|
573
573
|
}), O = async () => {
|
|
574
|
-
const
|
|
574
|
+
const c = {
|
|
575
575
|
varietyCode: d.varietyCode,
|
|
576
576
|
cycle: "6",
|
|
577
|
+
right: d.varietyStock === 1 ? d.rightType : 0,
|
|
578
|
+
// 复权方式
|
|
579
|
+
contractType: d.varietyStock ? null : d.klineType,
|
|
580
|
+
// 合约类型
|
|
577
581
|
startTime: "1999-01-01 00:00:00",
|
|
578
582
|
endTime: I().format("YYYY-MM-DD 23:59:59"),
|
|
579
583
|
deleteFirstNumber: d.deleteFirstNumber,
|
|
580
584
|
withoutPermission: d.withoutPermission
|
|
581
|
-
};
|
|
582
|
-
switch (d.varietyStock) {
|
|
583
|
-
case 0: {
|
|
584
|
-
Object.assign(s, {
|
|
585
|
-
contractType: d.klineType
|
|
586
|
-
});
|
|
587
|
-
break;
|
|
588
|
-
}
|
|
589
|
-
case 1: {
|
|
590
|
-
Object.assign(s, {
|
|
591
|
-
right: d.rightType
|
|
592
|
-
});
|
|
593
|
-
break;
|
|
594
|
-
}
|
|
595
|
-
}
|
|
596
|
-
const { body: u } = await N.post("/middleLayer/kline/getKline", s);
|
|
585
|
+
}, { body: u } = await N.post("/middleLayer/kline/getKline", c);
|
|
597
586
|
u ? e.value = u : e.value = { data: [], mainIndicator: [], subIndicator: [], time: [] }, T("init");
|
|
598
|
-
}, E = ae((
|
|
599
|
-
if (!
|
|
587
|
+
}, E = ae((c) => {
|
|
588
|
+
if (!c.dataZoomId)
|
|
600
589
|
return;
|
|
601
590
|
const u = j.getOption();
|
|
602
591
|
if (u != null && u.dataZoom[0]) {
|
|
603
592
|
const { startValue: M, endValue: p } = j.getOption().dataZoom[0], { time: l } = e.value, n = `${l[M].split(" ")[0]} 00:00:00`, D = `${l[p].split(" ")[0]} 23:59:59`;
|
|
604
593
|
console.log(`检测到拖拽轴被拖动, 时间区间: ${n} - ${D}`), g("change", { startTime: n, endTime: D });
|
|
605
594
|
}
|
|
606
|
-
}, 200), L = ae(({ startTime:
|
|
607
|
-
T("reset", { startTime:
|
|
608
|
-
}, 100), T = (
|
|
609
|
-
switch (
|
|
595
|
+
}, 200), L = ae(({ startTime: c, endTime: u }) => {
|
|
596
|
+
T("reset", { startTime: c, endTime: u });
|
|
597
|
+
}, 100), T = (c, u) => {
|
|
598
|
+
switch (c) {
|
|
610
599
|
case "init": {
|
|
611
600
|
const { data: M, time: p } = e.value, { xAxisData: l, lineData: n } = M.reduce(
|
|
612
|
-
(a,
|
|
601
|
+
(a, s, m) => (a.xAxisData.push(p[m].split(" ")[0]), a.lineData.push(s[1]), a),
|
|
613
602
|
{ xAxisData: [], lineData: [] }
|
|
614
603
|
), D = {
|
|
615
604
|
grid: {
|
|
@@ -648,8 +637,8 @@ const Xe = {
|
|
|
648
637
|
]
|
|
649
638
|
};
|
|
650
639
|
if (j.setOption(D, !0), d.screenTimeRange.length) {
|
|
651
|
-
const [a,
|
|
652
|
-
L({ startTime: a, endTime:
|
|
640
|
+
const [a, s] = d.screenTimeRange;
|
|
641
|
+
L({ startTime: a, endTime: s });
|
|
653
642
|
}
|
|
654
643
|
break;
|
|
655
644
|
}
|
|
@@ -657,10 +646,10 @@ const Xe = {
|
|
|
657
646
|
const { time: M } = e.value, p = I(u.startTime).format("YYYY-MM-DD"), l = I(u.endTime).format("YYYY-MM-DD");
|
|
658
647
|
let n = -1, D = -1;
|
|
659
648
|
for (let a = 0; a < M.length; a++) {
|
|
660
|
-
const
|
|
649
|
+
const s = I(M[a]).format("YYYY-MM-DD");
|
|
661
650
|
if (n !== -1 && D !== -1)
|
|
662
651
|
break;
|
|
663
|
-
n === -1 && (new Date(
|
|
652
|
+
n === -1 && (new Date(s) === new Date(p) ? n = a : new Date(s) > new Date(p) && (n = a - 1)), D === -1 && (new Date(s) === new Date(l) ? D = a : new Date(s) > new Date(l) && (D = a - 1));
|
|
664
653
|
}
|
|
665
654
|
D === -1 && (D = M.length - 1), j.dispatchAction({
|
|
666
655
|
type: "dataZoom",
|
|
@@ -673,12 +662,12 @@ const Xe = {
|
|
|
673
662
|
};
|
|
674
663
|
return pe(() => {
|
|
675
664
|
Se(() => {
|
|
676
|
-
j =
|
|
665
|
+
j = se.init(Y.value), j.on("datazoom", E), O();
|
|
677
666
|
});
|
|
678
667
|
}), te(
|
|
679
668
|
() => d.screenTimeRange,
|
|
680
|
-
(
|
|
681
|
-
const [u, M] =
|
|
669
|
+
(c) => {
|
|
670
|
+
const [u, M] = c;
|
|
682
671
|
L({ startTime: u, endTime: M });
|
|
683
672
|
},
|
|
684
673
|
{ deep: !0 }
|
|
@@ -686,23 +675,23 @@ const Xe = {
|
|
|
686
675
|
j.off("datazoom"), j.dispose();
|
|
687
676
|
}), z({
|
|
688
677
|
resize: ae(() => j.resize(), 100)
|
|
689
|
-
}), (
|
|
678
|
+
}), (c, u) => (F(), _("div", {
|
|
690
679
|
class: "chart",
|
|
691
680
|
ref_key: "sliderChartRef",
|
|
692
681
|
ref: Y
|
|
693
682
|
}, null, 512));
|
|
694
683
|
}
|
|
695
|
-
}, et = /* @__PURE__ */ ze(Xe, [["__scopeId", "data-v-
|
|
684
|
+
}, et = /* @__PURE__ */ ze(Xe, [["__scopeId", "data-v-0c715da1"]]);
|
|
696
685
|
const tt = { class: "main-chart" }, Mt = { class: "indicator" }, at = {
|
|
697
686
|
key: 0,
|
|
698
687
|
class: "screen-time-range"
|
|
699
688
|
}, it = {
|
|
700
689
|
key: 0,
|
|
701
690
|
class: "sub-chart"
|
|
702
|
-
}, nt = { class: "indicator" }, ot = { class: "title" },
|
|
691
|
+
}, nt = { class: "indicator" }, ot = { class: "title" }, Nt = {
|
|
703
692
|
key: 1,
|
|
704
693
|
class: "slider-chart"
|
|
705
|
-
},
|
|
694
|
+
}, st = {
|
|
706
695
|
__name: "index",
|
|
707
696
|
props: {
|
|
708
697
|
varietyCode: { type: String, required: !0 },
|
|
@@ -715,9 +704,9 @@ const tt = { class: "main-chart" }, Mt = { class: "indicator" }, at = {
|
|
|
715
704
|
// 交互选项
|
|
716
705
|
cycle: { type: String, required: !0 },
|
|
717
706
|
sellBuy: { type: Number, default: 1 },
|
|
718
|
-
rightType: { type: Number, default: null },
|
|
707
|
+
rightType: { type: [Number, null], default: null },
|
|
719
708
|
// 复权类型
|
|
720
|
-
klineType: { type: Number, default: null },
|
|
709
|
+
klineType: { type: [Number, null], default: null },
|
|
721
710
|
// 合约类型
|
|
722
711
|
incomeType: { type: Number, default: 0 },
|
|
723
712
|
// 收益计算类型 0-单利, 1-复利
|
|
@@ -741,14 +730,14 @@ const tt = { class: "main-chart" }, Mt = { class: "indicator" }, at = {
|
|
|
741
730
|
// 三方标记(不需要token授权)
|
|
742
731
|
},
|
|
743
732
|
setup(i, { expose: z }) {
|
|
744
|
-
const { round:
|
|
745
|
-
let O = !1, E = !1, L = !1, T = !1,
|
|
733
|
+
const { round: r, formatValue: N } = fe, { request: j } = we("stConfig"), Y = U(), g = U(!1), d = U(!1), e = i;
|
|
734
|
+
let O = !1, E = !1, L = !1, T = !1, c = null, u = null, M = null;
|
|
746
735
|
const p = U(null), l = U(null), n = U({
|
|
747
736
|
data: [],
|
|
748
737
|
mainIndicator: [],
|
|
749
738
|
subIndicator: [],
|
|
750
739
|
time: []
|
|
751
|
-
}), D = U(0), a = U([]),
|
|
740
|
+
}), D = U(0), a = U([]), s = U(null), m = U("VOL"), b = re(() => {
|
|
752
741
|
const t = n.value.data[D.value];
|
|
753
742
|
if (!t)
|
|
754
743
|
return [
|
|
@@ -760,22 +749,22 @@ const tt = { class: "main-chart" }, Mt = { class: "indicator" }, at = {
|
|
|
760
749
|
{ label: "涨跌", value: "-" }
|
|
761
750
|
];
|
|
762
751
|
const o = [
|
|
763
|
-
{ label: "开", value:
|
|
764
|
-
{ label: "高", value:
|
|
765
|
-
{ label: "低", value:
|
|
766
|
-
{ label: "收", value:
|
|
752
|
+
{ label: "开", value: r(t[0]) },
|
|
753
|
+
{ label: "高", value: r(t[3]) },
|
|
754
|
+
{ label: "低", value: r(t[2]) },
|
|
755
|
+
{ label: "收", value: r(t[1]) }
|
|
767
756
|
];
|
|
768
757
|
t[4] !== null && o.push({ label: "额", value: N(t[4]) });
|
|
769
758
|
let y;
|
|
770
|
-
return t[6] > 0 ? y = "red" : t[6] < 0 && (y = "green"), o.push({ label: "涨跌", value: `${
|
|
759
|
+
return t[6] > 0 ? y = "red" : t[6] < 0 && (y = "green"), o.push({ label: "涨跌", value: `${r(t[6])}%`, color: y }), o;
|
|
771
760
|
}), S = re(() => {
|
|
772
761
|
var t, o;
|
|
773
|
-
return ((o = (t = n.value) == null ? void 0 : t.mainIndicator) == null ? void 0 : o.map((y) => ({ label: y.key, value:
|
|
762
|
+
return ((o = (t = n.value) == null ? void 0 : t.mainIndicator) == null ? void 0 : o.map((y) => ({ label: y.key, value: r(y.data[D.value]), color: y.color }))) || [];
|
|
774
763
|
}), P = re(() => {
|
|
775
764
|
var t, o;
|
|
776
765
|
return ((o = (t = n.value) == null ? void 0 : t.subIndicator) == null ? void 0 : o.map((y) => ({ label: y.key, color: y.color, value: y.data[D.value] || "-" }))) || [];
|
|
777
766
|
}), K = () => {
|
|
778
|
-
M || (M =
|
|
767
|
+
M || (M = se.init(l.value), M.on(
|
|
779
768
|
"highlight",
|
|
780
769
|
ae((t) => {
|
|
781
770
|
var o;
|
|
@@ -793,8 +782,8 @@ const tt = { class: "main-chart" }, Mt = { class: "indicator" }, at = {
|
|
|
793
782
|
D.value = t.dataZoom[0].endValue;
|
|
794
783
|
}), M.getZr().on("contextmenu", () => {
|
|
795
784
|
var t;
|
|
796
|
-
|
|
797
|
-
}), window.addEventListener("keydown", De), e.userKlineConfig.enable_subChart && (u =
|
|
785
|
+
s.value = (t = n.value) == null ? void 0 : t.time[D.value];
|
|
786
|
+
}), window.addEventListener("keydown", De), e.userKlineConfig.enable_subChart && (u = se.init(p.value), se.connect([M, u])), c = Re(l.value), c.listen(() => {
|
|
798
787
|
requestAnimationFrame(() => {
|
|
799
788
|
var t;
|
|
800
789
|
M.resize(), u == null || u.resize(), (t = Y.value) == null || t.resize();
|
|
@@ -808,7 +797,7 @@ const tt = { class: "main-chart" }, Mt = { class: "indicator" }, at = {
|
|
|
808
797
|
varietyCode: e.varietyCode,
|
|
809
798
|
cycle: e.cycle,
|
|
810
799
|
// 周期
|
|
811
|
-
right: e.rightType,
|
|
800
|
+
right: e.varietyStock === 1 ? e.rightType : 0,
|
|
812
801
|
// 复权方式
|
|
813
802
|
contractType: e.varietyStock ? null : e.klineType,
|
|
814
803
|
// 合约类型
|
|
@@ -852,7 +841,8 @@ const tt = { class: "main-chart" }, Mt = { class: "indicator" }, at = {
|
|
|
852
841
|
const V = {
|
|
853
842
|
varietyCode: e.varietyCode,
|
|
854
843
|
cycle: e.cycle,
|
|
855
|
-
right: e.rightType,
|
|
844
|
+
right: e.varietyStock === 1 ? e.rightType : 0,
|
|
845
|
+
// 复权方式
|
|
856
846
|
contractType: e.varietyStock ? null : e.klineType,
|
|
857
847
|
endTime: n.value.time[0],
|
|
858
848
|
limit: o,
|
|
@@ -870,7 +860,7 @@ const tt = { class: "main-chart" }, Mt = { class: "indicator" }, at = {
|
|
|
870
860
|
varietyCode: e.varietyCode,
|
|
871
861
|
cycle: e.cycle,
|
|
872
862
|
// 周期
|
|
873
|
-
right: e.rightType,
|
|
863
|
+
right: e.varietyStock === 1 ? e.rightType : 0,
|
|
874
864
|
// 复权方式
|
|
875
865
|
contractType: e.varietyStock ? null : e.klineType,
|
|
876
866
|
// 合约类型
|
|
@@ -940,24 +930,24 @@ const tt = { class: "main-chart" }, Mt = { class: "indicator" }, at = {
|
|
|
940
930
|
label: {
|
|
941
931
|
rich: {},
|
|
942
932
|
formatter: (f) => {
|
|
943
|
-
const { axisDimension:
|
|
944
|
-
return
|
|
933
|
+
const { axisDimension: h, value: k } = f;
|
|
934
|
+
return h === "x" ? ["6", "7", "8"].includes(e.cycle) ? I(k).format("YYYY-MM-DD") : k : String(r(k));
|
|
945
935
|
}
|
|
946
936
|
}
|
|
947
937
|
},
|
|
948
938
|
formatter: (f) => {
|
|
949
939
|
if (!(f != null && f.length))
|
|
950
940
|
return null;
|
|
951
|
-
let
|
|
941
|
+
let h = "";
|
|
952
942
|
if (f.forEach((v) => {
|
|
953
|
-
if (v.seriesName === "netPosition" && v.data !== null && (
|
|
943
|
+
if (v.seriesName === "netPosition" && v.data !== null && (h += `<div>资产持仓净值: ${v.data[1]}</div>`), v.componentSubType === "candlestick")
|
|
954
944
|
if (e.sellBuy === 0) {
|
|
955
945
|
const J = R.filter((H) => (H == null ? void 0 : H.coord[0]) === v.axisValue);
|
|
956
946
|
let G = 0, Z = 0;
|
|
957
947
|
J.forEach((H) => {
|
|
958
948
|
const { tradeType: q, amount: oe } = H.customData;
|
|
959
949
|
q === "买" && (G += oe), q === "卖" && (Z += oe);
|
|
960
|
-
}), G && (
|
|
950
|
+
}), G && (h += `<div>买: ${G}</div>`), Z && (h += `<div>卖: ${Z}</div>`);
|
|
961
951
|
} else
|
|
962
952
|
R.forEach((J) => {
|
|
963
953
|
if ((J == null ? void 0 : J.coord[0]) === v.axisValue) {
|
|
@@ -967,16 +957,16 @@ const tt = { class: "main-chart" }, Mt = { class: "indicator" }, at = {
|
|
|
967
957
|
const Te = (q / Z).toFixed(2), ge = (oe / Z).toFixed(2);
|
|
968
958
|
X += `<div>平仓价: ${ge}</div>`, X += `<div>盈亏: ${H == null ? void 0 : H.toFixed(2)}</div>`, X += `<div>盈亏比率: ${((ge - Te) / Te * 100).toFixed(2)} %</div>`;
|
|
969
959
|
}
|
|
970
|
-
|
|
960
|
+
h += X;
|
|
971
961
|
}
|
|
972
962
|
});
|
|
973
|
-
}), !
|
|
963
|
+
}), !h)
|
|
974
964
|
return null;
|
|
975
965
|
let k = f[0].axisValue;
|
|
976
966
|
return ["6", "7", "8"].includes(e.cycle) && (k = I(k).format("YYYY-MM-DD")), `
|
|
977
967
|
<div>
|
|
978
968
|
<span style="font-weight: bold;">${k}</span>
|
|
979
|
-
${
|
|
969
|
+
${h}
|
|
980
970
|
</div>
|
|
981
971
|
`;
|
|
982
972
|
}
|
|
@@ -1006,19 +996,19 @@ const tt = { class: "main-chart" }, Mt = { class: "indicator" }, at = {
|
|
|
1006
996
|
}
|
|
1007
997
|
},
|
|
1008
998
|
min: (f) => {
|
|
1009
|
-
const { min:
|
|
1010
|
-
return
|
|
999
|
+
const { min: h, max: k } = f, v = Math.abs((k - h) / 10);
|
|
1000
|
+
return r(h - v);
|
|
1011
1001
|
},
|
|
1012
|
-
max: (f) =>
|
|
1002
|
+
max: (f) => r(f.max)
|
|
1013
1003
|
},
|
|
1014
1004
|
{
|
|
1015
1005
|
show: !1,
|
|
1016
1006
|
min: (f) => {
|
|
1017
|
-
const { min:
|
|
1018
|
-
return
|
|
1007
|
+
const { min: h, max: k } = f, v = Math.abs((k - h) / 10);
|
|
1008
|
+
return h - v;
|
|
1019
1009
|
},
|
|
1020
1010
|
max: (f) => {
|
|
1021
|
-
const { min:
|
|
1011
|
+
const { min: h, max: k } = f, v = Math.abs((k - h) / 10);
|
|
1022
1012
|
return k + v;
|
|
1023
1013
|
}
|
|
1024
1014
|
}
|
|
@@ -1091,7 +1081,7 @@ const tt = { class: "main-chart" }, Mt = { class: "indicator" }, at = {
|
|
|
1091
1081
|
{
|
|
1092
1082
|
const f = [];
|
|
1093
1083
|
if (e.userKlineConfig.enable_tradeLogBrush && R.length) {
|
|
1094
|
-
const [
|
|
1084
|
+
const [h, k] = [R[0].coord[0], R.at(-1).coord[0]], v = ce(y, [h, k], e.cycle);
|
|
1095
1085
|
f.push({
|
|
1096
1086
|
brushId: "开平仓范围",
|
|
1097
1087
|
brushType: "lineX",
|
|
@@ -1100,7 +1090,7 @@ const tt = { class: "main-chart" }, Mt = { class: "indicator" }, at = {
|
|
|
1100
1090
|
});
|
|
1101
1091
|
}
|
|
1102
1092
|
if (e.syncBrushRange.cycleList.includes(e.cycle)) {
|
|
1103
|
-
const { startTime:
|
|
1093
|
+
const { startTime: h, endTime: k } = e.syncBrushRange, v = ce(y, [h, k], e.cycle);
|
|
1104
1094
|
f.push({
|
|
1105
1095
|
brushId: "同步刷选范围",
|
|
1106
1096
|
brushType: "lineX",
|
|
@@ -1114,7 +1104,7 @@ const tt = { class: "main-chart" }, Mt = { class: "indicator" }, at = {
|
|
|
1114
1104
|
});
|
|
1115
1105
|
}
|
|
1116
1106
|
if (e.positionTime) {
|
|
1117
|
-
const [
|
|
1107
|
+
const [h, k] = [I(e.positionTime).format("YYYY-MM-DD 00:00:00"), I(e.positionTime).format("YYYY-MM-DD 23:59:59")], v = ce(y, [h, k], e.cycle);
|
|
1118
1108
|
f.push({
|
|
1119
1109
|
brushId: "强制定位高亮",
|
|
1120
1110
|
brushType: "lineX",
|
|
@@ -1224,17 +1214,17 @@ const tt = { class: "main-chart" }, Mt = { class: "indicator" }, at = {
|
|
|
1224
1214
|
},
|
|
1225
1215
|
{ deep: !0 }
|
|
1226
1216
|
), xe(() => {
|
|
1227
|
-
M.off("highlight"), M.off("globalout"), M.off("datazoom"), M.getZr().off("contextmenu"), window.removeEventListener("keydown", De), M.dispose(), u == null || u.dispose(),
|
|
1217
|
+
M.off("highlight"), M.off("globalout"), M.off("datazoom"), M.getZr().off("contextmenu"), window.removeEventListener("keydown", De), M.dispose(), u == null || u.dispose(), c.dispose(), c = null;
|
|
1228
1218
|
}), z({
|
|
1229
1219
|
screenTimeRange: a,
|
|
1230
|
-
contextmenuKlineTime:
|
|
1220
|
+
contextmenuKlineTime: s,
|
|
1231
1221
|
reDraw: () => {
|
|
1232
1222
|
var y;
|
|
1233
1223
|
const { startValue: t, endValue: o } = ((y = M.getOption()) == null ? void 0 : y.dataZoom[0]) ?? {};
|
|
1234
1224
|
ie({ startValue: t, endValue: o });
|
|
1235
1225
|
}
|
|
1236
1226
|
}), (t, o) => {
|
|
1237
|
-
const y = ke, C = ve, x =
|
|
1227
|
+
const y = ke, C = ve, x = be, A = he;
|
|
1238
1228
|
return Qe((F(), _("div", {
|
|
1239
1229
|
class: "kline-plus",
|
|
1240
1230
|
onMousemove: o[1] || (o[1] = (w) => d.value = !0),
|
|
@@ -1242,10 +1232,10 @@ const tt = { class: "main-chart" }, Mt = { class: "indicator" }, at = {
|
|
|
1242
1232
|
}, [
|
|
1243
1233
|
$("div", tt, [
|
|
1244
1234
|
$("div", Mt, [
|
|
1245
|
-
ee(le, { data:
|
|
1235
|
+
ee(le, { data: b.value }, null, 8, ["data"]),
|
|
1246
1236
|
ee(le, { data: S.value }, null, 8, ["data"])
|
|
1247
1237
|
]),
|
|
1248
|
-
i.userKlineConfig.enable_showScreenTimeRange ? (F(), _("span", at, Me(a.value[0]) + " - " + Me(a.value[1]), 1)) :
|
|
1238
|
+
i.userKlineConfig.enable_showScreenTimeRange ? (F(), _("span", at, Me(a.value[0]) + " - " + Me(a.value[1]), 1)) : Ne("", !0),
|
|
1249
1239
|
$("div", {
|
|
1250
1240
|
ref_key: "mainChartRef",
|
|
1251
1241
|
ref: l,
|
|
@@ -1281,8 +1271,8 @@ const tt = { class: "main-chart" }, Mt = { class: "indicator" }, at = {
|
|
|
1281
1271
|
ref: p,
|
|
1282
1272
|
class: "chart"
|
|
1283
1273
|
}, null, 512)
|
|
1284
|
-
])) :
|
|
1285
|
-
i.userKlineConfig.enable_sliderChart ? (F(), _("div",
|
|
1274
|
+
])) : Ne("", !0),
|
|
1275
|
+
i.userKlineConfig.enable_sliderChart ? (F(), _("div", Nt, [
|
|
1286
1276
|
ee(et, {
|
|
1287
1277
|
ref_key: "sliderChartRef",
|
|
1288
1278
|
ref: Y,
|
|
@@ -1295,8 +1285,8 @@ const tt = { class: "main-chart" }, Mt = { class: "indicator" }, at = {
|
|
|
1295
1285
|
withoutPermission: e.withoutPermission,
|
|
1296
1286
|
onChange: Oe
|
|
1297
1287
|
}, null, 8, ["screenTimeRange", "varietyCode", "varietyStock", "rightType", "klineType", "deleteFirstNumber", "withoutPermission"])
|
|
1298
|
-
])) :
|
|
1299
|
-
n.value.time.length ?
|
|
1288
|
+
])) : Ne("", !0),
|
|
1289
|
+
n.value.time.length ? Ne("", !0) : (F(), Ie(x, {
|
|
1300
1290
|
key: 2,
|
|
1301
1291
|
class: "empty",
|
|
1302
1292
|
description: "暂无数据"
|
|
@@ -1306,11 +1296,11 @@ const tt = { class: "main-chart" }, Mt = { class: "indicator" }, at = {
|
|
|
1306
1296
|
]);
|
|
1307
1297
|
};
|
|
1308
1298
|
}
|
|
1309
|
-
}, rt = /* @__PURE__ */ ze(
|
|
1299
|
+
}, rt = /* @__PURE__ */ ze(st, [["__scopeId", "data-v-366a34a3"]]), bt = {
|
|
1310
1300
|
install(i) {
|
|
1311
1301
|
i.component("st-klinePlus", rt);
|
|
1312
1302
|
}
|
|
1313
1303
|
};
|
|
1314
1304
|
export {
|
|
1315
|
-
|
|
1305
|
+
bt as default
|
|
1316
1306
|
};
|