@guihz/trading-vue-editor-tes 0.1.47 → 0.1.49
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/lib/assets/{parserTccWorker-7TwvByCU.js → parserTccWorker-CyEVZctE.js} +0 -1
- package/lib/assets/{scriptsRunWorker-CmAR4nak.js → scriptsRunWorker-CyFWo9sk.js} +604 -592
- package/lib/trading-vue-editor.es.packages.js +2 -2
- package/lib/trading-vue-editor.umd.packages.mjs +1 -1
- package/package.json +1 -1
|
@@ -274,13 +274,13 @@ var JC = D5((DT, Za) => {
|
|
|
274
274
|
ic.exports;
|
|
275
275
|
(function(n, e) {
|
|
276
276
|
(function() {
|
|
277
|
-
var t, r = "4.17.21", i = 200, s = "Unsupported core-js use. Try https://npms.io/search?q=ponyfill.", o = "Expected a function", a = "Invalid `variable` option passed into `_.template`", c = "__lodash_hash_undefined__", p = 500, b = "__lodash_placeholder__", M = 1, l = 2, u = 4, O = 1, d = 2, _ = 1, f = 2, A = 4, q = 8, m = 16, W = 32, v = 64, y = 128, N = 256,
|
|
277
|
+
var t, r = "4.17.21", i = 200, s = "Unsupported core-js use. Try https://npms.io/search?q=ponyfill.", o = "Expected a function", a = "Invalid `variable` option passed into `_.template`", c = "__lodash_hash_undefined__", p = 500, b = "__lodash_placeholder__", M = 1, l = 2, u = 4, O = 1, d = 2, _ = 1, f = 2, A = 4, q = 8, m = 16, W = 32, v = 64, y = 128, N = 256, D = 512, R = 30, w = "...", B = 800, T = 16, $ = 1, P = 2, X = 3, K = 1 / 0, j = 9007199254740991, Q = 17976931348623157e292, n0 = NaN, l0 = 4294967295, r0 = l0 - 1, G = l0 >>> 1, _0 = [
|
|
278
278
|
["ary", y],
|
|
279
279
|
["bind", _],
|
|
280
280
|
["bindKey", f],
|
|
281
281
|
["curry", q],
|
|
282
282
|
["curryRight", m],
|
|
283
|
-
["flip",
|
|
283
|
+
["flip", D],
|
|
284
284
|
["partial", W],
|
|
285
285
|
["partialRight", v],
|
|
286
286
|
["rearg", N]
|
|
@@ -1929,7 +1929,7 @@ var JC = D5((DT, Za) => {
|
|
|
1929
1929
|
});
|
|
1930
1930
|
}
|
|
1931
1931
|
function oa(z, h, g, L, x, E, S, H, V, o0) {
|
|
1932
|
-
var a0 = h & y, u0 = h & _, y0 = h & f, E0 = h & (q | m), Q0 = h &
|
|
1932
|
+
var a0 = h & y, u0 = h & _, y0 = h & f, E0 = h & (q | m), Q0 = h & D, d1 = y0 ? t : eo(z);
|
|
1933
1933
|
function J0() {
|
|
1934
1934
|
for (var A1 = arguments.length, w1 = e0(A1), Xt = A1; Xt--; )
|
|
1935
1935
|
w1[Xt] = arguments[Xt];
|
|
@@ -3039,7 +3039,7 @@ var JC = D5((DT, Za) => {
|
|
|
3039
3039
|
return ml(z, tr(h) || 0, g);
|
|
3040
3040
|
});
|
|
3041
3041
|
function t4(z) {
|
|
3042
|
-
return Jr(z,
|
|
3042
|
+
return Jr(z, D);
|
|
3043
3043
|
}
|
|
3044
3044
|
function da(z, h) {
|
|
3045
3045
|
if (typeof z != "function" || h != null && typeof h != "function")
|
|
@@ -3638,7 +3638,7 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
3638
3638
|
return Pi(L, x).join("");
|
|
3639
3639
|
}
|
|
3640
3640
|
function Pm(z, h) {
|
|
3641
|
-
var g = R, L =
|
|
3641
|
+
var g = R, L = w;
|
|
3642
3642
|
if (fe(h)) {
|
|
3643
3643
|
var x = "separator" in h ? h.separator : x;
|
|
3644
3644
|
g = "length" in h ? z1(h.length) : g, L = "omission" in h ? Et(h.omission) : L;
|
|
@@ -4200,9 +4200,9 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
4200
4200
|
maxprofit_long: v = 0,
|
|
4201
4201
|
maxprofit_short: y = 0,
|
|
4202
4202
|
maxloss_long: N = 0,
|
|
4203
|
-
maxloss_short:
|
|
4203
|
+
maxloss_short: D = 0,
|
|
4204
4204
|
maxprofit_percent_long: R = 0,
|
|
4205
|
-
maxprofit_percent_short:
|
|
4205
|
+
maxprofit_percent_short: w = 0,
|
|
4206
4206
|
maxloss_percent_long: B = 0,
|
|
4207
4207
|
maxloss_percent_short: T = 0,
|
|
4208
4208
|
hold_long_k_count: $ = 0,
|
|
@@ -4215,7 +4215,7 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
4215
4215
|
shapeRatioType: l0 = "NONE"
|
|
4216
4216
|
} = this._preHistoryOrderCalcResult;
|
|
4217
4217
|
const { profit: r0 = 0, profit_percent: G = 0, in_index: _0 = 0, out_index: A0 = 0, commission: q0 = 0, direction: h0, in_time: V0 = 0, out_time: G0 = 0, total_profit: c1 = 0 } = e, Z0 = A0 - _0 + 1;
|
|
4218
|
-
if (h0 === e1.long ? (t += r0, i += 1, o += G, m += q0, $ += Z0, r0 > 0 ? (b += G, A += 1, O += r0, X += Z0, v = Math.max(v, r0), R = Math.max(R, G)) : r0 < 0 && (c += G, _ += 1, l += r0, j += Z0, N = Math.min(N, r0), B = Math.min(B, G))) : (r += r0, s += 1, a += G, W += q0, P += Z0, r0 > 0 ? (M += G, q += 1, d += r0, K += Z0, y = Math.max(y, r0),
|
|
4218
|
+
if (h0 === e1.long ? (t += r0, i += 1, o += G, m += q0, $ += Z0, r0 > 0 ? (b += G, A += 1, O += r0, X += Z0, v = Math.max(v, r0), R = Math.max(R, G)) : r0 < 0 && (c += G, _ += 1, l += r0, j += Z0, N = Math.min(N, r0), B = Math.min(B, G))) : (r += r0, s += 1, a += G, W += q0, P += Z0, r0 > 0 ? (M += G, q += 1, d += r0, K += Z0, y = Math.max(y, r0), w = Math.max(w, G)) : r0 < 0 && (p += G, f += 1, u += r0, Q += Z0, D = Math.min(D, r0), T = Math.min(T, G))), !n0) {
|
|
4219
4219
|
const s0 = this._createBalanceByInterval(V0, Date.now());
|
|
4220
4220
|
n0 = s0.balanceByInterval, l0 = s0.shapeRatioType;
|
|
4221
4221
|
}
|
|
@@ -4251,9 +4251,9 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
4251
4251
|
maxprofit_long: v,
|
|
4252
4252
|
maxprofit_short: y,
|
|
4253
4253
|
maxloss_long: N,
|
|
4254
|
-
maxloss_short:
|
|
4254
|
+
maxloss_short: D,
|
|
4255
4255
|
maxprofit_percent_long: R,
|
|
4256
|
-
maxprofit_percent_short:
|
|
4256
|
+
maxprofit_percent_short: w,
|
|
4257
4257
|
maxloss_percent_long: B,
|
|
4258
4258
|
maxloss_percent_short: T,
|
|
4259
4259
|
hold_long_k_count: $,
|
|
@@ -7314,7 +7314,7 @@ Arguments: ` + Array.prototype.slice.call(r).join("") + `
|
|
|
7314
7314
|
s0.push(new W(new Date(F + f1, 0, 1))), s0.push(new W(new Date(F + f1, 6, 1)));
|
|
7315
7315
|
return s0;
|
|
7316
7316
|
}
|
|
7317
|
-
function
|
|
7317
|
+
function D(F, J) {
|
|
7318
7318
|
return F.offsetScore !== J.offsetScore ? F.offsetScore - J.offsetScore : F.abbrScore !== J.abbrScore ? F.abbrScore - J.abbrScore : F.zone.population !== J.zone.population ? J.zone.population - F.zone.population : J.zone.name.localeCompare(F.zone.name);
|
|
7319
7319
|
}
|
|
7320
7320
|
function R(F, J) {
|
|
@@ -7322,7 +7322,7 @@ Arguments: ` + Array.prototype.slice.call(r).join("") + `
|
|
|
7322
7322
|
for (O(J), t0 = 0; t0 < J.length; t0++)
|
|
7323
7323
|
s0 = J[t0], a[s0] = a[s0] || {}, a[s0][F] = !0;
|
|
7324
7324
|
}
|
|
7325
|
-
function
|
|
7325
|
+
function w(F) {
|
|
7326
7326
|
var J = F.length, t0 = {}, s0 = [], C0 = {}, b1, U1, f1, v1;
|
|
7327
7327
|
for (b1 = 0; b1 < J; b1++)
|
|
7328
7328
|
if (f1 = F[b1].offset, !C0.hasOwnProperty(f1)) {
|
|
@@ -7346,13 +7346,13 @@ Arguments: ` + Array.prototype.slice.call(r).join("") + `
|
|
|
7346
7346
|
}
|
|
7347
7347
|
} catch {
|
|
7348
7348
|
}
|
|
7349
|
-
var t0 = N(), s0 = t0.length, C0 =
|
|
7349
|
+
var t0 = N(), s0 = t0.length, C0 = w(t0), b1 = [], U1, f1, v1;
|
|
7350
7350
|
for (f1 = 0; f1 < C0.length; f1++) {
|
|
7351
7351
|
for (U1 = new v(X(C0[f1])), v1 = 0; v1 < s0; v1++)
|
|
7352
7352
|
U1.scoreOffsetAt(t0[v1]);
|
|
7353
7353
|
b1.push(U1);
|
|
7354
7354
|
}
|
|
7355
|
-
return b1.sort(
|
|
7355
|
+
return b1.sort(D), b1.length > 0 ? b1[0].zone.name : void 0;
|
|
7356
7356
|
}
|
|
7357
7357
|
function T(F) {
|
|
7358
7358
|
return (!c || F) && (c = B()), c;
|
|
@@ -9345,11 +9345,11 @@ Arguments: ` + Array.prototype.slice.call(r).join("") + `
|
|
|
9345
9345
|
for (const [A, q] of t.entries()) {
|
|
9346
9346
|
const { barindex: m, time: W } = q, v = W * 1e3, y = m || A;
|
|
9347
9347
|
if (f && y === f[0]) {
|
|
9348
|
-
const [N,
|
|
9349
|
-
for (const [R,
|
|
9350
|
-
const { data: B, type: T } =
|
|
9348
|
+
const [N, D] = f;
|
|
9349
|
+
for (const [R, w] of d.entries()) {
|
|
9350
|
+
const { data: B, type: T } = w;
|
|
9351
9351
|
if (B) {
|
|
9352
|
-
const $ = B[
|
|
9352
|
+
const $ = B[D];
|
|
9353
9353
|
if ($)
|
|
9354
9354
|
switch ($.barIndex = N, _[R][A] = $, T) {
|
|
9355
9355
|
case g1.plot:
|
|
@@ -9369,28 +9369,28 @@ Arguments: ` + Array.prototype.slice.call(r).join("") + `
|
|
|
9369
9369
|
}
|
|
9370
9370
|
e.shift(), f = e[0];
|
|
9371
9371
|
} else
|
|
9372
|
-
for (const [N,
|
|
9373
|
-
const { type: R } =
|
|
9372
|
+
for (const [N, D] of d.entries()) {
|
|
9373
|
+
const { type: R } = D, w = _[N];
|
|
9374
9374
|
switch (R) {
|
|
9375
9375
|
case g1.plot:
|
|
9376
9376
|
case g1.plotarrow:
|
|
9377
9377
|
case g1.plotbar:
|
|
9378
9378
|
case g1.plotcandle:
|
|
9379
9379
|
case g1.plotchar:
|
|
9380
|
-
if (!r &&
|
|
9381
|
-
const B = { ...
|
|
9382
|
-
B.value = [...B.value], B.value[0] = v, B.barIndex = y,
|
|
9380
|
+
if (!r && w.length) {
|
|
9381
|
+
const B = { ...w[w.length - 1] };
|
|
9382
|
+
B.value = [...B.value], B.value[0] = v, B.barIndex = y, w[A] = B;
|
|
9383
9383
|
} else
|
|
9384
|
-
|
|
9384
|
+
w[A] = { value: [v], barIndex: y };
|
|
9385
9385
|
break;
|
|
9386
9386
|
case "plot":
|
|
9387
9387
|
case g1.plotshape:
|
|
9388
9388
|
case "color":
|
|
9389
|
-
if (!r &&
|
|
9390
|
-
const B = { ...
|
|
9391
|
-
|
|
9389
|
+
if (!r && w.length) {
|
|
9390
|
+
const B = { ...w[w.length - 1] };
|
|
9391
|
+
w[A] = Object.assign({}, B, { time: v, barIndex: y });
|
|
9392
9392
|
} else
|
|
9393
|
-
|
|
9393
|
+
w[A] = { time: v, barIndex: y };
|
|
9394
9394
|
break;
|
|
9395
9395
|
}
|
|
9396
9396
|
}
|
|
@@ -10481,17 +10481,17 @@ Example:
|
|
|
10481
10481
|
function N(I, Y) {
|
|
10482
10482
|
return Y < I.length ? I[Y] : W(I) ? G0(I) : null;
|
|
10483
10483
|
}
|
|
10484
|
-
function
|
|
10484
|
+
function D(I, Y) {
|
|
10485
10485
|
const Z = N(I, Y);
|
|
10486
10486
|
return Z ? q(Z) : /* @__PURE__ */ new Set();
|
|
10487
10487
|
}
|
|
10488
10488
|
function R(I) {
|
|
10489
10489
|
return I.conversion === null || I.conversion === void 0;
|
|
10490
10490
|
}
|
|
10491
|
-
function
|
|
10491
|
+
function w(I, Y) {
|
|
10492
10492
|
const Z = /* @__PURE__ */ new Set();
|
|
10493
10493
|
return I.forEach((b0) => {
|
|
10494
|
-
const z0 =
|
|
10494
|
+
const z0 = D(b0.params, Y);
|
|
10495
10495
|
let c0;
|
|
10496
10496
|
for (c0 of z0)
|
|
10497
10497
|
Z.add(c0);
|
|
@@ -10507,7 +10507,7 @@ Example:
|
|
|
10507
10507
|
const Se = N(ze.params, d0), Be = v(Se);
|
|
10508
10508
|
(d0 < ze.params.length || W(ze.params)) && Be(Y[d0]) && H1.push(ze);
|
|
10509
10509
|
}), H1.length === 0) {
|
|
10510
|
-
if (z0 =
|
|
10510
|
+
if (z0 = w(g0, d0), z0.length > 0) {
|
|
10511
10511
|
const ze = M(Y[d0]);
|
|
10512
10512
|
return b0 = new TypeError("Unexpected type of argument in function " + c0 + " (expected: " + z0.join(" or ") + ", actual: " + ze.join(" | ") + ", index: " + d0 + ")"), b0.data = {
|
|
10513
10513
|
category: "wrongType",
|
|
@@ -10524,7 +10524,7 @@ Example:
|
|
|
10524
10524
|
return W(H1.params) ? 1 / 0 : H1.params.length;
|
|
10525
10525
|
});
|
|
10526
10526
|
if (Y.length < Math.min.apply(null, W0))
|
|
10527
|
-
return z0 =
|
|
10527
|
+
return z0 = w(g0, d0), b0 = new TypeError("Too few arguments in function " + c0 + " (expected: " + z0.join(" or ") + ", index: " + Y.length + ")"), b0.data = {
|
|
10528
10528
|
category: "tooFewArgs",
|
|
10529
10529
|
fn: c0,
|
|
10530
10530
|
index: Y.length,
|
|
@@ -10725,7 +10725,7 @@ Example:
|
|
|
10725
10725
|
function l0(I, Y) {
|
|
10726
10726
|
const Z = Math.max(I.length, Y.length);
|
|
10727
10727
|
for (let d0 = 0; d0 < Z; d0++) {
|
|
10728
|
-
const W0 =
|
|
10728
|
+
const W0 = D(I, d0), O0 = D(Y, d0);
|
|
10729
10729
|
let X1 = !1, H1;
|
|
10730
10730
|
for (H1 of O0)
|
|
10731
10731
|
if (W0.has(H1)) {
|
|
@@ -12516,7 +12516,7 @@ Example:
|
|
|
12516
12516
|
r.shift();
|
|
12517
12517
|
}
|
|
12518
12518
|
return function(r, i, s, o, a, c) {
|
|
12519
|
-
var p, b, M, l, u, O, d, _, f, A, q, m, W, v, y, N,
|
|
12519
|
+
var p, b, M, l, u, O, d, _, f, A, q, m, W, v, y, N, D, R, w, B, T = r.constructor, $ = r.s == i.s ? 1 : -1, P = r.d, X = i.d;
|
|
12520
12520
|
if (!P || !P[0] || !X || !X[0])
|
|
12521
12521
|
return new T(
|
|
12522
12522
|
// Return NaN if either NaN, or both Infinity or 0.
|
|
@@ -12525,22 +12525,22 @@ Example:
|
|
|
12525
12525
|
P && P[0] == 0 || !X ? $ * 0 : $ / 0
|
|
12526
12526
|
)
|
|
12527
12527
|
);
|
|
12528
|
-
for (c ? (u = 1, b = r.e - i.e) : (c = Lr, u = K0, b = at(r.e / u) - at(i.e / u)),
|
|
12528
|
+
for (c ? (u = 1, b = r.e - i.e) : (c = Lr, u = K0, b = at(r.e / u) - at(i.e / u)), w = X.length, D = P.length, f = new T($), A = f.d = [], M = 0; X[M] == (P[M] || 0); M++)
|
|
12529
12529
|
;
|
|
12530
12530
|
if (X[M] > (P[M] || 0) && b--, s == null ? (v = s = T.precision, o = T.rounding) : a ? v = s + (r.e - i.e) + 1 : v = s, v < 0)
|
|
12531
12531
|
A.push(1), O = !0;
|
|
12532
12532
|
else {
|
|
12533
|
-
if (v = v / u + 2 | 0, M = 0,
|
|
12534
|
-
for (l = 0, X = X[0], v++; (M <
|
|
12533
|
+
if (v = v / u + 2 | 0, M = 0, w == 1) {
|
|
12534
|
+
for (l = 0, X = X[0], v++; (M < D || l) && v--; M++)
|
|
12535
12535
|
y = l * c + (P[M] || 0), A[M] = y / X | 0, l = y % X | 0;
|
|
12536
|
-
O = l || M <
|
|
12536
|
+
O = l || M < D;
|
|
12537
12537
|
} else {
|
|
12538
|
-
for (l = c / (X[0] + 1) | 0, l > 1 && (X = n(X, l, c), P = n(P, l, c),
|
|
12538
|
+
for (l = c / (X[0] + 1) | 0, l > 1 && (X = n(X, l, c), P = n(P, l, c), w = X.length, D = P.length), N = w, q = P.slice(0, w), m = q.length; m < w; )
|
|
12539
12539
|
q[m++] = 0;
|
|
12540
12540
|
B = X.slice(), B.unshift(0), R = X[0], X[1] >= c / 2 && ++R;
|
|
12541
12541
|
do
|
|
12542
|
-
l = 0, p = e(X, q,
|
|
12543
|
-
while ((N++ <
|
|
12542
|
+
l = 0, p = e(X, q, w, m), p < 0 ? (W = q[0], w != m && (W = W * c + (q[1] || 0)), l = W / R | 0, l > 1 ? (l >= c && (l = c - 1), d = n(X, l, c), _ = d.length, m = q.length, p = e(d, q, _, m), p == 1 && (l--, t(d, w < _ ? B : X, _, c))) : (l == 0 && (p = l = 1), d = X.slice()), _ = d.length, _ < m && d.unshift(0), t(q, d, m, c), p == -1 && (m = q.length, p = e(X, q, w, m), p < 1 && (l++, t(q, w < m ? B : X, m, c))), m = q.length) : p === 0 && (l++, q = [0]), A[M++] = l, p && q[0] ? q[m++] = P[N] || 0 : (q = [P[N]], m = 1);
|
|
12543
|
+
while ((N++ < D || q[0] !== void 0) && v--);
|
|
12544
12544
|
O = q[0] !== void 0;
|
|
12545
12545
|
}
|
|
12546
12546
|
A[0] || A.shift();
|
|
@@ -13923,7 +13923,7 @@ Example:
|
|
|
13923
13923
|
return q !== f ? q > 1 && (A[q] = (A[q] || 0) + 1) : A[f] = (A[f] || 0) + 1, A;
|
|
13924
13924
|
}
|
|
13925
13925
|
var c = function(f, A) {
|
|
13926
|
-
var q = 0, m = 1, W = 1, v = 0, y = 0, N = 0,
|
|
13926
|
+
var q = 0, m = 1, W = 1, v = 0, y = 0, N = 0, D = 1, R = 1, w = 0, B = 1, T = 1, $ = 1, P = 1e7, X;
|
|
13927
13927
|
if (f != null)
|
|
13928
13928
|
if (A !== void 0) {
|
|
13929
13929
|
if (q = f, m = A, W = q * m, q % 1 !== 0 || m % 1 !== 0)
|
|
@@ -13945,11 +13945,11 @@ Example:
|
|
|
13945
13945
|
q = f;
|
|
13946
13946
|
else if (f > 0) {
|
|
13947
13947
|
for (f >= 1 && (R = Math.pow(10, Math.floor(1 + Math.log(f) / Math.LN10)), f /= R); B <= P && $ <= P; )
|
|
13948
|
-
if (X = (
|
|
13949
|
-
B + $ <= P ? (q =
|
|
13948
|
+
if (X = (w + T) / (B + $), f === X) {
|
|
13949
|
+
B + $ <= P ? (q = w + T, m = B + $) : $ > B ? (q = T, m = $) : (q = w, m = B);
|
|
13950
13950
|
break;
|
|
13951
13951
|
} else
|
|
13952
|
-
f > X ? (
|
|
13952
|
+
f > X ? (w += T, B += $) : (T += w, $ += B), B > P ? (q = T, m = $) : (q = w, m = B);
|
|
13953
13953
|
q *= R;
|
|
13954
13954
|
} else
|
|
13955
13955
|
(isNaN(f) || isNaN(A)) && (m = q = NaN);
|
|
@@ -13958,8 +13958,8 @@ Example:
|
|
|
13958
13958
|
case "string": {
|
|
13959
13959
|
if (B = f.match(/\d+|./g), B === null)
|
|
13960
13960
|
throw d();
|
|
13961
|
-
if (B[
|
|
13962
|
-
m =
|
|
13961
|
+
if (B[w] === "-" ? (W = -1, w++) : B[w] === "+" && w++, B.length === w + 1 ? y = s(B[w++], W) : B[w + 1] === "." || B[w] === "." ? (B[w] !== "." && (v = s(B[w++], W)), w++, (w + 1 === B.length || B[w + 1] === "(" && B[w + 3] === ")" || B[w + 1] === "'" && B[w + 3] === "'") && (y = s(B[w], W), D = Math.pow(10, B[w].length), w++), (B[w] === "(" && B[w + 2] === ")" || B[w] === "'" && B[w + 2] === "'") && (N = s(B[w + 1], W), R = Math.pow(10, B[w + 1].length) - 1, w += 3)) : B[w + 1] === "/" || B[w + 1] === ":" ? (y = s(B[w], W), D = s(B[w + 2], 1), w += 3) : B[w + 3] === "/" && B[w + 1] === " " && (v = s(B[w], W), y = s(B[w + 2], W), D = s(B[w + 4], 1), w += 5), B.length <= w) {
|
|
13962
|
+
m = D * R, W = /* void */
|
|
13963
13963
|
q = N + m * v + R * y;
|
|
13964
13964
|
break;
|
|
13965
13965
|
}
|
|
@@ -14914,8 +14914,8 @@ Example:
|
|
|
14914
14914
|
var N = _[y];
|
|
14915
14915
|
if (he(N)) {
|
|
14916
14916
|
if (v === 0 && q < N.length && (q = N.length), v < N.length) {
|
|
14917
|
-
var
|
|
14918
|
-
m(
|
|
14917
|
+
var D = N[v];
|
|
14918
|
+
m(D, W) || (d._values.push(D), d._index.push(y));
|
|
14919
14919
|
}
|
|
14920
14920
|
} else
|
|
14921
14921
|
v === 0 && q < 1 && (q = 1), m(N, W) || (d._values.push(N), d._index.push(y));
|
|
@@ -14965,14 +14965,14 @@ Example:
|
|
|
14965
14965
|
var q, m, W, v, y = _.min(), N = _.max();
|
|
14966
14966
|
for (q = 0, m = d._size.length; q < m; q++)
|
|
14967
14967
|
_e(y[q], d._size[q]), _e(N[q], d._size[q]);
|
|
14968
|
-
var
|
|
14968
|
+
var D = d._values, R = d._index, w = d._ptr, B = _.dimension(0), T = _.dimension(1), $ = [], P = [];
|
|
14969
14969
|
B.forEach(function(Q, n0) {
|
|
14970
14970
|
P[Q] = n0[0], $[Q] = !0;
|
|
14971
14971
|
});
|
|
14972
|
-
var X =
|
|
14972
|
+
var X = D ? [] : void 0, K = [], j = [];
|
|
14973
14973
|
return T.forEach(function(Q) {
|
|
14974
|
-
for (j.push(K.length), W =
|
|
14975
|
-
q = R[W], $[q] === !0 && (K.push(P[q]), X && X.push(
|
|
14974
|
+
for (j.push(K.length), W = w[Q], v = w[Q + 1]; W < v; W++)
|
|
14975
|
+
q = R[W], $[q] === !0 && (K.push(P[q]), X && X.push(D[W]));
|
|
14976
14976
|
}), j.push(K.length), new i({
|
|
14977
14977
|
values: X,
|
|
14978
14978
|
index: K,
|
|
@@ -15003,14 +15003,14 @@ Example:
|
|
|
15003
15003
|
throw new I1(q, W, ">");
|
|
15004
15004
|
if (q.length === 1) {
|
|
15005
15005
|
var N = _.dimension(0);
|
|
15006
|
-
N.forEach(function(
|
|
15007
|
-
_e(
|
|
15006
|
+
N.forEach(function(w, B) {
|
|
15007
|
+
_e(w), d.set([w, 0], f[B[0]], A);
|
|
15008
15008
|
});
|
|
15009
15009
|
} else {
|
|
15010
|
-
var
|
|
15011
|
-
|
|
15012
|
-
_e(
|
|
15013
|
-
_e(T), d.set([
|
|
15010
|
+
var D = _.dimension(0), R = _.dimension(1);
|
|
15011
|
+
D.forEach(function(w, B) {
|
|
15012
|
+
_e(w), R.forEach(function(T, $) {
|
|
15013
|
+
_e(T), d.set([w, T], f[B[0]][$[0]], A);
|
|
15014
15014
|
});
|
|
15015
15015
|
});
|
|
15016
15016
|
}
|
|
@@ -15074,12 +15074,12 @@ Example:
|
|
|
15074
15074
|
function l(d, _, f, A) {
|
|
15075
15075
|
var q = A || 0, m = t, W = 0;
|
|
15076
15076
|
Xr(d._datatype) && (m = e.find(t, [d._datatype, d._datatype]) || t, W = e.convert(0, d._datatype), q = e.convert(q, d._datatype));
|
|
15077
|
-
var v = !m(q, W), y = d._size[0], N = d._size[1],
|
|
15077
|
+
var v = !m(q, W), y = d._size[0], N = d._size[1], D, R, w;
|
|
15078
15078
|
if (f > N) {
|
|
15079
15079
|
for (R = N; R < f; R++)
|
|
15080
15080
|
if (d._ptr[R] = d._values.length, v)
|
|
15081
|
-
for (
|
|
15082
|
-
d._values.push(q), d._index.push(
|
|
15081
|
+
for (D = 0; D < y; D++)
|
|
15082
|
+
d._values.push(q), d._index.push(D);
|
|
15083
15083
|
d._ptr[f] = d._values.length;
|
|
15084
15084
|
} else
|
|
15085
15085
|
f < N && (d._ptr.splice(f + 1, N - f), d._values.splice(d._ptr[f], d._values.length), d._index.splice(d._ptr[f], d._index.length));
|
|
@@ -15087,10 +15087,10 @@ Example:
|
|
|
15087
15087
|
if (v) {
|
|
15088
15088
|
var B = 0;
|
|
15089
15089
|
for (R = 0; R < N; R++) {
|
|
15090
|
-
d._ptr[R] = d._ptr[R] + B,
|
|
15090
|
+
d._ptr[R] = d._ptr[R] + B, w = d._ptr[R + 1] + B;
|
|
15091
15091
|
var T = 0;
|
|
15092
|
-
for (
|
|
15093
|
-
d._values.splice(
|
|
15092
|
+
for (D = y; D < _; D++, T++)
|
|
15093
|
+
d._values.splice(w + T, 0, q), d._index.splice(w + T, 0, D), B++;
|
|
15094
15094
|
}
|
|
15095
15095
|
d._ptr[N] = d._values.length;
|
|
15096
15096
|
}
|
|
@@ -15099,8 +15099,8 @@ Example:
|
|
|
15099
15099
|
for (R = 0; R < N; R++) {
|
|
15100
15100
|
d._ptr[R] = d._ptr[R] - $;
|
|
15101
15101
|
var P = d._ptr[R], X = d._ptr[R + 1] - $;
|
|
15102
|
-
for (
|
|
15103
|
-
|
|
15102
|
+
for (w = P; w < X; w++)
|
|
15103
|
+
D = d._index[w], D > _ - 1 && (d._values.splice(w, 1), d._index.splice(w, 1), $++);
|
|
15104
15104
|
}
|
|
15105
15105
|
d._ptr[R] = d._values.length;
|
|
15106
15106
|
}
|
|
@@ -15126,9 +15126,9 @@ Example:
|
|
|
15126
15126
|
for (var m = [], W = 0; W < q._ptr.length; W++)
|
|
15127
15127
|
for (var v = 0; v < q._ptr[W + 1] - q._ptr[W]; v++)
|
|
15128
15128
|
m.push(W);
|
|
15129
|
-
for (var y = q._values.slice(), N = q._index.slice(),
|
|
15130
|
-
var R = N[
|
|
15131
|
-
m[
|
|
15129
|
+
for (var y = q._values.slice(), N = q._index.slice(), D = 0; D < q._index.length; D++) {
|
|
15130
|
+
var R = N[D], w = m[D], B = R * q._size[1] + w;
|
|
15131
|
+
m[D] = B % d[1], N[D] = Math.floor(B / d[1]);
|
|
15132
15132
|
}
|
|
15133
15133
|
q._values.length = 0, q._index.length = 0, q._ptr.length = d[1] + 1, q._size = d.slice();
|
|
15134
15134
|
for (var T = 0; T < q._ptr.length; T++)
|
|
@@ -15152,23 +15152,23 @@ Example:
|
|
|
15152
15152
|
}, i.prototype.map = function(d, _) {
|
|
15153
15153
|
if (!this._values)
|
|
15154
15154
|
throw new Error("Cannot invoke map on a Pattern only matrix");
|
|
15155
|
-
var f = this, A = this._size[0], q = this._size[1], m = f3(d), W = function(y, N,
|
|
15156
|
-
return m === 1 ? d(y) : m === 2 ? d(y, [N,
|
|
15155
|
+
var f = this, A = this._size[0], q = this._size[1], m = f3(d), W = function(y, N, D) {
|
|
15156
|
+
return m === 1 ? d(y) : m === 2 ? d(y, [N, D]) : d(y, [N, D], f);
|
|
15157
15157
|
};
|
|
15158
15158
|
return u(this, 0, A - 1, 0, q - 1, W, _);
|
|
15159
15159
|
};
|
|
15160
15160
|
function u(d, _, f, A, q, m, W) {
|
|
15161
|
-
var v = [], y = [], N = [],
|
|
15162
|
-
Xr(d._datatype) && (
|
|
15163
|
-
for (var
|
|
15164
|
-
G = m(G, _0, A0),
|
|
15161
|
+
var v = [], y = [], N = [], D = t, R = 0;
|
|
15162
|
+
Xr(d._datatype) && (D = e.find(t, [d._datatype, d._datatype]) || t, R = e.convert(0, d._datatype));
|
|
15163
|
+
for (var w = function(G, _0, A0) {
|
|
15164
|
+
G = m(G, _0, A0), D(G, R) || (v.push(G), y.push(_0));
|
|
15165
15165
|
}, B = A; B <= q; B++) {
|
|
15166
15166
|
N.push(v.length);
|
|
15167
15167
|
var T = d._ptr[B], $ = d._ptr[B + 1];
|
|
15168
15168
|
if (W)
|
|
15169
15169
|
for (var P = T; P < $; P++) {
|
|
15170
15170
|
var X = d._index[P];
|
|
15171
|
-
X >= _ && X <= f &&
|
|
15171
|
+
X >= _ && X <= f && w(d._values[P], X - _, B - A);
|
|
15172
15172
|
}
|
|
15173
15173
|
else {
|
|
15174
15174
|
for (var K = {}, j = T; j < $; j++) {
|
|
@@ -15177,7 +15177,7 @@ Example:
|
|
|
15177
15177
|
}
|
|
15178
15178
|
for (var n0 = _; n0 <= f; n0++) {
|
|
15179
15179
|
var l0 = n0 in K ? K[n0] : 0;
|
|
15180
|
-
|
|
15180
|
+
w(l0, n0 - _, B - A);
|
|
15181
15181
|
}
|
|
15182
15182
|
}
|
|
15183
15183
|
}
|
|
@@ -15199,12 +15199,12 @@ Example:
|
|
|
15199
15199
|
d(this._values[y], [N, m], f);
|
|
15200
15200
|
}
|
|
15201
15201
|
else {
|
|
15202
|
-
for (var
|
|
15203
|
-
var
|
|
15204
|
-
w
|
|
15202
|
+
for (var D = {}, R = W; R < v; R++) {
|
|
15203
|
+
var w = this._index[R];
|
|
15204
|
+
D[w] = this._values[R];
|
|
15205
15205
|
}
|
|
15206
15206
|
for (var B = 0; B < A; B++) {
|
|
15207
|
-
var T = B in
|
|
15207
|
+
var T = B in D ? D[B] : 0;
|
|
15208
15208
|
d(T, [B, m], f);
|
|
15209
15209
|
}
|
|
15210
15210
|
}
|
|
@@ -15231,8 +15231,8 @@ Example:
|
|
|
15231
15231
|
for (v[y] = [], N = 0; N < W; N++)
|
|
15232
15232
|
v[y][N] = 0;
|
|
15233
15233
|
for (N = 0; N < W; N++)
|
|
15234
|
-
for (var
|
|
15235
|
-
y = _[
|
|
15234
|
+
for (var D = f[N], R = f[N + 1], w = D; w < R; w++)
|
|
15235
|
+
y = _[w], v[y][N] = d ? q ? Y1(d[w]) : d[w] : 1;
|
|
15236
15236
|
return v;
|
|
15237
15237
|
}
|
|
15238
15238
|
return i.prototype.format = function(d) {
|
|
@@ -15264,10 +15264,10 @@ Example:
|
|
|
15264
15264
|
var _ = d > 0 ? d : 0, f = d < 0 ? -d : 0, A = this._size[0], q = this._size[1], m = Math.min(A - f, q - _), W = [], v = [], y = [];
|
|
15265
15265
|
y[0] = 0;
|
|
15266
15266
|
for (var N = _; N < q && W.length < m; N++)
|
|
15267
|
-
for (var
|
|
15268
|
-
var B = this._index[
|
|
15267
|
+
for (var D = this._ptr[N], R = this._ptr[N + 1], w = D; w < R; w++) {
|
|
15268
|
+
var B = this._index[w];
|
|
15269
15269
|
if (B === N - _ + f) {
|
|
15270
|
-
W.push(this._values[
|
|
15270
|
+
W.push(this._values[w]), v[W.length - 1] = B - f;
|
|
15271
15271
|
break;
|
|
15272
15272
|
}
|
|
15273
15273
|
}
|
|
@@ -15295,29 +15295,29 @@ Example:
|
|
|
15295
15295
|
f = 0;
|
|
15296
15296
|
var m = t, W = 0;
|
|
15297
15297
|
Xr(q) && (m = e.find(t, [q, q]) || t, W = e.convert(0, q));
|
|
15298
|
-
var v = f > 0 ? f : 0, y = f < 0 ? -f : 0, N = d[0],
|
|
15298
|
+
var v = f > 0 ? f : 0, y = f < 0 ? -f : 0, N = d[0], D = d[1], R = Math.min(N - y, D - v), w;
|
|
15299
15299
|
if (he(_)) {
|
|
15300
15300
|
if (_.length !== R)
|
|
15301
15301
|
throw new Error("Invalid value array length");
|
|
15302
|
-
|
|
15302
|
+
w = function(n0) {
|
|
15303
15303
|
return _[n0];
|
|
15304
15304
|
};
|
|
15305
15305
|
} else if (pe(_)) {
|
|
15306
15306
|
var B = _.size();
|
|
15307
15307
|
if (B.length !== 1 || B[0] !== R)
|
|
15308
15308
|
throw new Error("Invalid matrix length");
|
|
15309
|
-
|
|
15309
|
+
w = function(n0) {
|
|
15310
15310
|
return _.get([n0]);
|
|
15311
15311
|
};
|
|
15312
15312
|
} else
|
|
15313
|
-
|
|
15313
|
+
w = function() {
|
|
15314
15314
|
return _;
|
|
15315
15315
|
};
|
|
15316
|
-
for (var T = [], $ = [], P = [], X = 0; X <
|
|
15316
|
+
for (var T = [], $ = [], P = [], X = 0; X < D; X++) {
|
|
15317
15317
|
P.push(T.length);
|
|
15318
15318
|
var K = X - v;
|
|
15319
15319
|
if (K >= 0 && K < R) {
|
|
15320
|
-
var j =
|
|
15320
|
+
var j = w(K);
|
|
15321
15321
|
m(j, W) || ($.push(K + y), T.push(j));
|
|
15322
15322
|
}
|
|
15323
15323
|
}
|
|
@@ -15325,7 +15325,7 @@ Example:
|
|
|
15325
15325
|
values: T,
|
|
15326
15326
|
index: $,
|
|
15327
15327
|
ptr: P,
|
|
15328
|
-
size: [N,
|
|
15328
|
+
size: [N, D]
|
|
15329
15329
|
});
|
|
15330
15330
|
}, i.prototype.swapRows = function(d, _) {
|
|
15331
15331
|
if (!oe(d) || !de(d) || !oe(_) || !de(_))
|
|
@@ -15338,22 +15338,22 @@ Example:
|
|
|
15338
15338
|
q(f[v], _[v]);
|
|
15339
15339
|
}, i._swapRows = function(d, _, f, A, q, m) {
|
|
15340
15340
|
for (var W = 0; W < f; W++) {
|
|
15341
|
-
var v = m[W], y = m[W + 1], N = p(d, v, y, q),
|
|
15342
|
-
if (N < y &&
|
|
15341
|
+
var v = m[W], y = m[W + 1], N = p(d, v, y, q), D = p(_, v, y, q);
|
|
15342
|
+
if (N < y && D < y && q[N] === d && q[D] === _) {
|
|
15343
15343
|
if (A) {
|
|
15344
15344
|
var R = A[N];
|
|
15345
|
-
A[N] = A[
|
|
15345
|
+
A[N] = A[D], A[D] = R;
|
|
15346
15346
|
}
|
|
15347
15347
|
continue;
|
|
15348
15348
|
}
|
|
15349
|
-
if (N < y && q[N] === d && (
|
|
15350
|
-
var
|
|
15351
|
-
q.splice(
|
|
15349
|
+
if (N < y && q[N] === d && (D >= y || q[D] !== _)) {
|
|
15350
|
+
var w = A ? A[N] : void 0;
|
|
15351
|
+
q.splice(D, 0, _), A && A.splice(D, 0, w), q.splice(D <= N ? N + 1 : N, 1), A && A.splice(D <= N ? N + 1 : N, 1);
|
|
15352
15352
|
continue;
|
|
15353
15353
|
}
|
|
15354
|
-
if (
|
|
15355
|
-
var B = A ? A[
|
|
15356
|
-
q.splice(N, 0, d), A && A.splice(N, 0, B), q.splice(N <=
|
|
15354
|
+
if (D < y && q[D] === _ && (N >= y || q[N] !== d)) {
|
|
15355
|
+
var B = A ? A[D] : void 0;
|
|
15356
|
+
q.splice(N, 0, d), A && A.splice(N, 0, B), q.splice(N <= D ? D + 1 : D, 1), A && A.splice(N <= D ? D + 1 : D, 1);
|
|
15357
15357
|
}
|
|
15358
15358
|
}
|
|
15359
15359
|
}, i;
|
|
@@ -15632,9 +15632,9 @@ Example:
|
|
|
15632
15632
|
typeof l == "string" && (d = l, _ = e.find(t, [d, d]), f = e.convert(0, d), s = e.convert(s, d), A = e.find(o, [d, d]));
|
|
15633
15633
|
for (var q = [], m = [], W = [], v = 0; v < O; v++) {
|
|
15634
15634
|
W[v] = m.length;
|
|
15635
|
-
for (var y = b[v], N = b[v + 1],
|
|
15636
|
-
var R = p[
|
|
15637
|
-
_(
|
|
15635
|
+
for (var y = b[v], N = b[v + 1], D = y; D < N; D++) {
|
|
15636
|
+
var R = p[D], w = a ? A(s, c[D]) : A(c[D], s);
|
|
15637
|
+
_(w, f) || (m.push(R), q.push(w));
|
|
15638
15638
|
}
|
|
15639
15639
|
}
|
|
15640
15640
|
return W[O] = m.length, i.createSparseMatrix({
|
|
@@ -15658,8 +15658,8 @@ Example:
|
|
|
15658
15658
|
typeof l == "string" && (d = l, s = e.convert(s, d), _ = e.find(o, [d, d]));
|
|
15659
15659
|
for (var f = [], A = [], q = [], m = 0; m < O; m++) {
|
|
15660
15660
|
for (var W = m + 1, v = b[m], y = b[m + 1], N = v; N < y; N++) {
|
|
15661
|
-
var
|
|
15662
|
-
A[
|
|
15661
|
+
var D = p[N];
|
|
15662
|
+
A[D] = c[N], q[D] = W;
|
|
15663
15663
|
}
|
|
15664
15664
|
for (var R = 0; R < u; R++)
|
|
15665
15665
|
m === 0 && (f[R] = []), q[R] === W ? f[R][m] = a ? _(s, A[R]) : _(A[R], s) : f[R][m] = a ? _(s, 0) : _(0, s);
|
|
@@ -15709,10 +15709,10 @@ Example:
|
|
|
15709
15709
|
throw new Error("Cannot perform operation on Dense Matrix and Pattern Sparse Matrix");
|
|
15710
15710
|
var _ = p[0], f = p[1], A, q = t, m = 0, W = o;
|
|
15711
15711
|
typeof b == "string" && b === d && b !== "mixed" && (A = b, q = e.find(t, [A, A]), m = e.convert(0, A), W = e.find(o, [A, A]));
|
|
15712
|
-
for (var v = [], y = [], N = [],
|
|
15713
|
-
N[
|
|
15714
|
-
for (var R = u[
|
|
15715
|
-
var T = l[B], $ = a ? W(M[B], c[T][
|
|
15712
|
+
for (var v = [], y = [], N = [], D = 0; D < f; D++) {
|
|
15713
|
+
N[D] = y.length;
|
|
15714
|
+
for (var R = u[D], w = u[D + 1], B = R; B < w; B++) {
|
|
15715
|
+
var T = l[B], $ = a ? W(M[B], c[T][D]) : W(c[T][D], M[B]);
|
|
15716
15716
|
q($, m) || (y.push(T), v.push($));
|
|
15717
15717
|
}
|
|
15718
15718
|
}
|
|
@@ -15741,12 +15741,12 @@ Example:
|
|
|
15741
15741
|
for (var m = [], W = 0; W < d; W++)
|
|
15742
15742
|
m[W] = [];
|
|
15743
15743
|
for (var v = [], y = [], N = 0; N < _; N++) {
|
|
15744
|
-
for (var
|
|
15744
|
+
for (var D = N + 1, R = l[N], w = l[N + 1], B = R; B < w; B++) {
|
|
15745
15745
|
var T = M[B];
|
|
15746
|
-
v[T] = o ? q(b[B], a[T][N]) : q(a[T][N], b[B]), y[T] =
|
|
15746
|
+
v[T] = o ? q(b[B], a[T][N]) : q(a[T][N], b[B]), y[T] = D;
|
|
15747
15747
|
}
|
|
15748
15748
|
for (var $ = 0; $ < d; $++)
|
|
15749
|
-
y[$] ===
|
|
15749
|
+
y[$] === D ? m[$][N] = v[$] : m[$][N] = o ? q(A, a[$][N]) : q(a[$][N], A);
|
|
15750
15750
|
}
|
|
15751
15751
|
return r.createDenseMatrix({
|
|
15752
15752
|
data: m,
|
|
@@ -15767,28 +15767,28 @@ Example:
|
|
|
15767
15767
|
throw new RangeError("Dimension mismatch. Matrix A (" + b + ") must match Matrix B (" + d + ")");
|
|
15768
15768
|
var f = b[0], A = b[1], q, m = t, W = 0, v = o;
|
|
15769
15769
|
typeof M == "string" && M === _ && M !== "mixed" && (q = M, m = e.find(t, [q, q]), W = e.convert(0, q), v = e.find(o, [q, q]));
|
|
15770
|
-
var y = a && l ? [] : void 0, N = [],
|
|
15770
|
+
var y = a && l ? [] : void 0, N = [], D = [], R = y ? [] : void 0, w = y ? [] : void 0, B = [], T = [], $, P, X, K;
|
|
15771
15771
|
for (P = 0; P < A; P++) {
|
|
15772
|
-
|
|
15772
|
+
D[P] = N.length;
|
|
15773
15773
|
var j = P + 1;
|
|
15774
15774
|
for (X = p[P], K = p[P + 1]; X < K; X++)
|
|
15775
15775
|
$ = c[X], N.push($), B[$] = j, R && (R[$] = a[X]);
|
|
15776
15776
|
for (X = O[P], K = O[P + 1]; X < K; X++)
|
|
15777
|
-
$ = u[X], B[$] !== j && N.push($), T[$] = j,
|
|
15777
|
+
$ = u[X], B[$] !== j && N.push($), T[$] = j, w && (w[$] = l[X]);
|
|
15778
15778
|
if (y)
|
|
15779
|
-
for (X =
|
|
15779
|
+
for (X = D[P]; X < N.length; ) {
|
|
15780
15780
|
$ = N[X];
|
|
15781
15781
|
var Q = B[$], n0 = T[$];
|
|
15782
15782
|
if (Q === j || n0 === j) {
|
|
15783
|
-
var l0 = Q === j ? R[$] : W, r0 = n0 === j ?
|
|
15783
|
+
var l0 = Q === j ? R[$] : W, r0 = n0 === j ? w[$] : W, G = v(l0, r0);
|
|
15784
15784
|
m(G, W) ? N.splice(X, 1) : (y.push(G), X++);
|
|
15785
15785
|
}
|
|
15786
15786
|
}
|
|
15787
15787
|
}
|
|
15788
|
-
return
|
|
15788
|
+
return D[A] = N.length, i.createSparseMatrix({
|
|
15789
15789
|
values: y,
|
|
15790
15790
|
index: N,
|
|
15791
|
-
ptr:
|
|
15791
|
+
ptr: D,
|
|
15792
15792
|
size: [f, A],
|
|
15793
15793
|
datatype: M === i._datatype && _ === s._datatype ? q : void 0
|
|
15794
15794
|
});
|
|
@@ -15895,8 +15895,8 @@ Example:
|
|
|
15895
15895
|
W[q] = [];
|
|
15896
15896
|
var v = [], y = [];
|
|
15897
15897
|
for (m = 0; m < _; m++) {
|
|
15898
|
-
for (var N = m + 1,
|
|
15899
|
-
q = M[
|
|
15898
|
+
for (var N = m + 1, D = l[m], R = l[m + 1], w = D; w < R; w++)
|
|
15899
|
+
q = M[w], v[q] = o ? A(b[w], a[q][m]) : A(a[q][m], b[w]), y[q] = N;
|
|
15900
15900
|
for (q = 0; q < d; q++)
|
|
15901
15901
|
y[q] === N ? W[q][m] = v[q] : W[q][m] = a[q][m];
|
|
15902
15902
|
}
|
|
@@ -15919,9 +15919,9 @@ Example:
|
|
|
15919
15919
|
throw new RangeError("Dimension mismatch. Matrix A (" + b + ") must match Matrix B (" + d + ")");
|
|
15920
15920
|
var f = b[0], A = b[1], q, m = t, W = 0, v = o;
|
|
15921
15921
|
typeof M == "string" && M === _ && M !== "mixed" && (q = M, m = e.find(t, [q, q]), W = e.convert(0, q), v = e.find(o, [q, q]));
|
|
15922
|
-
var y = a && l ? [] : void 0, N = [],
|
|
15922
|
+
var y = a && l ? [] : void 0, N = [], D = [], R = a && l ? [] : void 0, w = a && l ? [] : void 0, B = [], T = [], $, P, X, K, j;
|
|
15923
15923
|
for (P = 0; P < A; P++) {
|
|
15924
|
-
|
|
15924
|
+
D[P] = N.length;
|
|
15925
15925
|
var Q = P + 1;
|
|
15926
15926
|
for (K = p[P], j = p[P + 1], X = K; X < j; X++)
|
|
15927
15927
|
$ = c[X], N.push($), B[$] = Q, R && (R[$] = a[X]);
|
|
@@ -15932,15 +15932,15 @@ Example:
|
|
|
15932
15932
|
m(n0, W) ? B[$] = null : R[$] = n0;
|
|
15933
15933
|
}
|
|
15934
15934
|
} else
|
|
15935
|
-
N.push($), T[$] = Q,
|
|
15936
|
-
if (R &&
|
|
15937
|
-
for (X =
|
|
15938
|
-
$ = N[X], B[$] === Q ? (y[X] = R[$], X++) : T[$] === Q ? (y[X] =
|
|
15935
|
+
N.push($), T[$] = Q, w && (w[$] = l[X]);
|
|
15936
|
+
if (R && w)
|
|
15937
|
+
for (X = D[P]; X < N.length; )
|
|
15938
|
+
$ = N[X], B[$] === Q ? (y[X] = R[$], X++) : T[$] === Q ? (y[X] = w[$], X++) : N.splice(X, 1);
|
|
15939
15939
|
}
|
|
15940
|
-
return
|
|
15940
|
+
return D[A] = N.length, i.createSparseMatrix({
|
|
15941
15941
|
values: y,
|
|
15942
15942
|
index: N,
|
|
15943
|
-
ptr:
|
|
15943
|
+
ptr: D,
|
|
15944
15944
|
size: [f, A],
|
|
15945
15945
|
datatype: M === i._datatype && _ === s._datatype ? q : void 0
|
|
15946
15946
|
});
|
|
@@ -15958,8 +15958,8 @@ Example:
|
|
|
15958
15958
|
typeof l == "string" && (d = l, s = e.convert(s, d), _ = e.find(o, [d, d]));
|
|
15959
15959
|
for (var f = [], A = [], q = [], m = 0; m < O; m++) {
|
|
15960
15960
|
for (var W = m + 1, v = b[m], y = b[m + 1], N = v; N < y; N++) {
|
|
15961
|
-
var
|
|
15962
|
-
A[
|
|
15961
|
+
var D = p[N];
|
|
15962
|
+
A[D] = c[N], q[D] = W;
|
|
15963
15963
|
}
|
|
15964
15964
|
for (var R = 0; R < u; R++)
|
|
15965
15965
|
m === 0 && (f[R] = []), q[R] === W ? f[R][m] = a ? _(s, A[R]) : _(A[R], s) : f[R][m] = s;
|
|
@@ -16047,8 +16047,8 @@ Example:
|
|
|
16047
16047
|
return l(W, v);
|
|
16048
16048
|
}
|
|
16049
16049
|
function l(W, v) {
|
|
16050
|
-
var y = W._data, N = W._size,
|
|
16051
|
-
|
|
16050
|
+
var y = W._data, N = W._size, D = W._datatype || W.getDataType(), R = v._data, w = v._size, B = v._datatype || v.getDataType(), T = N[0], $ = w[1], P, X = r, K = i;
|
|
16051
|
+
D && B && D === B && typeof D == "string" && D !== "mixed" && (P = D, X = e.find(r, [P, P]), K = e.find(i, [P, P]));
|
|
16052
16052
|
for (var j = [], Q = 0; Q < $; Q++) {
|
|
16053
16053
|
for (var n0 = K(y[0], R[0][Q]), l0 = 1; l0 < T; l0++)
|
|
16054
16054
|
n0 = X(n0, K(y[l0], R[l0][Q]));
|
|
@@ -16057,7 +16057,7 @@ Example:
|
|
|
16057
16057
|
return W.createDenseMatrix({
|
|
16058
16058
|
data: j,
|
|
16059
16059
|
size: [$],
|
|
16060
|
-
datatype:
|
|
16060
|
+
datatype: D === W._datatype && B === v._datatype ? P : void 0
|
|
16061
16061
|
});
|
|
16062
16062
|
}
|
|
16063
16063
|
var u = e("_multiplyMatrixVector", {
|
|
@@ -16070,8 +16070,8 @@ Example:
|
|
|
16070
16070
|
"SparseMatrix, SparseMatrix": m
|
|
16071
16071
|
});
|
|
16072
16072
|
function d(W, v) {
|
|
16073
|
-
var y = W._data, N = W._size,
|
|
16074
|
-
|
|
16073
|
+
var y = W._data, N = W._size, D = W._datatype || W.getDataType(), R = v._data, w = v._datatype || v.getDataType(), B = N[0], T = N[1], $, P = r, X = i;
|
|
16074
|
+
D && w && D === w && typeof D == "string" && D !== "mixed" && ($ = D, P = e.find(r, [$, $]), X = e.find(i, [$, $]));
|
|
16075
16075
|
for (var K = [], j = 0; j < B; j++) {
|
|
16076
16076
|
for (var Q = y[j], n0 = X(Q[0], R[0]), l0 = 1; l0 < T; l0++)
|
|
16077
16077
|
n0 = P(n0, X(Q[l0], R[l0]));
|
|
@@ -16080,12 +16080,12 @@ Example:
|
|
|
16080
16080
|
return W.createDenseMatrix({
|
|
16081
16081
|
data: K,
|
|
16082
16082
|
size: [B],
|
|
16083
|
-
datatype:
|
|
16083
|
+
datatype: D === W._datatype && w === v._datatype ? $ : void 0
|
|
16084
16084
|
});
|
|
16085
16085
|
}
|
|
16086
16086
|
function _(W, v) {
|
|
16087
|
-
var y = W._data, N = W._size,
|
|
16088
|
-
|
|
16087
|
+
var y = W._data, N = W._size, D = W._datatype || W.getDataType(), R = v._data, w = v._size, B = v._datatype || v.getDataType(), T = N[0], $ = N[1], P = w[1], X, K = r, j = i;
|
|
16088
|
+
D && B && D === B && typeof D == "string" && D !== "mixed" && D !== "mixed" && (X = D, K = e.find(r, [X, X]), j = e.find(i, [X, X]));
|
|
16089
16089
|
for (var Q = [], n0 = 0; n0 < T; n0++) {
|
|
16090
16090
|
var l0 = y[n0];
|
|
16091
16091
|
Q[n0] = [];
|
|
@@ -16098,28 +16098,28 @@ Example:
|
|
|
16098
16098
|
return W.createDenseMatrix({
|
|
16099
16099
|
data: Q,
|
|
16100
16100
|
size: [T, P],
|
|
16101
|
-
datatype:
|
|
16101
|
+
datatype: D === W._datatype && B === v._datatype ? X : void 0
|
|
16102
16102
|
});
|
|
16103
16103
|
}
|
|
16104
16104
|
function f(W, v) {
|
|
16105
|
-
var y = W._data, N = W._size,
|
|
16105
|
+
var y = W._data, N = W._size, D = W._datatype || W.getDataType(), R = v._values, w = v._index, B = v._ptr, T = v._size, $ = v._datatype || v._data === void 0 ? v._datatype : v.getDataType();
|
|
16106
16106
|
if (!R)
|
|
16107
16107
|
throw new Error("Cannot multiply Dense Matrix times Pattern only Matrix");
|
|
16108
16108
|
var P = N[0], X = T[1], K, j = r, Q = i, n0 = s, l0 = 0;
|
|
16109
|
-
|
|
16109
|
+
D && $ && D === $ && typeof D == "string" && D !== "mixed" && (K = D, j = e.find(r, [K, K]), Q = e.find(i, [K, K]), n0 = e.find(s, [K, K]), l0 = e.convert(0, K));
|
|
16110
16110
|
for (var r0 = [], G = [], _0 = [], A0 = v.createSparseMatrix({
|
|
16111
16111
|
values: r0,
|
|
16112
16112
|
index: G,
|
|
16113
16113
|
ptr: _0,
|
|
16114
16114
|
size: [P, X],
|
|
16115
|
-
datatype:
|
|
16115
|
+
datatype: D === W._datatype && $ === v._datatype ? K : void 0
|
|
16116
16116
|
}), q0 = 0; q0 < X; q0++) {
|
|
16117
16117
|
_0[q0] = G.length;
|
|
16118
16118
|
var h0 = B[q0], V0 = B[q0 + 1];
|
|
16119
16119
|
if (V0 > h0)
|
|
16120
16120
|
for (var G0 = 0, c1 = 0; c1 < P; c1++) {
|
|
16121
16121
|
for (var Z0 = c1 + 1, T0 = void 0, F = h0; F < V0; F++) {
|
|
16122
|
-
var J =
|
|
16122
|
+
var J = w[F];
|
|
16123
16123
|
G0 !== Z0 ? (T0 = Q(y[c1][J], R[F]), G0 = Z0) : T0 = j(T0, Q(y[c1][J], R[F]));
|
|
16124
16124
|
}
|
|
16125
16125
|
G0 === Z0 && !n0(T0, l0) && (G.push(c1), r0.push(T0));
|
|
@@ -16128,17 +16128,17 @@ Example:
|
|
|
16128
16128
|
return _0[X] = G.length, A0;
|
|
16129
16129
|
}
|
|
16130
16130
|
function A(W, v) {
|
|
16131
|
-
var y = W._values, N = W._index,
|
|
16131
|
+
var y = W._values, N = W._index, D = W._ptr, R = W._datatype || W._data === void 0 ? W._datatype : W.getDataType();
|
|
16132
16132
|
if (!y)
|
|
16133
16133
|
throw new Error("Cannot multiply Pattern only Matrix times Dense Matrix");
|
|
16134
|
-
var
|
|
16134
|
+
var w = v._data, B = v._datatype || v.getDataType(), T = W._size[0], $ = v._size[0], P = [], X = [], K = [], j, Q = r, n0 = i, l0 = s, r0 = 0;
|
|
16135
16135
|
R && B && R === B && typeof R == "string" && R !== "mixed" && (j = R, Q = e.find(r, [j, j]), n0 = e.find(i, [j, j]), l0 = e.find(s, [j, j]), r0 = e.convert(0, j));
|
|
16136
16136
|
var G = [], _0 = [];
|
|
16137
16137
|
K[0] = 0;
|
|
16138
16138
|
for (var A0 = 0; A0 < $; A0++) {
|
|
16139
|
-
var q0 =
|
|
16139
|
+
var q0 = w[A0];
|
|
16140
16140
|
if (!l0(q0, r0))
|
|
16141
|
-
for (var h0 =
|
|
16141
|
+
for (var h0 = D[A0], V0 = D[A0 + 1], G0 = h0; G0 < V0; G0++) {
|
|
16142
16142
|
var c1 = N[G0];
|
|
16143
16143
|
_0[c1] ? G[c1] = Q(G[c1], n0(q0, y[G0])) : (_0[c1] = !0, X.push(c1), G[c1] = n0(q0, y[G0]));
|
|
16144
16144
|
}
|
|
@@ -16156,10 +16156,10 @@ Example:
|
|
|
16156
16156
|
});
|
|
16157
16157
|
}
|
|
16158
16158
|
function q(W, v) {
|
|
16159
|
-
var y = W._values, N = W._index,
|
|
16159
|
+
var y = W._values, N = W._index, D = W._ptr, R = W._datatype || W._data === void 0 ? W._datatype : W.getDataType();
|
|
16160
16160
|
if (!y)
|
|
16161
16161
|
throw new Error("Cannot multiply Pattern only Matrix times Dense Matrix");
|
|
16162
|
-
var
|
|
16162
|
+
var w = v._data, B = v._datatype || v.getDataType(), T = W._size[0], $ = v._size[0], P = v._size[1], X, K = r, j = i, Q = s, n0 = 0;
|
|
16163
16163
|
R && B && R === B && typeof R == "string" && R !== "mixed" && (X = R, K = e.find(r, [X, X]), j = e.find(i, [X, X]), Q = e.find(s, [X, X]), n0 = e.convert(0, X));
|
|
16164
16164
|
for (var l0 = [], r0 = [], G = [], _0 = W.createSparseMatrix({
|
|
16165
16165
|
values: l0,
|
|
@@ -16170,9 +16170,9 @@ Example:
|
|
|
16170
16170
|
}), A0 = [], q0 = [], h0 = 0; h0 < P; h0++) {
|
|
16171
16171
|
G[h0] = r0.length;
|
|
16172
16172
|
for (var V0 = h0 + 1, G0 = 0; G0 < $; G0++) {
|
|
16173
|
-
var c1 =
|
|
16173
|
+
var c1 = w[G0][h0];
|
|
16174
16174
|
if (!Q(c1, n0))
|
|
16175
|
-
for (var Z0 =
|
|
16175
|
+
for (var Z0 = D[G0], T0 = D[G0 + 1], F = Z0; F < T0; F++) {
|
|
16176
16176
|
var J = N[F];
|
|
16177
16177
|
q0[J] !== V0 ? (q0[J] = V0, r0.push(J), A0[J] = j(c1, y[F])) : A0[J] = K(A0[J], j(c1, y[F]));
|
|
16178
16178
|
}
|
|
@@ -16185,7 +16185,7 @@ Example:
|
|
|
16185
16185
|
return G[P] = r0.length, _0;
|
|
16186
16186
|
}
|
|
16187
16187
|
function m(W, v) {
|
|
16188
|
-
var y = W._values, N = W._index,
|
|
16188
|
+
var y = W._values, N = W._index, D = W._ptr, R = W._datatype || W._data === void 0 ? W._datatype : W.getDataType(), w = v._values, B = v._index, T = v._ptr, $ = v._datatype || v._data === void 0 ? v._datatype : v.getDataType(), P = W._size[0], X = v._size[1], K = y && w, j, Q = r, n0 = i;
|
|
16189
16189
|
R && $ && R === $ && typeof R == "string" && R !== "mixed" && (j = R, Q = e.find(r, [j, j]), n0 = e.find(i, [j, j]));
|
|
16190
16190
|
for (var l0 = K ? [] : void 0, r0 = [], G = [], _0 = W.createSparseMatrix({
|
|
16191
16191
|
values: l0,
|
|
@@ -16198,10 +16198,10 @@ Example:
|
|
|
16198
16198
|
var s0 = t0 + 1;
|
|
16199
16199
|
for (Z0 = T[t0], T0 = T[t0 + 1], c1 = Z0; c1 < T0; c1++)
|
|
16200
16200
|
if (J = B[c1], K)
|
|
16201
|
-
for (V0 =
|
|
16202
|
-
F = N[h0], q0[F] !== s0 ? (q0[F] = s0, r0.push(F), A0[F] = n0(
|
|
16201
|
+
for (V0 = D[J], G0 = D[J + 1], h0 = V0; h0 < G0; h0++)
|
|
16202
|
+
F = N[h0], q0[F] !== s0 ? (q0[F] = s0, r0.push(F), A0[F] = n0(w[c1], y[h0])) : A0[F] = Q(A0[F], n0(w[c1], y[h0]));
|
|
16203
16203
|
else
|
|
16204
|
-
for (V0 =
|
|
16204
|
+
for (V0 = D[J], G0 = D[J + 1], h0 = V0; h0 < G0; h0++)
|
|
16205
16205
|
F = N[h0], q0[F] !== s0 && (q0[F] = s0, r0.push(F));
|
|
16206
16206
|
if (K)
|
|
16207
16207
|
for (var C0 = G[t0], b1 = r0.length, U1 = C0; U1 < b1; U1++) {
|
|
@@ -16219,8 +16219,8 @@ Example:
|
|
|
16219
16219
|
return pe(N) ? N.valueOf() : N;
|
|
16220
16220
|
}),
|
|
16221
16221
|
"Matrix, Matrix": function(v, y) {
|
|
16222
|
-
var N = v.size(),
|
|
16223
|
-
return p(N,
|
|
16222
|
+
var N = v.size(), D = y.size();
|
|
16223
|
+
return p(N, D), N.length === 1 ? D.length === 1 ? b(v, y, N[0]) : M(v, y) : D.length === 1 ? u(v, y) : O(v, y);
|
|
16224
16224
|
},
|
|
16225
16225
|
"Matrix, Array": e.referTo("Matrix,Matrix", (W) => (v, y) => W(v, t(y))),
|
|
16226
16226
|
"Array, Matrix": e.referToSelf((W) => (v, y) => W(t(v, y.storage()), y)),
|
|
@@ -16244,9 +16244,9 @@ Example:
|
|
|
16244
16244
|
},
|
|
16245
16245
|
"any, any": i,
|
|
16246
16246
|
"any, any, ...any": e.referToSelf((W) => (v, y, N) => {
|
|
16247
|
-
for (var
|
|
16248
|
-
|
|
16249
|
-
return
|
|
16247
|
+
for (var D = W(v, y), R = 0; R < N.length; R++)
|
|
16248
|
+
D = W(D, N[R]);
|
|
16249
|
+
return D;
|
|
16250
16250
|
})
|
|
16251
16251
|
});
|
|
16252
16252
|
}), xu = "subtract", Ww = ["typed", "matrix", "equalScalar", "subtractScalar", "unaryMinus", "DenseMatrix", "concat"], vw = /* @__PURE__ */ R0(xu, Ww, (n) => {
|
|
@@ -16306,8 +16306,8 @@ Example:
|
|
|
16306
16306
|
for (A = 0; A < u; A++) {
|
|
16307
16307
|
var N = A + 1;
|
|
16308
16308
|
for (r(s, A, v, m, N), r(o, A, y, W, N), f = 0; f < l; f++) {
|
|
16309
|
-
var
|
|
16310
|
-
q[f][A] = _(
|
|
16309
|
+
var D = v[f] === N ? m[f] : d, R = y[f] === N ? W[f] : d;
|
|
16310
|
+
q[f][A] = _(D, R);
|
|
16311
16311
|
}
|
|
16312
16312
|
}
|
|
16313
16313
|
return new t({
|
|
@@ -16586,8 +16586,8 @@ Example:
|
|
|
16586
16586
|
O.push(m), m += d[W], d[W] = O[W];
|
|
16587
16587
|
for (O.push(m), q = 0; q < c; q++)
|
|
16588
16588
|
for (var v = M[q], y = M[q + 1], N = v; N < y; N++) {
|
|
16589
|
-
var
|
|
16590
|
-
u[
|
|
16589
|
+
var D = d[b[N]]++;
|
|
16590
|
+
u[D] = q, p && (l[D] = Y1(p[N]));
|
|
16591
16591
|
}
|
|
16592
16592
|
return o.createSparseMatrix({
|
|
16593
16593
|
values: l,
|
|
@@ -17248,13 +17248,13 @@ Example:
|
|
|
17248
17248
|
return v;
|
|
17249
17249
|
}
|
|
17250
17250
|
if (!f && A) {
|
|
17251
|
-
for (var N = m(i(u[0]), d[0][0]),
|
|
17252
|
-
N = q(N, m(i(u[
|
|
17251
|
+
for (var N = m(i(u[0]), d[0][0]), D = 1; D < l; D++)
|
|
17252
|
+
N = q(N, m(i(u[D]), d[D][0]));
|
|
17253
17253
|
return N;
|
|
17254
17254
|
}
|
|
17255
17255
|
if (f && !A) {
|
|
17256
|
-
for (var R = m(i(u[0][0]), d[0]),
|
|
17257
|
-
R = q(R, m(i(u[
|
|
17256
|
+
for (var R = m(i(u[0][0]), d[0]), w = 1; w < l; w++)
|
|
17257
|
+
R = q(R, m(i(u[w][0]), d[w]));
|
|
17258
17258
|
return R;
|
|
17259
17259
|
}
|
|
17260
17260
|
if (f && A) {
|
|
@@ -17453,19 +17453,19 @@ Example:
|
|
|
17453
17453
|
if (y === 0)
|
|
17454
17454
|
throw Error("Cannot calculate inverse, determinant is zero");
|
|
17455
17455
|
O = N, O !== v && (A = m[v], m[v] = m[O], m[O] = A, A = W[v], W[v] = W[O], W[O] = A);
|
|
17456
|
-
var
|
|
17456
|
+
var D = m[v], R = W[v];
|
|
17457
17457
|
for (O = 0; O < l; O++) {
|
|
17458
|
-
var
|
|
17458
|
+
var w = m[O], B = W[O];
|
|
17459
17459
|
if (O !== v) {
|
|
17460
|
-
if (
|
|
17461
|
-
for (_ = r(o(
|
|
17462
|
-
|
|
17460
|
+
if (w[v] !== 0) {
|
|
17461
|
+
for (_ = r(o(w[v]), D[v]), d = v; d < u; d++)
|
|
17462
|
+
w[d] = i(w[d], s(_, D[d]));
|
|
17463
17463
|
for (d = 0; d < u; d++)
|
|
17464
17464
|
B[d] = i(B[d], s(_, R[d]));
|
|
17465
17465
|
}
|
|
17466
17466
|
} else {
|
|
17467
|
-
for (_ =
|
|
17468
|
-
|
|
17467
|
+
for (_ = D[v], d = v; d < u; d++)
|
|
17468
|
+
w[d] = r(w[d], _);
|
|
17469
17469
|
for (d = 0; d < u; d++)
|
|
17470
17470
|
B[d] = r(B[d], _);
|
|
17471
17471
|
}
|
|
@@ -17531,20 +17531,20 @@ Example:
|
|
|
17531
17531
|
if (N++, q === N && (N = y, v++, m === v))
|
|
17532
17532
|
return W;
|
|
17533
17533
|
[W[N], W[y]] = [W[y], W[N]];
|
|
17534
|
-
for (var
|
|
17535
|
-
W[y][R] = o(W[y][R],
|
|
17536
|
-
for (var
|
|
17537
|
-
if (
|
|
17538
|
-
|
|
17534
|
+
for (var D = W[y][v], R = 0; R < m; R++)
|
|
17535
|
+
W[y][R] = o(W[y][R], D);
|
|
17536
|
+
for (var w = 0; w < q; w++)
|
|
17537
|
+
if (w !== y) {
|
|
17538
|
+
D = W[w][v];
|
|
17539
17539
|
for (var B = 0; B < m; B++)
|
|
17540
|
-
W[
|
|
17540
|
+
W[w][B] = M(W[w][B], b(-1, b(D, W[y][B])));
|
|
17541
17541
|
}
|
|
17542
17542
|
v++;
|
|
17543
17543
|
}
|
|
17544
17544
|
return W;
|
|
17545
17545
|
}
|
|
17546
17546
|
function d(A, q, m) {
|
|
17547
|
-
var W = O(A, q, m), v = A.map((N,
|
|
17547
|
+
var W = O(A, q, m), v = A.map((N, D) => N.filter((R, w) => w < q && !_(a(W[w], W[w])))), y = W.filter((N, D) => !_(a(W[D], W[D])));
|
|
17548
17548
|
return {
|
|
17549
17549
|
C: v,
|
|
17550
17550
|
F: y
|
|
@@ -17957,21 +17957,21 @@ Example:
|
|
|
17957
17957
|
var N = f(_(
|
|
17958
17958
|
W.entropy ? [m, q(t)] : m ?? A(),
|
|
17959
17959
|
3
|
|
17960
|
-
), y),
|
|
17961
|
-
for (var
|
|
17962
|
-
|
|
17963
|
-
for (;
|
|
17964
|
-
|
|
17965
|
-
return (
|
|
17960
|
+
), y), D = new O(y), R = function() {
|
|
17961
|
+
for (var w = D.g(s), B = c, T = 0; w < p; )
|
|
17962
|
+
w = (w + T) * i, B *= i, T = D.g(1);
|
|
17963
|
+
for (; w >= b; )
|
|
17964
|
+
w /= 2, B /= 2, T >>>= 1;
|
|
17965
|
+
return (w + T) / B;
|
|
17966
17966
|
};
|
|
17967
17967
|
return R.int32 = function() {
|
|
17968
|
-
return
|
|
17968
|
+
return D.g(4) | 0;
|
|
17969
17969
|
}, R.quick = function() {
|
|
17970
|
-
return
|
|
17971
|
-
}, R.double = R, f(q(
|
|
17972
|
-
return $ && ($.S && d($,
|
|
17973
|
-
return d(
|
|
17974
|
-
}), T ? (r[a] =
|
|
17970
|
+
return D.g(4) / 4294967296;
|
|
17971
|
+
}, R.double = R, f(q(D.S), t), (W.pass || v || function(w, B, T, $) {
|
|
17972
|
+
return $ && ($.S && d($, D), w.state = function() {
|
|
17973
|
+
return d(D, {});
|
|
17974
|
+
}), T ? (r[a] = w, B) : w;
|
|
17975
17975
|
})(
|
|
17976
17976
|
R,
|
|
17977
17977
|
N,
|
|
@@ -17980,13 +17980,13 @@ Example:
|
|
|
17980
17980
|
);
|
|
17981
17981
|
}
|
|
17982
17982
|
function O(m) {
|
|
17983
|
-
var W, v = m.length, y = this, N = 0,
|
|
17983
|
+
var W, v = m.length, y = this, N = 0, D = y.i = y.j = 0, R = y.S = [];
|
|
17984
17984
|
for (v || (m = [v++]); N < i; )
|
|
17985
17985
|
R[N] = N++;
|
|
17986
17986
|
for (N = 0; N < i; N++)
|
|
17987
|
-
R[N] = R[
|
|
17988
|
-
(y.g = function(
|
|
17989
|
-
for (var B, T = 0, $ = y.i, P = y.j, X = y.S;
|
|
17987
|
+
R[N] = R[D = M & D + m[N % v] + (W = R[N])], R[D] = W;
|
|
17988
|
+
(y.g = function(w) {
|
|
17989
|
+
for (var B, T = 0, $ = y.i, P = y.j, X = y.S; w--; )
|
|
17990
17990
|
B = X[$ = M & $ + 1], T = T * i + X[M & (X[$] = X[P = M & P + B]) + (X[P] = B)];
|
|
17991
17991
|
return y.i = $, y.j = P, T;
|
|
17992
17992
|
})(i);
|
|
@@ -19009,7 +19009,7 @@ Example:
|
|
|
19009
19009
|
else {
|
|
19010
19010
|
this._newCacheData[i] = s;
|
|
19011
19011
|
const o = this._historyInputs[i];
|
|
19012
|
-
!(e.sourceTypeName || o?.sourceTypeName) && e.defval === o?.defval || e.sourceTypeName && o?.sourceTypeName === e.sourceTypeName ? s.sourceTypeName && (this._newCacheData[i].defval = this._variables[s.sourceTypeName]) : Object.assign(this._newCacheData[i], e);
|
|
19012
|
+
!o || !(e.sourceTypeName || o?.sourceTypeName) && e.defval === o?.defval || e.sourceTypeName && o?.sourceTypeName === e.sourceTypeName ? s.sourceTypeName && (this._newCacheData[i].defval = this._variables[s.sourceTypeName]) : Object.assign(this._newCacheData[i], e);
|
|
19013
19013
|
}
|
|
19014
19014
|
else {
|
|
19015
19015
|
const { defval: o } = e;
|
|
@@ -19672,26 +19672,26 @@ Example:
|
|
|
19672
19672
|
const { id: W, isClose: v, from_entry: y, qtys: N = {} } = m;
|
|
19673
19673
|
if (v && !N?.hasOwnProperty(d))
|
|
19674
19674
|
continue;
|
|
19675
|
-
const
|
|
19675
|
+
const D = `${W}-${y || ""}`;
|
|
19676
19676
|
let R = 0;
|
|
19677
19677
|
N.hasOwnProperty(d) ? R = N[d] || 0 : (R = this._calcExitOrderQty(f, l, m), N[d] = R, m.qtys = N);
|
|
19678
|
-
const
|
|
19679
|
-
if (
|
|
19678
|
+
const w = this._orderInExitHandle(b, { exitOrder: m, qty: R }, { open: e, low: t, high: r, close: i, distanceH: o, distanceL: a });
|
|
19679
|
+
if (w && (A?.push(D), s.push(w)), f -= R, f <= 0)
|
|
19680
19680
|
break;
|
|
19681
19681
|
}
|
|
19682
19682
|
for (const m of this._exitOrders) {
|
|
19683
19683
|
if (f <= 0)
|
|
19684
19684
|
break;
|
|
19685
|
-
const { from_entry: W, id: v, createTime: y = 0, isClose: N, qtys:
|
|
19686
|
-
if (N && !
|
|
19685
|
+
const { from_entry: W, id: v, createTime: y = 0, isClose: N, qtys: D = {} } = m;
|
|
19686
|
+
if (N && !D?.hasOwnProperty(d) && y !== O)
|
|
19687
19687
|
continue;
|
|
19688
19688
|
const R = `${v}-${W || ""}`;
|
|
19689
19689
|
if (M !== W && W || b.exitIds?.includes(R) || W === M && y < O || y >= O && b.exitIds?.includes(v))
|
|
19690
19690
|
continue;
|
|
19691
|
-
let
|
|
19692
|
-
|
|
19693
|
-
const B = this._orderInExitHandle(b, { exitOrder: m, qty:
|
|
19694
|
-
B && (y >= O && A?.push(v), A?.push(R), s.push(B)), f -=
|
|
19691
|
+
let w = 0;
|
|
19692
|
+
D.hasOwnProperty(d) ? w = D[d] || 0 : (w = this._calcExitOrderQty(f, l, m), D[d] = w, m.qtys = D);
|
|
19693
|
+
const B = this._orderInExitHandle(b, { exitOrder: m, qty: w }, { open: e, low: t, high: r, close: i, distanceH: o, distanceL: a });
|
|
19694
|
+
B && (y >= O && A?.push(v), A?.push(R), s.push(B)), f -= w;
|
|
19695
19695
|
}
|
|
19696
19696
|
b.occupancyQty = _ - f;
|
|
19697
19697
|
}
|
|
@@ -19719,8 +19719,8 @@ Example:
|
|
|
19719
19719
|
m && q.push({ order: e, price: m, index: W, isHighFront: A, exitInfo: { id: l, comment: d || u, qty: M } });
|
|
19720
19720
|
const [v, y] = this._getStopPrice(b, r, s, i, A, e);
|
|
19721
19721
|
v && q.push({ order: e, price: v, index: y, isHighFront: A, exitInfo: { id: l, comment: O || u, qty: M } });
|
|
19722
|
-
const [N,
|
|
19723
|
-
if (N && q.push({ order: e, price: N, index:
|
|
19722
|
+
const [N, D] = this._getTrailStopPrice(b, r, s, i, o, A, e);
|
|
19723
|
+
if (N && q.push({ order: e, price: N, index: D, isHighFront: A, exitInfo: { id: l, comment: _ || u, qty: M } }), q.length)
|
|
19724
19724
|
return this._executesSort(q), q[0];
|
|
19725
19725
|
}
|
|
19726
19726
|
_executesSort(e) {
|
|
@@ -19932,18 +19932,18 @@ Example:
|
|
|
19932
19932
|
if (M)
|
|
19933
19933
|
m = i && !s.isnew ? p : o;
|
|
19934
19934
|
else {
|
|
19935
|
-
let { stop: N, limit:
|
|
19936
|
-
const R = N && (N - o) * v >= 0, { backtest_fill_limits_assumption:
|
|
19937
|
-
|
|
19938
|
-
const B =
|
|
19939
|
-
R && B || (N && !R ||
|
|
19935
|
+
let { stop: N, limit: D } = e;
|
|
19936
|
+
const R = N && (N - o) * v >= 0, { backtest_fill_limits_assumption: w = 0 } = this._options;
|
|
19937
|
+
w > 0 && D && (D -= w * this._mintick * v);
|
|
19938
|
+
const B = D && (D - o) * v <= 0;
|
|
19939
|
+
R && B || (N && !R || D && !B) && (m = o);
|
|
19940
19940
|
}
|
|
19941
19941
|
const y = tt(m, N1(v * b, this._mintick));
|
|
19942
19942
|
if (m <= c && y >= a) {
|
|
19943
19943
|
const N = this._getOrders(O, q);
|
|
19944
19944
|
if (this._ocaGroupVerify(l, _, f), N.length) {
|
|
19945
|
-
const
|
|
19946
|
-
if (W = this._processOrders(N, m, l,
|
|
19945
|
+
const D = this._getHisOrderSurplusQty(O, l);
|
|
19946
|
+
if (W = this._processOrders(N, m, l, D, q, d, !1, "order"), W <= 0)
|
|
19947
19947
|
return;
|
|
19948
19948
|
}
|
|
19949
19949
|
this._calcCurrentOrder({ ...e, in_price: y, in_index: r, in_time: t, in_high: c, in_low: a, qty: W });
|
|
@@ -20200,13 +20200,13 @@ Example:
|
|
|
20200
20200
|
if (t = t - q * M * this._mintick, r < u) {
|
|
20201
20201
|
const m = u - r, W = (t - l) * q * r, v = O !== void 0 ? O / u * r : void 0, y = d !== void 0 ? d / u * r : void 0, N = f * m / A;
|
|
20202
20202
|
this._calcPercent({ ...e, isPartClose: !0, out_price: t, last_commission: N, out_id: i, out_index: c, out_high: b, out_low: p, out_time: a, out_comment: s, profit: W, out_qty: r, max_profit: v, trading_loss: y });
|
|
20203
|
-
const
|
|
20203
|
+
const D = (t - l) * q * m - N;
|
|
20204
20204
|
Object.assign(e, {
|
|
20205
20205
|
qty: m,
|
|
20206
|
-
profit:
|
|
20206
|
+
profit: D,
|
|
20207
20207
|
max_profit: O !== void 0 ? O - (v || 0) : void 0,
|
|
20208
20208
|
trading_loss: d !== void 0 ? d - (y || 0) : void 0,
|
|
20209
|
-
total_profit: this._totalChangeCapital +
|
|
20209
|
+
total_profit: this._totalChangeCapital + D
|
|
20210
20210
|
}), r = 0;
|
|
20211
20211
|
} else {
|
|
20212
20212
|
e.isDeal = !0;
|
|
@@ -20223,11 +20223,11 @@ Example:
|
|
|
20223
20223
|
this._totalChangeCapital -= y;
|
|
20224
20224
|
let N = f * c / b;
|
|
20225
20225
|
A += N, N += y, O = O - N, Object.assign(e, { commission: N });
|
|
20226
|
-
const
|
|
20227
|
-
const { qty: B = 0, original_qty: T = 0, commission: $ = 0 } =
|
|
20226
|
+
const D = this._orders.reduce((R, w) => {
|
|
20227
|
+
const { qty: B = 0, original_qty: T = 0, commission: $ = 0 } = w;
|
|
20228
20228
|
return R + $ * B / T;
|
|
20229
20229
|
}, 0);
|
|
20230
|
-
q +=
|
|
20230
|
+
q += D - l;
|
|
20231
20231
|
}
|
|
20232
20232
|
const m = M === e1.long ? 1 : -1;
|
|
20233
20233
|
let [W, v] = this._calcProfitAndLossHandle(a, c, m, p);
|
|
@@ -20392,8 +20392,8 @@ return ${f}` : f = `return ${f}`, f;
|
|
|
20392
20392
|
let q = JSON.parse(ns(A));
|
|
20393
20393
|
const m = [];
|
|
20394
20394
|
q = q.map((v) => {
|
|
20395
|
-
const { type: y, code: N, varNames:
|
|
20396
|
-
return y === 2 && !m.includes(
|
|
20395
|
+
const { type: y, code: N, varNames: D, dependSelf: R } = v;
|
|
20396
|
+
return y === 2 && !m.includes(D) && !R && (v.code = `let ${N}`), D && m.push(...D.split(", ")), v.memberCodes && Object.assign(a, { ...v.memberCodes }), v;
|
|
20397
20397
|
});
|
|
20398
20398
|
let W = b.map((v) => ({ ...v, isArg: !1, isPreArg: !0 }));
|
|
20399
20399
|
b = [], this._getDependCodes(W, q, i, p, b), this._getStmtFuncs(i, q, p, b);
|
|
@@ -20441,19 +20441,19 @@ ${u}`), u;
|
|
|
20441
20441
|
if (!y.length)
|
|
20442
20442
|
return;
|
|
20443
20443
|
const N = y.slice(W);
|
|
20444
|
-
let
|
|
20445
|
-
const
|
|
20446
|
-
if (
|
|
20444
|
+
let D = M, R = v + D;
|
|
20445
|
+
const w = y.length - 1;
|
|
20446
|
+
if (w < 0)
|
|
20447
20447
|
return;
|
|
20448
20448
|
const B = {
|
|
20449
|
-
lastBarIndex: y[
|
|
20450
|
-
lastBarTime: y[
|
|
20449
|
+
lastBarIndex: y[w].barIndex || w,
|
|
20450
|
+
lastBarTime: y[w].time,
|
|
20451
20451
|
interval: i,
|
|
20452
20452
|
mintick: b
|
|
20453
20453
|
};
|
|
20454
20454
|
if (q > v) {
|
|
20455
20455
|
let T;
|
|
20456
|
-
if (a ? T = this._lookaheadOnHandle(N, i, R, q, B, W, v, t,
|
|
20456
|
+
if (a ? T = this._lookaheadOnHandle(N, i, R, q, B, W, v, t, D, o) : T = this._lookaheadOffHandle(N, i, R, q, B, W, v, t, D, l || R, o), T)
|
|
20457
20457
|
return T;
|
|
20458
20458
|
if (T === null)
|
|
20459
20459
|
return;
|
|
@@ -20469,7 +20469,7 @@ ${u}`), u;
|
|
|
20469
20469
|
};
|
|
20470
20470
|
return;
|
|
20471
20471
|
}
|
|
20472
|
-
if (P <=
|
|
20472
|
+
if (P <= D && K > D)
|
|
20473
20473
|
return this._reqCacheData[t] = {
|
|
20474
20474
|
index: j,
|
|
20475
20475
|
periodStamp: v
|
|
@@ -20492,7 +20492,7 @@ ${u}`), u;
|
|
|
20492
20492
|
index: j,
|
|
20493
20493
|
periodStamp: v
|
|
20494
20494
|
}, { ...$, barIndex: j, nextBarTime: N[T + 1]?.time, ...B };
|
|
20495
|
-
if (P >=
|
|
20495
|
+
if (P >= D && P <= R && j === B.lastBarIndex)
|
|
20496
20496
|
return this._reqCacheData[t] = {
|
|
20497
20497
|
index: j,
|
|
20498
20498
|
periodStamp: v
|
|
@@ -20647,7 +20647,7 @@ ${u}`), u;
|
|
|
20647
20647
|
p.updateOptions({ interval: O, mintick: _, syminfo: { ...f.__syminfo, mintick: _, tickerid: d || f.tickerid, ticker: q || A || f.ticker } });
|
|
20648
20648
|
for (const [W, v] of i.entries()) {
|
|
20649
20649
|
const { barindex: y } = v, N = Object.assign(v, { barIndex: y || W, lastBarIndex: i[u].barindex || u, lastBarTime: i[u].time, nextBarTime: i[W + 1]?.time });
|
|
20650
|
-
if (p.updateData(N), M.update({ barIndex: N?.barindex || 0 }), v.result = Object.assign(v.result || {}, { [t]: l(p, b, M, o || [], t) }), M.endExecution(), M.errors.length && M.errors.some((
|
|
20650
|
+
if (p.updateData(N), M.update({ barIndex: N?.barindex || 0 }), v.result = Object.assign(v.result || {}, { [t]: l(p, b, M, o || [], t) }), M.endExecution(), M.errors.length && M.errors.some((D) => D.type === ge.Error))
|
|
20651
20651
|
return {
|
|
20652
20652
|
logs: [],
|
|
20653
20653
|
errors: M.errors
|
|
@@ -20873,8 +20873,8 @@ ${u}`), u;
|
|
|
20873
20873
|
if (a && c)
|
|
20874
20874
|
q = this._hlines.get(a?.key)?.price, m = this._hlines.get(c?.key)?.price, W = "hline";
|
|
20875
20875
|
else {
|
|
20876
|
-
const v = this._plots.get(p?.key), y = this._plots.get(b?.key), N = v?.data || [],
|
|
20877
|
-
if (q = N[u]?.value?.[1], m =
|
|
20876
|
+
const v = this._plots.get(p?.key), y = this._plots.get(b?.key), N = v?.data || [], D = y?.data || [];
|
|
20877
|
+
if (q = N[u]?.value?.[1], m = D[u]?.value?.[1], !u) {
|
|
20878
20878
|
const R = v?.force_overlay && y?.force_overlay;
|
|
20879
20879
|
(v?.force_overlay || y?.force_overlay) && !R ? this._errorListener.addError(Lt.plotFillForceOverlayErr, t, ge.Error) : M.force_overlay = R;
|
|
20880
20880
|
}
|
|
@@ -21244,8 +21244,8 @@ ${u}`), u;
|
|
|
21244
21244
|
if (t)
|
|
21245
21245
|
v.requestData = d?.requestCacheData?.requestData ?? [], d = f;
|
|
21246
21246
|
else {
|
|
21247
|
-
const { funcCacheData: R, varCacheData:
|
|
21248
|
-
v = B, A.setVarCacheData(
|
|
21247
|
+
const { funcCacheData: R, varCacheData: w, requestCacheData: B } = d;
|
|
21248
|
+
v = B, A.setVarCacheData(w), m.setFuncCacheData(R);
|
|
21249
21249
|
}
|
|
21250
21250
|
f.requestCacheData = v, self.workerStorage.set(`request_${l}`, new Map(v.request)), self.workerStorage.set(`request_${l}_data`, new Map(v.requestData)), self.workerStorage.set(`request_${l}_list`, new Map(v.requestList)), self.workerStorage.set(`request_${l}_tmp`, new Map(v.requestTmp));
|
|
21251
21251
|
let y = [];
|
|
@@ -21254,7 +21254,7 @@ ${u}`), u;
|
|
|
21254
21254
|
else if (r && r.length) {
|
|
21255
21255
|
const R = r.length - 1;
|
|
21256
21256
|
A.__isFirstRun = t, A.updateOptions({ interval: o, mintick: _, chart: c, syminfo: s }), m.updateOptions({ inputs: a, strategy: p });
|
|
21257
|
-
const
|
|
21257
|
+
const w = self.workerStorage.get(`request_${l}_tmp`), B = self.workerStorage.get(`request_${l}_data`), T = self.workerStorage.get(`request_${l}`), $ = Date.now();
|
|
21258
21258
|
try {
|
|
21259
21259
|
let P;
|
|
21260
21260
|
const X = self.workerStorage.get(`request_${l}_list`);
|
|
@@ -21275,10 +21275,10 @@ ${u}`), u;
|
|
|
21275
21275
|
}]
|
|
21276
21276
|
};
|
|
21277
21277
|
!t && (Q || Q === 0) && O.push(Q);
|
|
21278
|
-
const n0 = await nO(A, m, q, W, b, P, T, { newCacheData: f, cacheData: d },
|
|
21278
|
+
const n0 = await nO(A, m, q, W, b, P, T, { newCacheData: f, cacheData: d }, w, B, X);
|
|
21279
21279
|
if (n0)
|
|
21280
21280
|
return n0;
|
|
21281
|
-
P = Object.assign(j, { barIndex: Q || K, lastBarIndex: r[R].barindex || R, lastBarTime: r[R].time, nextBarTime: r[K + 1]?.time }), G3(A, m, q, W, b, P,
|
|
21281
|
+
P = Object.assign(j, { barIndex: Q || K, lastBarIndex: r[R].barindex || R, lastBarTime: r[R].time, nextBarTime: r[K + 1]?.time }), G3(A, m, q, W, b, P, w);
|
|
21282
21282
|
const l0 = m.errors;
|
|
21283
21283
|
if (l0.length && l0.some((r0) => r0.type === ge.Error))
|
|
21284
21284
|
return vs(l), {
|
|
@@ -21286,8 +21286,8 @@ ${u}`), u;
|
|
|
21286
21286
|
errors: X0.uniqBy(l0, "startLineNumber")
|
|
21287
21287
|
};
|
|
21288
21288
|
}
|
|
21289
|
-
if (
|
|
21290
|
-
const K = await nO(A, m, q, W, b, P, T, { newCacheData: f, cacheData: d },
|
|
21289
|
+
if (w?.size) {
|
|
21290
|
+
const K = await nO(A, m, q, W, b, P, T, { newCacheData: f, cacheData: d }, w, B, X);
|
|
21291
21291
|
if (K)
|
|
21292
21292
|
return vs(l), K;
|
|
21293
21293
|
}
|
|
@@ -21337,13 +21337,13 @@ ${u}`), u;
|
|
|
21337
21337
|
status: 1,
|
|
21338
21338
|
errors: N
|
|
21339
21339
|
};
|
|
21340
|
-
const
|
|
21340
|
+
const D = m.options(O, t);
|
|
21341
21341
|
return Object.assign(f, { inputCache: self.workerStorage.get(`inputs_${l}`), strategyCacheArgs: self.workerStorage.get(`strategy_${l}`), varCacheData: A.getVarCacheData(), funcCacheData: m.getFuncCacheData() }), vs(l), {
|
|
21342
21342
|
status: 0,
|
|
21343
21343
|
requestList: y,
|
|
21344
21344
|
errors: N,
|
|
21345
21345
|
cacheData: f,
|
|
21346
|
-
options: { ...
|
|
21346
|
+
options: { ...D, id: e.id }
|
|
21347
21347
|
};
|
|
21348
21348
|
}
|
|
21349
21349
|
async function nO(n, e, t, r, i, s, o, a, c, p, b) {
|
|
@@ -21352,15 +21352,15 @@ ${u}`), u;
|
|
|
21352
21352
|
const u = [], O = [];
|
|
21353
21353
|
for (const [_, f] of c) {
|
|
21354
21354
|
const { symbol: A = "", timeframe: q, id: m, calc_bars_count: W, ignore_invalid_symbol: v, originTimeframe: y } = f, N = `${A}:${q}`;
|
|
21355
|
-
let
|
|
21355
|
+
let D = 0;
|
|
21356
21356
|
const R = p?.get(m);
|
|
21357
|
-
R && (
|
|
21358
|
-
const [
|
|
21359
|
-
u.push(ks({ params: [{ exchange: B ?
|
|
21357
|
+
R && (D = R[R.length - 1]?.time || 0), O.push({ id: m, key: N, ignore_invalid_symbol: v, currentDataList: R, startTime: D });
|
|
21358
|
+
const [w, B] = A.split(":"), T = Number(y) <= 60 ? 1e4 : 5e3;
|
|
21359
|
+
u.push(ks({ params: [{ exchange: B ? w : "FX", symbol: B || w, limit: W || T, start: D, end: 0, period: q }] }).json());
|
|
21360
21360
|
}
|
|
21361
21361
|
const d = await Promise.all(u);
|
|
21362
21362
|
for (const [_, f] of d.entries()) {
|
|
21363
|
-
const { code: A, data: q, msg: m } = f, { id: W, key: v, ignore_invalid_symbol: y, currentDataList: N = [], startTime:
|
|
21363
|
+
const { code: A, data: q, msg: m } = f, { id: W, key: v, ignore_invalid_symbol: y, currentDataList: N = [], startTime: D } = O[_];
|
|
21364
21364
|
if (A !== 200 && !y)
|
|
21365
21365
|
return {
|
|
21366
21366
|
status: 1,
|
|
@@ -21374,13 +21374,13 @@ ${u}`), u;
|
|
|
21374
21374
|
}]
|
|
21375
21375
|
};
|
|
21376
21376
|
const R = q?.[v]?.list?.reverse() || [];
|
|
21377
|
-
R[0]?.time ===
|
|
21378
|
-
const
|
|
21379
|
-
if (
|
|
21377
|
+
R[0]?.time === D && N.splice(N.length - 1);
|
|
21378
|
+
const w = b?.get(W);
|
|
21379
|
+
if (w) {
|
|
21380
21380
|
const B = Number(q?.[v]?.tick_size) || 1e-5;
|
|
21381
|
-
|
|
21381
|
+
w.mintick = B;
|
|
21382
21382
|
}
|
|
21383
|
-
p?.set(W, N.concat(R));
|
|
21383
|
+
R.length && (R[R.length - 1].isrealtime = !0), p?.set(W, N.concat(R));
|
|
21384
21384
|
}
|
|
21385
21385
|
c?.clear();
|
|
21386
21386
|
}
|
|
@@ -21415,18 +21415,21 @@ ${u}`), u;
|
|
|
21415
21415
|
if (A.length) {
|
|
21416
21416
|
let q = A.length - 1;
|
|
21417
21417
|
const m = A[q].time;
|
|
21418
|
-
|
|
21419
|
-
|
|
21420
|
-
|
|
21418
|
+
f = f.filter((w) => w.time >= m);
|
|
21419
|
+
const W = f[0]?.time;
|
|
21420
|
+
if (W === m) {
|
|
21421
|
+
const w = A.pop();
|
|
21422
|
+
q -= 1, Object.assign(f[0], { result: w?.result });
|
|
21421
21423
|
}
|
|
21422
|
-
for (const
|
|
21423
|
-
q += 1,
|
|
21424
|
+
for (const w of f)
|
|
21425
|
+
q += 1, w.barindex = q;
|
|
21424
21426
|
if (!f.length)
|
|
21425
21427
|
continue;
|
|
21426
|
-
|
|
21428
|
+
W > m && f.push(Object.assign(A[q], { isrealtime: !1 })), f[f.length - 1].isrealtime = !0;
|
|
21429
|
+
const v = c?.get(O)?.mintick || 1e-5;
|
|
21427
21430
|
o?.set(O, A.concat(f));
|
|
21428
|
-
const { varCacheData:
|
|
21429
|
-
i.requestCacheData[b] =
|
|
21431
|
+
const { varCacheData: y, funcCacheData: N } = s[b] || {}, { errors: D = [], cacheData: R } = t.runScripts(l, b, !1, f, Object.assign(_, { varCacheData: y, funcCacheData: N, mintick: v }), u, d) || {};
|
|
21432
|
+
i.requestCacheData[b] = R, t.addErrors(D, b);
|
|
21430
21433
|
} else
|
|
21431
21434
|
o?.set(O, A.concat(f));
|
|
21432
21435
|
}
|
|
@@ -21706,9 +21709,9 @@ ${u}`), u;
|
|
|
21706
21709
|
maxprofit_long: v = 0,
|
|
21707
21710
|
maxprofit_short: y = 0,
|
|
21708
21711
|
maxloss_long: N = 0,
|
|
21709
|
-
maxloss_short:
|
|
21712
|
+
maxloss_short: D = 0,
|
|
21710
21713
|
maxprofit_percent_long: R = 0,
|
|
21711
|
-
maxprofit_percent_short:
|
|
21714
|
+
maxprofit_percent_short: w = 0,
|
|
21712
21715
|
maxloss_percent_long: B = 0,
|
|
21713
21716
|
maxloss_percent_short: T = 0,
|
|
21714
21717
|
hold_long_k_count: $ = 0,
|
|
@@ -21721,7 +21724,7 @@ ${u}`), u;
|
|
|
21721
21724
|
shapeRatioType: l0 = "NONE"
|
|
21722
21725
|
} = this._preHistoryOrderCalcResult;
|
|
21723
21726
|
const { profit: r0 = 0, profit_percent: G = 0, in_index: _0 = 0, out_index: A0 = 0, commission: q0 = 0, direction: h0, in_time: V0 = 0, out_time: G0 = 0, total_profit: c1 = 0 } = e, Z0 = A0 - _0 + 1;
|
|
21724
|
-
if (h0 === _1.long ? (t += r0, i += 1, o += G, m += q0, $ += Z0, r0 > 0 ? (b += G, A += 1, O += r0, X += Z0, v = Math.max(v, r0), R = Math.max(R, G)) : r0 < 0 && (c += G, _ += 1, l += r0, j += Z0, N = Math.min(N, r0), B = Math.min(B, G))) : (r += r0, s += 1, a += G, W += q0, P += Z0, r0 > 0 ? (M += G, q += 1, d += r0, K += Z0, y = Math.max(y, r0),
|
|
21727
|
+
if (h0 === _1.long ? (t += r0, i += 1, o += G, m += q0, $ += Z0, r0 > 0 ? (b += G, A += 1, O += r0, X += Z0, v = Math.max(v, r0), R = Math.max(R, G)) : r0 < 0 && (c += G, _ += 1, l += r0, j += Z0, N = Math.min(N, r0), B = Math.min(B, G))) : (r += r0, s += 1, a += G, W += q0, P += Z0, r0 > 0 ? (M += G, q += 1, d += r0, K += Z0, y = Math.max(y, r0), w = Math.max(w, G)) : r0 < 0 && (p += G, f += 1, u += r0, Q += Z0, D = Math.min(D, r0), T = Math.min(T, G))), !n0) {
|
|
21725
21728
|
const s0 = this._createBalanceByInterval(V0, Date.now());
|
|
21726
21729
|
n0 = s0.balanceByInterval, l0 = s0.shapeRatioType;
|
|
21727
21730
|
}
|
|
@@ -21757,9 +21760,9 @@ ${u}`), u;
|
|
|
21757
21760
|
maxprofit_long: v,
|
|
21758
21761
|
maxprofit_short: y,
|
|
21759
21762
|
maxloss_long: N,
|
|
21760
|
-
maxloss_short:
|
|
21763
|
+
maxloss_short: D,
|
|
21761
21764
|
maxprofit_percent_long: R,
|
|
21762
|
-
maxprofit_percent_short:
|
|
21765
|
+
maxprofit_percent_short: w,
|
|
21763
21766
|
maxloss_percent_long: B,
|
|
21764
21767
|
maxloss_percent_short: T,
|
|
21765
21768
|
hold_long_k_count: $,
|
|
@@ -23854,14 +23857,14 @@ ${u}`), u;
|
|
|
23854
23857
|
if (u < e)
|
|
23855
23858
|
m = { low: O, high: d, close: _, PDMS: (p || 0) + f, NDMS: (b || 0) + A, TRS: (M || 0) + q, count: u + 1, value: [void 0, void 0, void 0] };
|
|
23856
23859
|
else {
|
|
23857
|
-
const W = p - p / e + f, v = b - b / e + A, y = M - M / e + q, N = W / y * 100,
|
|
23858
|
-
let
|
|
23860
|
+
const W = p - p / e + f, v = b - b / e + A, y = M - M / e + q, N = W / y * 100, D = v / y * 100, R = Math.abs((N - D) / (N + D)) * 100;
|
|
23861
|
+
let w = R, B = [N, D, void 0];
|
|
23859
23862
|
if (u + 1 - e < t) {
|
|
23860
23863
|
const T = u + 1 - e;
|
|
23861
|
-
|
|
23864
|
+
w = ((l || 0) * (T - 1) + R) / T;
|
|
23862
23865
|
} else
|
|
23863
|
-
|
|
23864
|
-
m = { low: O, high: d, close: _, PDMS: W, NDMS: v, TRS: y, ADX:
|
|
23866
|
+
w = (l * (t - 1) + R) / t, B = [N, D, w];
|
|
23867
|
+
m = { low: O, high: d, close: _, PDMS: W, NDMS: v, TRS: y, ADX: w, count: u + 1, value: B };
|
|
23865
23868
|
}
|
|
23866
23869
|
return this._cacheDataHandle(i, m), m.value;
|
|
23867
23870
|
}
|
|
@@ -24362,7 +24365,7 @@ ${u}`), u;
|
|
|
24362
24365
|
else {
|
|
24363
24366
|
this._newCacheData[i] = s;
|
|
24364
24367
|
const o = this._historyInputs[i];
|
|
24365
|
-
!(e.sourceTypeName || o?.sourceTypeName) && e.defval === o?.defval || e.sourceTypeName && o?.sourceTypeName === e.sourceTypeName ? s.sourceTypeName && (this._newCacheData[i].defval = this._variables[s.sourceTypeName]) : Object.assign(this._newCacheData[i], e);
|
|
24368
|
+
!o || !(e.sourceTypeName || o?.sourceTypeName) && e.defval === o?.defval || e.sourceTypeName && o?.sourceTypeName === e.sourceTypeName ? s.sourceTypeName && (this._newCacheData[i].defval = this._variables[s.sourceTypeName]) : Object.assign(this._newCacheData[i], e);
|
|
24366
24369
|
}
|
|
24367
24370
|
else {
|
|
24368
24371
|
const { defval: o } = e;
|
|
@@ -25978,26 +25981,26 @@ ${u}`), u;
|
|
|
25978
25981
|
const { id: W, isClose: v, from_entry: y, qtys: N = {} } = m;
|
|
25979
25982
|
if (v && !N?.hasOwnProperty(d))
|
|
25980
25983
|
continue;
|
|
25981
|
-
const
|
|
25984
|
+
const D = `${W}-${y || ""}`;
|
|
25982
25985
|
let R = 0;
|
|
25983
25986
|
N.hasOwnProperty(d) ? R = N[d] || 0 : (R = this._calcExitOrderQty(f, l, m), N[d] = R, m.qtys = N);
|
|
25984
|
-
const
|
|
25985
|
-
if (
|
|
25987
|
+
const w = this._orderInExitHandle(b, { exitOrder: m, qty: R }, { open: e, low: t, high: r, close: i, distanceH: o, distanceL: a });
|
|
25988
|
+
if (w && (A?.push(D), s.push(w)), f -= R, f <= 0)
|
|
25986
25989
|
break;
|
|
25987
25990
|
}
|
|
25988
25991
|
for (const m of this._exitOrders) {
|
|
25989
25992
|
if (f <= 0)
|
|
25990
25993
|
break;
|
|
25991
|
-
const { from_entry: W, id: v, createTime: y = 0, isClose: N, qtys:
|
|
25992
|
-
if (N && !
|
|
25994
|
+
const { from_entry: W, id: v, createTime: y = 0, isClose: N, qtys: D = {} } = m;
|
|
25995
|
+
if (N && !D?.hasOwnProperty(d) && y !== O)
|
|
25993
25996
|
continue;
|
|
25994
25997
|
const R = `${v}-${W || ""}`;
|
|
25995
25998
|
if (M !== W && W || b.exitIds?.includes(R) || W === M && y < O || y >= O && b.exitIds?.includes(v))
|
|
25996
25999
|
continue;
|
|
25997
|
-
let
|
|
25998
|
-
|
|
25999
|
-
const B = this._orderInExitHandle(b, { exitOrder: m, qty:
|
|
26000
|
-
B && (y >= O && A?.push(v), A?.push(R), s.push(B)), f -=
|
|
26000
|
+
let w = 0;
|
|
26001
|
+
D.hasOwnProperty(d) ? w = D[d] || 0 : (w = this._calcExitOrderQty(f, l, m), D[d] = w, m.qtys = D);
|
|
26002
|
+
const B = this._orderInExitHandle(b, { exitOrder: m, qty: w }, { open: e, low: t, high: r, close: i, distanceH: o, distanceL: a });
|
|
26003
|
+
B && (y >= O && A?.push(v), A?.push(R), s.push(B)), f -= w;
|
|
26001
26004
|
}
|
|
26002
26005
|
b.occupancyQty = _ - f;
|
|
26003
26006
|
}
|
|
@@ -26025,8 +26028,8 @@ ${u}`), u;
|
|
|
26025
26028
|
W && m.push({ order: e, price: W, index: v, isHighFront: q, exitInfo: { id: l, comment: d || u, qty: M, alert_message: f } });
|
|
26026
26029
|
const [y, N] = this._getStopPrice(b, r, s, i, q, e);
|
|
26027
26030
|
y && m.push({ order: e, price: y, index: N, isHighFront: q, exitInfo: { id: l, comment: O || u, qty: M, alert_message: f } });
|
|
26028
|
-
const [
|
|
26029
|
-
if (
|
|
26031
|
+
const [D, R] = this._getTrailStopPrice(b, r, s, i, o, q, e);
|
|
26032
|
+
if (D && m.push({ order: e, price: D, index: R, isHighFront: q, exitInfo: { id: l, comment: _ || u, qty: M, alert_message: f } }), m.length)
|
|
26030
26033
|
return this._executesSort(m), m[0];
|
|
26031
26034
|
}
|
|
26032
26035
|
_executesSort(e) {
|
|
@@ -26239,18 +26242,18 @@ ${u}`), u;
|
|
|
26239
26242
|
if (M)
|
|
26240
26243
|
W = i && !s.isnew ? p : o;
|
|
26241
26244
|
else {
|
|
26242
|
-
let { stop:
|
|
26243
|
-
const
|
|
26245
|
+
let { stop: D, limit: R } = e;
|
|
26246
|
+
const w = D && (D - o) * y >= 0, { backtest_fill_limits_assumption: B = 0 } = this._options;
|
|
26244
26247
|
B > 0 && R && (R -= B * this._mintick * y);
|
|
26245
26248
|
const T = R && (R - o) * y <= 0;
|
|
26246
|
-
|
|
26249
|
+
w && T || (D && !w || R && !T) && (W = o);
|
|
26247
26250
|
}
|
|
26248
26251
|
const N = tt(W, N1(y * b, this._mintick));
|
|
26249
26252
|
if (W <= c && N >= a) {
|
|
26250
|
-
const
|
|
26251
|
-
if (this._ocaGroupVerify(l, _, f),
|
|
26253
|
+
const D = this._getOrders(O, q);
|
|
26254
|
+
if (this._ocaGroupVerify(l, _, f), D.length) {
|
|
26252
26255
|
const R = this._getHisOrderSurplusQty(O, l);
|
|
26253
|
-
if (v = this._processOrders(
|
|
26256
|
+
if (v = this._processOrders(D, W, l, R, q, d, !1, "order", void 0, m), v <= 0)
|
|
26254
26257
|
return;
|
|
26255
26258
|
}
|
|
26256
26259
|
this._calcCurrentOrder({ ...e, in_price: N, in_index: r, in_time: t, in_high: c, in_low: a, qty: v });
|
|
@@ -26505,9 +26508,9 @@ ${u}`), u;
|
|
|
26505
26508
|
_processOrder(e, t, r, i, s, o = !1, a) {
|
|
26506
26509
|
const { time: c, bar_index: p } = this._variables, { low: b, high: M } = this.calcOnOrderFillsData.data || this._variables, { slippage: l = 0 } = this._options, { in_price: u, qty: O = 0, max_profit: d, trading_loss: _, direction: f, commission: A = 0, original_qty: q = 0 } = e, m = f === _1.long ? 1 : -1;
|
|
26507
26510
|
if (t = t - m * l * this._mintick, r < O) {
|
|
26508
|
-
const W = O - r, v = (t - u) * m * r, y = d !== void 0 ? d / O * r : void 0, N = _ !== void 0 ? _ / O * r : void 0,
|
|
26509
|
-
this._calcPercent({ ...e, isPartClose: !0, out_price: t, last_commission:
|
|
26510
|
-
const R = (t - u) * m * W -
|
|
26511
|
+
const W = O - r, v = (t - u) * m * r, y = d !== void 0 ? d / O * r : void 0, N = _ !== void 0 ? _ / O * r : void 0, D = A * W / q;
|
|
26512
|
+
this._calcPercent({ ...e, isPartClose: !0, out_price: t, last_commission: D, out_id: i, out_index: p, out_high: M, out_low: b, out_time: c, out_comment: s, alert_message: a, profit: v, out_qty: r, max_profit: y, trading_loss: N });
|
|
26513
|
+
const R = (t - u) * m * W - D;
|
|
26511
26514
|
Object.assign(e, {
|
|
26512
26515
|
qty: W,
|
|
26513
26516
|
profit: R,
|
|
@@ -26530,11 +26533,11 @@ ${u}`), u;
|
|
|
26530
26533
|
this._totalChangeCapital -= y;
|
|
26531
26534
|
let N = f * c / b;
|
|
26532
26535
|
A += N, N += y, O = O - N, Object.assign(e, { commission: N });
|
|
26533
|
-
const
|
|
26534
|
-
const { qty: B = 0, original_qty: T = 0, commission: $ = 0 } =
|
|
26536
|
+
const D = this._orders.reduce((R, w) => {
|
|
26537
|
+
const { qty: B = 0, original_qty: T = 0, commission: $ = 0 } = w;
|
|
26535
26538
|
return R + $ * B / T;
|
|
26536
26539
|
}, 0);
|
|
26537
|
-
q +=
|
|
26540
|
+
q += D - l;
|
|
26538
26541
|
}
|
|
26539
26542
|
const m = M === _1.long ? 1 : -1;
|
|
26540
26543
|
let [W, v] = this._calcProfitAndLossHandle(a, c, m, p);
|
|
@@ -26698,8 +26701,8 @@ return ${f}` : f = `return ${f}`, f;
|
|
|
26698
26701
|
let q = JSON.parse(ns(A));
|
|
26699
26702
|
const m = [];
|
|
26700
26703
|
q = q.map((v) => {
|
|
26701
|
-
const { type: y, code: N, varNames:
|
|
26702
|
-
return y === 2 && !m.includes(
|
|
26704
|
+
const { type: y, code: N, varNames: D, dependSelf: R } = v;
|
|
26705
|
+
return y === 2 && !m.includes(D) && !R && (v.code = `let ${N}`), D && m.push(...D.split(", ")), v.memberCodes && Object.assign(a, { ...v.memberCodes }), v;
|
|
26703
26706
|
});
|
|
26704
26707
|
let W = b.map((v) => ({ ...v, isArg: !1, isPreArg: !0 }));
|
|
26705
26708
|
b = [], this._getDependCodes(W, q, i, p, b), this._getStmtFuncs(i, q, p, b);
|
|
@@ -26746,8 +26749,8 @@ ${u}`), u;
|
|
|
26746
26749
|
} = this._reqCacheDataLoc[t] || {}, N = d?.get(O);
|
|
26747
26750
|
if (!N.length)
|
|
26748
26751
|
return;
|
|
26749
|
-
const
|
|
26750
|
-
let R = M,
|
|
26752
|
+
const D = N.slice(v);
|
|
26753
|
+
let R = M, w = y + R;
|
|
26751
26754
|
const B = N.length - 1;
|
|
26752
26755
|
if (B < 0)
|
|
26753
26756
|
return;
|
|
@@ -26759,16 +26762,16 @@ ${u}`), u;
|
|
|
26759
26762
|
};
|
|
26760
26763
|
if (m > y) {
|
|
26761
26764
|
let $;
|
|
26762
|
-
if (a ? $ = this._lookaheadOnHandle(
|
|
26765
|
+
if (a ? $ = this._lookaheadOnHandle(D, u, w, m, T, v, y, t, R, o) : $ = this._lookaheadOffHandle(D, u, w, m, T, v, y, t, R, l || w, o), $)
|
|
26763
26766
|
return $;
|
|
26764
26767
|
if ($ === null)
|
|
26765
26768
|
return;
|
|
26766
26769
|
} else if (a)
|
|
26767
|
-
for (const [$, P] of
|
|
26770
|
+
for (const [$, P] of D.entries()) {
|
|
26768
26771
|
let { time: X, barIndex: K } = P;
|
|
26769
26772
|
X = X * 1e3;
|
|
26770
|
-
const j =
|
|
26771
|
-
if (X >=
|
|
26773
|
+
const j = D[$ + 1]?.time * 1e3 || X + m, Q = K || v + $;
|
|
26774
|
+
if (X >= w) {
|
|
26772
26775
|
this._reqCacheDataLoc[t] = {
|
|
26773
26776
|
index: Q,
|
|
26774
26777
|
periodStamp: y
|
|
@@ -26779,30 +26782,30 @@ ${u}`), u;
|
|
|
26779
26782
|
return this._reqCacheDataLoc[t] = {
|
|
26780
26783
|
index: Q,
|
|
26781
26784
|
periodStamp: y
|
|
26782
|
-
}, { ...P, barIndex: Q, nextBarTime:
|
|
26785
|
+
}, { ...P, barIndex: Q, nextBarTime: D[$ + 1]?.time, ...T };
|
|
26783
26786
|
}
|
|
26784
26787
|
else
|
|
26785
|
-
for (const [$, P] of
|
|
26788
|
+
for (const [$, P] of D.entries()) {
|
|
26786
26789
|
let { time: X, barIndex: K } = P;
|
|
26787
26790
|
X = X * 1e3;
|
|
26788
|
-
const j =
|
|
26789
|
-
if (X >
|
|
26791
|
+
const j = D[$ + 1]?.time * 1e3 || X + m, Q = K || v + $;
|
|
26792
|
+
if (X > w) {
|
|
26790
26793
|
this._reqCacheDataLoc[t] = {
|
|
26791
26794
|
index: Q,
|
|
26792
26795
|
periodStamp: y
|
|
26793
26796
|
};
|
|
26794
26797
|
return;
|
|
26795
26798
|
}
|
|
26796
|
-
if (X <
|
|
26799
|
+
if (X < w && w <= j)
|
|
26797
26800
|
return this._reqCacheDataLoc[t] = {
|
|
26798
26801
|
index: Q,
|
|
26799
26802
|
periodStamp: y
|
|
26800
|
-
}, { ...P, barIndex: Q, nextBarTime:
|
|
26801
|
-
if (X >= R && X <=
|
|
26803
|
+
}, { ...P, barIndex: Q, nextBarTime: D[$ + 1]?.time, ...T };
|
|
26804
|
+
if (X >= R && X <= w && Q === T.lastBarIndex)
|
|
26802
26805
|
return this._reqCacheDataLoc[t] = {
|
|
26803
26806
|
index: Q,
|
|
26804
26807
|
periodStamp: y
|
|
26805
|
-
}, { ...P, barIndex: Q, nextBarTime:
|
|
26808
|
+
}, { ...P, barIndex: Q, nextBarTime: D[$ + 1]?.time, ...T };
|
|
26806
26809
|
}
|
|
26807
26810
|
this._reqCacheDataLoc[t] = {
|
|
26808
26811
|
index: N.length,
|
|
@@ -26951,7 +26954,7 @@ ${u}`), u;
|
|
|
26951
26954
|
p.updateOptions({ interval: O, mintick: _, syminfo: { ...f.__syminfo, mintick: _, tickerid: d || f.tickerid, ticker: q || A || f.ticker } });
|
|
26952
26955
|
for (const [W, v] of i.entries()) {
|
|
26953
26956
|
const { barindex: y } = v, N = Object.assign(v, { barIndex: y || W, lastBarIndex: i[u].barindex || u, lastBarTime: i[u].time, nextBarTime: i[W + 1]?.time });
|
|
26954
|
-
if (p.updateData(N), M.update({ barIndex: N?.barindex || 0 }), v.result = Object.assign(v.result || {}, { [t]: l(p, b, M, o || [], t) }), M.endExecution(), M.errors.length && M.errors.some((
|
|
26957
|
+
if (p.updateData(N), M.update({ barIndex: N?.barindex || 0 }), v.result = Object.assign(v.result || {}, { [t]: l(p, b, M, o || [], t) }), M.endExecution(), M.errors.length && M.errors.some((D) => D.type === D1.Error))
|
|
26955
26958
|
return {
|
|
26956
26959
|
logs: [],
|
|
26957
26960
|
errors: M.errors
|
|
@@ -27216,8 +27219,8 @@ ${u}`), u;
|
|
|
27216
27219
|
if (a && c)
|
|
27217
27220
|
q = this._hlines.get(a?.key)?.price, m = this._hlines.get(c?.key)?.price, W = "hline";
|
|
27218
27221
|
else {
|
|
27219
|
-
const v = this._plots.get(p?.key), y = this._plots.get(b?.key), N = v?.data || [],
|
|
27220
|
-
if (q = N[u]?.value?.[1], m =
|
|
27222
|
+
const v = this._plots.get(p?.key), y = this._plots.get(b?.key), N = v?.data || [], D = y?.data || [];
|
|
27223
|
+
if (q = N[u]?.value?.[1], m = D[u]?.value?.[1], !u) {
|
|
27221
27224
|
const R = v?.force_overlay && y?.force_overlay;
|
|
27222
27225
|
(v?.force_overlay || y?.force_overlay) && !R ? this._errorListener.addError(re.plotFillForceOverlayErr, t, D1.Error) : M.force_overlay = R;
|
|
27223
27226
|
}
|
|
@@ -27517,7 +27520,7 @@ ${u}`), u;
|
|
|
27517
27520
|
s.mintick = v;
|
|
27518
27521
|
const y = /* @__PURE__ */ Object.create(null);
|
|
27519
27522
|
self.workerStorage.set(`inputs_${u}`, W?.inputCache), self.workerStorage.set(`strategy_${u}`, W?.strategyCacheArgs), self.workerStorage.set(`indicator_${u}`, W?.indicatorCacheArgs);
|
|
27520
|
-
const N = new Ab(u, O),
|
|
27523
|
+
const N = new Ab(u, O), D = new qb(), R = new mb(v, N, u, { customTimeframe: O, calcBarsCount: l, timeframeGaps: d }), w = new Function("_$_var", "_$_const", "_$_func", n);
|
|
27521
27524
|
let B = {
|
|
27522
27525
|
request: [],
|
|
27523
27526
|
requestData: [],
|
|
@@ -27538,7 +27541,7 @@ ${u}`), u;
|
|
|
27538
27541
|
}
|
|
27539
27542
|
}
|
|
27540
27543
|
if (y.requestCacheData = B, self.workerStorage.set(`request_${u}`, new Map(B.request)), self.workerStorage.set(`request_${u}_data`, new Map(B.requestData)), self.workerStorage.set(`request_${u}_list`, new Map(B.requestList)), self.workerStorage.set(`request_${u}_tmp`, new Map(B.requestTmp)), yB(M, u, R, { newCacheData: y, cacheData: W }), i)
|
|
27541
|
-
|
|
27544
|
+
w(N, D, R);
|
|
27542
27545
|
else if (f && f.length) {
|
|
27543
27546
|
const X = f.length - 1;
|
|
27544
27547
|
N.__isFirstRun = t, N.updateOptions({ interval: A, mintick: v, chart: c, syminfo: s }), R.updateOptions({ inputs: a, strategy: p });
|
|
@@ -27563,10 +27566,10 @@ ${u}`), u;
|
|
|
27563
27566
|
}]
|
|
27564
27567
|
};
|
|
27565
27568
|
!t && (A0 || A0 === 0) && m.push(A0);
|
|
27566
|
-
const q0 = await pO(N, R,
|
|
27569
|
+
const q0 = await pO(N, R, D, w, b, l0, Q, { newCacheData: y, cacheData: W }, K, j, r0);
|
|
27567
27570
|
if (q0)
|
|
27568
27571
|
return q0;
|
|
27569
|
-
l0 = Object.assign(_0, { barIndex: A0 || G, lastBarIndex: f[X].barindex || X, lastBarTime: f[X].time, nextBarTime: f[G + 1]?.time }), rf(N, R,
|
|
27572
|
+
l0 = Object.assign(_0, { barIndex: A0 || G, lastBarIndex: f[X].barindex || X, lastBarTime: f[X].time, nextBarTime: f[G + 1]?.time }), rf(N, R, D, w, b, l0, K);
|
|
27570
27573
|
const h0 = R.errors;
|
|
27571
27574
|
if (h0.length && h0.some((V0) => V0.type === D1.Error))
|
|
27572
27575
|
return ys(u), {
|
|
@@ -27575,7 +27578,7 @@ ${u}`), u;
|
|
|
27575
27578
|
};
|
|
27576
27579
|
}
|
|
27577
27580
|
if (K?.size) {
|
|
27578
|
-
const G = await pO(N, R,
|
|
27581
|
+
const G = await pO(N, R, D, w, b, l0, Q, { newCacheData: y, cacheData: W }, K, j, r0);
|
|
27579
27582
|
if (G)
|
|
27580
27583
|
return ys(u), G;
|
|
27581
27584
|
}
|
|
@@ -27642,15 +27645,15 @@ ${u}`), u;
|
|
|
27642
27645
|
const u = [], O = [];
|
|
27643
27646
|
for (const [_, f] of c) {
|
|
27644
27647
|
const { symbol: A = "", timeframe: q, id: m, calc_bars_count: W, ignore_invalid_symbol: v, originTimeframe: y } = f, N = `${A}:${q}`;
|
|
27645
|
-
let
|
|
27648
|
+
let D = 0;
|
|
27646
27649
|
const R = p?.get(m);
|
|
27647
|
-
R && (
|
|
27648
|
-
const [
|
|
27649
|
-
u.push(ks({ params: [{ exchange: B ?
|
|
27650
|
+
R && (D = R[R.length - 1]?.time || 0), O.push({ id: m, key: N, ignore_invalid_symbol: v, currentDataList: R, startTime: D });
|
|
27651
|
+
const [w, B] = A.split(":"), T = Number(y) <= 60 ? 1e4 : 5e3;
|
|
27652
|
+
u.push(ks({ params: [{ exchange: B ? w : "FX", symbol: B || w, limit: W || T, start: D, end: 0, period: q }] }).json());
|
|
27650
27653
|
}
|
|
27651
27654
|
const d = await Promise.all(u);
|
|
27652
27655
|
for (const [_, f] of d.entries()) {
|
|
27653
|
-
const { code: A, data: q, msg: m } = f, { id: W, key: v, ignore_invalid_symbol: y, currentDataList: N = [], startTime:
|
|
27656
|
+
const { code: A, data: q, msg: m } = f, { id: W, key: v, ignore_invalid_symbol: y, currentDataList: N = [], startTime: D } = O[_];
|
|
27654
27657
|
if (A !== 200 && !y)
|
|
27655
27658
|
return {
|
|
27656
27659
|
status: 1,
|
|
@@ -27664,13 +27667,13 @@ ${u}`), u;
|
|
|
27664
27667
|
}]
|
|
27665
27668
|
};
|
|
27666
27669
|
const R = q?.[v]?.list?.reverse() || [];
|
|
27667
|
-
R[0]?.time ===
|
|
27668
|
-
const
|
|
27669
|
-
if (
|
|
27670
|
+
R[0]?.time === D && N.splice(N.length - 1);
|
|
27671
|
+
const w = b?.get(W);
|
|
27672
|
+
if (w) {
|
|
27670
27673
|
const B = Number(q?.[v]?.tick_size) || 1e-5;
|
|
27671
|
-
|
|
27674
|
+
w.mintick = B;
|
|
27672
27675
|
}
|
|
27673
|
-
p?.set(W, N.concat(R));
|
|
27676
|
+
R.length && (R[R.length - 1].isrealtime = !0), p?.set(W, N.concat(R));
|
|
27674
27677
|
}
|
|
27675
27678
|
c?.clear();
|
|
27676
27679
|
}
|
|
@@ -27705,18 +27708,21 @@ ${u}`), u;
|
|
|
27705
27708
|
if (A.length) {
|
|
27706
27709
|
let q = A.length - 1;
|
|
27707
27710
|
const m = A[q].time;
|
|
27708
|
-
|
|
27709
|
-
|
|
27710
|
-
|
|
27711
|
+
f = f.filter((w) => w.time >= m);
|
|
27712
|
+
const W = f[0]?.time;
|
|
27713
|
+
if (W === m) {
|
|
27714
|
+
const w = A.pop();
|
|
27715
|
+
q -= 1, Object.assign(f[0], { result: w?.result });
|
|
27711
27716
|
}
|
|
27712
|
-
for (const
|
|
27713
|
-
q += 1,
|
|
27717
|
+
for (const w of f)
|
|
27718
|
+
q += 1, w.barindex = q;
|
|
27714
27719
|
if (!f.length)
|
|
27715
27720
|
continue;
|
|
27716
|
-
|
|
27721
|
+
W > m && f.push(Object.assign(A[q], { isrealtime: !1 })), f[f.length - 1].isrealtime = !0;
|
|
27722
|
+
const v = c?.get(O)?.mintick || 1e-5;
|
|
27717
27723
|
o?.set(O, A.concat(f));
|
|
27718
|
-
const { varCacheData:
|
|
27719
|
-
i.requestCacheData[b] =
|
|
27724
|
+
const { varCacheData: y, funcCacheData: N } = s[b] || {}, { errors: D = [], cacheData: R } = t.runScripts(l, b, !1, f, Object.assign(_, { varCacheData: y, funcCacheData: N, mintick: v }), u, d) || {};
|
|
27725
|
+
i.requestCacheData[b] = R, t.addErrors(D, b);
|
|
27720
27726
|
} else
|
|
27721
27727
|
o?.set(O, A.concat(f));
|
|
27722
27728
|
}
|
|
@@ -28704,14 +28710,14 @@ ${u}`), u;
|
|
|
28704
28710
|
if (u < e)
|
|
28705
28711
|
m = { low: O, high: d, close: _, PDMS: (p || 0) + f, NDMS: (b || 0) + A, TRS: (M || 0) + q, count: u + 1, value: [void 0, void 0, void 0] };
|
|
28706
28712
|
else {
|
|
28707
|
-
const W = p - p / e + f, v = b - b / e + A, y = M - M / e + q, N = W / y * 100,
|
|
28708
|
-
let
|
|
28713
|
+
const W = p - p / e + f, v = b - b / e + A, y = M - M / e + q, N = W / y * 100, D = v / y * 100, R = Math.abs((N - D) / (N + D)) * 100;
|
|
28714
|
+
let w = R, B = [N, D, void 0];
|
|
28709
28715
|
if (u + 1 - e < t) {
|
|
28710
28716
|
const T = u + 1 - e;
|
|
28711
|
-
|
|
28717
|
+
w = ((l || 0) * (T - 1) + R) / T;
|
|
28712
28718
|
} else
|
|
28713
|
-
|
|
28714
|
-
m = { low: O, high: d, close: _, PDMS: W, NDMS: v, TRS: y, ADX:
|
|
28719
|
+
w = (l * (t - 1) + R) / t, B = [N, D, w];
|
|
28720
|
+
m = { low: O, high: d, close: _, PDMS: W, NDMS: v, TRS: y, ADX: w, count: u + 1, value: B };
|
|
28715
28721
|
}
|
|
28716
28722
|
return this._cacheDataHandle(i, m), m.value;
|
|
28717
28723
|
}
|
|
@@ -29290,7 +29296,7 @@ ${u}`), u;
|
|
|
29290
29296
|
else {
|
|
29291
29297
|
this._newCacheData[i] = s;
|
|
29292
29298
|
const o = this._historyInputs[i];
|
|
29293
|
-
!(e.sourceTypeName || o?.sourceTypeName) && e.defval === o?.defval || e.sourceTypeName && o?.sourceTypeName === e.sourceTypeName ? s.sourceTypeName && (this._newCacheData[i].defval = this._variables[s.sourceTypeName]) : Object.assign(this._newCacheData[i], e);
|
|
29299
|
+
!o || !(e.sourceTypeName || o?.sourceTypeName) && e.defval === o?.defval || e.sourceTypeName && o?.sourceTypeName === e.sourceTypeName ? s.sourceTypeName && (this._newCacheData[i].defval = this._variables[s.sourceTypeName]) : Object.assign(this._newCacheData[i], e);
|
|
29294
29300
|
}
|
|
29295
29301
|
else {
|
|
29296
29302
|
const { defval: o, display: a } = e;
|
|
@@ -30641,7 +30647,7 @@ ${cf}`);
|
|
|
30641
30647
|
strassen3x3(e) {
|
|
30642
30648
|
e = v0.checkMatrix(e);
|
|
30643
30649
|
let t = new v0(3, 3);
|
|
30644
|
-
const r = this.get(0, 0), i = this.get(0, 1), s = this.get(0, 2), o = this.get(1, 0), a = this.get(1, 1), c = this.get(1, 2), p = this.get(2, 0), b = this.get(2, 1), M = this.get(2, 2), l = e.get(0, 0), u = e.get(0, 1), O = e.get(0, 2), d = e.get(1, 0), _ = e.get(1, 1), f = e.get(1, 2), A = e.get(2, 0), q = e.get(2, 1), m = e.get(2, 2), W = (r + i + s - o - a - b - M) * _, v = (r - o) * (-u + _), y = a * (-l + u + d - _ - f - A + m), N = (-r + o + a) * (l - u + _),
|
|
30650
|
+
const r = this.get(0, 0), i = this.get(0, 1), s = this.get(0, 2), o = this.get(1, 0), a = this.get(1, 1), c = this.get(1, 2), p = this.get(2, 0), b = this.get(2, 1), M = this.get(2, 2), l = e.get(0, 0), u = e.get(0, 1), O = e.get(0, 2), d = e.get(1, 0), _ = e.get(1, 1), f = e.get(1, 2), A = e.get(2, 0), q = e.get(2, 1), m = e.get(2, 2), W = (r + i + s - o - a - b - M) * _, v = (r - o) * (-u + _), y = a * (-l + u + d - _ - f - A + m), N = (-r + o + a) * (l - u + _), D = (o + a) * (-l + u), R = r * l, w = (-r + p + b) * (l - O + f), B = (-r + p) * (O - f), T = (p + b) * (-l + O), $ = (r + i + s - a - c - p - b) * f, P = b * (-l + O + d - _ - f - A + q), X = (-s + b + M) * (_ + A - q), K = (s - M) * (_ - q), j = s * A, Q = (b + M) * (-A + q), n0 = (-s + a + c) * (f + A - m), l0 = (s - c) * (f - m), r0 = (a + c) * (-A + m), G = i * d, _0 = c * q, A0 = o * O, q0 = p * u, h0 = M * m, V0 = R + j + G, G0 = W + N + D + R + X + j + Q, c1 = R + w + T + $ + j + n0 + r0, Z0 = v + y + N + R + j + n0 + l0, T0 = v + N + D + R + _0, F = j + n0 + l0 + r0 + A0, J = R + w + B + P + X + K + j, t0 = X + K + j + Q + q0, s0 = R + w + B + T + h0;
|
|
30645
30651
|
return t.set(0, 0, V0), t.set(0, 1, G0), t.set(0, 2, c1), t.set(1, 0, Z0), t.set(1, 1, T0), t.set(1, 2, F), t.set(2, 0, J), t.set(2, 1, t0), t.set(2, 2, s0), t;
|
|
30646
30652
|
}
|
|
30647
30653
|
mmulStrassen(e) {
|
|
@@ -30665,12 +30671,12 @@ ${cf}`);
|
|
|
30665
30671
|
if (u <= 512 || O <= 512)
|
|
30666
30672
|
return M.mmul(l);
|
|
30667
30673
|
u % 2 === 1 && O % 2 === 1 ? (M = a(M, u + 1, O + 1), l = a(l, u + 1, O + 1)) : u % 2 === 1 ? (M = a(M, u + 1, O), l = a(l, u + 1, O)) : O % 2 === 1 && (M = a(M, u, O + 1), l = a(l, u, O + 1));
|
|
30668
|
-
let d = parseInt(M.rows / 2, 10), _ = parseInt(M.columns / 2, 10), f = M.subMatrix(0, d - 1, 0, _ - 1), A = l.subMatrix(0, d - 1, 0, _ - 1), q = M.subMatrix(0, d - 1, _, M.columns - 1), m = l.subMatrix(0, d - 1, _, l.columns - 1), W = M.subMatrix(d, M.rows - 1, 0, _ - 1), v = l.subMatrix(d, l.rows - 1, 0, _ - 1), y = M.subMatrix(d, M.rows - 1, _, M.columns - 1), N = l.subMatrix(d, l.rows - 1, _, l.columns - 1),
|
|
30674
|
+
let d = parseInt(M.rows / 2, 10), _ = parseInt(M.columns / 2, 10), f = M.subMatrix(0, d - 1, 0, _ - 1), A = l.subMatrix(0, d - 1, 0, _ - 1), q = M.subMatrix(0, d - 1, _, M.columns - 1), m = l.subMatrix(0, d - 1, _, l.columns - 1), W = M.subMatrix(d, M.rows - 1, 0, _ - 1), v = l.subMatrix(d, l.rows - 1, 0, _ - 1), y = M.subMatrix(d, M.rows - 1, _, M.columns - 1), N = l.subMatrix(d, l.rows - 1, _, l.columns - 1), D = b(
|
|
30669
30675
|
M1.add(f, y),
|
|
30670
30676
|
M1.add(A, N),
|
|
30671
30677
|
d,
|
|
30672
30678
|
_
|
|
30673
|
-
), R = b(M1.add(W, y), A, d, _),
|
|
30679
|
+
), R = b(M1.add(W, y), A, d, _), w = b(f, M1.sub(m, N), d, _), B = b(y, M1.sub(v, A), d, _), T = b(M1.add(f, q), N, d, _), $ = b(
|
|
30674
30680
|
M1.sub(W, f),
|
|
30675
30681
|
M1.add(A, m),
|
|
30676
30682
|
d,
|
|
@@ -30680,10 +30686,10 @@ ${cf}`);
|
|
|
30680
30686
|
M1.add(v, N),
|
|
30681
30687
|
d,
|
|
30682
30688
|
_
|
|
30683
|
-
), X = M1.add(
|
|
30689
|
+
), X = M1.add(D, B);
|
|
30684
30690
|
X.sub(T), X.add(P);
|
|
30685
|
-
let K = M1.add(
|
|
30686
|
-
Q.add(
|
|
30691
|
+
let K = M1.add(w, T), j = M1.add(R, B), Q = M1.sub(D, R);
|
|
30692
|
+
Q.add(w), Q.add($);
|
|
30687
30693
|
let n0 = M1.zeros(2 * X.rows, 2 * X.columns);
|
|
30688
30694
|
return n0 = n0.setSubMatrix(X, 0, 0), n0 = n0.setSubMatrix(K, X.rows, 0), n0 = n0.setSubMatrix(j, 0, X.columns), n0 = n0.setSubMatrix(Q, X.rows, X.columns), n0.subMatrix(0, u - 1, 0, O - 1);
|
|
30689
30695
|
}
|
|
@@ -31687,124 +31693,124 @@ ${cf}`);
|
|
|
31687
31693
|
for (let R = 0; R < v; R++) {
|
|
31688
31694
|
if (R < m) {
|
|
31689
31695
|
O[R] = 0;
|
|
31690
|
-
for (let
|
|
31691
|
-
O[R] = pi(O[R], M.get(
|
|
31696
|
+
for (let w = R; w < r; w++)
|
|
31697
|
+
O[R] = pi(O[R], M.get(w, R));
|
|
31692
31698
|
if (O[R] !== 0) {
|
|
31693
31699
|
M.get(R, R) < 0 && (O[R] = -O[R]);
|
|
31694
|
-
for (let
|
|
31695
|
-
M.set(
|
|
31700
|
+
for (let w = R; w < r; w++)
|
|
31701
|
+
M.set(w, R, M.get(w, R) / O[R]);
|
|
31696
31702
|
M.set(R, R, M.get(R, R) + 1);
|
|
31697
31703
|
}
|
|
31698
31704
|
O[R] = -O[R];
|
|
31699
31705
|
}
|
|
31700
|
-
for (let
|
|
31706
|
+
for (let w = R + 1; w < i; w++) {
|
|
31701
31707
|
if (R < m && O[R] !== 0) {
|
|
31702
31708
|
let B = 0;
|
|
31703
31709
|
for (let T = R; T < r; T++)
|
|
31704
|
-
B += M.get(T, R) * M.get(T,
|
|
31710
|
+
B += M.get(T, R) * M.get(T, w);
|
|
31705
31711
|
B = -B / M.get(R, R);
|
|
31706
31712
|
for (let T = R; T < r; T++)
|
|
31707
|
-
M.set(T,
|
|
31713
|
+
M.set(T, w, M.get(T, w) + B * M.get(T, R));
|
|
31708
31714
|
}
|
|
31709
|
-
f[
|
|
31715
|
+
f[w] = M.get(R, w);
|
|
31710
31716
|
}
|
|
31711
31717
|
if (c && R < m)
|
|
31712
|
-
for (let
|
|
31713
|
-
d.set(
|
|
31718
|
+
for (let w = R; w < r; w++)
|
|
31719
|
+
d.set(w, R, M.get(w, R));
|
|
31714
31720
|
if (R < W) {
|
|
31715
31721
|
f[R] = 0;
|
|
31716
|
-
for (let
|
|
31717
|
-
f[R] = pi(f[R], f[
|
|
31722
|
+
for (let w = R + 1; w < i; w++)
|
|
31723
|
+
f[R] = pi(f[R], f[w]);
|
|
31718
31724
|
if (f[R] !== 0) {
|
|
31719
31725
|
f[R + 1] < 0 && (f[R] = 0 - f[R]);
|
|
31720
|
-
for (let
|
|
31721
|
-
f[
|
|
31726
|
+
for (let w = R + 1; w < i; w++)
|
|
31727
|
+
f[w] /= f[R];
|
|
31722
31728
|
f[R + 1] += 1;
|
|
31723
31729
|
}
|
|
31724
31730
|
if (f[R] = -f[R], R + 1 < r && f[R] !== 0) {
|
|
31725
|
-
for (let
|
|
31726
|
-
A[
|
|
31727
|
-
for (let
|
|
31731
|
+
for (let w = R + 1; w < r; w++)
|
|
31732
|
+
A[w] = 0;
|
|
31733
|
+
for (let w = R + 1; w < r; w++)
|
|
31728
31734
|
for (let B = R + 1; B < i; B++)
|
|
31729
|
-
A[
|
|
31730
|
-
for (let
|
|
31731
|
-
let B = -f[
|
|
31735
|
+
A[w] += f[B] * M.get(w, B);
|
|
31736
|
+
for (let w = R + 1; w < i; w++) {
|
|
31737
|
+
let B = -f[w] / f[R + 1];
|
|
31732
31738
|
for (let T = R + 1; T < r; T++)
|
|
31733
|
-
M.set(T,
|
|
31739
|
+
M.set(T, w, M.get(T, w) + B * A[T]);
|
|
31734
31740
|
}
|
|
31735
31741
|
}
|
|
31736
31742
|
if (p)
|
|
31737
|
-
for (let
|
|
31738
|
-
_.set(
|
|
31743
|
+
for (let w = R + 1; w < i; w++)
|
|
31744
|
+
_.set(w, R, f[w]);
|
|
31739
31745
|
}
|
|
31740
31746
|
}
|
|
31741
31747
|
let y = Math.min(i, r + 1);
|
|
31742
31748
|
if (m < i && (O[m] = M.get(m, m)), r < y && (O[y - 1] = 0), W + 1 < y && (f[W] = M.get(W, y - 1)), f[y - 1] = 0, c) {
|
|
31743
31749
|
for (let R = m; R < l; R++) {
|
|
31744
|
-
for (let
|
|
31745
|
-
d.set(
|
|
31750
|
+
for (let w = 0; w < r; w++)
|
|
31751
|
+
d.set(w, R, 0);
|
|
31746
31752
|
d.set(R, R, 1);
|
|
31747
31753
|
}
|
|
31748
31754
|
for (let R = m - 1; R >= 0; R--)
|
|
31749
31755
|
if (O[R] !== 0) {
|
|
31750
|
-
for (let
|
|
31756
|
+
for (let w = R + 1; w < l; w++) {
|
|
31751
31757
|
let B = 0;
|
|
31752
31758
|
for (let T = R; T < r; T++)
|
|
31753
|
-
B += d.get(T, R) * d.get(T,
|
|
31759
|
+
B += d.get(T, R) * d.get(T, w);
|
|
31754
31760
|
B = -B / d.get(R, R);
|
|
31755
31761
|
for (let T = R; T < r; T++)
|
|
31756
|
-
d.set(T,
|
|
31762
|
+
d.set(T, w, d.get(T, w) + B * d.get(T, R));
|
|
31757
31763
|
}
|
|
31758
|
-
for (let
|
|
31759
|
-
d.set(
|
|
31764
|
+
for (let w = R; w < r; w++)
|
|
31765
|
+
d.set(w, R, -d.get(w, R));
|
|
31760
31766
|
d.set(R, R, 1 + d.get(R, R));
|
|
31761
|
-
for (let
|
|
31762
|
-
d.set(
|
|
31767
|
+
for (let w = 0; w < R - 1; w++)
|
|
31768
|
+
d.set(w, R, 0);
|
|
31763
31769
|
} else {
|
|
31764
|
-
for (let
|
|
31765
|
-
d.set(
|
|
31770
|
+
for (let w = 0; w < r; w++)
|
|
31771
|
+
d.set(w, R, 0);
|
|
31766
31772
|
d.set(R, R, 1);
|
|
31767
31773
|
}
|
|
31768
31774
|
}
|
|
31769
31775
|
if (p)
|
|
31770
31776
|
for (let R = i - 1; R >= 0; R--) {
|
|
31771
31777
|
if (R < W && f[R] !== 0)
|
|
31772
|
-
for (let
|
|
31778
|
+
for (let w = R + 1; w < i; w++) {
|
|
31773
31779
|
let B = 0;
|
|
31774
31780
|
for (let T = R + 1; T < i; T++)
|
|
31775
|
-
B += _.get(T, R) * _.get(T,
|
|
31781
|
+
B += _.get(T, R) * _.get(T, w);
|
|
31776
31782
|
B = -B / _.get(R + 1, R);
|
|
31777
31783
|
for (let T = R + 1; T < i; T++)
|
|
31778
|
-
_.set(T,
|
|
31784
|
+
_.set(T, w, _.get(T, w) + B * _.get(T, R));
|
|
31779
31785
|
}
|
|
31780
|
-
for (let
|
|
31781
|
-
_.set(
|
|
31786
|
+
for (let w = 0; w < i; w++)
|
|
31787
|
+
_.set(w, R, 0);
|
|
31782
31788
|
_.set(R, R, 1);
|
|
31783
31789
|
}
|
|
31784
|
-
let N = y - 1,
|
|
31790
|
+
let N = y - 1, D = Number.EPSILON;
|
|
31785
31791
|
for (; y > 0; ) {
|
|
31786
|
-
let R,
|
|
31792
|
+
let R, w;
|
|
31787
31793
|
for (R = y - 2; R >= -1 && R !== -1; R--) {
|
|
31788
|
-
const B = Number.MIN_VALUE +
|
|
31794
|
+
const B = Number.MIN_VALUE + D * Math.abs(O[R] + Math.abs(O[R + 1]));
|
|
31789
31795
|
if (Math.abs(f[R]) <= B || Number.isNaN(f[R])) {
|
|
31790
31796
|
f[R] = 0;
|
|
31791
31797
|
break;
|
|
31792
31798
|
}
|
|
31793
31799
|
}
|
|
31794
31800
|
if (R === y - 2)
|
|
31795
|
-
|
|
31801
|
+
w = 4;
|
|
31796
31802
|
else {
|
|
31797
31803
|
let B;
|
|
31798
31804
|
for (B = y - 1; B >= R && B !== R; B--) {
|
|
31799
31805
|
let T = (B !== y ? Math.abs(f[B]) : 0) + (B !== R + 1 ? Math.abs(f[B - 1]) : 0);
|
|
31800
|
-
if (Math.abs(O[B]) <=
|
|
31806
|
+
if (Math.abs(O[B]) <= D * T) {
|
|
31801
31807
|
O[B] = 0;
|
|
31802
31808
|
break;
|
|
31803
31809
|
}
|
|
31804
31810
|
}
|
|
31805
|
-
B === R ?
|
|
31811
|
+
B === R ? w = 3 : B === y - 1 ? w = 1 : (w = 2, R = B);
|
|
31806
31812
|
}
|
|
31807
|
-
switch (R++,
|
|
31813
|
+
switch (R++, w) {
|
|
31808
31814
|
case 1: {
|
|
31809
31815
|
let B = f[y - 2];
|
|
31810
31816
|
f[y - 2] = 0;
|
|
@@ -32183,7 +32189,7 @@ ${cf}`);
|
|
|
32183
32189
|
}
|
|
32184
32190
|
}
|
|
32185
32191
|
function wx(n, e, t, r, i) {
|
|
32186
|
-
let s = n - 1, o = 0, a = n - 1, c = Number.EPSILON, p = 0, b = 0, M = 0, l = 0, u = 0, O = 0, d = 0, _ = 0, f, A, q, m, W, v, y, N,
|
|
32192
|
+
let s = n - 1, o = 0, a = n - 1, c = Number.EPSILON, p = 0, b = 0, M = 0, l = 0, u = 0, O = 0, d = 0, _ = 0, f, A, q, m, W, v, y, N, D, R, w, B, T, $, P;
|
|
32187
32193
|
for (f = 0; f < n; f++)
|
|
32188
32194
|
for ((f < o || f > a) && (t[f] = i.get(f, f), e[f] = 0), A = Math.max(f - 1, 0); A < n; A++)
|
|
32189
32195
|
b = b + Math.abs(i.get(f, A));
|
|
@@ -32204,28 +32210,28 @@ ${cf}`);
|
|
|
32204
32210
|
t[s - 1] = N + M, t[s] = N + M, e[s - 1] = d, e[s] = -d;
|
|
32205
32211
|
s = s - 2, _ = 0;
|
|
32206
32212
|
} else {
|
|
32207
|
-
if (N = i.get(s, s),
|
|
32213
|
+
if (N = i.get(s, s), D = 0, y = 0, m < s && (D = i.get(s - 1, s - 1), y = i.get(s, s - 1) * i.get(s - 1, s)), _ === 10) {
|
|
32208
32214
|
for (p += N, f = o; f <= s; f++)
|
|
32209
32215
|
i.set(f, f, i.get(f, f) - N);
|
|
32210
|
-
O = Math.abs(i.get(s, s - 1)) + Math.abs(i.get(s - 1, s - 2)), N =
|
|
32216
|
+
O = Math.abs(i.get(s, s - 1)) + Math.abs(i.get(s - 1, s - 2)), N = D = 0.75 * O, y = -0.4375 * O * O;
|
|
32211
32217
|
}
|
|
32212
|
-
if (_ === 30 && (O = (
|
|
32213
|
-
for (O = Math.sqrt(O),
|
|
32218
|
+
if (_ === 30 && (O = (D - N) / 2, O = O * O + y, O > 0)) {
|
|
32219
|
+
for (O = Math.sqrt(O), D < N && (O = -O), O = N - y / ((D - N) / 2 + O), f = o; f <= s; f++)
|
|
32214
32220
|
i.set(f, f, i.get(f, f) - O);
|
|
32215
|
-
p += O, N =
|
|
32221
|
+
p += O, N = D = y = 0.964;
|
|
32216
32222
|
}
|
|
32217
|
-
for (_ = _ + 1, W = s - 2; W >= m && (d = i.get(W, W), u = N - d, O =
|
|
32223
|
+
for (_ = _ + 1, W = s - 2; W >= m && (d = i.get(W, W), u = N - d, O = D - d, M = (u * O - y) / i.get(W + 1, W) + i.get(W, W + 1), l = i.get(W + 1, W + 1) - d - u - O, u = i.get(W + 2, W + 1), O = Math.abs(M) + Math.abs(l) + Math.abs(u), M = M / O, l = l / O, u = u / O, !(W === m || Math.abs(i.get(W, W - 1)) * (Math.abs(l) + Math.abs(u)) < c * (Math.abs(M) * (Math.abs(i.get(W - 1, W - 1)) + Math.abs(d) + Math.abs(i.get(W + 1, W + 1)))))); )
|
|
32218
32224
|
W--;
|
|
32219
32225
|
for (f = W + 2; f <= s; f++)
|
|
32220
32226
|
i.set(f, f - 2, 0), f > W + 2 && i.set(f, f - 3, 0);
|
|
32221
32227
|
for (q = W; q <= s - 1 && ($ = q !== s - 1, q !== W && (M = i.get(q, q - 1), l = i.get(q + 1, q - 1), u = $ ? i.get(q + 2, q - 1) : 0, N = Math.abs(M) + Math.abs(l) + Math.abs(u), N !== 0 && (M = M / N, l = l / N, u = u / N)), N !== 0); q++)
|
|
32222
32228
|
if (O = Math.sqrt(M * M + l * l + u * u), M < 0 && (O = -O), O !== 0) {
|
|
32223
|
-
for (q !== W ? i.set(q, q - 1, -O * N) : m !== W && i.set(q, q - 1, -i.get(q, q - 1)), M = M + O, N = M / O,
|
|
32224
|
-
M = i.get(q, A) + l * i.get(q + 1, A), $ && (M = M + u * i.get(q + 2, A), i.set(q + 2, A, i.get(q + 2, A) - M * d)), i.set(q, A, i.get(q, A) - M * N), i.set(q + 1, A, i.get(q + 1, A) - M *
|
|
32229
|
+
for (q !== W ? i.set(q, q - 1, -O * N) : m !== W && i.set(q, q - 1, -i.get(q, q - 1)), M = M + O, N = M / O, D = l / O, d = u / O, l = l / M, u = u / M, A = q; A < n; A++)
|
|
32230
|
+
M = i.get(q, A) + l * i.get(q + 1, A), $ && (M = M + u * i.get(q + 2, A), i.set(q + 2, A, i.get(q + 2, A) - M * d)), i.set(q, A, i.get(q, A) - M * N), i.set(q + 1, A, i.get(q + 1, A) - M * D);
|
|
32225
32231
|
for (f = 0; f <= Math.min(s, q + 3); f++)
|
|
32226
|
-
M = N * i.get(f, q) +
|
|
32232
|
+
M = N * i.get(f, q) + D * i.get(f, q + 1), $ && (M = M + d * i.get(f, q + 2), i.set(f, q + 2, i.get(f, q + 2) - M * u)), i.set(f, q, i.get(f, q) - M), i.set(f, q + 1, i.get(f, q + 1) - M * l);
|
|
32227
32233
|
for (f = o; f <= a; f++)
|
|
32228
|
-
M = N * r.get(f, q) +
|
|
32234
|
+
M = N * r.get(f, q) + D * r.get(f, q + 1), $ && (M = M + d * r.get(f, q + 2), r.set(f, q + 2, r.get(f, q + 2) - M * u)), r.set(f, q, r.get(f, q) - M), r.set(f, q + 1, r.get(f, q + 1) - M * l);
|
|
32229
32235
|
}
|
|
32230
32236
|
}
|
|
32231
32237
|
}
|
|
@@ -32237,23 +32243,23 @@ ${cf}`);
|
|
|
32237
32243
|
u = u + i.get(f, A) * i.get(A, s);
|
|
32238
32244
|
if (e[f] < 0)
|
|
32239
32245
|
d = y, O = u;
|
|
32240
|
-
else if (m = f, e[f] === 0 ? i.set(f, s, y !== 0 ? -u / y : -u / (c * b)) : (N = i.get(f, f + 1),
|
|
32246
|
+
else if (m = f, e[f] === 0 ? i.set(f, s, y !== 0 ? -u / y : -u / (c * b)) : (N = i.get(f, f + 1), D = i.get(f + 1, f), l = (t[f] - M) * (t[f] - M) + e[f] * e[f], v = (N * O - d * u) / l, i.set(f, s, v), i.set(
|
|
32241
32247
|
f + 1,
|
|
32242
32248
|
s,
|
|
32243
|
-
Math.abs(N) > Math.abs(d) ? (-u - y * v) / N : (-O -
|
|
32249
|
+
Math.abs(N) > Math.abs(d) ? (-u - y * v) / N : (-O - D * v) / d
|
|
32244
32250
|
)), v = Math.abs(i.get(f, s)), c * v * v > 1)
|
|
32245
32251
|
for (A = f; A <= s; A++)
|
|
32246
32252
|
i.set(A, s, i.get(A, s) / v);
|
|
32247
32253
|
}
|
|
32248
32254
|
else if (l < 0)
|
|
32249
32255
|
for (m = s - 1, Math.abs(i.get(s, s - 1)) > Math.abs(i.get(s - 1, s)) ? (i.set(s - 1, s - 1, l / i.get(s, s - 1)), i.set(s - 1, s, -(i.get(s, s) - M) / i.get(s, s - 1))) : (P = wa(0, -i.get(s - 1, s), i.get(s - 1, s - 1) - M, l), i.set(s - 1, s - 1, P[0]), i.set(s - 1, s, P[1])), i.set(s, s - 1, 0), i.set(s, s, 1), f = s - 2; f >= 0; f--) {
|
|
32250
|
-
for (R = 0,
|
|
32251
|
-
R = R + i.get(f, A) * i.get(A, s - 1),
|
|
32256
|
+
for (R = 0, w = 0, A = m; A <= s; A++)
|
|
32257
|
+
R = R + i.get(f, A) * i.get(A, s - 1), w = w + i.get(f, A) * i.get(A, s);
|
|
32252
32258
|
if (y = i.get(f, f) - M, e[f] < 0)
|
|
32253
|
-
d = y, u = R, O =
|
|
32254
|
-
else if (m = f, e[f] === 0 ? (P = wa(-R, -
|
|
32255
|
-
N * u - d * R + l *
|
|
32256
|
-
N * O - d *
|
|
32259
|
+
d = y, u = R, O = w;
|
|
32260
|
+
else if (m = f, e[f] === 0 ? (P = wa(-R, -w, y, l), i.set(f, s - 1, P[0]), i.set(f, s, P[1])) : (N = i.get(f, f + 1), D = i.get(f + 1, f), B = (t[f] - M) * (t[f] - M) + e[f] * e[f] - l * l, T = (t[f] - M) * 2 * l, B === 0 && T === 0 && (B = c * b * (Math.abs(y) + Math.abs(l) + Math.abs(N) + Math.abs(D) + Math.abs(d))), P = wa(
|
|
32261
|
+
N * u - d * R + l * w,
|
|
32262
|
+
N * O - d * w - l * R,
|
|
32257
32263
|
B,
|
|
32258
32264
|
T
|
|
32259
32265
|
), i.set(f, s - 1, P[0]), i.set(f, s, P[1]), Math.abs(N) > Math.abs(d) + Math.abs(l) ? (i.set(
|
|
@@ -32263,10 +32269,10 @@ ${cf}`);
|
|
|
32263
32269
|
), i.set(
|
|
32264
32270
|
f + 1,
|
|
32265
32271
|
s,
|
|
32266
|
-
(-
|
|
32272
|
+
(-w - y * i.get(f, s) - l * i.get(f, s - 1)) / N
|
|
32267
32273
|
)) : (P = wa(
|
|
32268
|
-
-u -
|
|
32269
|
-
-O -
|
|
32274
|
+
-u - D * i.get(f, s - 1),
|
|
32275
|
+
-O - D * i.get(f, s),
|
|
32270
32276
|
d,
|
|
32271
32277
|
l
|
|
32272
32278
|
), i.set(f + 1, s - 1, P[0]), i.set(f + 1, s, P[1]))), v = Math.max(Math.abs(i.get(f, s - 1)), Math.abs(i.get(f, s))), c * v * v > 1)
|
|
@@ -35438,26 +35444,26 @@ ${cf}`);
|
|
|
35438
35444
|
const { id: W, isClose: v, from_entry: y, qtys: N = {} } = m;
|
|
35439
35445
|
if (v && !N?.hasOwnProperty(d))
|
|
35440
35446
|
continue;
|
|
35441
|
-
const
|
|
35447
|
+
const D = `${W}-${y || ""}`;
|
|
35442
35448
|
let R = 0;
|
|
35443
35449
|
N.hasOwnProperty(d) ? R = N[d] || 0 : (R = this._calcExitOrderQty(f, l, m), N[d] = R, m.qtys = N);
|
|
35444
|
-
const
|
|
35445
|
-
if (
|
|
35450
|
+
const w = this._orderInExitHandle(b, { exitOrder: m, qty: R }, { open: e, low: t, high: r, close: i, distanceH: o, distanceL: a });
|
|
35451
|
+
if (w && (A?.push(D), s.push(w)), f -= R, f <= 0)
|
|
35446
35452
|
break;
|
|
35447
35453
|
}
|
|
35448
35454
|
for (const m of this._exitOrders) {
|
|
35449
35455
|
if (f <= 0)
|
|
35450
35456
|
break;
|
|
35451
|
-
const { from_entry: W, id: v, createTime: y = 0, isClose: N, qtys:
|
|
35452
|
-
if (N && !
|
|
35457
|
+
const { from_entry: W, id: v, createTime: y = 0, isClose: N, qtys: D = {} } = m;
|
|
35458
|
+
if (N && !D?.hasOwnProperty(d) && y !== O)
|
|
35453
35459
|
continue;
|
|
35454
35460
|
const R = `${v}-${W || ""}`;
|
|
35455
35461
|
if (M !== W && W || b.exitIds?.includes(R) || W === M && y < O || y >= O && b.exitIds?.includes(v))
|
|
35456
35462
|
continue;
|
|
35457
|
-
let
|
|
35458
|
-
|
|
35459
|
-
const B = this._orderInExitHandle(b, { exitOrder: m, qty:
|
|
35460
|
-
B && (y >= O && A?.push(v), A?.push(R), s.push(B)), f -=
|
|
35463
|
+
let w = 0;
|
|
35464
|
+
D.hasOwnProperty(d) ? w = D[d] || 0 : (w = this._calcExitOrderQty(f, l, m), D[d] = w, m.qtys = D);
|
|
35465
|
+
const B = this._orderInExitHandle(b, { exitOrder: m, qty: w }, { open: e, low: t, high: r, close: i, distanceH: o, distanceL: a });
|
|
35466
|
+
B && (y >= O && A?.push(v), A?.push(R), s.push(B)), f -= w;
|
|
35461
35467
|
}
|
|
35462
35468
|
b.occupancyQty = _ - f;
|
|
35463
35469
|
}
|
|
@@ -35485,8 +35491,8 @@ ${cf}`);
|
|
|
35485
35491
|
W && m.push({ order: e, price: W, index: v, isHighFront: q, exitInfo: { id: l, comment: d || u, qty: M, alert_message: f } });
|
|
35486
35492
|
const [y, N] = this._getStopPrice(b, r, s, i, q, e);
|
|
35487
35493
|
y && m.push({ order: e, price: y, index: N, isHighFront: q, exitInfo: { id: l, comment: O || u, qty: M, alert_message: f } });
|
|
35488
|
-
const [
|
|
35489
|
-
if (
|
|
35494
|
+
const [D, R] = this._getTrailStopPrice(b, r, s, i, o, q, e);
|
|
35495
|
+
if (D && m.push({ order: e, price: D, index: R, isHighFront: q, exitInfo: { id: l, comment: _ || u, qty: M, alert_message: f } }), m.length)
|
|
35490
35496
|
return this._executesSort(m), m[0];
|
|
35491
35497
|
}
|
|
35492
35498
|
_executesSort(e) {
|
|
@@ -35710,18 +35716,18 @@ ${cf}`);
|
|
|
35710
35716
|
if (M)
|
|
35711
35717
|
W = i && !s.isnew ? p : o;
|
|
35712
35718
|
else {
|
|
35713
|
-
let { stop:
|
|
35714
|
-
const
|
|
35719
|
+
let { stop: D, limit: R } = e;
|
|
35720
|
+
const w = D && (D - o) * y >= 0, { backtest_fill_limits_assumption: B = 0 } = this._options;
|
|
35715
35721
|
B > 0 && R && (R -= B * this._mintick * y);
|
|
35716
35722
|
const T = R && (R - o) * y <= 0;
|
|
35717
|
-
|
|
35723
|
+
w && T || (D && !w || R && !T) && (W = o);
|
|
35718
35724
|
}
|
|
35719
35725
|
const N = tt(W, N1(y * b, this._mintick));
|
|
35720
35726
|
if (W <= c && N >= a) {
|
|
35721
|
-
const
|
|
35722
|
-
if (this._ocaGroupVerify(l, _, f),
|
|
35727
|
+
const D = this._getOrders(O, q);
|
|
35728
|
+
if (this._ocaGroupVerify(l, _, f), D.length) {
|
|
35723
35729
|
const R = this._getHisOrderSurplusQty(O, l);
|
|
35724
|
-
if (v = this._processOrders(
|
|
35730
|
+
if (v = this._processOrders(D, W, l, R, q, d, !1, "order", void 0, m), v <= 0)
|
|
35725
35731
|
return;
|
|
35726
35732
|
}
|
|
35727
35733
|
this._calcCurrentOrder({ ...e, in_price: N, in_index: r, in_time: t, in_high: c, in_low: a, qty: v });
|
|
@@ -35976,9 +35982,9 @@ ${cf}`);
|
|
|
35976
35982
|
_processOrder(e, t, r, i, s, o = !1, a) {
|
|
35977
35983
|
const { time: c, bar_index: p } = this._variables, { low: b, high: M } = this.calcOnOrderFillsData.data || this._variables, { slippage: l = 0 } = this._options, { in_price: u, qty: O = 0, max_profit: d, trading_loss: _, direction: f, commission: A = 0, original_qty: q = 0 } = e, m = f === P0.long ? 1 : -1;
|
|
35978
35984
|
if (t = t - m * l * this._mintick, r < O) {
|
|
35979
|
-
const W = O - r, v = (t - u) * m * r, y = d !== void 0 ? d / O * r : void 0, N = _ !== void 0 ? _ / O * r : void 0,
|
|
35980
|
-
this._calcPercent({ ...e, isPartClose: !0, out_price: t, last_commission:
|
|
35981
|
-
const R = (t - u) * m * W -
|
|
35985
|
+
const W = O - r, v = (t - u) * m * r, y = d !== void 0 ? d / O * r : void 0, N = _ !== void 0 ? _ / O * r : void 0, D = A * W / q;
|
|
35986
|
+
this._calcPercent({ ...e, isPartClose: !0, out_price: t, last_commission: D, out_id: i, out_index: p, out_high: M, out_low: b, out_time: c, out_comment: s, alert_message: a, profit: v, out_qty: r, max_profit: y, trading_loss: N });
|
|
35987
|
+
const R = (t - u) * m * W - D;
|
|
35982
35988
|
Object.assign(e, {
|
|
35983
35989
|
qty: W,
|
|
35984
35990
|
profit: R,
|
|
@@ -36001,11 +36007,11 @@ ${cf}`);
|
|
|
36001
36007
|
this._totalChangeCapital -= y;
|
|
36002
36008
|
let N = f * c / b;
|
|
36003
36009
|
A += N, N += y, O = O - N, Object.assign(e, { commission: N });
|
|
36004
|
-
const
|
|
36005
|
-
const { qty: B = 0, original_qty: T = 0, commission: $ = 0 } =
|
|
36010
|
+
const D = this._orders.reduce((R, w) => {
|
|
36011
|
+
const { qty: B = 0, original_qty: T = 0, commission: $ = 0 } = w;
|
|
36006
36012
|
return R + $ * B / T;
|
|
36007
36013
|
}, 0);
|
|
36008
|
-
q +=
|
|
36014
|
+
q += D - l;
|
|
36009
36015
|
}
|
|
36010
36016
|
const m = M === P0.long ? 1 : -1;
|
|
36011
36017
|
let [W, v] = this._calcProfitAndLossHandle(a, c, m, p);
|
|
@@ -36441,20 +36447,20 @@ ${cf}`);
|
|
|
36441
36447
|
if (c && p)
|
|
36442
36448
|
W = this._hlines.get(c?.key)?.price, v = this._hlines.get(p?.key)?.price, y = "hline";
|
|
36443
36449
|
else {
|
|
36444
|
-
const N = this._plots.get(b?.key),
|
|
36445
|
-
if (W = R[d]?.value?.[1], v =
|
|
36446
|
-
const B = N?.force_overlay &&
|
|
36447
|
-
(N?.force_overlay ||
|
|
36450
|
+
const N = this._plots.get(b?.key), D = this._plots.get(M?.key), R = N?.data || [], w = D?.data || [];
|
|
36451
|
+
if (W = R[d]?.value?.[1], v = w[d]?.value?.[1], !d) {
|
|
36452
|
+
const B = N?.force_overlay && D?.force_overlay;
|
|
36453
|
+
(N?.force_overlay || D?.force_overlay) && !B ? this._errorListener.addError(s1.plotFillForceOverlayErr, t, F0.Error) : O.force_overlay = B;
|
|
36448
36454
|
}
|
|
36449
36455
|
}
|
|
36450
36456
|
if (q[d] = { time: _, color: i, top_color: s, bottom_color: o, barIndex: d, plot1: W, plot2: v, top_value: l, bottom_value: u }, this._seriesColorHandle(e, r, A), !A) {
|
|
36451
36457
|
this._count++;
|
|
36452
|
-
const N = this._options.indicator?.explicit_plot_zorder || this._options.strategy?.explicit_plot_zorder,
|
|
36458
|
+
const N = this._options.indicator?.explicit_plot_zorder || this._options.strategy?.explicit_plot_zorder, D = i ? [i] : void 0, R = s ? [s] : void 0, w = o ? [o] : void 0;
|
|
36453
36459
|
this._fills.set(f, {
|
|
36454
36460
|
id: f,
|
|
36455
|
-
colors:
|
|
36461
|
+
colors: D,
|
|
36456
36462
|
top_colors: R,
|
|
36457
|
-
bottom_colors:
|
|
36463
|
+
bottom_colors: w,
|
|
36458
36464
|
display: m,
|
|
36459
36465
|
data: q,
|
|
36460
36466
|
type: y,
|
|
@@ -36819,8 +36825,8 @@ return ${f}` : f = `return ${f}`, f;
|
|
|
36819
36825
|
let q = JSON.parse(ns(A));
|
|
36820
36826
|
const m = [];
|
|
36821
36827
|
q = q.map((v) => {
|
|
36822
|
-
const { type: y, code: N, varNames:
|
|
36823
|
-
return y === 2 && !m.includes(
|
|
36828
|
+
const { type: y, code: N, varNames: D, dependSelf: R } = v;
|
|
36829
|
+
return y === 2 && !m.includes(D) && !R && (v.code = `let ${N}`), D && m.push(...D.split(", ")), v.memberCodes && Object.assign(a, { ...v.memberCodes }), v;
|
|
36824
36830
|
});
|
|
36825
36831
|
let W = b.map((v) => ({ ...v, isArg: !1, isPreArg: !0 }));
|
|
36826
36832
|
b = [], this._getDependCodes(W, q, i, p, b), this._getStmtFuncs(i, q, p, b);
|
|
@@ -36872,19 +36878,19 @@ ${u}`), u;
|
|
|
36872
36878
|
return [];
|
|
36873
36879
|
if (y.length - 1 < 0)
|
|
36874
36880
|
return [];
|
|
36875
|
-
const
|
|
36876
|
-
let R = M,
|
|
36881
|
+
const D = y.slice(W);
|
|
36882
|
+
let R = M, w = v + R;
|
|
36877
36883
|
const B = [];
|
|
36878
|
-
for (const [T, $] of
|
|
36884
|
+
for (const [T, $] of D.entries()) {
|
|
36879
36885
|
let { time: P, barIndex: X } = $;
|
|
36880
36886
|
P = P * 1e3;
|
|
36881
36887
|
let K = X || W + T;
|
|
36882
|
-
if (P >=
|
|
36888
|
+
if (P >= w)
|
|
36883
36889
|
return !l && (this._cacheData[r] = {
|
|
36884
36890
|
index: K,
|
|
36885
36891
|
periodStamp: v
|
|
36886
36892
|
}), B;
|
|
36887
|
-
if (R <= P && P <
|
|
36893
|
+
if (R <= P && P < w) {
|
|
36888
36894
|
const j = $?.result?.[r];
|
|
36889
36895
|
if (Array.isArray(j))
|
|
36890
36896
|
for (const [Q, n0] of j.entries())
|
|
@@ -36926,8 +36932,8 @@ ${u}`), u;
|
|
|
36926
36932
|
if (!v.length)
|
|
36927
36933
|
return;
|
|
36928
36934
|
const y = v.slice(m);
|
|
36929
|
-
let N = M,
|
|
36930
|
-
const R = v.length - 1,
|
|
36935
|
+
let N = M, D = W + N;
|
|
36936
|
+
const R = v.length - 1, w = {
|
|
36931
36937
|
lastBarIndex: v[R].barIndex || R,
|
|
36932
36938
|
lastBarTime: v[R].time,
|
|
36933
36939
|
interval: i,
|
|
@@ -36935,7 +36941,7 @@ ${u}`), u;
|
|
|
36935
36941
|
};
|
|
36936
36942
|
if (A > W) {
|
|
36937
36943
|
let B;
|
|
36938
|
-
if (a === $r.lookaheadOn ? B = this._lookaheadOnHandle(y, i,
|
|
36944
|
+
if (a === $r.lookaheadOn ? B = this._lookaheadOnHandle(y, i, D, A, w, m, W, t, N, o) : B = this._lookaheadOffHandle(y, i, D, A, w, m, W, t, N, l || D, o), B)
|
|
36939
36945
|
return B;
|
|
36940
36946
|
if (B === null)
|
|
36941
36947
|
return;
|
|
@@ -36945,7 +36951,7 @@ ${u}`), u;
|
|
|
36945
36951
|
$ = $ * 1e3;
|
|
36946
36952
|
const X = y[B + 1]?.time * 1e3 || $ + A;
|
|
36947
36953
|
let K = P || m + B;
|
|
36948
|
-
if ($ >=
|
|
36954
|
+
if ($ >= D) {
|
|
36949
36955
|
this._cacheData[t] = {
|
|
36950
36956
|
index: K,
|
|
36951
36957
|
periodStamp: W
|
|
@@ -36956,7 +36962,7 @@ ${u}`), u;
|
|
|
36956
36962
|
return this._cacheData[t] = {
|
|
36957
36963
|
index: K,
|
|
36958
36964
|
periodStamp: W
|
|
36959
|
-
}, { ...T, barIndex: P, nextBarTime: y[B + 1]?.time, ...
|
|
36965
|
+
}, { ...T, barIndex: P, nextBarTime: y[B + 1]?.time, ...w };
|
|
36960
36966
|
}
|
|
36961
36967
|
else
|
|
36962
36968
|
for (const [B, T] of y.entries()) {
|
|
@@ -36964,23 +36970,23 @@ ${u}`), u;
|
|
|
36964
36970
|
$ = $ * 1e3;
|
|
36965
36971
|
const X = $ + A, K = y[B + 1]?.time * 1e3 || X;
|
|
36966
36972
|
let j = P || m + B;
|
|
36967
|
-
if ($ >
|
|
36973
|
+
if ($ > D) {
|
|
36968
36974
|
this._cacheData[t] = {
|
|
36969
36975
|
index: j,
|
|
36970
36976
|
periodStamp: W
|
|
36971
36977
|
};
|
|
36972
36978
|
return;
|
|
36973
36979
|
}
|
|
36974
|
-
if ($ <
|
|
36980
|
+
if ($ < D && D <= K)
|
|
36975
36981
|
return this._cacheData[t] = {
|
|
36976
36982
|
index: j,
|
|
36977
36983
|
periodStamp: W
|
|
36978
|
-
}, { ...T, barIndex: j, nextBarTime: y[B + 1]?.time, ...
|
|
36979
|
-
if (($ >= N && $ <=
|
|
36984
|
+
}, { ...T, barIndex: j, nextBarTime: y[B + 1]?.time, ...w };
|
|
36985
|
+
if (($ >= N && $ <= D || X < D && $ < N) && j === w.lastBarIndex)
|
|
36980
36986
|
return this._cacheData[t] = {
|
|
36981
36987
|
index: j,
|
|
36982
36988
|
periodStamp: W
|
|
36983
|
-
}, { ...T, barIndex: j, nextBarTime: y[B + 1]?.time, ...
|
|
36989
|
+
}, { ...T, barIndex: j, nextBarTime: y[B + 1]?.time, ...w };
|
|
36984
36990
|
}
|
|
36985
36991
|
this._cacheData[t] = {
|
|
36986
36992
|
index: v.length,
|
|
@@ -37129,16 +37135,16 @@ ${u}`), u;
|
|
|
37129
37135
|
c.__isFirstRun = r, c.updateOptions({ interval: u, mintick: d, syminfo: { ..._.__syminfo, mintick: d, tickerid: O || _.tickerid, ticker: v || W || _.ticker } });
|
|
37130
37136
|
let y;
|
|
37131
37137
|
const N = {};
|
|
37132
|
-
for (const [
|
|
37138
|
+
for (const [w, B] of i.entries()) {
|
|
37133
37139
|
const { barindex: T } = B, $ = await this.requestMapHandle(b, q, N, f, A, m);
|
|
37134
|
-
if (y && $ && (b.log.clearLogForIndex(y.barIndex), c.__isReqRepeated = !0, c.updateData(y), b.update({ barIndex: y?.barIndex || 0 }), y.result = Object.assign(y.result || {}, { [t]: M(c, p, b, o || [], t) }), b.endExecution(), c.__isReqRepeated = !1), y = Object.assign(B, { barIndex: T ||
|
|
37140
|
+
if (y && $ && (b.log.clearLogForIndex(y.barIndex), c.__isReqRepeated = !0, c.updateData(y), b.update({ barIndex: y?.barIndex || 0 }), y.result = Object.assign(y.result || {}, { [t]: M(c, p, b, o || [], t) }), b.endExecution(), c.__isReqRepeated = !1), y = Object.assign(B, { barIndex: T || w, lastBarIndex: i[l].barindex || l, lastBarTime: i[l].time, nextBarTime: i[w + 1]?.time }), c.updateData(y), b.update({ barIndex: y?.barIndex || 0 }), B.result = Object.assign(B.result || {}, { [t]: M(c, p, b, o || [], t) }), b.endExecution(), b.errors.length && b.errors.some((P) => P.type === F0.Error))
|
|
37135
37141
|
return {
|
|
37136
37142
|
logs: [],
|
|
37137
37143
|
errors: b.errors
|
|
37138
37144
|
};
|
|
37139
37145
|
}
|
|
37140
|
-
const
|
|
37141
|
-
return b.log.clearLogs(), b.clearErrors(), { logs:
|
|
37146
|
+
const D = b.log.logs, R = b.errors;
|
|
37147
|
+
return b.log.clearLogs(), b.clearErrors(), { logs: D, errors: R, cacheData: { varCacheData: c.getVarCacheData(), funcCacheData: b.getFuncCacheData(), requestCacheData: N } };
|
|
37142
37148
|
}
|
|
37143
37149
|
}
|
|
37144
37150
|
async requestMapHandle(e, t, r, i, s, o) {
|
|
@@ -37151,8 +37157,8 @@ ${u}`), u;
|
|
|
37151
37157
|
let m = 0;
|
|
37152
37158
|
const W = s?.get(d);
|
|
37153
37159
|
W && (m = W[W.length - 1]?.time || 0), p.push({ id: d, key: q, ignore_invalid_symbol: f, currentDataList: W, startTime: m });
|
|
37154
|
-
const [v, y] = u.split(":"), N = Number(A) <= 60 ? 1e4 : 5e3,
|
|
37155
|
-
c.push(ks({ params: [{ exchange: y ? v : "FX", symbol: y || v, limit:
|
|
37160
|
+
const [v, y] = u.split(":"), N = Number(A) <= 60 ? 1e4 : 5e3, D = _ ? _ <= 1e5 ? _ : 1e5 : N;
|
|
37161
|
+
c.push(ks({ params: [{ exchange: y ? v : "FX", symbol: y || v, limit: D, start: m, end: 0, period: O }] }).json());
|
|
37156
37162
|
}
|
|
37157
37163
|
const b = await Promise.all(c);
|
|
37158
37164
|
for (const [M, l] of b.entries()) {
|
|
@@ -37567,9 +37573,9 @@ ${u}`), u;
|
|
|
37567
37573
|
maxprofit_long: v = 0,
|
|
37568
37574
|
maxprofit_short: y = 0,
|
|
37569
37575
|
maxloss_long: N = 0,
|
|
37570
|
-
maxloss_short:
|
|
37576
|
+
maxloss_short: D = 0,
|
|
37571
37577
|
maxprofit_percent_long: R = 0,
|
|
37572
|
-
maxprofit_percent_short:
|
|
37578
|
+
maxprofit_percent_short: w = 0,
|
|
37573
37579
|
maxloss_percent_long: B = 0,
|
|
37574
37580
|
maxloss_percent_short: T = 0,
|
|
37575
37581
|
hold_long_k_count: $ = 0,
|
|
@@ -37582,7 +37588,7 @@ ${u}`), u;
|
|
|
37582
37588
|
shapeRatioType: l0 = "NONE"
|
|
37583
37589
|
} = this._preHistoryOrderCalcResult;
|
|
37584
37590
|
const { profit: r0 = 0, profit_percent: G = 0, in_index: _0 = 0, out_index: A0 = 0, commission: q0 = 0, direction: h0, in_time: V0 = 0, out_time: G0 = 0, total_profit: c1 = 0 } = e, Z0 = A0 - _0 + 1;
|
|
37585
|
-
if (h0 === P0.long ? (t += r0, i += 1, o += G, m += q0, $ += Z0, r0 > 0 ? (b += G, A += 1, O += r0, X += Z0, v = Math.max(v, r0), R = Math.max(R, G)) : r0 < 0 && (c += G, _ += 1, l += r0, j += Z0, N = Math.min(N, r0), B = Math.min(B, G))) : (r += r0, s += 1, a += G, W += q0, P += Z0, r0 > 0 ? (M += G, q += 1, d += r0, K += Z0, y = Math.max(y, r0),
|
|
37591
|
+
if (h0 === P0.long ? (t += r0, i += 1, o += G, m += q0, $ += Z0, r0 > 0 ? (b += G, A += 1, O += r0, X += Z0, v = Math.max(v, r0), R = Math.max(R, G)) : r0 < 0 && (c += G, _ += 1, l += r0, j += Z0, N = Math.min(N, r0), B = Math.min(B, G))) : (r += r0, s += 1, a += G, W += q0, P += Z0, r0 > 0 ? (M += G, q += 1, d += r0, K += Z0, y = Math.max(y, r0), w = Math.max(w, G)) : r0 < 0 && (p += G, f += 1, u += r0, Q += Z0, D = Math.min(D, r0), T = Math.min(T, G))), !n0) {
|
|
37586
37592
|
const s0 = this._createBalanceByInterval(V0, Date.now());
|
|
37587
37593
|
n0 = s0.balanceByInterval, l0 = s0.shapeRatioType;
|
|
37588
37594
|
}
|
|
@@ -37618,9 +37624,9 @@ ${u}`), u;
|
|
|
37618
37624
|
maxprofit_long: v,
|
|
37619
37625
|
maxprofit_short: y,
|
|
37620
37626
|
maxloss_long: N,
|
|
37621
|
-
maxloss_short:
|
|
37627
|
+
maxloss_short: D,
|
|
37622
37628
|
maxprofit_percent_long: R,
|
|
37623
|
-
maxprofit_percent_short:
|
|
37629
|
+
maxprofit_percent_short: w,
|
|
37624
37630
|
maxloss_percent_long: B,
|
|
37625
37631
|
maxloss_percent_short: T,
|
|
37626
37632
|
hold_long_k_count: $,
|
|
@@ -38877,7 +38883,7 @@ ${u}`), u;
|
|
|
38877
38883
|
s.mintick = v;
|
|
38878
38884
|
const y = /* @__PURE__ */ Object.create(null);
|
|
38879
38885
|
self.workerStorage.set(`inputs_${u}`, W?.inputCache), self.workerStorage.set(`strategy_${u}`, W?.strategyCacheArgs), self.workerStorage.set(`indicator_${u}`, W?.indicatorCacheArgs);
|
|
38880
|
-
const N = new Rb(O),
|
|
38886
|
+
const N = new Rb(O), D = new vb(), R = new yb(v, N, u, { customTimeframe: O, calcBarsCount: l, timeframeGaps: d }), w = new Function("_$_var", "_$_const", "_$_func", n);
|
|
38881
38887
|
let B = {
|
|
38882
38888
|
request: [],
|
|
38883
38889
|
requestData: [],
|
|
@@ -38898,7 +38904,7 @@ ${u}`), u;
|
|
|
38898
38904
|
}
|
|
38899
38905
|
}
|
|
38900
38906
|
if (y.requestCacheData = B, self.workerStorage.set(`request_${u}`, new Map(B.request)), self.workerStorage.set(`request_${u}_data`, new Map(B.requestData)), self.workerStorage.set(`request_${u}_list`, new Map(B.requestList)), self.workerStorage.set(`request_${u}_tmp`, new Map(B.requestTmp)), await X7(M, u, R, { newCacheData: y, cacheData: W }), i)
|
|
38901
|
-
|
|
38907
|
+
w(N, D, R);
|
|
38902
38908
|
else if (f && f.length) {
|
|
38903
38909
|
const X = f.length - 1;
|
|
38904
38910
|
N.__isFirstRun = t, N.updateOptions({ interval: A, mintick: v, chart: c, syminfo: s }), R.updateOptions({ inputs: a, strategy: p });
|
|
@@ -38923,10 +38929,10 @@ ${u}`), u;
|
|
|
38923
38929
|
}]
|
|
38924
38930
|
};
|
|
38925
38931
|
!t && (q0 || q0 === 0) && m.push(q0);
|
|
38926
|
-
const h0 = await _O(N, R,
|
|
38932
|
+
const h0 = await _O(N, R, D, w, b, r0, Q, { newCacheData: y, cacheData: W }, K, j, G);
|
|
38927
38933
|
if (h0)
|
|
38928
38934
|
return h0;
|
|
38929
|
-
r0 = Object.assign(A0, { barIndex: q0 || _0, lastBarIndex: l0 ? q0 : f[X].barindex || X, lastBarTime: l0 ? A0.time : f[X].time, nextBarTime: f[_0 + 1]?.time }), hf(N, R,
|
|
38935
|
+
r0 = Object.assign(A0, { barIndex: q0 || _0, lastBarIndex: l0 ? q0 : f[X].barindex || X, lastBarTime: l0 ? A0.time : f[X].time, nextBarTime: f[_0 + 1]?.time }), hf(N, R, D, w, b, r0, K);
|
|
38930
38936
|
const V0 = R.errors;
|
|
38931
38937
|
if (V0.length && V0.some((G0) => G0.type === F0.Error))
|
|
38932
38938
|
return Rs(u), {
|
|
@@ -38935,7 +38941,7 @@ ${u}`), u;
|
|
|
38935
38941
|
};
|
|
38936
38942
|
}
|
|
38937
38943
|
if (K?.size) {
|
|
38938
|
-
const _0 = await _O(N, R,
|
|
38944
|
+
const _0 = await _O(N, R, D, w, b, r0, Q, { newCacheData: y, cacheData: W }, K, j, G);
|
|
38939
38945
|
if (_0)
|
|
38940
38946
|
return Rs(u), _0;
|
|
38941
38947
|
}
|
|
@@ -39002,15 +39008,15 @@ ${u}`), u;
|
|
|
39002
39008
|
const u = [], O = [];
|
|
39003
39009
|
for (const [_, f] of c) {
|
|
39004
39010
|
const { symbol: A = "", timeframe: q, id: m, calc_bars_count: W, ignore_invalid_symbol: v, originTimeframe: y } = f, N = `${A}:${q}`;
|
|
39005
|
-
let
|
|
39011
|
+
let D = 0;
|
|
39006
39012
|
const R = p?.get(m);
|
|
39007
|
-
R && (
|
|
39008
|
-
const [
|
|
39009
|
-
u.push(ks({ params: [{ exchange: B ?
|
|
39013
|
+
R && (D = R[R.length - 1]?.time || 0), O.push({ id: m, key: N, ignore_invalid_symbol: v, currentDataList: R, startTime: D });
|
|
39014
|
+
const [w, B] = A.split(":"), T = Number(y) <= 60 ? 1e4 : 5e3, $ = W ? W <= 1e5 ? W : 1e5 : T;
|
|
39015
|
+
u.push(ks({ params: [{ exchange: B ? w : "FX", symbol: B || w, limit: $, start: D, end: 0, period: q }] }).json());
|
|
39010
39016
|
}
|
|
39011
39017
|
const d = await Promise.all(u);
|
|
39012
39018
|
for (const [_, f] of d.entries()) {
|
|
39013
|
-
const { code: A, data: q, msg: m } = f, { id: W, key: v, ignore_invalid_symbol: y, currentDataList: N = [], startTime:
|
|
39019
|
+
const { code: A, data: q, msg: m } = f, { id: W, key: v, ignore_invalid_symbol: y, currentDataList: N = [], startTime: D } = O[_];
|
|
39014
39020
|
if (A !== 200 && !y)
|
|
39015
39021
|
return {
|
|
39016
39022
|
status: 1,
|
|
@@ -39024,13 +39030,13 @@ ${u}`), u;
|
|
|
39024
39030
|
}]
|
|
39025
39031
|
};
|
|
39026
39032
|
const R = q?.[v]?.list?.reverse() || [];
|
|
39027
|
-
R[0]?.time ===
|
|
39028
|
-
const
|
|
39029
|
-
if (
|
|
39033
|
+
R[0]?.time === D && N.splice(N.length - 1);
|
|
39034
|
+
const w = b?.get(W);
|
|
39035
|
+
if (w) {
|
|
39030
39036
|
const B = Number(q?.[v]?.tick_size) || 1e-5;
|
|
39031
|
-
|
|
39037
|
+
w.mintick = B;
|
|
39032
39038
|
}
|
|
39033
|
-
p?.set(W, N.concat(R));
|
|
39039
|
+
R.length && (R[R.length - 1].isrealtime = !0), p?.set(W, N.concat(R));
|
|
39034
39040
|
}
|
|
39035
39041
|
c?.clear();
|
|
39036
39042
|
}
|
|
@@ -39067,18 +39073,21 @@ ${u}`), u;
|
|
|
39067
39073
|
if (A.length) {
|
|
39068
39074
|
let q = A.length - 1;
|
|
39069
39075
|
const m = A[q].time;
|
|
39070
|
-
|
|
39071
|
-
|
|
39072
|
-
|
|
39076
|
+
f = f.filter((B) => B.time >= m);
|
|
39077
|
+
const W = f[0]?.time;
|
|
39078
|
+
if (W === m) {
|
|
39079
|
+
const B = A.pop();
|
|
39080
|
+
q -= 1, Object.assign(f[0], { result: B?.result });
|
|
39073
39081
|
}
|
|
39074
|
-
for (const
|
|
39075
|
-
q += 1,
|
|
39082
|
+
for (const B of f)
|
|
39083
|
+
q += 1, B.barindex = q;
|
|
39076
39084
|
if (!f.length)
|
|
39077
39085
|
continue;
|
|
39078
|
-
|
|
39086
|
+
W > m && f.push(Object.assign(A[q], { isrealtime: !1 })), f[f.length - 1].isrealtime = !0;
|
|
39087
|
+
const v = c?.get(O)?.mintick || 1e-5;
|
|
39079
39088
|
o?.set(O, A.concat(f));
|
|
39080
|
-
const { varCacheData:
|
|
39081
|
-
i.requestCacheData[b] =
|
|
39089
|
+
const { varCacheData: y, funcCacheData: N } = s[b] || {}, { logs: D = [], errors: R = [], cacheData: w } = await t.request.runScripts(l, b, !1, f, Object.assign(_, { varCacheData: y, funcCacheData: N, mintick: v }), u, d) || {};
|
|
39090
|
+
i.requestCacheData[b] = w, t.log.mergeLogs(D), t.addErrors(R, b);
|
|
39082
39091
|
} else
|
|
39083
39092
|
o?.set(O, A.concat(f));
|
|
39084
39093
|
}
|
|
@@ -40064,14 +40073,14 @@ ${u}`), u;
|
|
|
40064
40073
|
if (u < e)
|
|
40065
40074
|
m = { low: O, high: d, close: _, PDMS: (p || 0) + f, NDMS: (b || 0) + A, TRS: (M || 0) + q, count: u + 1, value: [void 0, void 0, void 0] };
|
|
40066
40075
|
else {
|
|
40067
|
-
const W = p - p / e + f, v = b - b / e + A, y = M - M / e + q, N = W / y * 100,
|
|
40068
|
-
let
|
|
40076
|
+
const W = p - p / e + f, v = b - b / e + A, y = M - M / e + q, N = W / y * 100, D = v / y * 100, R = Math.abs((N - D) / (N + D)) * 100;
|
|
40077
|
+
let w = R, B = [N, D, void 0];
|
|
40069
40078
|
if (u + 1 - e < t) {
|
|
40070
40079
|
const T = u + 1 - e;
|
|
40071
|
-
|
|
40080
|
+
w = ((l || 0) * (T - 1) + R) / T;
|
|
40072
40081
|
} else
|
|
40073
|
-
|
|
40074
|
-
m = { low: O, high: d, close: _, PDMS: W, NDMS: v, TRS: y, ADX:
|
|
40082
|
+
w = (l * (t - 1) + R) / t, B = [N, D, w];
|
|
40083
|
+
m = { low: O, high: d, close: _, PDMS: W, NDMS: v, TRS: y, ADX: w, count: u + 1, value: B };
|
|
40075
40084
|
}
|
|
40076
40085
|
return this._cacheDataHandle(i, m), m.value;
|
|
40077
40086
|
}
|
|
@@ -40651,7 +40660,7 @@ ${u}`), u;
|
|
|
40651
40660
|
else {
|
|
40652
40661
|
this._newCacheData[i] = s;
|
|
40653
40662
|
const o = this._historyInputs[i];
|
|
40654
|
-
!(e.sourceTypeName || o?.sourceTypeName) && e.defval === o?.defval || e.sourceTypeName && o?.sourceTypeName === e.sourceTypeName ? s.sourceTypeName && (this._newCacheData[i].defval = this._variables[s.sourceTypeName]) : Object.assign(this._newCacheData[i], e);
|
|
40663
|
+
!o || !(e.sourceTypeName || o?.sourceTypeName) && e.defval === o?.defval || e.sourceTypeName && o?.sourceTypeName === e.sourceTypeName ? s.sourceTypeName && (this._newCacheData[i].defval = this._variables[s.sourceTypeName]) : Object.assign(this._newCacheData[i], e);
|
|
40655
40664
|
}
|
|
40656
40665
|
else {
|
|
40657
40666
|
const { defval: o, display: a } = e;
|
|
@@ -43836,26 +43845,26 @@ ${u}`), u;
|
|
|
43836
43845
|
const { id: W, isClose: v, from_entry: y, qtys: N = {} } = m;
|
|
43837
43846
|
if (v && !N?.hasOwnProperty(d))
|
|
43838
43847
|
continue;
|
|
43839
|
-
const
|
|
43848
|
+
const D = `${W}-${y || ""}`;
|
|
43840
43849
|
let R = 0;
|
|
43841
43850
|
N.hasOwnProperty(d) ? R = N[d] || 0 : (R = this._calcExitOrderQty(f, l, m), N[d] = R, m.qtys = N);
|
|
43842
|
-
const
|
|
43843
|
-
if (
|
|
43851
|
+
const w = this._orderInExitHandle(b, { exitOrder: m, qty: R }, { open: e, low: t, high: r, close: i, distanceH: o, distanceL: a });
|
|
43852
|
+
if (w && (A?.push(D), s.push(w)), f -= R, f <= 0)
|
|
43844
43853
|
break;
|
|
43845
43854
|
}
|
|
43846
43855
|
for (const m of this._exitOrders) {
|
|
43847
43856
|
if (f <= 0)
|
|
43848
43857
|
break;
|
|
43849
|
-
const { from_entry: W, id: v, createTime: y = 0, isClose: N, qtys:
|
|
43850
|
-
if (N && !
|
|
43858
|
+
const { from_entry: W, id: v, createTime: y = 0, isClose: N, qtys: D = {} } = m;
|
|
43859
|
+
if (N && !D?.hasOwnProperty(d) && y !== O)
|
|
43851
43860
|
continue;
|
|
43852
43861
|
const R = `${v}-${W || ""}`;
|
|
43853
43862
|
if (M !== W && W || b.exitIds?.includes(R) || W === M && y < O || y >= O && b.exitIds?.includes(v))
|
|
43854
43863
|
continue;
|
|
43855
|
-
let
|
|
43856
|
-
|
|
43857
|
-
const B = this._orderInExitHandle(b, { exitOrder: m, qty:
|
|
43858
|
-
B && (y >= O && A?.push(v), A?.push(R), s.push(B)), f -=
|
|
43864
|
+
let w = 0;
|
|
43865
|
+
D.hasOwnProperty(d) ? w = D[d] || 0 : (w = this._calcExitOrderQty(f, l, m), D[d] = w, m.qtys = D);
|
|
43866
|
+
const B = this._orderInExitHandle(b, { exitOrder: m, qty: w }, { open: e, low: t, high: r, close: i, distanceH: o, distanceL: a });
|
|
43867
|
+
B && (y >= O && A?.push(v), A?.push(R), s.push(B)), f -= w;
|
|
43859
43868
|
}
|
|
43860
43869
|
b.occupancyQty = _ - f;
|
|
43861
43870
|
}
|
|
@@ -43883,8 +43892,8 @@ ${u}`), u;
|
|
|
43883
43892
|
W && m.push({ order: e, price: W, index: v, isHighFront: q, exitInfo: { id: l, comment: d || u, qty: M, alert_message: f } });
|
|
43884
43893
|
const [y, N] = this._getStopPrice(b, r, s, i, q, e);
|
|
43885
43894
|
y && m.push({ order: e, price: y, index: N, isHighFront: q, exitInfo: { id: l, comment: O || u, qty: M, alert_message: f } });
|
|
43886
|
-
const [
|
|
43887
|
-
if (
|
|
43895
|
+
const [D, R] = this._getTrailStopPrice(b, r, s, i, o, q, e);
|
|
43896
|
+
if (D && m.push({ order: e, price: D, index: R, isHighFront: q, exitInfo: { id: l, comment: _ || u, qty: M, alert_message: f } }), m.length)
|
|
43888
43897
|
return this._executesSort(m), m[0];
|
|
43889
43898
|
}
|
|
43890
43899
|
_executesSort(e) {
|
|
@@ -44108,18 +44117,18 @@ ${u}`), u;
|
|
|
44108
44117
|
if (M)
|
|
44109
44118
|
W = i && !s.isnew ? p : o;
|
|
44110
44119
|
else {
|
|
44111
|
-
let { stop:
|
|
44112
|
-
const
|
|
44120
|
+
let { stop: D, limit: R } = e;
|
|
44121
|
+
const w = D && (D - o) * y >= 0, { backtest_fill_limits_assumption: B = 0 } = this._options;
|
|
44113
44122
|
B > 0 && R && (R -= B * this._mintick * y);
|
|
44114
44123
|
const T = R && (R - o) * y <= 0;
|
|
44115
|
-
|
|
44124
|
+
w && T || (D && !w || R && !T) && (W = o);
|
|
44116
44125
|
}
|
|
44117
44126
|
const N = tt(W, N1(y * b, this._mintick));
|
|
44118
44127
|
if (W <= c && N >= a) {
|
|
44119
|
-
const
|
|
44120
|
-
if (this._ocaGroupVerify(l, _, f),
|
|
44128
|
+
const D = this._getOrders(O, q);
|
|
44129
|
+
if (this._ocaGroupVerify(l, _, f), D.length) {
|
|
44121
44130
|
const R = this._getHisOrderSurplusQty(O, l);
|
|
44122
|
-
if (v = this._processOrders(
|
|
44131
|
+
if (v = this._processOrders(D, W, l, R, q, d, !1, "order", void 0, m), v <= 0)
|
|
44123
44132
|
return;
|
|
44124
44133
|
}
|
|
44125
44134
|
this._calcCurrentOrder({ ...e, in_price: N, in_index: r, in_time: t, in_high: c, in_low: a, qty: v });
|
|
@@ -44374,9 +44383,9 @@ ${u}`), u;
|
|
|
44374
44383
|
_processOrder(e, t, r, i, s, o = !1, a) {
|
|
44375
44384
|
const { time: c, bar_index: p } = this._variables, { low: b, high: M } = this.calcOnOrderFillsData.data || this._variables, { slippage: l = 0 } = this._options, { in_price: u, qty: O = 0, max_profit: d, trading_loss: _, direction: f, commission: A = 0, original_qty: q = 0 } = e, m = f === H0.long ? 1 : -1;
|
|
44376
44385
|
if (t = t - m * l * this._mintick, r < O) {
|
|
44377
|
-
const W = O - r, v = (t - u) * m * r, y = d !== void 0 ? d / O * r : void 0, N = _ !== void 0 ? _ / O * r : void 0,
|
|
44378
|
-
this._calcPercent({ ...e, isPartClose: !0, out_price: t, last_commission:
|
|
44379
|
-
const R = (t - u) * m * W -
|
|
44386
|
+
const W = O - r, v = (t - u) * m * r, y = d !== void 0 ? d / O * r : void 0, N = _ !== void 0 ? _ / O * r : void 0, D = A * W / q;
|
|
44387
|
+
this._calcPercent({ ...e, isPartClose: !0, out_price: t, last_commission: D, out_id: i, out_index: p, out_high: M, out_low: b, out_time: c, out_comment: s, alert_message: a, profit: v, out_qty: r, max_profit: y, trading_loss: N });
|
|
44388
|
+
const R = (t - u) * m * W - D;
|
|
44380
44389
|
Object.assign(e, {
|
|
44381
44390
|
qty: W,
|
|
44382
44391
|
profit: R,
|
|
@@ -44399,11 +44408,11 @@ ${u}`), u;
|
|
|
44399
44408
|
this._totalChangeCapital -= y;
|
|
44400
44409
|
let N = f * c / b;
|
|
44401
44410
|
A += N, N += y, O = O - N, Object.assign(e, { commission: N });
|
|
44402
|
-
const
|
|
44403
|
-
const { qty: B = 0, original_qty: T = 0, commission: $ = 0 } =
|
|
44411
|
+
const D = this._orders.reduce((R, w) => {
|
|
44412
|
+
const { qty: B = 0, original_qty: T = 0, commission: $ = 0 } = w;
|
|
44404
44413
|
return R + $ * B / T;
|
|
44405
44414
|
}, 0);
|
|
44406
|
-
q +=
|
|
44415
|
+
q += D - l;
|
|
44407
44416
|
}
|
|
44408
44417
|
const m = M === H0.long ? 1 : -1;
|
|
44409
44418
|
let [W, v] = this._calcProfitAndLossHandle(a, c, m, p);
|
|
@@ -44844,20 +44853,20 @@ ${u}`), u;
|
|
|
44844
44853
|
if (c && p)
|
|
44845
44854
|
W = this._hlines.get(c?.key)?.price, v = this._hlines.get(p?.key)?.price, y = "hline";
|
|
44846
44855
|
else {
|
|
44847
|
-
const N = this._plots.get(b?.key),
|
|
44848
|
-
if (W = R[d]?.value?.[1], v =
|
|
44849
|
-
const B = N?.force_overlay &&
|
|
44850
|
-
(N?.force_overlay ||
|
|
44856
|
+
const N = this._plots.get(b?.key), D = this._plots.get(M?.key), R = N?.data || [], w = D?.data || [];
|
|
44857
|
+
if (W = R[d]?.value?.[1], v = w[d]?.value?.[1], !d) {
|
|
44858
|
+
const B = N?.force_overlay && D?.force_overlay;
|
|
44859
|
+
(N?.force_overlay || D?.force_overlay) && !B ? this._errorListener.addError(n1.plotFillForceOverlayErr, t, S0.Error) : O.force_overlay = B;
|
|
44851
44860
|
}
|
|
44852
44861
|
}
|
|
44853
44862
|
if (q[d] = { time: _, color: i, top_color: s, bottom_color: o, barIndex: d, plot1: W, plot2: v, top_value: l, bottom_value: u }, this._seriesColorHandle(e, r, A), !A) {
|
|
44854
44863
|
this._count++;
|
|
44855
|
-
const N = this._options.indicator?.explicit_plot_zorder || this._options.strategy?.explicit_plot_zorder,
|
|
44864
|
+
const N = this._options.indicator?.explicit_plot_zorder || this._options.strategy?.explicit_plot_zorder, D = i ? [i] : void 0, R = s ? [s] : void 0, w = o ? [o] : void 0;
|
|
44856
44865
|
this._fills.set(f, {
|
|
44857
44866
|
id: f,
|
|
44858
|
-
colors:
|
|
44867
|
+
colors: D,
|
|
44859
44868
|
top_colors: R,
|
|
44860
|
-
bottom_colors:
|
|
44869
|
+
bottom_colors: w,
|
|
44861
44870
|
display: m,
|
|
44862
44871
|
data: q,
|
|
44863
44872
|
type: y,
|
|
@@ -45223,8 +45232,8 @@ return ${f}` : f = `return ${f}`, f;
|
|
|
45223
45232
|
let q = JSON.parse(ns(A));
|
|
45224
45233
|
const m = [];
|
|
45225
45234
|
q = q.map((v) => {
|
|
45226
|
-
const { type: y, code: N, varNames:
|
|
45227
|
-
return y === 2 && !m.includes(
|
|
45235
|
+
const { type: y, code: N, varNames: D, dependSelf: R } = v;
|
|
45236
|
+
return y === 2 && !m.includes(D) && !R && (v.code = `let ${N}`), D && m.push(...D.split(", ")), v.memberCodes && Object.assign(a, { ...v.memberCodes }), v;
|
|
45228
45237
|
});
|
|
45229
45238
|
let W = b.map((v) => ({ ...v, isArg: !1, isPreArg: !0 }));
|
|
45230
45239
|
b = [], this._getDependCodes(W, q, i, p, b), this._getStmtFuncs(i, q, p, b);
|
|
@@ -45276,19 +45285,19 @@ ${u}`), u;
|
|
|
45276
45285
|
return [];
|
|
45277
45286
|
if (y.length - 1 < 0)
|
|
45278
45287
|
return [];
|
|
45279
|
-
const
|
|
45280
|
-
let R = M,
|
|
45288
|
+
const D = y.slice(W);
|
|
45289
|
+
let R = M, w = v + R;
|
|
45281
45290
|
const B = [];
|
|
45282
|
-
for (const [T, $] of
|
|
45291
|
+
for (const [T, $] of D.entries()) {
|
|
45283
45292
|
let { time: P, barIndex: X } = $;
|
|
45284
45293
|
P = P * 1e3;
|
|
45285
45294
|
let K = X || W + T;
|
|
45286
|
-
if (P >=
|
|
45295
|
+
if (P >= w)
|
|
45287
45296
|
return !l && (this._cacheData[r] = {
|
|
45288
45297
|
index: K,
|
|
45289
45298
|
periodStamp: v
|
|
45290
45299
|
}), B;
|
|
45291
|
-
if (R <= P && P <
|
|
45300
|
+
if (R <= P && P < w) {
|
|
45292
45301
|
const j = $?.result?.[r];
|
|
45293
45302
|
if (Array.isArray(j))
|
|
45294
45303
|
for (const [Q, n0] of j.entries())
|
|
@@ -45326,19 +45335,19 @@ ${u}`), u;
|
|
|
45326
45335
|
if (!y.length)
|
|
45327
45336
|
return;
|
|
45328
45337
|
const N = y.slice(W);
|
|
45329
|
-
let
|
|
45330
|
-
const
|
|
45331
|
-
if (
|
|
45338
|
+
let D = M, R = v + D;
|
|
45339
|
+
const w = y.length - 1;
|
|
45340
|
+
if (w < 0)
|
|
45332
45341
|
return;
|
|
45333
45342
|
const B = {
|
|
45334
|
-
lastBarIndex: y[
|
|
45335
|
-
lastBarTime: y[
|
|
45343
|
+
lastBarIndex: y[w].barIndex || w,
|
|
45344
|
+
lastBarTime: y[w].time,
|
|
45336
45345
|
interval: i,
|
|
45337
45346
|
mintick: b
|
|
45338
45347
|
};
|
|
45339
45348
|
if (q > v) {
|
|
45340
45349
|
let T;
|
|
45341
|
-
if (a === Fr.lookaheadOn ? T = this._lookaheadOnHandle(N, i, R, q, B, W, v, t,
|
|
45350
|
+
if (a === Fr.lookaheadOn ? T = this._lookaheadOnHandle(N, i, R, q, B, W, v, t, D, o) : T = this._lookaheadOffHandle(N, i, R, q, B, W, v, t, D, l || R, o), T)
|
|
45342
45351
|
return T;
|
|
45343
45352
|
if (T === null)
|
|
45344
45353
|
return;
|
|
@@ -45355,7 +45364,7 @@ ${u}`), u;
|
|
|
45355
45364
|
};
|
|
45356
45365
|
return;
|
|
45357
45366
|
}
|
|
45358
|
-
if (P <=
|
|
45367
|
+
if (P <= D && K > D)
|
|
45359
45368
|
return this._cacheData[t] = {
|
|
45360
45369
|
index: j,
|
|
45361
45370
|
periodStamp: v
|
|
@@ -45379,7 +45388,7 @@ ${u}`), u;
|
|
|
45379
45388
|
index: Q,
|
|
45380
45389
|
periodStamp: v
|
|
45381
45390
|
}, { ...$, barIndex: Q, nextBarTime: N[T + 1]?.time, ...B };
|
|
45382
|
-
if ((P >=
|
|
45391
|
+
if ((P >= D && P <= R || K < R && P < D) && Q === B.lastBarIndex)
|
|
45383
45392
|
return this._cacheData[t] = {
|
|
45384
45393
|
index: Q,
|
|
45385
45394
|
periodStamp: v
|
|
@@ -45521,7 +45530,7 @@ ${u}`), u;
|
|
|
45521
45530
|
}
|
|
45522
45531
|
}
|
|
45523
45532
|
async runScripts(e, t, r, i, s, o, a) {
|
|
45524
|
-
const c = `${this._scriptId}_${t}`, p = new Db(c), b = new Lb(), M = new wb(s?.mintick || 1e-5, p, this._scriptId), l = new Function("_$_var", "_$_const", "_$_func", "$paramsExpr", "$posStr", e);
|
|
45533
|
+
const c = `${this._scriptId}_${t}`, p = new Db(c), b = new Lb(), M = new wb(s?.mintick || 1e-5, p, this._scriptId, {}), l = new Function("_$_var", "_$_const", "_$_func", "$paramsExpr", "$posStr", e);
|
|
45525
45534
|
if (!r) {
|
|
45526
45535
|
const { varCacheData: u, funcCacheData: O } = s;
|
|
45527
45536
|
p.setVarCacheData(u), M.setFuncCacheData(O);
|
|
@@ -45532,17 +45541,17 @@ ${u}`), u;
|
|
|
45532
45541
|
const A = self.workerStorage.get(`request_${this._scriptId}_tmp`), q = self.workerStorage.get(`request_${this._scriptId}_data`), m = self.workerStorage.get(`request_${this._scriptId}`), W = self.workerStorage.get(`request_${this._scriptId}_list`), [v, y] = d.split(":");
|
|
45533
45542
|
p.__isFirstRun = r, p.updateOptions({ interval: O, mintick: _, syminfo: { ...f.__syminfo, main_tickerid: f.main_tickerid, main_period: f.main_period, mintick: _, tickerid: d || f.tickerid, ticker: y || v || f.ticker } });
|
|
45534
45543
|
let N;
|
|
45535
|
-
const
|
|
45544
|
+
const D = {};
|
|
45536
45545
|
for (const [B, T] of i.entries()) {
|
|
45537
|
-
const { barindex: $ } = T, P = await this.requestMapHandle(M, m,
|
|
45546
|
+
const { barindex: $ } = T, P = await this.requestMapHandle(M, m, D, A, q, W);
|
|
45538
45547
|
if (N && P && (M.log.clearLogForIndex(N.barIndex), p.__isReqRepeated = !0, p.updateData(N), M.update({ barIndex: N?.barIndex || 0 }), N.result = Object.assign(N.result || {}, { [t]: l(p, b, M, o || [], t) }), M.endExecution(), p.__isReqRepeated = !1), N = Object.assign(T, { barIndex: $ || B, lastBarIndex: i[u].barindex || u, lastBarTime: i[u].time, nextBarTime: i[B + 1]?.time }), p.updateData(N), M.update({ barIndex: N?.barIndex || 0 }), T.result = Object.assign(T.result || {}, { [t]: l(p, b, M, o || [], t) }), M.endExecution(), M.errors.length && M.errors.some((X) => X.type === S0.Error))
|
|
45539
45548
|
return {
|
|
45540
45549
|
logs: [],
|
|
45541
45550
|
errors: M.errors
|
|
45542
45551
|
};
|
|
45543
45552
|
}
|
|
45544
|
-
const R = M.log.logs,
|
|
45545
|
-
return M.log.clearLogs(), M.clearErrors(), { logs: R, errors:
|
|
45553
|
+
const R = M.log.logs, w = M.errors;
|
|
45554
|
+
return M.log.clearLogs(), M.clearErrors(), { logs: R, errors: w, cacheData: { varCacheData: p.getVarCacheData(), funcCacheData: M.getFuncCacheData(), requestCacheData: D } };
|
|
45546
45555
|
}
|
|
45547
45556
|
}
|
|
45548
45557
|
async requestMapHandle(e, t, r, i, s, o) {
|
|
@@ -45555,8 +45564,8 @@ ${u}`), u;
|
|
|
45555
45564
|
let m = 0;
|
|
45556
45565
|
const W = s?.get(d);
|
|
45557
45566
|
W && (m = W[W.length - 1]?.time || 0), p.push({ id: d, key: q, ignore_invalid_symbol: f, currentDataList: W, startTime: m });
|
|
45558
|
-
const [v, y] = u.split(":"), N = Number(A) <= 60 ? 1e4 : 5e3,
|
|
45559
|
-
c.push(ks({ params: [{ exchange: y ? v : "FX", symbol: y || v, limit:
|
|
45567
|
+
const [v, y] = u.split(":"), N = Number(A) <= 60 ? 1e4 : 5e3, D = _ ? _ <= 1e5 ? _ : 1e5 : N;
|
|
45568
|
+
c.push(ks({ params: [{ exchange: y ? v : "FX", symbol: y || v, limit: D, start: m, end: 0, period: O }] }).json());
|
|
45560
45569
|
}
|
|
45561
45570
|
const b = await Promise.all(c);
|
|
45562
45571
|
for (const [M, l] of b.entries()) {
|
|
@@ -45596,7 +45605,7 @@ ${u}`), u;
|
|
|
45596
45605
|
return a;
|
|
45597
45606
|
}
|
|
45598
45607
|
_runScripts(e, t, r, i, s, o) {
|
|
45599
|
-
const a = `${this._scriptId}_${t}`, { interval: c, ...p } = s || {}, b = new Db(a), M = new Lb(), l = new wb(this._variables.mintick || 1e-5, b, this._scriptId), u = new Function("_$_var", "_$_const", "_$_func", "$paramsExpr", "$posStr", e), { mintick: O, syminfo: d } = this._variables;
|
|
45608
|
+
const a = `${this._scriptId}_${t}`, { interval: c, ...p } = s || {}, b = new Db(a), M = new Lb(), l = new wb(this._variables.mintick || 1e-5, b, this._scriptId, {}), u = new Function("_$_var", "_$_const", "_$_func", "$paramsExpr", "$posStr", e), { mintick: O, syminfo: d } = this._variables;
|
|
45600
45609
|
b.updateOptions({ interval: c, mintick: O || 1e-5, syminfo: { ...d.__syminfo } }), b.__requestName = o || "", b.updateData(p), l.update({ barIndex: p?.barindex || 0 });
|
|
45601
45610
|
const _ = u(b, M, l, i || [], t), f = l.log.logs, A = l.errors;
|
|
45602
45611
|
return l.log.clearLogs(), l.clearErrors(), l.endExecution(), {
|
|
@@ -45979,9 +45988,9 @@ ${u}`), u;
|
|
|
45979
45988
|
maxprofit_long: v = 0,
|
|
45980
45989
|
maxprofit_short: y = 0,
|
|
45981
45990
|
maxloss_long: N = 0,
|
|
45982
|
-
maxloss_short:
|
|
45991
|
+
maxloss_short: D = 0,
|
|
45983
45992
|
maxprofit_percent_long: R = 0,
|
|
45984
|
-
maxprofit_percent_short:
|
|
45993
|
+
maxprofit_percent_short: w = 0,
|
|
45985
45994
|
maxloss_percent_long: B = 0,
|
|
45986
45995
|
maxloss_percent_short: T = 0,
|
|
45987
45996
|
hold_long_k_count: $ = 0,
|
|
@@ -45994,7 +46003,7 @@ ${u}`), u;
|
|
|
45994
46003
|
shapeRatioType: l0 = "NONE"
|
|
45995
46004
|
} = this._preHistoryOrderCalcResult;
|
|
45996
46005
|
const { profit: r0 = 0, profit_percent: G = 0, in_index: _0 = 0, out_index: A0 = 0, commission: q0 = 0, direction: h0, in_time: V0 = 0, out_time: G0 = 0, total_profit: c1 = 0 } = e, Z0 = A0 - _0 + 1;
|
|
45997
|
-
if (h0 === H0.long ? (t += r0, i += 1, o += G, m += q0, $ += Z0, r0 > 0 ? (b += G, A += 1, O += r0, X += Z0, v = Math.max(v, r0), R = Math.max(R, G)) : r0 < 0 && (c += G, _ += 1, l += r0, j += Z0, N = Math.min(N, r0), B = Math.min(B, G))) : (r += r0, s += 1, a += G, W += q0, P += Z0, r0 > 0 ? (M += G, q += 1, d += r0, K += Z0, y = Math.max(y, r0),
|
|
46006
|
+
if (h0 === H0.long ? (t += r0, i += 1, o += G, m += q0, $ += Z0, r0 > 0 ? (b += G, A += 1, O += r0, X += Z0, v = Math.max(v, r0), R = Math.max(R, G)) : r0 < 0 && (c += G, _ += 1, l += r0, j += Z0, N = Math.min(N, r0), B = Math.min(B, G))) : (r += r0, s += 1, a += G, W += q0, P += Z0, r0 > 0 ? (M += G, q += 1, d += r0, K += Z0, y = Math.max(y, r0), w = Math.max(w, G)) : r0 < 0 && (p += G, f += 1, u += r0, Q += Z0, D = Math.min(D, r0), T = Math.min(T, G))), !n0) {
|
|
45998
46007
|
const s0 = this._createBalanceByInterval(V0, Date.now());
|
|
45999
46008
|
n0 = s0.balanceByInterval, l0 = s0.shapeRatioType;
|
|
46000
46009
|
}
|
|
@@ -46030,9 +46039,9 @@ ${u}`), u;
|
|
|
46030
46039
|
maxprofit_long: v,
|
|
46031
46040
|
maxprofit_short: y,
|
|
46032
46041
|
maxloss_long: N,
|
|
46033
|
-
maxloss_short:
|
|
46042
|
+
maxloss_short: D,
|
|
46034
46043
|
maxprofit_percent_long: R,
|
|
46035
|
-
maxprofit_percent_short:
|
|
46044
|
+
maxprofit_percent_short: w,
|
|
46036
46045
|
maxloss_percent_long: B,
|
|
46037
46046
|
maxloss_percent_short: T,
|
|
46038
46047
|
hold_long_k_count: $,
|
|
@@ -47320,7 +47329,7 @@ ${u}`), u;
|
|
|
47320
47329
|
s.mintick = v;
|
|
47321
47330
|
const y = /* @__PURE__ */ Object.create(null);
|
|
47322
47331
|
self.workerStorage.set(`inputs_${u}`, W?.inputCache), self.workerStorage.set(`strategy_${u}`, W?.strategyCacheArgs), self.workerStorage.set(`indicator_${u}`, W?.indicatorCacheArgs);
|
|
47323
|
-
const N = new Db(u, O),
|
|
47332
|
+
const N = new Db(u, O), D = new Lb(), R = new wb(v, N, u, { customTimeframe: O, calcBarsCount: l, timeframeGaps: d }), w = new Function("_$_var", "_$_const", "_$_func", n);
|
|
47324
47333
|
let B = {
|
|
47325
47334
|
request: [],
|
|
47326
47335
|
requestData: [],
|
|
@@ -47341,7 +47350,7 @@ ${u}`), u;
|
|
|
47341
47350
|
}
|
|
47342
47351
|
}
|
|
47343
47352
|
if (y.requestCacheData = B, self.workerStorage.set(`request_${u}`, new Map(B.request)), self.workerStorage.set(`request_${u}_data`, new Map(B.requestData)), self.workerStorage.set(`request_${u}_list`, new Map(B.requestList)), self.workerStorage.set(`request_${u}_tmp`, new Map(B.requestTmp)), await KC(M, u, R, { newCacheData: y, cacheData: W }), i)
|
|
47344
|
-
|
|
47353
|
+
w(N, D, R);
|
|
47345
47354
|
else if (f && f.length) {
|
|
47346
47355
|
const X = f.length - 1;
|
|
47347
47356
|
N.__isFirstRun = t, N.updateOptions({ interval: A, mintick: v, chart: c, syminfo: s }), R.updateOptions({ inputs: a, strategy: p });
|
|
@@ -47366,10 +47375,10 @@ ${u}`), u;
|
|
|
47366
47375
|
}]
|
|
47367
47376
|
};
|
|
47368
47377
|
!t && (q0 || q0 === 0) && m.push(q0);
|
|
47369
|
-
const h0 = await vO(N, R,
|
|
47378
|
+
const h0 = await vO(N, R, D, w, b, r0, Q, { newCacheData: y, cacheData: W }, K, j, G);
|
|
47370
47379
|
if (h0)
|
|
47371
47380
|
return h0;
|
|
47372
|
-
r0 = Object.assign(A0, { barIndex: q0 || _0, lastBarIndex: l0 ? q0 : f[X].barindex || X, lastBarTime: l0 ? A0.time : f[X].time, nextBarTime: f[_0 + 1]?.time }), vf(N, R,
|
|
47381
|
+
r0 = Object.assign(A0, { barIndex: q0 || _0, lastBarIndex: l0 ? q0 : f[X].barindex || X, lastBarTime: l0 ? A0.time : f[X].time, nextBarTime: f[_0 + 1]?.time }), vf(N, R, D, w, b, r0, K);
|
|
47373
47382
|
const V0 = R.errors;
|
|
47374
47383
|
if (V0.length && V0.some((G0) => G0.type === S0.Error))
|
|
47375
47384
|
return Ns(u), {
|
|
@@ -47378,7 +47387,7 @@ ${u}`), u;
|
|
|
47378
47387
|
};
|
|
47379
47388
|
}
|
|
47380
47389
|
if (K?.size) {
|
|
47381
|
-
const _0 = await vO(N, R,
|
|
47390
|
+
const _0 = await vO(N, R, D, w, b, r0, Q, { newCacheData: y, cacheData: W }, K, j, G);
|
|
47382
47391
|
if (_0)
|
|
47383
47392
|
return Ns(u), _0;
|
|
47384
47393
|
}
|
|
@@ -47445,15 +47454,15 @@ ${u}`), u;
|
|
|
47445
47454
|
const u = [], O = [];
|
|
47446
47455
|
for (const [_, f] of c) {
|
|
47447
47456
|
const { symbol: A = "", timeframe: q, id: m, calc_bars_count: W, ignore_invalid_symbol: v, originTimeframe: y } = f, N = `${A}:${q}`;
|
|
47448
|
-
let
|
|
47457
|
+
let D = 0;
|
|
47449
47458
|
const R = p?.get(m);
|
|
47450
|
-
R && (
|
|
47451
|
-
const [
|
|
47452
|
-
u.push(ks({ params: [{ exchange: B ?
|
|
47459
|
+
R && (D = R[R.length - 1]?.time || 0), O.push({ id: m, key: N, ignore_invalid_symbol: v, currentDataList: R, startTime: D });
|
|
47460
|
+
const [w, B] = A.split(":"), T = Number(y) <= 60 ? 1e4 : 5e3, $ = W ? W <= 1e5 ? W : 1e5 : T;
|
|
47461
|
+
u.push(ks({ params: [{ exchange: B ? w : "FX", symbol: B || w, limit: $, start: D, end: 0, period: q }] }).json());
|
|
47453
47462
|
}
|
|
47454
47463
|
const d = await Promise.all(u);
|
|
47455
47464
|
for (const [_, f] of d.entries()) {
|
|
47456
|
-
const { code: A, data: q, msg: m } = f, { id: W, key: v, ignore_invalid_symbol: y, currentDataList: N = [], startTime:
|
|
47465
|
+
const { code: A, data: q, msg: m } = f, { id: W, key: v, ignore_invalid_symbol: y, currentDataList: N = [], startTime: D } = O[_];
|
|
47457
47466
|
if (A !== 200 && !y)
|
|
47458
47467
|
return {
|
|
47459
47468
|
status: 1,
|
|
@@ -47467,13 +47476,13 @@ ${u}`), u;
|
|
|
47467
47476
|
}]
|
|
47468
47477
|
};
|
|
47469
47478
|
const R = q?.[v]?.list?.reverse() || [];
|
|
47470
|
-
R[0]?.time ===
|
|
47471
|
-
const
|
|
47472
|
-
if (
|
|
47479
|
+
R[0]?.time === D && N.splice(N.length - 1);
|
|
47480
|
+
const w = b?.get(W);
|
|
47481
|
+
if (w) {
|
|
47473
47482
|
const B = Number(q?.[v]?.tick_size) || 1e-5;
|
|
47474
|
-
|
|
47483
|
+
w.mintick = B;
|
|
47475
47484
|
}
|
|
47476
|
-
p?.set(W, N.concat(R));
|
|
47485
|
+
R.length && (R[R.length - 1].isrealtime = !0), p?.set(W, N.concat(R));
|
|
47477
47486
|
}
|
|
47478
47487
|
c?.clear();
|
|
47479
47488
|
}
|
|
@@ -47510,18 +47519,21 @@ ${u}`), u;
|
|
|
47510
47519
|
if (A.length) {
|
|
47511
47520
|
let q = A.length - 1;
|
|
47512
47521
|
const m = A[q].time;
|
|
47513
|
-
|
|
47514
|
-
|
|
47515
|
-
|
|
47522
|
+
f = f.filter((B) => B.time >= m);
|
|
47523
|
+
const W = f[0]?.time;
|
|
47524
|
+
if (W === m) {
|
|
47525
|
+
const B = A.pop();
|
|
47526
|
+
q -= 1, Object.assign(f[0], { result: B?.result });
|
|
47516
47527
|
}
|
|
47517
|
-
for (const
|
|
47518
|
-
q += 1,
|
|
47528
|
+
for (const B of f)
|
|
47529
|
+
q += 1, B.barindex = q;
|
|
47519
47530
|
if (!f.length)
|
|
47520
47531
|
continue;
|
|
47521
|
-
|
|
47532
|
+
W > m && f.push(Object.assign(A[q], { isrealtime: !1 })), f[f.length - 1].isrealtime = !0;
|
|
47533
|
+
const v = c?.get(O)?.mintick || 1e-5;
|
|
47522
47534
|
o?.set(O, A.concat(f));
|
|
47523
|
-
const { varCacheData:
|
|
47524
|
-
i.requestCacheData[b] =
|
|
47535
|
+
const { varCacheData: y, funcCacheData: N } = s[b] || {}, { logs: D = [], errors: R = [], cacheData: w } = await t.request.runScripts(l, b, !1, f, Object.assign(_, { varCacheData: y, funcCacheData: N, mintick: v }), u, d) || {};
|
|
47536
|
+
i.requestCacheData[b] = w, t.log.mergeLogs(D), t.addErrors(R, b);
|
|
47525
47537
|
} else
|
|
47526
47538
|
o?.set(O, A.concat(f));
|
|
47527
47539
|
}
|