@backtest-kit/ui 9.5.0 → 9.7.0
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/README.md +254 -254
- package/build/index.cjs +243 -170
- package/build/index.mjs +122 -67
- package/build/modules/frontend/build/3rdparty/ace_1.4.12/ace.js +21337 -21337
- package/build/modules/frontend/build/3rdparty/ace_1.4.12/mode-javascript.js +797 -797
- package/build/modules/frontend/build/3rdparty/ace_1.4.12/theme-chrome.js +137 -137
- package/build/modules/frontend/build/3rdparty/ace_1.4.12/theme-twilight.js +115 -115
- package/build/modules/frontend/build/3rdparty/ace_1.4.12/worker-javascript.js +15012 -15012
- package/build/modules/frontend/build/3rdparty/qfchart_0.8.7/echarts.min.js +45 -45
- package/build/modules/frontend/build/assets/{Article-CPvMAlis.js → Article-CSLbW4S3.js} +1 -1
- package/build/modules/frontend/build/assets/{Background-BcBJxoQM.js → Background-D7AbUVrH.js} +1 -1
- package/build/modules/frontend/build/assets/{IconPhoto-C_ikll5b.js → IconPhoto-dJuN2ucb.js} +1 -1
- package/build/modules/frontend/build/assets/{KeyboardArrowLeft-wo8yIkQt.js → KeyboardArrowLeft-BC2GbqOB.js} +1 -1
- package/build/modules/frontend/build/assets/{PictureAsPdfOutlined-B2Y3DrmN.js → PictureAsPdfOutlined-BkS0a0A0.js} +1 -1
- package/build/modules/frontend/build/assets/{Refresh-DWwANC2C.js → Refresh-GywkMeC9.js} +1 -1
- package/build/modules/frontend/build/assets/emitters-D2HKeJSt.js +1 -0
- package/build/modules/frontend/build/assets/{hasRouteMatch-DxP9EIea.js → hasRouteMatch-DaOdXEtJ.js} +1 -1
- package/build/modules/frontend/build/assets/{html2canvas-BEYpPxnI.js → html2canvas-D40IxDXU.js} +1 -1
- package/build/modules/frontend/build/assets/{index-Csk3lyh_.js → index-BDWtjw8t.js} +1 -1
- package/build/modules/frontend/build/assets/{index-U9wO0mPn.js → index-BjNxXXRd.js} +1 -1
- package/build/modules/frontend/build/assets/{index-BLgqZVUW.js → index-BoVUr2mk.js} +5 -5
- package/build/modules/frontend/build/assets/{index-Ct4kOSwZ.js → index-C7fDq8VY.js} +1 -1
- package/build/modules/frontend/build/assets/{index-xcEpTc6J.js → index-CcP46J0C.js} +1 -1
- package/build/modules/frontend/build/assets/{index-DYIV_QwZ.js → index-CcnWYHDR.js} +1 -1
- package/build/modules/frontend/build/assets/{index-nQBp5LZR.js → index-CePvvRqq.js} +1 -1
- package/build/modules/frontend/build/assets/{index-Bd51gA9H.js → index-CknRQapy.js} +1 -1
- package/build/modules/frontend/build/assets/{index-C2FRNjrR.js → index-CyN7sutq.js} +1 -1
- package/build/modules/frontend/build/assets/{index-5Dtu864w.js → index-D9GOtTmB.js} +1 -1
- package/build/modules/frontend/build/assets/{index-BqQhlvLk.js → index-DWnTHxHy.js} +1 -1
- package/build/modules/frontend/build/assets/{index-Q1e8Guut.js → index-IkD99_6_.js} +1 -1
- package/build/modules/frontend/build/assets/{index-BW6mJqS7.js → index-zihyCAvY.js} +1 -1
- package/build/modules/frontend/build/assets/{index.es-FwYn4ntA.js → index.es-ByhwyzTS.js} +1 -1
- package/build/modules/frontend/build/assets/{markdownit-DifHDTjI.js → markdownit-DHhYBfkC.js} +1 -1
- package/build/modules/frontend/build/index.html +87 -87
- package/build/modules/frontend/build/manifest.json +23 -23
- package/package.json +118 -118
- package/build/modules/frontend/build/assets/emitters-Dr0rm1Id.js +0 -1
package/build/index.cjs
CHANGED
|
@@ -8,15 +8,38 @@ var finalhandler = require('finalhandler');
|
|
|
8
8
|
var serveHandler = require('serve-handler');
|
|
9
9
|
var os = require('os');
|
|
10
10
|
var diKit = require('di-kit');
|
|
11
|
-
var
|
|
11
|
+
var BacktestKit = require('backtest-kit');
|
|
12
12
|
var fs = require('fs/promises');
|
|
13
13
|
var path = require('path');
|
|
14
14
|
var mime = require('mime-types');
|
|
15
15
|
var crypto = require('crypto');
|
|
16
16
|
var module$1 = require('module');
|
|
17
17
|
var fs$1 = require('fs');
|
|
18
|
+
var node_module = require('node:module');
|
|
19
|
+
var node_path = require('node:path');
|
|
20
|
+
var node_url = require('node:url');
|
|
21
|
+
var vm = require('vm');
|
|
18
22
|
|
|
19
23
|
var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
|
|
24
|
+
function _interopNamespaceDefault(e) {
|
|
25
|
+
var n = Object.create(null);
|
|
26
|
+
if (e) {
|
|
27
|
+
Object.keys(e).forEach(function (k) {
|
|
28
|
+
if (k !== 'default') {
|
|
29
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
30
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
31
|
+
enumerable: true,
|
|
32
|
+
get: function () { return e[k]; }
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
n.default = e;
|
|
38
|
+
return Object.freeze(n);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
var BacktestKit__namespace = /*#__PURE__*/_interopNamespaceDefault(BacktestKit);
|
|
42
|
+
|
|
20
43
|
const CC_WWWROOT_PATH = process.env.CC_WWWROOT_PATH || "";
|
|
21
44
|
const CC_WWWROOT_HOST = process.env.CC_WWWROOT_HOST || "0.0.0.0";
|
|
22
45
|
const CC_WWWROOT_PORT = parseInt(process.env.CC_WWWROOT_PORT) || 60050;
|
|
@@ -26,10 +49,10 @@ const CC_ENABLE_MOCK = !!parseInt(process.env.CC_ENABLE_MOCK) || false;
|
|
|
26
49
|
|
|
27
50
|
const serveSubject = new functoolsKit.BehaviorSubject();
|
|
28
51
|
|
|
29
|
-
const router$
|
|
52
|
+
const router$c = Router({
|
|
30
53
|
params: true,
|
|
31
54
|
});
|
|
32
|
-
router$
|
|
55
|
+
router$c.get("/api/v1/health/health_check", async (req, res) => {
|
|
33
56
|
const [cpuLoad] = os.loadavg();
|
|
34
57
|
return await micro.send(res, 200, {
|
|
35
58
|
uptime: process.uptime(),
|
|
@@ -147,8 +170,8 @@ class ExchangeService {
|
|
|
147
170
|
}
|
|
148
171
|
const offsetMs = tick * step * 60 * 1000;
|
|
149
172
|
const sDate = dto.signalStartTime - offsetMs;
|
|
150
|
-
const eDate = Math.min(dto.signalStopTime + offsetMs,
|
|
151
|
-
return await
|
|
173
|
+
const eDate = Math.min(dto.signalStopTime + offsetMs, BacktestKit.alignToInterval(new Date(), "1m").getTime());
|
|
174
|
+
return await BacktestKit.Exchange.getRawCandles(dto.symbol, dto.interval, {
|
|
152
175
|
exchangeName: dto.exchangeName,
|
|
153
176
|
}, undefined, sDate, eDate);
|
|
154
177
|
};
|
|
@@ -163,8 +186,8 @@ class ExchangeService {
|
|
|
163
186
|
}
|
|
164
187
|
const offsetMs = tick * step * 60 * 1000;
|
|
165
188
|
const sDate = dto.currentTime - offsetMs;
|
|
166
|
-
const eDate = Math.min(dto.currentTime + offsetMs,
|
|
167
|
-
return await
|
|
189
|
+
const eDate = Math.min(dto.currentTime + offsetMs, BacktestKit.alignToInterval(new Date(), "1m").getTime());
|
|
190
|
+
return await BacktestKit.Exchange.getRawCandles(dto.symbol, dto.interval, {
|
|
168
191
|
exchangeName: dto.exchangeName,
|
|
169
192
|
}, undefined, sDate, eDate);
|
|
170
193
|
};
|
|
@@ -172,7 +195,7 @@ class ExchangeService {
|
|
|
172
195
|
this.loggerService.log("exchangeService getLastCandles", {
|
|
173
196
|
dto,
|
|
174
197
|
});
|
|
175
|
-
return await
|
|
198
|
+
return await BacktestKit.Exchange.getCandles(dto.symbol, dto.interval, dto.limit, {
|
|
176
199
|
exchangeName: dto.exchangeName,
|
|
177
200
|
});
|
|
178
201
|
};
|
|
@@ -180,11 +203,11 @@ class ExchangeService {
|
|
|
180
203
|
this.loggerService.log("exchangeService getRawCandles", {
|
|
181
204
|
dto,
|
|
182
205
|
});
|
|
183
|
-
const [exchange = null] = await
|
|
206
|
+
const [exchange = null] = await BacktestKit.listExchangeSchema();
|
|
184
207
|
if (exchange === null) {
|
|
185
208
|
throw new Error("exchangeService getRawCandles no exchange registered");
|
|
186
209
|
}
|
|
187
|
-
return await
|
|
210
|
+
return await BacktestKit.Exchange.getRawCandles(dto.symbol, dto.interval, {
|
|
188
211
|
exchangeName: exchange.exchangeName,
|
|
189
212
|
}, dto.limit, dto.sDate, dto.eDate);
|
|
190
213
|
};
|
|
@@ -360,7 +383,7 @@ class ExchangeMockService {
|
|
|
360
383
|
symbol: signal.symbol,
|
|
361
384
|
exchangeName: signal.exchangeName,
|
|
362
385
|
signalStartTime: eventAt,
|
|
363
|
-
signalStopTime:
|
|
386
|
+
signalStopTime: BacktestKit.alignToInterval(new Date(updatedAt), interval).getTime(),
|
|
364
387
|
interval,
|
|
365
388
|
});
|
|
366
389
|
};
|
|
@@ -369,9 +392,9 @@ class ExchangeMockService {
|
|
|
369
392
|
symbol,
|
|
370
393
|
interval,
|
|
371
394
|
});
|
|
372
|
-
const [backtestItem] = await
|
|
373
|
-
const [liveItem] = await
|
|
374
|
-
const [exchangeItem] = await
|
|
395
|
+
const [backtestItem] = await BacktestKit.Backtest.list();
|
|
396
|
+
const [liveItem] = await BacktestKit.Live.list();
|
|
397
|
+
const [exchangeItem] = await BacktestKit.listExchangeSchema();
|
|
375
398
|
if (backtestItem) {
|
|
376
399
|
return await this.exchangeService.getLastCandles({
|
|
377
400
|
symbol,
|
|
@@ -817,7 +840,7 @@ class NotificationViewService {
|
|
|
817
840
|
if (CC_ENABLE_MOCK) {
|
|
818
841
|
return await this.notificationMockService.findByFilter(filterData, limit, offset);
|
|
819
842
|
}
|
|
820
|
-
if (!
|
|
843
|
+
if (!BacktestKit.Notification.enable.hasValue()) {
|
|
821
844
|
console.warn("@backtest-kit/ui notificationViewService findByFilter notifications not enabled");
|
|
822
845
|
return [];
|
|
823
846
|
}
|
|
@@ -842,15 +865,15 @@ class NotificationViewService {
|
|
|
842
865
|
if (CC_ENABLE_MOCK) {
|
|
843
866
|
return await this.notificationMockService.getList();
|
|
844
867
|
}
|
|
845
|
-
if (!
|
|
868
|
+
if (!BacktestKit.Notification.enable.hasValue()) {
|
|
846
869
|
console.warn("@backtest-kit/ui notificationViewService getList notifications not enabled");
|
|
847
870
|
return [];
|
|
848
871
|
}
|
|
849
872
|
const notificationList = [];
|
|
850
|
-
for (const notification of await
|
|
873
|
+
for (const notification of await BacktestKit.Notification.getData(false)) {
|
|
851
874
|
notificationList.push(notification);
|
|
852
875
|
}
|
|
853
|
-
for (const notification of await
|
|
876
|
+
for (const notification of await BacktestKit.Notification.getData(true)) {
|
|
854
877
|
notificationList.push(notification);
|
|
855
878
|
}
|
|
856
879
|
notificationList.sort((a, b) => {
|
|
@@ -875,7 +898,7 @@ class NotificationViewService {
|
|
|
875
898
|
if (CC_ENABLE_MOCK) {
|
|
876
899
|
return await this.notificationMockService.getOne(id);
|
|
877
900
|
}
|
|
878
|
-
if (!
|
|
901
|
+
if (!BacktestKit.Notification.enable.hasValue()) {
|
|
879
902
|
console.warn("@backtest-kit/ui notificationViewService getOne notifications not enabled");
|
|
880
903
|
return null;
|
|
881
904
|
}
|
|
@@ -896,22 +919,22 @@ class StorageViewService {
|
|
|
896
919
|
if (CC_ENABLE_MOCK) {
|
|
897
920
|
return await this.storageMockService.findSignalById(signalId);
|
|
898
921
|
}
|
|
899
|
-
if (!
|
|
922
|
+
if (!BacktestKit.Storage.enable.hasValue()) {
|
|
900
923
|
console.warn("@backtest-kit/ui storageViewService findSignalById storage not enabled");
|
|
901
924
|
return null;
|
|
902
925
|
}
|
|
903
|
-
return await
|
|
926
|
+
return await BacktestKit.Storage.findSignalById(signalId);
|
|
904
927
|
};
|
|
905
928
|
this.listSignalLive = async () => {
|
|
906
929
|
this.loggerService.log("storageViewService listSignalLive");
|
|
907
930
|
if (CC_ENABLE_MOCK) {
|
|
908
931
|
return await this.storageMockService.listSignalLive();
|
|
909
932
|
}
|
|
910
|
-
if (!
|
|
933
|
+
if (!BacktestKit.Storage.enable.hasValue()) {
|
|
911
934
|
console.warn("@backtest-kit/ui storageViewService listSignalLive storage not enabled");
|
|
912
935
|
return [];
|
|
913
936
|
}
|
|
914
|
-
const signalList = await
|
|
937
|
+
const signalList = await BacktestKit.Storage.listSignalLive();
|
|
915
938
|
signalList.sort((a, b) => {
|
|
916
939
|
const aHasTime = "createdAt" in a;
|
|
917
940
|
const bHasTime = "createdAt" in b;
|
|
@@ -932,11 +955,11 @@ class StorageViewService {
|
|
|
932
955
|
if (CC_ENABLE_MOCK) {
|
|
933
956
|
return await this.storageMockService.listSignalBacktest();
|
|
934
957
|
}
|
|
935
|
-
if (!
|
|
958
|
+
if (!BacktestKit.Storage.enable.hasValue()) {
|
|
936
959
|
console.warn("@backtest-kit/ui storageViewService listSignalBacktest storage not enabled");
|
|
937
960
|
return [];
|
|
938
961
|
}
|
|
939
|
-
const signalList = await
|
|
962
|
+
const signalList = await BacktestKit.Storage.listSignalBacktest();
|
|
940
963
|
signalList.sort((a, b) => {
|
|
941
964
|
const aHasTime = "createdAt" in a;
|
|
942
965
|
const bHasTime = "createdAt" in b;
|
|
@@ -1003,7 +1026,7 @@ class ExchangeViewService {
|
|
|
1003
1026
|
symbol: signal.symbol,
|
|
1004
1027
|
exchangeName: signal.exchangeName,
|
|
1005
1028
|
signalStartTime: eventAt,
|
|
1006
|
-
signalStopTime:
|
|
1029
|
+
signalStopTime: BacktestKit.alignToInterval(new Date(updatedAt), interval).getTime(),
|
|
1007
1030
|
interval,
|
|
1008
1031
|
});
|
|
1009
1032
|
};
|
|
@@ -1015,9 +1038,9 @@ class ExchangeViewService {
|
|
|
1015
1038
|
if (CC_ENABLE_MOCK) {
|
|
1016
1039
|
return await this.exchangeMockService.getLastCandles(symbol, interval);
|
|
1017
1040
|
}
|
|
1018
|
-
const [backtestItem] = await
|
|
1019
|
-
const [liveItem] = await
|
|
1020
|
-
const [exchangeItem] = await
|
|
1041
|
+
const [backtestItem] = await BacktestKit.Backtest.list();
|
|
1042
|
+
const [liveItem] = await BacktestKit.Live.list();
|
|
1043
|
+
const [exchangeItem] = await BacktestKit.listExchangeSchema();
|
|
1021
1044
|
if (backtestItem) {
|
|
1022
1045
|
return await this.exchangeService.getLastCandles({
|
|
1023
1046
|
symbol,
|
|
@@ -1084,7 +1107,7 @@ class LogViewService {
|
|
|
1084
1107
|
if (CC_ENABLE_MOCK) {
|
|
1085
1108
|
return await this.logMockService.getList();
|
|
1086
1109
|
}
|
|
1087
|
-
const logList = await
|
|
1110
|
+
const logList = await BacktestKit.Log.getList();
|
|
1088
1111
|
logList.sort((a, b) => b.timestamp - a.timestamp);
|
|
1089
1112
|
return logList;
|
|
1090
1113
|
};
|
|
@@ -1113,14 +1136,14 @@ class StatusViewService {
|
|
|
1113
1136
|
const liveList = await this.statusMockService.getStatusList();
|
|
1114
1137
|
return liveList.filter(({ status }) => status === "pending");
|
|
1115
1138
|
}
|
|
1116
|
-
return await
|
|
1139
|
+
return await BacktestKit.Live.list();
|
|
1117
1140
|
};
|
|
1118
1141
|
this.getStatusMap = async () => {
|
|
1119
1142
|
this.loggerService.log("statusViewService getStatusMap");
|
|
1120
1143
|
if (CC_ENABLE_MOCK) {
|
|
1121
1144
|
return await this.statusMockService.getStatusMap();
|
|
1122
1145
|
}
|
|
1123
|
-
const liveList = await
|
|
1146
|
+
const liveList = await BacktestKit.Live.list();
|
|
1124
1147
|
return liveList
|
|
1125
1148
|
.filter(({ status }) => status === "pending")
|
|
1126
1149
|
.reduce((acm, cur) => ({ ...acm, [cur.id]: cur }), {});
|
|
@@ -1132,44 +1155,44 @@ class StatusViewService {
|
|
|
1132
1155
|
if (CC_ENABLE_MOCK) {
|
|
1133
1156
|
return await this.statusMockService.getStatusOne(id);
|
|
1134
1157
|
}
|
|
1135
|
-
const liveList = await
|
|
1158
|
+
const liveList = await BacktestKit.Live.list();
|
|
1136
1159
|
const liveOne = liveList.find((live) => live.id === id);
|
|
1137
1160
|
if (!liveOne) {
|
|
1138
1161
|
throw new Error(`Live with id ${id} not found`);
|
|
1139
1162
|
}
|
|
1140
1163
|
const { symbol, strategyName, exchangeName } = liveOne;
|
|
1141
|
-
const currentPrice = await
|
|
1164
|
+
const currentPrice = await BacktestKit.Exchange.getAveragePrice(symbol, {
|
|
1142
1165
|
exchangeName,
|
|
1143
1166
|
});
|
|
1144
|
-
const pendingSignal = await
|
|
1167
|
+
const pendingSignal = await BacktestKit.Live.getPendingSignal(symbol, currentPrice, {
|
|
1145
1168
|
strategyName,
|
|
1146
1169
|
exchangeName,
|
|
1147
1170
|
});
|
|
1148
1171
|
if (!pendingSignal) {
|
|
1149
1172
|
return null;
|
|
1150
1173
|
}
|
|
1151
|
-
const positionLevels = await
|
|
1174
|
+
const positionLevels = await BacktestKit.Live.getPositionLevels(symbol, {
|
|
1152
1175
|
strategyName,
|
|
1153
1176
|
exchangeName,
|
|
1154
1177
|
});
|
|
1155
1178
|
if (!positionLevels) {
|
|
1156
1179
|
return null;
|
|
1157
1180
|
}
|
|
1158
|
-
const positionEntries = await
|
|
1181
|
+
const positionEntries = await BacktestKit.Live.getPositionEntries(symbol, {
|
|
1159
1182
|
strategyName,
|
|
1160
1183
|
exchangeName,
|
|
1161
1184
|
});
|
|
1162
1185
|
if (!positionEntries) {
|
|
1163
1186
|
return null;
|
|
1164
1187
|
}
|
|
1165
|
-
const positionPartials = await
|
|
1188
|
+
const positionPartials = await BacktestKit.Live.getPositionPartials(symbol, {
|
|
1166
1189
|
strategyName,
|
|
1167
1190
|
exchangeName,
|
|
1168
1191
|
});
|
|
1169
1192
|
if (!positionPartials) {
|
|
1170
1193
|
return null;
|
|
1171
1194
|
}
|
|
1172
|
-
const timestamp = await
|
|
1195
|
+
const timestamp = await BacktestKit.lib.timeMetaService.getTimestamp(pendingSignal.symbol, {
|
|
1173
1196
|
strategyName: pendingSignal.strategyName,
|
|
1174
1197
|
exchangeName: pendingSignal.exchangeName,
|
|
1175
1198
|
frameName: pendingSignal.frameName,
|
|
@@ -1210,9 +1233,9 @@ class StatusViewService {
|
|
|
1210
1233
|
return this.statusMockService.getStatusInfo();
|
|
1211
1234
|
}
|
|
1212
1235
|
{
|
|
1213
|
-
const [backtestTarget = null] = await
|
|
1236
|
+
const [backtestTarget = null] = await BacktestKit.Backtest.list();
|
|
1214
1237
|
if (backtestTarget) {
|
|
1215
|
-
const currentHeat = await
|
|
1238
|
+
const currentHeat = await BacktestKit.Heat.getData({
|
|
1216
1239
|
strategyName: backtestTarget.strategyName,
|
|
1217
1240
|
exchangeName: backtestTarget.exchangeName,
|
|
1218
1241
|
frameName: backtestTarget.frameName,
|
|
@@ -1243,9 +1266,9 @@ class StatusViewService {
|
|
|
1243
1266
|
}
|
|
1244
1267
|
}
|
|
1245
1268
|
{
|
|
1246
|
-
const [liveTarget = null] = await
|
|
1269
|
+
const [liveTarget = null] = await BacktestKit.Live.list();
|
|
1247
1270
|
if (liveTarget) {
|
|
1248
|
-
const currentHeat = await
|
|
1271
|
+
const currentHeat = await BacktestKit.Heat.getData({
|
|
1249
1272
|
strategyName: liveTarget.strategyName,
|
|
1250
1273
|
exchangeName: liveTarget.exchangeName,
|
|
1251
1274
|
frameName: "",
|
|
@@ -1290,14 +1313,14 @@ class MarkdownViewService {
|
|
|
1290
1313
|
if (CC_ENABLE_MOCK) {
|
|
1291
1314
|
return await this.markdownMockService.getStrategyData(symbol, strategyName, exchangeName, frameName);
|
|
1292
1315
|
}
|
|
1293
|
-
return await
|
|
1316
|
+
return await BacktestKit.Strategy.getData(symbol, { strategyName, exchangeName, frameName }, backtest);
|
|
1294
1317
|
};
|
|
1295
1318
|
this.getStrategyReport = async (symbol, strategyName, exchangeName, frameName, backtest = false) => {
|
|
1296
1319
|
this.loggerService.log("markdownViewService getStrategyReport", { symbol, strategyName, exchangeName, frameName, backtest });
|
|
1297
1320
|
if (CC_ENABLE_MOCK) {
|
|
1298
1321
|
return await this.markdownMockService.getStrategyReport(symbol, strategyName, exchangeName, frameName);
|
|
1299
1322
|
}
|
|
1300
|
-
return await
|
|
1323
|
+
return await BacktestKit.Strategy.getReport(symbol, { strategyName, exchangeName, frameName }, backtest);
|
|
1301
1324
|
};
|
|
1302
1325
|
// Backtest
|
|
1303
1326
|
this.getBacktestData = async (symbol, strategyName, exchangeName, frameName) => {
|
|
@@ -1305,14 +1328,14 @@ class MarkdownViewService {
|
|
|
1305
1328
|
if (CC_ENABLE_MOCK) {
|
|
1306
1329
|
return await this.markdownMockService.getBacktestData(symbol, strategyName, exchangeName, frameName);
|
|
1307
1330
|
}
|
|
1308
|
-
return await
|
|
1331
|
+
return await BacktestKit.Backtest.getData(symbol, { strategyName, exchangeName, frameName });
|
|
1309
1332
|
};
|
|
1310
1333
|
this.getBacktestReport = async (symbol, strategyName, exchangeName, frameName) => {
|
|
1311
1334
|
this.loggerService.log("markdownViewService getBacktestReport", { symbol, strategyName, exchangeName, frameName });
|
|
1312
1335
|
if (CC_ENABLE_MOCK) {
|
|
1313
1336
|
return await this.markdownMockService.getBacktestReport(symbol, strategyName, exchangeName, frameName);
|
|
1314
1337
|
}
|
|
1315
|
-
return await
|
|
1338
|
+
return await BacktestKit.Backtest.getReport(symbol, { strategyName, exchangeName, frameName });
|
|
1316
1339
|
};
|
|
1317
1340
|
// Live
|
|
1318
1341
|
this.getLiveData = async (symbol, strategyName, exchangeName) => {
|
|
@@ -1320,14 +1343,14 @@ class MarkdownViewService {
|
|
|
1320
1343
|
if (CC_ENABLE_MOCK) {
|
|
1321
1344
|
return await this.markdownMockService.getLiveData(symbol, strategyName, exchangeName);
|
|
1322
1345
|
}
|
|
1323
|
-
return await
|
|
1346
|
+
return await BacktestKit.Live.getData(symbol, { strategyName, exchangeName });
|
|
1324
1347
|
};
|
|
1325
1348
|
this.getLiveReport = async (symbol, strategyName, exchangeName) => {
|
|
1326
1349
|
this.loggerService.log("markdownViewService getLiveReport", { symbol, strategyName, exchangeName });
|
|
1327
1350
|
if (CC_ENABLE_MOCK) {
|
|
1328
1351
|
return await this.markdownMockService.getLiveReport(symbol, strategyName, exchangeName);
|
|
1329
1352
|
}
|
|
1330
|
-
return await
|
|
1353
|
+
return await BacktestKit.Live.getReport(symbol, { strategyName, exchangeName });
|
|
1331
1354
|
};
|
|
1332
1355
|
// Breakeven
|
|
1333
1356
|
this.getBreakevenData = async (symbol, strategyName, exchangeName, frameName, backtest = false) => {
|
|
@@ -1335,14 +1358,14 @@ class MarkdownViewService {
|
|
|
1335
1358
|
if (CC_ENABLE_MOCK) {
|
|
1336
1359
|
return await this.markdownMockService.getBreakevenData(symbol, strategyName, exchangeName, frameName);
|
|
1337
1360
|
}
|
|
1338
|
-
return await
|
|
1361
|
+
return await BacktestKit.Breakeven.getData(symbol, { strategyName, exchangeName, frameName }, backtest);
|
|
1339
1362
|
};
|
|
1340
1363
|
this.getBreakevenReport = async (symbol, strategyName, exchangeName, frameName, backtest = false) => {
|
|
1341
1364
|
this.loggerService.log("markdownViewService getBreakevenReport", { symbol, strategyName, exchangeName, frameName, backtest });
|
|
1342
1365
|
if (CC_ENABLE_MOCK) {
|
|
1343
1366
|
return await this.markdownMockService.getBreakevenReport(symbol, strategyName, exchangeName, frameName);
|
|
1344
1367
|
}
|
|
1345
|
-
return await
|
|
1368
|
+
return await BacktestKit.Breakeven.getReport(symbol, { strategyName, exchangeName, frameName }, backtest);
|
|
1346
1369
|
};
|
|
1347
1370
|
// Risk
|
|
1348
1371
|
this.getRiskData = async (symbol, strategyName, exchangeName, frameName, backtest = false) => {
|
|
@@ -1350,14 +1373,14 @@ class MarkdownViewService {
|
|
|
1350
1373
|
if (CC_ENABLE_MOCK) {
|
|
1351
1374
|
return await this.markdownMockService.getRiskData(symbol, strategyName, exchangeName, frameName);
|
|
1352
1375
|
}
|
|
1353
|
-
return await
|
|
1376
|
+
return await BacktestKit.Risk.getData(symbol, { strategyName, exchangeName, frameName }, backtest);
|
|
1354
1377
|
};
|
|
1355
1378
|
this.getRiskReport = async (symbol, strategyName, exchangeName, frameName, backtest = false) => {
|
|
1356
1379
|
this.loggerService.log("markdownViewService getRiskReport", { symbol, strategyName, exchangeName, frameName, backtest });
|
|
1357
1380
|
if (CC_ENABLE_MOCK) {
|
|
1358
1381
|
return await this.markdownMockService.getRiskReport(symbol, strategyName, exchangeName, frameName);
|
|
1359
1382
|
}
|
|
1360
|
-
return await
|
|
1383
|
+
return await BacktestKit.Risk.getReport(symbol, { strategyName, exchangeName, frameName }, backtest);
|
|
1361
1384
|
};
|
|
1362
1385
|
// Partial
|
|
1363
1386
|
this.getPartialData = async (symbol, strategyName, exchangeName, frameName, backtest = false) => {
|
|
@@ -1365,14 +1388,14 @@ class MarkdownViewService {
|
|
|
1365
1388
|
if (CC_ENABLE_MOCK) {
|
|
1366
1389
|
return await this.markdownMockService.getPartialData(symbol, strategyName, exchangeName, frameName);
|
|
1367
1390
|
}
|
|
1368
|
-
return await
|
|
1391
|
+
return await BacktestKit.Partial.getData(symbol, { strategyName, exchangeName, frameName }, backtest);
|
|
1369
1392
|
};
|
|
1370
1393
|
this.getPartialReport = async (symbol, strategyName, exchangeName, frameName, backtest = false) => {
|
|
1371
1394
|
this.loggerService.log("markdownViewService getPartialReport", { symbol, strategyName, exchangeName, frameName, backtest });
|
|
1372
1395
|
if (CC_ENABLE_MOCK) {
|
|
1373
1396
|
return await this.markdownMockService.getPartialReport(symbol, strategyName, exchangeName, frameName);
|
|
1374
1397
|
}
|
|
1375
|
-
return await
|
|
1398
|
+
return await BacktestKit.Partial.getReport(symbol, { strategyName, exchangeName, frameName }, backtest);
|
|
1376
1399
|
};
|
|
1377
1400
|
// HighestProfit
|
|
1378
1401
|
this.getHighestProfitData = async (symbol, strategyName, exchangeName, frameName, backtest = false) => {
|
|
@@ -1380,14 +1403,14 @@ class MarkdownViewService {
|
|
|
1380
1403
|
if (CC_ENABLE_MOCK) {
|
|
1381
1404
|
return await this.markdownMockService.getHighestProfitData(symbol, strategyName, exchangeName, frameName);
|
|
1382
1405
|
}
|
|
1383
|
-
return await
|
|
1406
|
+
return await BacktestKit.HighestProfit.getData(symbol, { strategyName, exchangeName, frameName }, backtest);
|
|
1384
1407
|
};
|
|
1385
1408
|
this.getHighestProfitReport = async (symbol, strategyName, exchangeName, frameName, backtest = false) => {
|
|
1386
1409
|
this.loggerService.log("markdownViewService getHighestProfitReport", { symbol, strategyName, exchangeName, frameName, backtest });
|
|
1387
1410
|
if (CC_ENABLE_MOCK) {
|
|
1388
1411
|
return await this.markdownMockService.getHighestProfitReport(symbol, strategyName, exchangeName, frameName);
|
|
1389
1412
|
}
|
|
1390
|
-
return await
|
|
1413
|
+
return await BacktestKit.HighestProfit.getReport(symbol, { strategyName, exchangeName, frameName }, backtest);
|
|
1391
1414
|
};
|
|
1392
1415
|
// MaxDrawdown
|
|
1393
1416
|
this.getMaxDrawdownData = async (symbol, strategyName, exchangeName, frameName, backtest = false) => {
|
|
@@ -1395,14 +1418,14 @@ class MarkdownViewService {
|
|
|
1395
1418
|
if (CC_ENABLE_MOCK) {
|
|
1396
1419
|
return await this.markdownMockService.getMaxDrawdownData(symbol, strategyName, exchangeName, frameName);
|
|
1397
1420
|
}
|
|
1398
|
-
return await
|
|
1421
|
+
return await BacktestKit.MaxDrawdown.getData(symbol, { strategyName, exchangeName, frameName }, backtest);
|
|
1399
1422
|
};
|
|
1400
1423
|
this.getMaxDrawdownReport = async (symbol, strategyName, exchangeName, frameName, backtest = false) => {
|
|
1401
1424
|
this.loggerService.log("markdownViewService getMaxDrawdownReport", { symbol, strategyName, exchangeName, frameName, backtest });
|
|
1402
1425
|
if (CC_ENABLE_MOCK) {
|
|
1403
1426
|
return await this.markdownMockService.getMaxDrawdownReport(symbol, strategyName, exchangeName, frameName);
|
|
1404
1427
|
}
|
|
1405
|
-
return await
|
|
1428
|
+
return await BacktestKit.MaxDrawdown.getReport(symbol, { strategyName, exchangeName, frameName }, backtest);
|
|
1406
1429
|
};
|
|
1407
1430
|
// Schedule
|
|
1408
1431
|
this.getScheduleData = async (symbol, strategyName, exchangeName, frameName, backtest = false) => {
|
|
@@ -1410,14 +1433,14 @@ class MarkdownViewService {
|
|
|
1410
1433
|
if (CC_ENABLE_MOCK) {
|
|
1411
1434
|
return await this.markdownMockService.getScheduleData(symbol, strategyName, exchangeName, frameName);
|
|
1412
1435
|
}
|
|
1413
|
-
return await
|
|
1436
|
+
return await BacktestKit.Schedule.getData(symbol, { strategyName, exchangeName, frameName }, backtest);
|
|
1414
1437
|
};
|
|
1415
1438
|
this.getScheduleReport = async (symbol, strategyName, exchangeName, frameName, backtest = false) => {
|
|
1416
1439
|
this.loggerService.log("markdownViewService getScheduleReport", { symbol, strategyName, exchangeName, frameName, backtest });
|
|
1417
1440
|
if (CC_ENABLE_MOCK) {
|
|
1418
1441
|
return await this.markdownMockService.getScheduleReport(symbol, strategyName, exchangeName, frameName);
|
|
1419
1442
|
}
|
|
1420
|
-
return await
|
|
1443
|
+
return await BacktestKit.Schedule.getReport(symbol, { strategyName, exchangeName, frameName }, backtest);
|
|
1421
1444
|
};
|
|
1422
1445
|
// Performance
|
|
1423
1446
|
this.getPerformanceData = async (symbol, strategyName, exchangeName, frameName, backtest = false) => {
|
|
@@ -1425,14 +1448,14 @@ class MarkdownViewService {
|
|
|
1425
1448
|
if (CC_ENABLE_MOCK) {
|
|
1426
1449
|
return await this.markdownMockService.getPerformanceData(symbol, strategyName, exchangeName, frameName);
|
|
1427
1450
|
}
|
|
1428
|
-
return await
|
|
1451
|
+
return await BacktestKit.Performance.getData(symbol, { strategyName, exchangeName, frameName }, backtest);
|
|
1429
1452
|
};
|
|
1430
1453
|
this.getPerformanceReport = async (symbol, strategyName, exchangeName, frameName, backtest = false) => {
|
|
1431
1454
|
this.loggerService.log("markdownViewService getPerformanceReport", { symbol, strategyName, exchangeName, frameName, backtest });
|
|
1432
1455
|
if (CC_ENABLE_MOCK) {
|
|
1433
1456
|
return await this.markdownMockService.getPerformanceReport(symbol, strategyName, exchangeName, frameName);
|
|
1434
1457
|
}
|
|
1435
|
-
return await
|
|
1458
|
+
return await BacktestKit.Performance.getReport(symbol, { strategyName, exchangeName, frameName }, backtest);
|
|
1436
1459
|
};
|
|
1437
1460
|
// Sync
|
|
1438
1461
|
this.getSyncData = async (symbol, strategyName, exchangeName, frameName, backtest = false) => {
|
|
@@ -1440,14 +1463,14 @@ class MarkdownViewService {
|
|
|
1440
1463
|
if (CC_ENABLE_MOCK) {
|
|
1441
1464
|
return await this.markdownMockService.getSyncData(symbol, strategyName, exchangeName, frameName);
|
|
1442
1465
|
}
|
|
1443
|
-
return await
|
|
1466
|
+
return await BacktestKit.Sync.getData(symbol, { strategyName, exchangeName, frameName }, backtest);
|
|
1444
1467
|
};
|
|
1445
1468
|
this.getSyncReport = async (symbol, strategyName, exchangeName, frameName, backtest = false) => {
|
|
1446
1469
|
this.loggerService.log("markdownViewService getSyncReport", { symbol, strategyName, exchangeName, frameName, backtest });
|
|
1447
1470
|
if (CC_ENABLE_MOCK) {
|
|
1448
1471
|
return await this.markdownMockService.getSyncReport(symbol, strategyName, exchangeName, frameName);
|
|
1449
1472
|
}
|
|
1450
|
-
return await
|
|
1473
|
+
return await BacktestKit.Sync.getReport(symbol, { strategyName, exchangeName, frameName }, backtest);
|
|
1451
1474
|
};
|
|
1452
1475
|
// Heat
|
|
1453
1476
|
this.getHeatData = async (strategyName, exchangeName, frameName, backtest = false) => {
|
|
@@ -1455,14 +1478,14 @@ class MarkdownViewService {
|
|
|
1455
1478
|
if (CC_ENABLE_MOCK) {
|
|
1456
1479
|
return await this.markdownMockService.getHeatData(strategyName, exchangeName, frameName);
|
|
1457
1480
|
}
|
|
1458
|
-
return await
|
|
1481
|
+
return await BacktestKit.Heat.getData({ strategyName, exchangeName, frameName }, backtest);
|
|
1459
1482
|
};
|
|
1460
1483
|
this.getHeatReport = async (strategyName, exchangeName, frameName, backtest = false) => {
|
|
1461
1484
|
this.loggerService.log("markdownViewService getHeatReport", { strategyName, exchangeName, frameName, backtest });
|
|
1462
1485
|
if (CC_ENABLE_MOCK) {
|
|
1463
1486
|
return await this.markdownMockService.getHeatReport(strategyName, exchangeName, frameName);
|
|
1464
1487
|
}
|
|
1465
|
-
return await
|
|
1488
|
+
return await BacktestKit.Heat.getReport({ strategyName, exchangeName, frameName }, backtest);
|
|
1466
1489
|
};
|
|
1467
1490
|
// Walker
|
|
1468
1491
|
this.getWalkerData = async (symbol, walkerName) => {
|
|
@@ -1470,14 +1493,14 @@ class MarkdownViewService {
|
|
|
1470
1493
|
if (CC_ENABLE_MOCK) {
|
|
1471
1494
|
return await this.markdownMockService.getWalkerData(symbol, walkerName);
|
|
1472
1495
|
}
|
|
1473
|
-
return await
|
|
1496
|
+
return await BacktestKit.Walker.getData(symbol, { walkerName });
|
|
1474
1497
|
};
|
|
1475
1498
|
this.getWalkerReport = async (symbol, walkerName) => {
|
|
1476
1499
|
this.loggerService.log("markdownViewService getWalkerReport", { symbol, walkerName });
|
|
1477
1500
|
if (CC_ENABLE_MOCK) {
|
|
1478
1501
|
return await this.markdownMockService.getWalkerReport(symbol, walkerName);
|
|
1479
1502
|
}
|
|
1480
|
-
return await
|
|
1503
|
+
return await BacktestKit.Walker.getReport(symbol, { walkerName });
|
|
1481
1504
|
};
|
|
1482
1505
|
}
|
|
1483
1506
|
}
|
|
@@ -1575,13 +1598,13 @@ class SignalViewService {
|
|
|
1575
1598
|
return await this.signalMockService.getLastUpdateTimestamp(signalId);
|
|
1576
1599
|
}
|
|
1577
1600
|
{
|
|
1578
|
-
const liveSignal = await
|
|
1601
|
+
const liveSignal = await BacktestKit.StorageLive.findById(signalId);
|
|
1579
1602
|
if (liveSignal) {
|
|
1580
1603
|
return liveSignal.updatedAt;
|
|
1581
1604
|
}
|
|
1582
1605
|
}
|
|
1583
1606
|
{
|
|
1584
|
-
const backtestSignal = await
|
|
1607
|
+
const backtestSignal = await BacktestKit.StorageBacktest.findById(signalId);
|
|
1585
1608
|
if (backtestSignal) {
|
|
1586
1609
|
return backtestSignal.updatedAt;
|
|
1587
1610
|
}
|
|
@@ -1596,13 +1619,13 @@ class SignalViewService {
|
|
|
1596
1619
|
return await this.signalMockService.getPendingSignal(symbol);
|
|
1597
1620
|
}
|
|
1598
1621
|
{
|
|
1599
|
-
const liveList = await
|
|
1622
|
+
const liveList = await BacktestKit.Live.list();
|
|
1600
1623
|
const liveTarget = liveList.find((live) => live.symbol === symbol);
|
|
1601
1624
|
if (liveTarget) {
|
|
1602
|
-
const currentPrice = await
|
|
1625
|
+
const currentPrice = await BacktestKit.Exchange.getAveragePrice(symbol, {
|
|
1603
1626
|
exchangeName: liveTarget.exchangeName,
|
|
1604
1627
|
});
|
|
1605
|
-
return await
|
|
1628
|
+
return await BacktestKit.Live.getPendingSignal(symbol, currentPrice, {
|
|
1606
1629
|
strategyName: liveTarget.strategyName,
|
|
1607
1630
|
exchangeName: liveTarget.exchangeName,
|
|
1608
1631
|
});
|
|
@@ -1622,17 +1645,17 @@ class HeatViewService {
|
|
|
1622
1645
|
if (CC_ENABLE_MOCK) {
|
|
1623
1646
|
return await this.heatMockService.getStrategyHeatData();
|
|
1624
1647
|
}
|
|
1625
|
-
const [backtestItem] = await
|
|
1626
|
-
const [liveItem] = await
|
|
1648
|
+
const [backtestItem] = await BacktestKit.Backtest.list();
|
|
1649
|
+
const [liveItem] = await BacktestKit.Live.list();
|
|
1627
1650
|
if (backtestItem) {
|
|
1628
|
-
return await
|
|
1651
|
+
return await BacktestKit.Heat.getData({
|
|
1629
1652
|
strategyName: backtestItem.strategyName,
|
|
1630
1653
|
exchangeName: backtestItem.exchangeName,
|
|
1631
1654
|
frameName: backtestItem.frameName,
|
|
1632
1655
|
}, true);
|
|
1633
1656
|
}
|
|
1634
1657
|
if (liveItem) {
|
|
1635
|
-
return await
|
|
1658
|
+
return await BacktestKit.Heat.getData({
|
|
1636
1659
|
strategyName: liveItem.strategyName,
|
|
1637
1660
|
exchangeName: liveItem.exchangeName,
|
|
1638
1661
|
frameName: "",
|
|
@@ -1645,17 +1668,17 @@ class HeatViewService {
|
|
|
1645
1668
|
if (CC_ENABLE_MOCK) {
|
|
1646
1669
|
return await this.heatMockService.getStrategyHeatReport();
|
|
1647
1670
|
}
|
|
1648
|
-
const [backtestItem] = await
|
|
1649
|
-
const [liveItem] = await
|
|
1671
|
+
const [backtestItem] = await BacktestKit.Backtest.list();
|
|
1672
|
+
const [liveItem] = await BacktestKit.Live.list();
|
|
1650
1673
|
if (backtestItem) {
|
|
1651
|
-
return await
|
|
1674
|
+
return await BacktestKit.Heat.getReport({
|
|
1652
1675
|
strategyName: backtestItem.strategyName,
|
|
1653
1676
|
exchangeName: backtestItem.exchangeName,
|
|
1654
1677
|
frameName: backtestItem.frameName,
|
|
1655
1678
|
}, true);
|
|
1656
1679
|
}
|
|
1657
1680
|
if (liveItem) {
|
|
1658
|
-
return await
|
|
1681
|
+
return await BacktestKit.Heat.getReport({
|
|
1659
1682
|
strategyName: liveItem.strategyName,
|
|
1660
1683
|
exchangeName: liveItem.exchangeName,
|
|
1661
1684
|
frameName: "",
|
|
@@ -1810,7 +1833,7 @@ class PriceConnectionService {
|
|
|
1810
1833
|
frameName,
|
|
1811
1834
|
backtest,
|
|
1812
1835
|
});
|
|
1813
|
-
return await
|
|
1836
|
+
return await BacktestKit.lib.priceMetaService.getCurrentPrice(symbol, { strategyName, exchangeName, frameName }, backtest);
|
|
1814
1837
|
};
|
|
1815
1838
|
}
|
|
1816
1839
|
}
|
|
@@ -1828,7 +1851,7 @@ class BacktestMetaService {
|
|
|
1828
1851
|
if (CC_ENABLE_MOCK) {
|
|
1829
1852
|
return BACKTEST_LIST;
|
|
1830
1853
|
}
|
|
1831
|
-
return await
|
|
1854
|
+
return await BacktestKit.Backtest.list();
|
|
1832
1855
|
};
|
|
1833
1856
|
}
|
|
1834
1857
|
}
|
|
@@ -1845,7 +1868,7 @@ class LiveMetaService {
|
|
|
1845
1868
|
if (CC_ENABLE_MOCK) {
|
|
1846
1869
|
return LIVE_LIST;
|
|
1847
1870
|
}
|
|
1848
|
-
return await
|
|
1871
|
+
return await BacktestKit.Live.list();
|
|
1849
1872
|
};
|
|
1850
1873
|
}
|
|
1851
1874
|
}
|
|
@@ -1912,17 +1935,17 @@ class PerformanceViewService {
|
|
|
1912
1935
|
if (CC_ENABLE_MOCK) {
|
|
1913
1936
|
return await this.performanceMockService.getPerformanceData();
|
|
1914
1937
|
}
|
|
1915
|
-
const [backtestItem] = await
|
|
1916
|
-
const [liveItem] = await
|
|
1938
|
+
const [backtestItem] = await BacktestKit.Backtest.list();
|
|
1939
|
+
const [liveItem] = await BacktestKit.Live.list();
|
|
1917
1940
|
if (backtestItem) {
|
|
1918
|
-
return await
|
|
1941
|
+
return await BacktestKit.Performance.getData(backtestItem.symbol, {
|
|
1919
1942
|
strategyName: backtestItem.strategyName,
|
|
1920
1943
|
exchangeName: backtestItem.exchangeName,
|
|
1921
1944
|
frameName: backtestItem.frameName,
|
|
1922
1945
|
}, true);
|
|
1923
1946
|
}
|
|
1924
1947
|
if (liveItem) {
|
|
1925
|
-
return await
|
|
1948
|
+
return await BacktestKit.Performance.getData(liveItem.symbol, {
|
|
1926
1949
|
strategyName: liveItem.strategyName,
|
|
1927
1950
|
exchangeName: liveItem.exchangeName,
|
|
1928
1951
|
frameName: "",
|
|
@@ -1935,17 +1958,17 @@ class PerformanceViewService {
|
|
|
1935
1958
|
if (CC_ENABLE_MOCK) {
|
|
1936
1959
|
return await this.performanceMockService.getPerformanceReport();
|
|
1937
1960
|
}
|
|
1938
|
-
const [backtestItem] = await
|
|
1939
|
-
const [liveItem] = await
|
|
1961
|
+
const [backtestItem] = await BacktestKit.Backtest.list();
|
|
1962
|
+
const [liveItem] = await BacktestKit.Live.list();
|
|
1940
1963
|
if (backtestItem) {
|
|
1941
|
-
return await
|
|
1964
|
+
return await BacktestKit.Performance.getReport(backtestItem.symbol, {
|
|
1942
1965
|
strategyName: backtestItem.strategyName,
|
|
1943
1966
|
exchangeName: backtestItem.exchangeName,
|
|
1944
1967
|
frameName: backtestItem.frameName,
|
|
1945
1968
|
}, true);
|
|
1946
1969
|
}
|
|
1947
1970
|
if (liveItem) {
|
|
1948
|
-
return await
|
|
1971
|
+
return await BacktestKit.Performance.getReport(liveItem.symbol, {
|
|
1949
1972
|
strategyName: liveItem.strategyName,
|
|
1950
1973
|
exchangeName: liveItem.exchangeName,
|
|
1951
1974
|
frameName: "",
|
|
@@ -1977,11 +2000,11 @@ class EnvironmentViewService {
|
|
|
1977
2000
|
}
|
|
1978
2001
|
|
|
1979
2002
|
const GET_MODE_FN = async () => {
|
|
1980
|
-
const [backtestTarget = null] = await
|
|
2003
|
+
const [backtestTarget = null] = await BacktestKit.Backtest.list();
|
|
1981
2004
|
if (backtestTarget) {
|
|
1982
2005
|
return "backtest";
|
|
1983
2006
|
}
|
|
1984
|
-
const [liveTarget = null] = await
|
|
2007
|
+
const [liveTarget = null] = await BacktestKit.Live.list();
|
|
1985
2008
|
if (liveTarget) {
|
|
1986
2009
|
return "live";
|
|
1987
2010
|
}
|
|
@@ -1996,17 +2019,17 @@ class SetupViewService {
|
|
|
1996
2019
|
if (CC_ENABLE_MOCK) {
|
|
1997
2020
|
return await this.setupMockService.getSetupData();
|
|
1998
2021
|
}
|
|
1999
|
-
const broker_enabled =
|
|
2000
|
-
const dump_enabled =
|
|
2001
|
-
const markdown_enabled =
|
|
2002
|
-
const memory_enabled =
|
|
2003
|
-
const notification_enabled =
|
|
2004
|
-
const recent_enabled =
|
|
2005
|
-
const report_enabled =
|
|
2006
|
-
const state_enabled =
|
|
2007
|
-
const storage_enabled =
|
|
2022
|
+
const broker_enabled = BacktestKit.Broker.enable.hasValue();
|
|
2023
|
+
const dump_enabled = BacktestKit.Dump.enable.hasValue();
|
|
2024
|
+
const markdown_enabled = BacktestKit.Markdown.enable.hasValue();
|
|
2025
|
+
const memory_enabled = BacktestKit.Memory.enable.hasValue();
|
|
2026
|
+
const notification_enabled = BacktestKit.Notification.enable.hasValue();
|
|
2027
|
+
const recent_enabled = BacktestKit.Recent.enable.hasValue();
|
|
2028
|
+
const report_enabled = BacktestKit.Report.enable.hasValue();
|
|
2029
|
+
const state_enabled = BacktestKit.State.enable.hasValue();
|
|
2030
|
+
const storage_enabled = BacktestKit.Storage.enable.hasValue();
|
|
2008
2031
|
const running_mode = await GET_MODE_FN();
|
|
2009
|
-
const config = await
|
|
2032
|
+
const config = await BacktestKit.getConfig();
|
|
2010
2033
|
const enable_long = config.CC_ENABLE_LONG_SIGNAL;
|
|
2011
2034
|
const enable_short = config.CC_ENABLE_SHORT_SIGNAL;
|
|
2012
2035
|
return {
|
|
@@ -2119,11 +2142,11 @@ const ioc = {
|
|
|
2119
2142
|
};
|
|
2120
2143
|
init();
|
|
2121
2144
|
|
|
2122
|
-
const router$
|
|
2145
|
+
const router$b = Router({
|
|
2123
2146
|
params: true,
|
|
2124
2147
|
});
|
|
2125
2148
|
// SetupMockService endpoints
|
|
2126
|
-
router$
|
|
2149
|
+
router$b.post("/api/v1/mock/setup_data", async (req, res) => {
|
|
2127
2150
|
try {
|
|
2128
2151
|
const request = await micro.json(req);
|
|
2129
2152
|
const { requestId, serviceName } = request;
|
|
@@ -2152,7 +2175,7 @@ router$a.post("/api/v1/mock/setup_data", async (req, res) => {
|
|
|
2152
2175
|
}
|
|
2153
2176
|
});
|
|
2154
2177
|
// ExchangeMockService endpoints
|
|
2155
|
-
router$
|
|
2178
|
+
router$b.post("/api/v1/mock/candles_signal", async (req, res) => {
|
|
2156
2179
|
try {
|
|
2157
2180
|
const request = await micro.json(req);
|
|
2158
2181
|
const { signalId, interval, requestId, serviceName } = request;
|
|
@@ -2180,7 +2203,7 @@ router$a.post("/api/v1/mock/candles_signal", async (req, res) => {
|
|
|
2180
2203
|
});
|
|
2181
2204
|
}
|
|
2182
2205
|
});
|
|
2183
|
-
router$
|
|
2206
|
+
router$b.post("/api/v1/mock/candles_point", async (req, res) => {
|
|
2184
2207
|
try {
|
|
2185
2208
|
const request = await micro.json(req);
|
|
2186
2209
|
const { currentTime, interval, requestId, serviceName, symbol, exchangeName } = request;
|
|
@@ -2213,7 +2236,7 @@ router$a.post("/api/v1/mock/candles_point", async (req, res) => {
|
|
|
2213
2236
|
});
|
|
2214
2237
|
}
|
|
2215
2238
|
});
|
|
2216
|
-
router$
|
|
2239
|
+
router$b.post("/api/v1/mock/candles_range", async (req, res) => {
|
|
2217
2240
|
try {
|
|
2218
2241
|
const request = await micro.json(req);
|
|
2219
2242
|
const { symbol, interval, limit, sDate, eDate, requestId, serviceName } = request;
|
|
@@ -2248,7 +2271,7 @@ router$a.post("/api/v1/mock/candles_range", async (req, res) => {
|
|
|
2248
2271
|
}
|
|
2249
2272
|
});
|
|
2250
2273
|
// NotificationMockService endpoints
|
|
2251
|
-
router$
|
|
2274
|
+
router$b.post("/api/v1/mock/notification_list", async (req, res) => {
|
|
2252
2275
|
try {
|
|
2253
2276
|
const request = await micro.json(req);
|
|
2254
2277
|
const { requestId, serviceName } = request;
|
|
@@ -2276,7 +2299,7 @@ router$a.post("/api/v1/mock/notification_list", async (req, res) => {
|
|
|
2276
2299
|
});
|
|
2277
2300
|
}
|
|
2278
2301
|
});
|
|
2279
|
-
router$
|
|
2302
|
+
router$b.post("/api/v1/mock/notification_one/:id", async (req, res) => {
|
|
2280
2303
|
try {
|
|
2281
2304
|
const request = await micro.json(req);
|
|
2282
2305
|
const { requestId, serviceName } = request;
|
|
@@ -2305,7 +2328,7 @@ router$a.post("/api/v1/mock/notification_one/:id", async (req, res) => {
|
|
|
2305
2328
|
});
|
|
2306
2329
|
}
|
|
2307
2330
|
});
|
|
2308
|
-
router$
|
|
2331
|
+
router$b.post("/api/v1/mock/notification_filter", async (req, res) => {
|
|
2309
2332
|
try {
|
|
2310
2333
|
const request = await micro.json(req);
|
|
2311
2334
|
const { requestId, serviceName, filterData, limit, offset } = request;
|
|
@@ -2334,7 +2357,7 @@ router$a.post("/api/v1/mock/notification_filter", async (req, res) => {
|
|
|
2334
2357
|
}
|
|
2335
2358
|
});
|
|
2336
2359
|
// StorageMockService endpoints
|
|
2337
|
-
router$
|
|
2360
|
+
router$b.post("/api/v1/mock/storage_one/:id", async (req, res) => {
|
|
2338
2361
|
try {
|
|
2339
2362
|
const request = await micro.json(req);
|
|
2340
2363
|
const { requestId, serviceName } = request;
|
|
@@ -2363,7 +2386,7 @@ router$a.post("/api/v1/mock/storage_one/:id", async (req, res) => {
|
|
|
2363
2386
|
});
|
|
2364
2387
|
}
|
|
2365
2388
|
});
|
|
2366
|
-
router$
|
|
2389
|
+
router$b.post("/api/v1/mock/storage_list/live", async (req, res) => {
|
|
2367
2390
|
try {
|
|
2368
2391
|
const request = await micro.json(req);
|
|
2369
2392
|
const { requestId, serviceName } = request;
|
|
@@ -2391,7 +2414,7 @@ router$a.post("/api/v1/mock/storage_list/live", async (req, res) => {
|
|
|
2391
2414
|
});
|
|
2392
2415
|
}
|
|
2393
2416
|
});
|
|
2394
|
-
router$
|
|
2417
|
+
router$b.post("/api/v1/mock/storage_list/backtest", async (req, res) => {
|
|
2395
2418
|
try {
|
|
2396
2419
|
const request = await micro.json(req);
|
|
2397
2420
|
const { requestId, serviceName } = request;
|
|
@@ -2420,7 +2443,7 @@ router$a.post("/api/v1/mock/storage_list/backtest", async (req, res) => {
|
|
|
2420
2443
|
}
|
|
2421
2444
|
});
|
|
2422
2445
|
// LogMockService endpoints
|
|
2423
|
-
router$
|
|
2446
|
+
router$b.post("/api/v1/mock/log_list", async (req, res) => {
|
|
2424
2447
|
try {
|
|
2425
2448
|
const request = await micro.json(req);
|
|
2426
2449
|
const { requestId, serviceName } = request;
|
|
@@ -2448,7 +2471,7 @@ router$a.post("/api/v1/mock/log_list", async (req, res) => {
|
|
|
2448
2471
|
});
|
|
2449
2472
|
}
|
|
2450
2473
|
});
|
|
2451
|
-
router$
|
|
2474
|
+
router$b.post("/api/v1/mock/log_one/:id", async (req, res) => {
|
|
2452
2475
|
try {
|
|
2453
2476
|
const request = await micro.json(req);
|
|
2454
2477
|
const { requestId, serviceName } = request;
|
|
@@ -2477,7 +2500,7 @@ router$a.post("/api/v1/mock/log_one/:id", async (req, res) => {
|
|
|
2477
2500
|
});
|
|
2478
2501
|
}
|
|
2479
2502
|
});
|
|
2480
|
-
router$
|
|
2503
|
+
router$b.post("/api/v1/mock/log_filter", async (req, res) => {
|
|
2481
2504
|
try {
|
|
2482
2505
|
const request = await micro.json(req);
|
|
2483
2506
|
const { requestId, serviceName, filterData, limit, offset } = request;
|
|
@@ -2505,7 +2528,7 @@ router$a.post("/api/v1/mock/log_filter", async (req, res) => {
|
|
|
2505
2528
|
});
|
|
2506
2529
|
}
|
|
2507
2530
|
});
|
|
2508
|
-
router$
|
|
2531
|
+
router$b.post("/api/v1/mock/candles_live", async (req, res) => {
|
|
2509
2532
|
try {
|
|
2510
2533
|
const request = await micro.json(req);
|
|
2511
2534
|
const { signalId, interval, requestId, serviceName } = request;
|
|
@@ -2533,7 +2556,7 @@ router$a.post("/api/v1/mock/candles_live", async (req, res) => {
|
|
|
2533
2556
|
});
|
|
2534
2557
|
}
|
|
2535
2558
|
});
|
|
2536
|
-
router$
|
|
2559
|
+
router$b.post("/api/v1/mock/candles_last", async (req, res) => {
|
|
2537
2560
|
try {
|
|
2538
2561
|
const request = await micro.json(req);
|
|
2539
2562
|
const { symbol, interval, requestId, serviceName } = request;
|
|
@@ -2562,7 +2585,7 @@ router$a.post("/api/v1/mock/candles_last", async (req, res) => {
|
|
|
2562
2585
|
}
|
|
2563
2586
|
});
|
|
2564
2587
|
// SignalMockService endpoints
|
|
2565
|
-
router$
|
|
2588
|
+
router$b.post("/api/v1/mock/signal_last_update/:id", async (req, res) => {
|
|
2566
2589
|
try {
|
|
2567
2590
|
const request = await micro.json(req);
|
|
2568
2591
|
const { requestId, serviceName } = request;
|
|
@@ -2591,7 +2614,7 @@ router$a.post("/api/v1/mock/signal_last_update/:id", async (req, res) => {
|
|
|
2591
2614
|
});
|
|
2592
2615
|
}
|
|
2593
2616
|
});
|
|
2594
|
-
router$
|
|
2617
|
+
router$b.post("/api/v1/mock/signal_pending", async (req, res) => {
|
|
2595
2618
|
try {
|
|
2596
2619
|
const request = await micro.json(req);
|
|
2597
2620
|
const { symbol, requestId, serviceName } = request;
|
|
@@ -2620,7 +2643,7 @@ router$a.post("/api/v1/mock/signal_pending", async (req, res) => {
|
|
|
2620
2643
|
}
|
|
2621
2644
|
});
|
|
2622
2645
|
// StatusMockService endpoints
|
|
2623
|
-
router$
|
|
2646
|
+
router$b.post("/api/v1/mock/status_list", async (req, res) => {
|
|
2624
2647
|
try {
|
|
2625
2648
|
const request = await micro.json(req);
|
|
2626
2649
|
const { requestId, serviceName } = request;
|
|
@@ -2648,7 +2671,7 @@ router$a.post("/api/v1/mock/status_list", async (req, res) => {
|
|
|
2648
2671
|
});
|
|
2649
2672
|
}
|
|
2650
2673
|
});
|
|
2651
|
-
router$
|
|
2674
|
+
router$b.post("/api/v1/mock/status_one/:id", async (req, res) => {
|
|
2652
2675
|
try {
|
|
2653
2676
|
const request = await micro.json(req);
|
|
2654
2677
|
const { requestId, serviceName } = request;
|
|
@@ -2678,7 +2701,7 @@ router$a.post("/api/v1/mock/status_one/:id", async (req, res) => {
|
|
|
2678
2701
|
}
|
|
2679
2702
|
});
|
|
2680
2703
|
// HeatMockService endpoints
|
|
2681
|
-
router$
|
|
2704
|
+
router$b.post("/api/v1/mock/heat_data", async (req, res) => {
|
|
2682
2705
|
try {
|
|
2683
2706
|
const request = await micro.json(req);
|
|
2684
2707
|
const { requestId, serviceName } = request;
|
|
@@ -2706,7 +2729,7 @@ router$a.post("/api/v1/mock/heat_data", async (req, res) => {
|
|
|
2706
2729
|
});
|
|
2707
2730
|
}
|
|
2708
2731
|
});
|
|
2709
|
-
router$
|
|
2732
|
+
router$b.post("/api/v1/mock/heat_report", async (req, res) => {
|
|
2710
2733
|
try {
|
|
2711
2734
|
const request = await micro.json(req);
|
|
2712
2735
|
const { requestId, serviceName } = request;
|
|
@@ -2734,7 +2757,7 @@ router$a.post("/api/v1/mock/heat_report", async (req, res) => {
|
|
|
2734
2757
|
});
|
|
2735
2758
|
}
|
|
2736
2759
|
});
|
|
2737
|
-
router$
|
|
2760
|
+
router$b.post("/api/v1/mock/status_info", async (req, res) => {
|
|
2738
2761
|
try {
|
|
2739
2762
|
const request = await micro.json(req);
|
|
2740
2763
|
const { requestId, serviceName } = request;
|
|
@@ -2763,7 +2786,7 @@ router$a.post("/api/v1/mock/status_info", async (req, res) => {
|
|
|
2763
2786
|
}
|
|
2764
2787
|
});
|
|
2765
2788
|
// PerformanceMockService endpoints
|
|
2766
|
-
router$
|
|
2789
|
+
router$b.post("/api/v1/mock/performance_data", async (req, res) => {
|
|
2767
2790
|
try {
|
|
2768
2791
|
const request = await micro.json(req);
|
|
2769
2792
|
const { requestId, serviceName } = request;
|
|
@@ -2791,7 +2814,7 @@ router$a.post("/api/v1/mock/performance_data", async (req, res) => {
|
|
|
2791
2814
|
});
|
|
2792
2815
|
}
|
|
2793
2816
|
});
|
|
2794
|
-
router$
|
|
2817
|
+
router$b.post("/api/v1/mock/performance_report", async (req, res) => {
|
|
2795
2818
|
try {
|
|
2796
2819
|
const request = await micro.json(req);
|
|
2797
2820
|
const { requestId, serviceName } = request;
|
|
@@ -2820,7 +2843,7 @@ router$a.post("/api/v1/mock/performance_report", async (req, res) => {
|
|
|
2820
2843
|
}
|
|
2821
2844
|
});
|
|
2822
2845
|
// EnvironmentMockService endpoints
|
|
2823
|
-
router$
|
|
2846
|
+
router$b.post("/api/v1/mock/environment_data", async (req, res) => {
|
|
2824
2847
|
try {
|
|
2825
2848
|
const request = await micro.json(req);
|
|
2826
2849
|
const { requestId, serviceName } = request;
|
|
@@ -2849,11 +2872,11 @@ router$a.post("/api/v1/mock/environment_data", async (req, res) => {
|
|
|
2849
2872
|
}
|
|
2850
2873
|
});
|
|
2851
2874
|
|
|
2852
|
-
const router$
|
|
2875
|
+
const router$a = Router({
|
|
2853
2876
|
params: true,
|
|
2854
2877
|
});
|
|
2855
2878
|
// SetupViewService endpoints
|
|
2856
|
-
router$
|
|
2879
|
+
router$a.post("/api/v1/view/setup_data", async (req, res) => {
|
|
2857
2880
|
try {
|
|
2858
2881
|
const request = await micro.json(req);
|
|
2859
2882
|
const { requestId, serviceName } = request;
|
|
@@ -2882,7 +2905,7 @@ router$9.post("/api/v1/view/setup_data", async (req, res) => {
|
|
|
2882
2905
|
}
|
|
2883
2906
|
});
|
|
2884
2907
|
// ExchangeViewService endpoints
|
|
2885
|
-
router$
|
|
2908
|
+
router$a.post("/api/v1/view/candles_signal", async (req, res) => {
|
|
2886
2909
|
try {
|
|
2887
2910
|
const request = await micro.json(req);
|
|
2888
2911
|
const { signalId, interval, requestId, serviceName } = request;
|
|
@@ -2910,7 +2933,7 @@ router$9.post("/api/v1/view/candles_signal", async (req, res) => {
|
|
|
2910
2933
|
});
|
|
2911
2934
|
}
|
|
2912
2935
|
});
|
|
2913
|
-
router$
|
|
2936
|
+
router$a.post("/api/v1/view/candles_point", async (req, res) => {
|
|
2914
2937
|
try {
|
|
2915
2938
|
const request = await micro.json(req);
|
|
2916
2939
|
const { currentTime, interval, requestId, serviceName, symbol, exchangeName } = request;
|
|
@@ -2943,7 +2966,7 @@ router$9.post("/api/v1/view/candles_point", async (req, res) => {
|
|
|
2943
2966
|
});
|
|
2944
2967
|
}
|
|
2945
2968
|
});
|
|
2946
|
-
router$
|
|
2969
|
+
router$a.post("/api/v1/view/candles_range", async (req, res) => {
|
|
2947
2970
|
try {
|
|
2948
2971
|
const request = await micro.json(req);
|
|
2949
2972
|
const { symbol, interval, limit, sDate, eDate, requestId, serviceName } = request;
|
|
@@ -2977,7 +3000,7 @@ router$9.post("/api/v1/view/candles_range", async (req, res) => {
|
|
|
2977
3000
|
});
|
|
2978
3001
|
}
|
|
2979
3002
|
});
|
|
2980
|
-
router$
|
|
3003
|
+
router$a.post("/api/v1/view/candles_live", async (req, res) => {
|
|
2981
3004
|
try {
|
|
2982
3005
|
const request = await micro.json(req);
|
|
2983
3006
|
const { signalId, interval, requestId, serviceName } = request;
|
|
@@ -3005,7 +3028,7 @@ router$9.post("/api/v1/view/candles_live", async (req, res) => {
|
|
|
3005
3028
|
});
|
|
3006
3029
|
}
|
|
3007
3030
|
});
|
|
3008
|
-
router$
|
|
3031
|
+
router$a.post("/api/v1/view/candles_last", async (req, res) => {
|
|
3009
3032
|
try {
|
|
3010
3033
|
const request = await micro.json(req);
|
|
3011
3034
|
const { symbol, interval, requestId, serviceName } = request;
|
|
@@ -3034,7 +3057,7 @@ router$9.post("/api/v1/view/candles_last", async (req, res) => {
|
|
|
3034
3057
|
}
|
|
3035
3058
|
});
|
|
3036
3059
|
// NotificationViewService endpoints
|
|
3037
|
-
router$
|
|
3060
|
+
router$a.post("/api/v1/view/notification_list", async (req, res) => {
|
|
3038
3061
|
try {
|
|
3039
3062
|
const request = await micro.json(req);
|
|
3040
3063
|
const { requestId, serviceName } = request;
|
|
@@ -3062,7 +3085,7 @@ router$9.post("/api/v1/view/notification_list", async (req, res) => {
|
|
|
3062
3085
|
});
|
|
3063
3086
|
}
|
|
3064
3087
|
});
|
|
3065
|
-
router$
|
|
3088
|
+
router$a.post("/api/v1/view/notification_one/:id", async (req, res) => {
|
|
3066
3089
|
try {
|
|
3067
3090
|
const request = await micro.json(req);
|
|
3068
3091
|
const { requestId, serviceName } = request;
|
|
@@ -3091,7 +3114,7 @@ router$9.post("/api/v1/view/notification_one/:id", async (req, res) => {
|
|
|
3091
3114
|
});
|
|
3092
3115
|
}
|
|
3093
3116
|
});
|
|
3094
|
-
router$
|
|
3117
|
+
router$a.post("/api/v1/view/notification_filter", async (req, res) => {
|
|
3095
3118
|
try {
|
|
3096
3119
|
const request = await micro.json(req);
|
|
3097
3120
|
const { requestId, serviceName, filterData, limit, offset } = request;
|
|
@@ -3120,7 +3143,7 @@ router$9.post("/api/v1/view/notification_filter", async (req, res) => {
|
|
|
3120
3143
|
}
|
|
3121
3144
|
});
|
|
3122
3145
|
// StorageViewService endpoints
|
|
3123
|
-
router$
|
|
3146
|
+
router$a.post("/api/v1/view/storage_one/:id", async (req, res) => {
|
|
3124
3147
|
try {
|
|
3125
3148
|
const request = await micro.json(req);
|
|
3126
3149
|
const { requestId, serviceName } = request;
|
|
@@ -3149,7 +3172,7 @@ router$9.post("/api/v1/view/storage_one/:id", async (req, res) => {
|
|
|
3149
3172
|
});
|
|
3150
3173
|
}
|
|
3151
3174
|
});
|
|
3152
|
-
router$
|
|
3175
|
+
router$a.post("/api/v1/view/storage_list/live", async (req, res) => {
|
|
3153
3176
|
try {
|
|
3154
3177
|
const request = await micro.json(req);
|
|
3155
3178
|
const { requestId, serviceName } = request;
|
|
@@ -3177,7 +3200,7 @@ router$9.post("/api/v1/view/storage_list/live", async (req, res) => {
|
|
|
3177
3200
|
});
|
|
3178
3201
|
}
|
|
3179
3202
|
});
|
|
3180
|
-
router$
|
|
3203
|
+
router$a.post("/api/v1/view/storage_list/backtest", async (req, res) => {
|
|
3181
3204
|
try {
|
|
3182
3205
|
const request = await micro.json(req);
|
|
3183
3206
|
const { requestId, serviceName } = request;
|
|
@@ -3206,7 +3229,7 @@ router$9.post("/api/v1/view/storage_list/backtest", async (req, res) => {
|
|
|
3206
3229
|
}
|
|
3207
3230
|
});
|
|
3208
3231
|
// LogViewService endpoints
|
|
3209
|
-
router$
|
|
3232
|
+
router$a.post("/api/v1/view/log_list", async (req, res) => {
|
|
3210
3233
|
try {
|
|
3211
3234
|
const request = await micro.json(req);
|
|
3212
3235
|
const { requestId, serviceName } = request;
|
|
@@ -3234,7 +3257,7 @@ router$9.post("/api/v1/view/log_list", async (req, res) => {
|
|
|
3234
3257
|
});
|
|
3235
3258
|
}
|
|
3236
3259
|
});
|
|
3237
|
-
router$
|
|
3260
|
+
router$a.post("/api/v1/view/log_one/:id", async (req, res) => {
|
|
3238
3261
|
try {
|
|
3239
3262
|
const request = await micro.json(req);
|
|
3240
3263
|
const { requestId, serviceName } = request;
|
|
@@ -3263,7 +3286,7 @@ router$9.post("/api/v1/view/log_one/:id", async (req, res) => {
|
|
|
3263
3286
|
});
|
|
3264
3287
|
}
|
|
3265
3288
|
});
|
|
3266
|
-
router$
|
|
3289
|
+
router$a.post("/api/v1/view/log_filter", async (req, res) => {
|
|
3267
3290
|
try {
|
|
3268
3291
|
const request = await micro.json(req);
|
|
3269
3292
|
const { requestId, serviceName, filterData, limit, offset } = request;
|
|
@@ -3292,7 +3315,7 @@ router$9.post("/api/v1/view/log_filter", async (req, res) => {
|
|
|
3292
3315
|
}
|
|
3293
3316
|
});
|
|
3294
3317
|
// SignalViewService endpoints
|
|
3295
|
-
router$
|
|
3318
|
+
router$a.post("/api/v1/view/signal_last_update/:id", async (req, res) => {
|
|
3296
3319
|
try {
|
|
3297
3320
|
const request = await micro.json(req);
|
|
3298
3321
|
const { requestId, serviceName } = request;
|
|
@@ -3321,7 +3344,7 @@ router$9.post("/api/v1/view/signal_last_update/:id", async (req, res) => {
|
|
|
3321
3344
|
});
|
|
3322
3345
|
}
|
|
3323
3346
|
});
|
|
3324
|
-
router$
|
|
3347
|
+
router$a.post("/api/v1/view/signal_pending", async (req, res) => {
|
|
3325
3348
|
try {
|
|
3326
3349
|
const request = await micro.json(req);
|
|
3327
3350
|
const { symbol, requestId, serviceName } = request;
|
|
@@ -3350,7 +3373,7 @@ router$9.post("/api/v1/view/signal_pending", async (req, res) => {
|
|
|
3350
3373
|
}
|
|
3351
3374
|
});
|
|
3352
3375
|
// StatusViewService endpoints
|
|
3353
|
-
router$
|
|
3376
|
+
router$a.post("/api/v1/view/status_list", async (req, res) => {
|
|
3354
3377
|
try {
|
|
3355
3378
|
const request = await micro.json(req);
|
|
3356
3379
|
const { requestId, serviceName } = request;
|
|
@@ -3378,7 +3401,7 @@ router$9.post("/api/v1/view/status_list", async (req, res) => {
|
|
|
3378
3401
|
});
|
|
3379
3402
|
}
|
|
3380
3403
|
});
|
|
3381
|
-
router$
|
|
3404
|
+
router$a.post("/api/v1/view/status_one/:id", async (req, res) => {
|
|
3382
3405
|
try {
|
|
3383
3406
|
const request = await micro.json(req);
|
|
3384
3407
|
const { requestId, serviceName } = request;
|
|
@@ -3408,7 +3431,7 @@ router$9.post("/api/v1/view/status_one/:id", async (req, res) => {
|
|
|
3408
3431
|
}
|
|
3409
3432
|
});
|
|
3410
3433
|
// HeatViewService endpoints
|
|
3411
|
-
router$
|
|
3434
|
+
router$a.post("/api/v1/view/heat_data", async (req, res) => {
|
|
3412
3435
|
try {
|
|
3413
3436
|
const request = await micro.json(req);
|
|
3414
3437
|
const { requestId, serviceName } = request;
|
|
@@ -3436,7 +3459,7 @@ router$9.post("/api/v1/view/heat_data", async (req, res) => {
|
|
|
3436
3459
|
});
|
|
3437
3460
|
}
|
|
3438
3461
|
});
|
|
3439
|
-
router$
|
|
3462
|
+
router$a.post("/api/v1/view/heat_report", async (req, res) => {
|
|
3440
3463
|
try {
|
|
3441
3464
|
const request = await micro.json(req);
|
|
3442
3465
|
const { requestId, serviceName } = request;
|
|
@@ -3464,7 +3487,7 @@ router$9.post("/api/v1/view/heat_report", async (req, res) => {
|
|
|
3464
3487
|
});
|
|
3465
3488
|
}
|
|
3466
3489
|
});
|
|
3467
|
-
router$
|
|
3490
|
+
router$a.post("/api/v1/view/status_info", async (req, res) => {
|
|
3468
3491
|
try {
|
|
3469
3492
|
const request = await micro.json(req);
|
|
3470
3493
|
const { requestId, serviceName } = request;
|
|
@@ -3493,7 +3516,7 @@ router$9.post("/api/v1/view/status_info", async (req, res) => {
|
|
|
3493
3516
|
}
|
|
3494
3517
|
});
|
|
3495
3518
|
// PerformanceViewService endpoints
|
|
3496
|
-
router$
|
|
3519
|
+
router$a.post("/api/v1/view/performance_data", async (req, res) => {
|
|
3497
3520
|
try {
|
|
3498
3521
|
const request = await micro.json(req);
|
|
3499
3522
|
const { requestId, serviceName } = request;
|
|
@@ -3521,7 +3544,7 @@ router$9.post("/api/v1/view/performance_data", async (req, res) => {
|
|
|
3521
3544
|
});
|
|
3522
3545
|
}
|
|
3523
3546
|
});
|
|
3524
|
-
router$
|
|
3547
|
+
router$a.post("/api/v1/view/performance_report", async (req, res) => {
|
|
3525
3548
|
try {
|
|
3526
3549
|
const request = await micro.json(req);
|
|
3527
3550
|
const { requestId, serviceName } = request;
|
|
@@ -3550,7 +3573,7 @@ router$9.post("/api/v1/view/performance_report", async (req, res) => {
|
|
|
3550
3573
|
}
|
|
3551
3574
|
});
|
|
3552
3575
|
// EnvironmentViewService endpoints
|
|
3553
|
-
router$
|
|
3576
|
+
router$a.post("/api/v1/view/environment_data", async (req, res) => {
|
|
3554
3577
|
try {
|
|
3555
3578
|
const request = await micro.json(req);
|
|
3556
3579
|
const { requestId, serviceName } = request;
|
|
@@ -3586,7 +3609,7 @@ function getModulesPath() {
|
|
|
3586
3609
|
return path.join(basePath, "../../../");
|
|
3587
3610
|
}
|
|
3588
3611
|
|
|
3589
|
-
const router$
|
|
3612
|
+
const router$9 = Router({
|
|
3590
3613
|
params: true,
|
|
3591
3614
|
});
|
|
3592
3615
|
// getModulesPath
|
|
@@ -3603,7 +3626,7 @@ const ASSET_32 = CC_ENABLE_MOCK
|
|
|
3603
3626
|
const cache128 = new Map();
|
|
3604
3627
|
const cache32 = new Map();
|
|
3605
3628
|
const cacheSvg = new Map();
|
|
3606
|
-
router$
|
|
3629
|
+
router$9.get("/icon/128/:filename", async (req, res) => {
|
|
3607
3630
|
const filename = req.params.filename;
|
|
3608
3631
|
// Check cache first
|
|
3609
3632
|
if (cache128.has(filename)) {
|
|
@@ -3619,7 +3642,7 @@ router$8.get("/icon/128/:filename", async (req, res) => {
|
|
|
3619
3642
|
}
|
|
3620
3643
|
return await micro.send(res, 404, "File not found (128)");
|
|
3621
3644
|
});
|
|
3622
|
-
router$
|
|
3645
|
+
router$9.get("/icon/32/:filename", async (req, res) => {
|
|
3623
3646
|
const filename = req.params.filename;
|
|
3624
3647
|
// Check cache first
|
|
3625
3648
|
if (cache32.has(filename)) {
|
|
@@ -3635,7 +3658,7 @@ router$8.get("/icon/32/:filename", async (req, res) => {
|
|
|
3635
3658
|
}
|
|
3636
3659
|
return await micro.send(res, 404, "File not found (32)");
|
|
3637
3660
|
});
|
|
3638
|
-
router$
|
|
3661
|
+
router$9.get("/icon/svg/:filename", async (req, res) => {
|
|
3639
3662
|
const filename = req.params.filename;
|
|
3640
3663
|
// Check cache first
|
|
3641
3664
|
if (cacheSvg.has(filename)) {
|
|
@@ -3651,7 +3674,7 @@ router$8.get("/icon/svg/:filename", async (req, res) => {
|
|
|
3651
3674
|
}
|
|
3652
3675
|
return await micro.send(res, 404, "File not found (svg)");
|
|
3653
3676
|
});
|
|
3654
|
-
router$
|
|
3677
|
+
router$9.get("/icon/:filename", async (req, res) => {
|
|
3655
3678
|
const filename = req.params.filename;
|
|
3656
3679
|
// Check cache first
|
|
3657
3680
|
if (cache32.has(filename)) {
|
|
@@ -3668,10 +3691,10 @@ router$8.get("/icon/:filename", async (req, res) => {
|
|
|
3668
3691
|
return await micro.send(res, 404, "File not found (root)");
|
|
3669
3692
|
});
|
|
3670
3693
|
|
|
3671
|
-
const router$
|
|
3694
|
+
const router$8 = Router({
|
|
3672
3695
|
params: true,
|
|
3673
3696
|
});
|
|
3674
|
-
router$
|
|
3697
|
+
router$8.post("/api/v1/dict/symbol/list", async (req, res) => {
|
|
3675
3698
|
try {
|
|
3676
3699
|
const request = await micro.json(req);
|
|
3677
3700
|
const { requestId, serviceName } = request;
|
|
@@ -3699,7 +3722,7 @@ router$7.post("/api/v1/dict/symbol/list", async (req, res) => {
|
|
|
3699
3722
|
});
|
|
3700
3723
|
}
|
|
3701
3724
|
});
|
|
3702
|
-
router$
|
|
3725
|
+
router$8.post("/api/v1/dict/symbol/map", async (req, res) => {
|
|
3703
3726
|
try {
|
|
3704
3727
|
const request = await micro.json(req);
|
|
3705
3728
|
const { requestId, serviceName } = request;
|
|
@@ -3727,7 +3750,7 @@ router$7.post("/api/v1/dict/symbol/map", async (req, res) => {
|
|
|
3727
3750
|
});
|
|
3728
3751
|
}
|
|
3729
3752
|
});
|
|
3730
|
-
router$
|
|
3753
|
+
router$8.post("/api/v1/dict/symbol/one", async (req, res) => {
|
|
3731
3754
|
try {
|
|
3732
3755
|
const request = await micro.json(req);
|
|
3733
3756
|
const { requestId, serviceName, id } = request;
|
|
@@ -3756,6 +3779,53 @@ router$7.post("/api/v1/dict/symbol/one", async (req, res) => {
|
|
|
3756
3779
|
}
|
|
3757
3780
|
});
|
|
3758
3781
|
|
|
3782
|
+
const makeContext = functoolsKit.singleshot(() => {
|
|
3783
|
+
const require = node_module.createRequire(node_url.pathToFileURL(node_path.join(process.cwd(), "noop.js")));
|
|
3784
|
+
const context = vm.createContext({
|
|
3785
|
+
BacktestKitUi: ioc,
|
|
3786
|
+
BacktestKit: BacktestKit__namespace,
|
|
3787
|
+
require,
|
|
3788
|
+
console,
|
|
3789
|
+
});
|
|
3790
|
+
return context;
|
|
3791
|
+
});
|
|
3792
|
+
const router$7 = Router({
|
|
3793
|
+
params: true,
|
|
3794
|
+
});
|
|
3795
|
+
router$7.post("/api/v1/repl/eval", async (req, res) => {
|
|
3796
|
+
const request = await micro.json(req);
|
|
3797
|
+
const { requestId, serviceName } = request;
|
|
3798
|
+
try {
|
|
3799
|
+
const context = makeContext();
|
|
3800
|
+
const output = await vm.runInContext(request.data.command, context);
|
|
3801
|
+
const data = functoolsKit.isObject(output) ? JSON.stringify(output, null, 2) : output;
|
|
3802
|
+
const result = {
|
|
3803
|
+
data,
|
|
3804
|
+
status: "ok",
|
|
3805
|
+
error: "",
|
|
3806
|
+
requestId,
|
|
3807
|
+
serviceName,
|
|
3808
|
+
};
|
|
3809
|
+
ioc.loggerService.log("/api/v1/repl/eval ok", {
|
|
3810
|
+
request,
|
|
3811
|
+
result,
|
|
3812
|
+
});
|
|
3813
|
+
return await micro.send(res, 200, result);
|
|
3814
|
+
}
|
|
3815
|
+
catch (error) {
|
|
3816
|
+
ioc.loggerService.log("/api/v1/repl/eval error", {
|
|
3817
|
+
request,
|
|
3818
|
+
error: functoolsKit.errorData(error),
|
|
3819
|
+
});
|
|
3820
|
+
return await micro.send(res, 200, {
|
|
3821
|
+
status: "error",
|
|
3822
|
+
error: functoolsKit.getErrorMessage(error),
|
|
3823
|
+
requestId,
|
|
3824
|
+
serviceName,
|
|
3825
|
+
});
|
|
3826
|
+
}
|
|
3827
|
+
});
|
|
3828
|
+
|
|
3759
3829
|
const router$6 = Router({
|
|
3760
3830
|
params: true,
|
|
3761
3831
|
});
|
|
@@ -4627,13 +4697,13 @@ const router = Router({
|
|
|
4627
4697
|
params: true,
|
|
4628
4698
|
});
|
|
4629
4699
|
router.all("/api/v1/health/*", (req, res) => {
|
|
4630
|
-
return router$
|
|
4700
|
+
return router$c(req, res, finalhandler(req, res));
|
|
4631
4701
|
});
|
|
4632
4702
|
router.all("/api/v1/mock/*", (req, res) => {
|
|
4633
|
-
return router$
|
|
4703
|
+
return router$b(req, res, finalhandler(req, res));
|
|
4634
4704
|
});
|
|
4635
4705
|
router.all("/api/v1/view/*", (req, res) => {
|
|
4636
|
-
return router$
|
|
4706
|
+
return router$a(req, res, finalhandler(req, res));
|
|
4637
4707
|
});
|
|
4638
4708
|
router.all("/api/v1/markdown_mock/*", (req, res) => {
|
|
4639
4709
|
return router$6(req, res, finalhandler(req, res));
|
|
@@ -4648,9 +4718,12 @@ router.all("/api/v1/explorer_view/*", (req, res) => {
|
|
|
4648
4718
|
return router$3(req, res, finalhandler(req, res));
|
|
4649
4719
|
});
|
|
4650
4720
|
router.all("/icon/*", (req, res) => {
|
|
4651
|
-
return router$
|
|
4721
|
+
return router$9(req, res, finalhandler(req, res));
|
|
4652
4722
|
});
|
|
4653
4723
|
router.all("/api/v1/dict/*", (req, res) => {
|
|
4724
|
+
return router$8(req, res, finalhandler(req, res));
|
|
4725
|
+
});
|
|
4726
|
+
router.all("/api/v1/repl/*", (req, res) => {
|
|
4654
4727
|
return router$7(req, res, finalhandler(req, res));
|
|
4655
4728
|
});
|
|
4656
4729
|
router.all("/api/v1/global/*", (req, res) => {
|