@backtest-kit/cli 6.2.1 → 6.4.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/build/index.cjs +111 -61
- package/build/index.mjs +112 -63
- package/package.json +13 -13
- package/types.d.ts +297 -291
package/build/index.cjs
CHANGED
|
@@ -87,64 +87,6 @@ var BacktestKitSignals__namespace = /*#__PURE__*/_interopNamespaceDefault(Backte
|
|
|
87
87
|
});
|
|
88
88
|
}
|
|
89
89
|
|
|
90
|
-
{
|
|
91
|
-
BacktestKit.Storage.enable();
|
|
92
|
-
BacktestKit.Notification.enable();
|
|
93
|
-
}
|
|
94
|
-
{
|
|
95
|
-
BacktestKit.Markdown.enable();
|
|
96
|
-
BacktestKit.Report.enable();
|
|
97
|
-
BacktestKit.Dump.enable();
|
|
98
|
-
BacktestKit.Memory.enable();
|
|
99
|
-
}
|
|
100
|
-
{
|
|
101
|
-
BacktestKit.Dump.useMarkdown();
|
|
102
|
-
BacktestKit.Memory.usePersist();
|
|
103
|
-
}
|
|
104
|
-
{
|
|
105
|
-
BacktestKit.StorageLive.usePersist();
|
|
106
|
-
BacktestKit.StorageBacktest.useMemory();
|
|
107
|
-
}
|
|
108
|
-
{
|
|
109
|
-
BacktestKit.NotificationLive.usePersist();
|
|
110
|
-
BacktestKit.NotificationBacktest.useMemory();
|
|
111
|
-
}
|
|
112
|
-
{
|
|
113
|
-
BacktestKit.Markdown.useDummy();
|
|
114
|
-
}
|
|
115
|
-
BacktestKit.setConfig({
|
|
116
|
-
CC_MAX_NOTIFICATIONS: 5000,
|
|
117
|
-
CC_MAX_SIGNALS: 750,
|
|
118
|
-
});
|
|
119
|
-
BacktestKit.setConfig({
|
|
120
|
-
CC_ENABLE_DCA_EVERYWHERE: true,
|
|
121
|
-
CC_ENABLE_PPPL_EVERYWHERE: true,
|
|
122
|
-
CC_ENABLE_TRAILING_EVERYWHERE: true,
|
|
123
|
-
});
|
|
124
|
-
BacktestKit.setConfig({
|
|
125
|
-
CC_MAX_SIGNAL_GENERATION_SECONDS: 15 * 60,
|
|
126
|
-
});
|
|
127
|
-
BacktestKit.setConfig({
|
|
128
|
-
CC_MAX_BACKTEST_MARKDOWN_ROWS: 1000,
|
|
129
|
-
CC_MAX_BREAKEVEN_MARKDOWN_ROWS: 1000,
|
|
130
|
-
CC_MAX_HEATMAP_MARKDOWN_ROWS: 1000,
|
|
131
|
-
CC_MAX_HIGHEST_PROFIT_MARKDOWN_ROWS: 1000,
|
|
132
|
-
CC_MAX_LIVE_MARKDOWN_ROWS: 1000,
|
|
133
|
-
CC_MAX_PARTIAL_MARKDOWN_ROWS: 1000,
|
|
134
|
-
CC_MAX_RISK_MARKDOWN_ROWS: 1000,
|
|
135
|
-
CC_MAX_SCHEDULE_MARKDOWN_ROWS: 1000,
|
|
136
|
-
CC_MAX_STRATEGY_MARKDOWN_ROWS: 1000,
|
|
137
|
-
CC_MAX_SYNC_MARKDOWN_ROWS: 1000,
|
|
138
|
-
CC_MAX_PERFORMANCE_MARKDOWN_ROWS: 1000,
|
|
139
|
-
});
|
|
140
|
-
BacktestKit.setConfig({
|
|
141
|
-
CC_MAX_SIGNAL_LIFETIME_MINUTES: Infinity,
|
|
142
|
-
});
|
|
143
|
-
BacktestKit.setConfig({
|
|
144
|
-
CC_WALKER_MARKDOWN_TOP_N: 10,
|
|
145
|
-
});
|
|
146
|
-
BacktestKit.Log.useJsonl();
|
|
147
|
-
|
|
148
90
|
const ERROR_HANDLER_INSTALLED = Symbol.for("error-handler-installed");
|
|
149
91
|
function dumpStackTrace() {
|
|
150
92
|
const trace = stackTrace__namespace.get();
|
|
@@ -882,6 +824,10 @@ class WalkerMainService {
|
|
|
882
824
|
if (!entryPoint) {
|
|
883
825
|
return;
|
|
884
826
|
}
|
|
827
|
+
{
|
|
828
|
+
Setup.clear();
|
|
829
|
+
Setup.enable();
|
|
830
|
+
}
|
|
885
831
|
const absolutePath = path.resolve(entryPoint);
|
|
886
832
|
const moduleRoot = path.dirname(absolutePath);
|
|
887
833
|
{
|
|
@@ -2441,6 +2387,109 @@ const cli = {
|
|
|
2441
2387
|
};
|
|
2442
2388
|
init();
|
|
2443
2389
|
|
|
2390
|
+
class SetupUtils {
|
|
2391
|
+
constructor() {
|
|
2392
|
+
this.enable = functoolsKit.singleshot(() => {
|
|
2393
|
+
cli.loggerService.debug("SetupUtils enable");
|
|
2394
|
+
{
|
|
2395
|
+
BacktestKit.Storage.enable();
|
|
2396
|
+
BacktestKit.Notification.enable();
|
|
2397
|
+
}
|
|
2398
|
+
{
|
|
2399
|
+
BacktestKit.Markdown.enable();
|
|
2400
|
+
BacktestKit.Report.enable();
|
|
2401
|
+
BacktestKit.Dump.enable();
|
|
2402
|
+
BacktestKit.Memory.enable();
|
|
2403
|
+
}
|
|
2404
|
+
{
|
|
2405
|
+
BacktestKit.Dump.useMarkdown();
|
|
2406
|
+
BacktestKit.Memory.usePersist();
|
|
2407
|
+
}
|
|
2408
|
+
{
|
|
2409
|
+
BacktestKit.StorageLive.usePersist();
|
|
2410
|
+
BacktestKit.StorageBacktest.useMemory();
|
|
2411
|
+
}
|
|
2412
|
+
{
|
|
2413
|
+
BacktestKit.NotificationLive.usePersist();
|
|
2414
|
+
BacktestKit.NotificationBacktest.useMemory();
|
|
2415
|
+
}
|
|
2416
|
+
{
|
|
2417
|
+
BacktestKit.Markdown.useDummy();
|
|
2418
|
+
BacktestKit.Log.useJsonl();
|
|
2419
|
+
}
|
|
2420
|
+
});
|
|
2421
|
+
this.clear = () => {
|
|
2422
|
+
cli.loggerService.debug("SetupUtils clear");
|
|
2423
|
+
if (!this.enable.hasValue()) {
|
|
2424
|
+
return;
|
|
2425
|
+
}
|
|
2426
|
+
this.enable.clear();
|
|
2427
|
+
{
|
|
2428
|
+
BacktestKit.PersistSignalAdapter.clear();
|
|
2429
|
+
BacktestKit.PersistRiskAdapter.clear();
|
|
2430
|
+
BacktestKit.PersistScheduleAdapter.clear();
|
|
2431
|
+
BacktestKit.PersistPartialAdapter.clear();
|
|
2432
|
+
BacktestKit.PersistBreakevenAdapter.clear();
|
|
2433
|
+
BacktestKit.PersistCandleAdapter.clear();
|
|
2434
|
+
BacktestKit.PersistStorageAdapter.clear();
|
|
2435
|
+
BacktestKit.PersistNotificationAdapter.clear();
|
|
2436
|
+
BacktestKit.PersistLogAdapter.clear();
|
|
2437
|
+
BacktestKit.PersistMeasureAdapter.clear();
|
|
2438
|
+
BacktestKit.PersistMemoryAdapter.clear();
|
|
2439
|
+
}
|
|
2440
|
+
{
|
|
2441
|
+
BacktestKit.Dump.clear();
|
|
2442
|
+
BacktestKit.Log.clear();
|
|
2443
|
+
BacktestKit.Markdown.clear();
|
|
2444
|
+
BacktestKit.Memory.clear();
|
|
2445
|
+
BacktestKit.Report.clear();
|
|
2446
|
+
}
|
|
2447
|
+
{
|
|
2448
|
+
BacktestKit.StorageLive.clear();
|
|
2449
|
+
BacktestKit.StorageBacktest.clear();
|
|
2450
|
+
}
|
|
2451
|
+
{
|
|
2452
|
+
BacktestKit.NotificationLive.clear();
|
|
2453
|
+
BacktestKit.NotificationBacktest.clear();
|
|
2454
|
+
}
|
|
2455
|
+
};
|
|
2456
|
+
}
|
|
2457
|
+
}
|
|
2458
|
+
const Setup = new SetupUtils();
|
|
2459
|
+
|
|
2460
|
+
Setup.enable();
|
|
2461
|
+
BacktestKit.setConfig({
|
|
2462
|
+
CC_MAX_NOTIFICATIONS: 5000,
|
|
2463
|
+
CC_MAX_SIGNALS: 750,
|
|
2464
|
+
});
|
|
2465
|
+
BacktestKit.setConfig({
|
|
2466
|
+
CC_ENABLE_DCA_EVERYWHERE: true,
|
|
2467
|
+
CC_ENABLE_PPPL_EVERYWHERE: true,
|
|
2468
|
+
CC_ENABLE_TRAILING_EVERYWHERE: true,
|
|
2469
|
+
});
|
|
2470
|
+
BacktestKit.setConfig({
|
|
2471
|
+
CC_MAX_SIGNAL_GENERATION_SECONDS: 15 * 60,
|
|
2472
|
+
});
|
|
2473
|
+
BacktestKit.setConfig({
|
|
2474
|
+
CC_MAX_BACKTEST_MARKDOWN_ROWS: 1000,
|
|
2475
|
+
CC_MAX_BREAKEVEN_MARKDOWN_ROWS: 1000,
|
|
2476
|
+
CC_MAX_HEATMAP_MARKDOWN_ROWS: 1000,
|
|
2477
|
+
CC_MAX_HIGHEST_PROFIT_MARKDOWN_ROWS: 1000,
|
|
2478
|
+
CC_MAX_LIVE_MARKDOWN_ROWS: 1000,
|
|
2479
|
+
CC_MAX_PARTIAL_MARKDOWN_ROWS: 1000,
|
|
2480
|
+
CC_MAX_RISK_MARKDOWN_ROWS: 1000,
|
|
2481
|
+
CC_MAX_SCHEDULE_MARKDOWN_ROWS: 1000,
|
|
2482
|
+
CC_MAX_STRATEGY_MARKDOWN_ROWS: 1000,
|
|
2483
|
+
CC_MAX_SYNC_MARKDOWN_ROWS: 1000,
|
|
2484
|
+
CC_MAX_PERFORMANCE_MARKDOWN_ROWS: 1000,
|
|
2485
|
+
});
|
|
2486
|
+
BacktestKit.setConfig({
|
|
2487
|
+
CC_MAX_SIGNAL_LIFETIME_MINUTES: Infinity,
|
|
2488
|
+
});
|
|
2489
|
+
BacktestKit.setConfig({
|
|
2490
|
+
CC_WALKER_MARKDOWN_TOP_N: 10,
|
|
2491
|
+
});
|
|
2492
|
+
|
|
2444
2493
|
const MODES = ["backtest", "walker", "paper", "live", "pine", "dump", "init", "help", "version"];
|
|
2445
2494
|
const ENTRY_PATH$1 = "./node_modules/@backtest-kit/cli/build/index.mjs";
|
|
2446
2495
|
const HELP_TEXT$1 = `
|
|
@@ -2456,7 +2505,7 @@ const main$b = async () => {
|
|
|
2456
2505
|
if (MODES.some((mode) => values[mode])) {
|
|
2457
2506
|
return;
|
|
2458
2507
|
}
|
|
2459
|
-
process.stdout.write(`@backtest-kit/cli ${"6.
|
|
2508
|
+
process.stdout.write(`@backtest-kit/cli ${"6.3.0"}\n`);
|
|
2460
2509
|
process.stdout.write("\n");
|
|
2461
2510
|
process.stdout.write(`Run with --help to see available commands.\n`);
|
|
2462
2511
|
process.stdout.write("\n");
|
|
@@ -3024,7 +3073,7 @@ const main$1 = async () => {
|
|
|
3024
3073
|
if (!values.help) {
|
|
3025
3074
|
return;
|
|
3026
3075
|
}
|
|
3027
|
-
process.stdout.write(`@backtest-kit/cli ${"6.
|
|
3076
|
+
process.stdout.write(`@backtest-kit/cli ${"6.3.0"}\n\n`);
|
|
3028
3077
|
process.stdout.write(HELP_TEXT);
|
|
3029
3078
|
process.exit(0);
|
|
3030
3079
|
};
|
|
@@ -3038,7 +3087,7 @@ const main = async () => {
|
|
|
3038
3087
|
if (!values.version) {
|
|
3039
3088
|
return;
|
|
3040
3089
|
}
|
|
3041
|
-
process.stdout.write(`@backtest-kit/cli ${"6.
|
|
3090
|
+
process.stdout.write(`@backtest-kit/cli ${"6.3.0"}\n`);
|
|
3042
3091
|
process.exit(0);
|
|
3043
3092
|
};
|
|
3044
3093
|
main();
|
|
@@ -3076,6 +3125,7 @@ async function run(mode, args) {
|
|
|
3076
3125
|
throw new Error(`Invalid mode: ${mode}`);
|
|
3077
3126
|
}
|
|
3078
3127
|
|
|
3128
|
+
exports.Setup = Setup;
|
|
3079
3129
|
exports.cli = cli;
|
|
3080
3130
|
exports.run = run;
|
|
3081
3131
|
exports.setLogger = setLogger;
|
package/build/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import * as BacktestKit from 'backtest-kit';
|
|
3
|
-
import {
|
|
3
|
+
import { Log, listExchangeSchema, addExchangeSchema, roundTicks, listFrameSchema, addFrameSchema, listenDoneLive, listenDoneBacktest, shutdown, listenSignal, listStrategySchema, overrideExchangeSchema, Backtest, alignToInterval, addWalkerSchema, overrideWalkerSchema, Walker, listenDoneWalker, Live, getCandles, checkCandles, warmCandles, listenRisk, listenStrategyCommit, listenSync, Storage, Notification, Markdown, Report, Dump, Memory, StorageLive, StorageBacktest, NotificationLive, NotificationBacktest, PersistSignalAdapter, PersistRiskAdapter, PersistScheduleAdapter, PersistPartialAdapter, PersistBreakevenAdapter, PersistCandleAdapter, PersistStorageAdapter, PersistNotificationAdapter, PersistLogAdapter, PersistMeasureAdapter, PersistMemoryAdapter, setConfig, Exchange } from 'backtest-kit';
|
|
4
4
|
import { getErrorMessage, errorData, singleshot, str, BehaviorSubject, compose, createAwaiter, execpool, queued, sleep, randomString, TIMEOUT_SYMBOL, typo, retry, trycatch, memoize } from 'functools-kit';
|
|
5
5
|
import fs, { constants } from 'fs';
|
|
6
6
|
import * as stackTrace from 'stack-trace';
|
|
@@ -62,64 +62,6 @@ import { spawn } from 'child_process';
|
|
|
62
62
|
});
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
-
{
|
|
66
|
-
Storage.enable();
|
|
67
|
-
Notification.enable();
|
|
68
|
-
}
|
|
69
|
-
{
|
|
70
|
-
Markdown.enable();
|
|
71
|
-
Report.enable();
|
|
72
|
-
Dump.enable();
|
|
73
|
-
Memory.enable();
|
|
74
|
-
}
|
|
75
|
-
{
|
|
76
|
-
Dump.useMarkdown();
|
|
77
|
-
Memory.usePersist();
|
|
78
|
-
}
|
|
79
|
-
{
|
|
80
|
-
StorageLive.usePersist();
|
|
81
|
-
StorageBacktest.useMemory();
|
|
82
|
-
}
|
|
83
|
-
{
|
|
84
|
-
NotificationLive.usePersist();
|
|
85
|
-
NotificationBacktest.useMemory();
|
|
86
|
-
}
|
|
87
|
-
{
|
|
88
|
-
Markdown.useDummy();
|
|
89
|
-
}
|
|
90
|
-
setConfig({
|
|
91
|
-
CC_MAX_NOTIFICATIONS: 5000,
|
|
92
|
-
CC_MAX_SIGNALS: 750,
|
|
93
|
-
});
|
|
94
|
-
setConfig({
|
|
95
|
-
CC_ENABLE_DCA_EVERYWHERE: true,
|
|
96
|
-
CC_ENABLE_PPPL_EVERYWHERE: true,
|
|
97
|
-
CC_ENABLE_TRAILING_EVERYWHERE: true,
|
|
98
|
-
});
|
|
99
|
-
setConfig({
|
|
100
|
-
CC_MAX_SIGNAL_GENERATION_SECONDS: 15 * 60,
|
|
101
|
-
});
|
|
102
|
-
setConfig({
|
|
103
|
-
CC_MAX_BACKTEST_MARKDOWN_ROWS: 1000,
|
|
104
|
-
CC_MAX_BREAKEVEN_MARKDOWN_ROWS: 1000,
|
|
105
|
-
CC_MAX_HEATMAP_MARKDOWN_ROWS: 1000,
|
|
106
|
-
CC_MAX_HIGHEST_PROFIT_MARKDOWN_ROWS: 1000,
|
|
107
|
-
CC_MAX_LIVE_MARKDOWN_ROWS: 1000,
|
|
108
|
-
CC_MAX_PARTIAL_MARKDOWN_ROWS: 1000,
|
|
109
|
-
CC_MAX_RISK_MARKDOWN_ROWS: 1000,
|
|
110
|
-
CC_MAX_SCHEDULE_MARKDOWN_ROWS: 1000,
|
|
111
|
-
CC_MAX_STRATEGY_MARKDOWN_ROWS: 1000,
|
|
112
|
-
CC_MAX_SYNC_MARKDOWN_ROWS: 1000,
|
|
113
|
-
CC_MAX_PERFORMANCE_MARKDOWN_ROWS: 1000,
|
|
114
|
-
});
|
|
115
|
-
setConfig({
|
|
116
|
-
CC_MAX_SIGNAL_LIFETIME_MINUTES: Infinity,
|
|
117
|
-
});
|
|
118
|
-
setConfig({
|
|
119
|
-
CC_WALKER_MARKDOWN_TOP_N: 10,
|
|
120
|
-
});
|
|
121
|
-
Log.useJsonl();
|
|
122
|
-
|
|
123
65
|
const ERROR_HANDLER_INSTALLED = Symbol.for("error-handler-installed");
|
|
124
66
|
function dumpStackTrace() {
|
|
125
67
|
const trace = stackTrace.get();
|
|
@@ -857,6 +799,10 @@ class WalkerMainService {
|
|
|
857
799
|
if (!entryPoint) {
|
|
858
800
|
return;
|
|
859
801
|
}
|
|
802
|
+
{
|
|
803
|
+
Setup.clear();
|
|
804
|
+
Setup.enable();
|
|
805
|
+
}
|
|
860
806
|
const absolutePath = path.resolve(entryPoint);
|
|
861
807
|
const moduleRoot = path.dirname(absolutePath);
|
|
862
808
|
{
|
|
@@ -2412,6 +2358,109 @@ const cli = {
|
|
|
2412
2358
|
};
|
|
2413
2359
|
init();
|
|
2414
2360
|
|
|
2361
|
+
class SetupUtils {
|
|
2362
|
+
constructor() {
|
|
2363
|
+
this.enable = singleshot(() => {
|
|
2364
|
+
cli.loggerService.debug("SetupUtils enable");
|
|
2365
|
+
{
|
|
2366
|
+
Storage.enable();
|
|
2367
|
+
Notification.enable();
|
|
2368
|
+
}
|
|
2369
|
+
{
|
|
2370
|
+
Markdown.enable();
|
|
2371
|
+
Report.enable();
|
|
2372
|
+
Dump.enable();
|
|
2373
|
+
Memory.enable();
|
|
2374
|
+
}
|
|
2375
|
+
{
|
|
2376
|
+
Dump.useMarkdown();
|
|
2377
|
+
Memory.usePersist();
|
|
2378
|
+
}
|
|
2379
|
+
{
|
|
2380
|
+
StorageLive.usePersist();
|
|
2381
|
+
StorageBacktest.useMemory();
|
|
2382
|
+
}
|
|
2383
|
+
{
|
|
2384
|
+
NotificationLive.usePersist();
|
|
2385
|
+
NotificationBacktest.useMemory();
|
|
2386
|
+
}
|
|
2387
|
+
{
|
|
2388
|
+
Markdown.useDummy();
|
|
2389
|
+
Log.useJsonl();
|
|
2390
|
+
}
|
|
2391
|
+
});
|
|
2392
|
+
this.clear = () => {
|
|
2393
|
+
cli.loggerService.debug("SetupUtils clear");
|
|
2394
|
+
if (!this.enable.hasValue()) {
|
|
2395
|
+
return;
|
|
2396
|
+
}
|
|
2397
|
+
this.enable.clear();
|
|
2398
|
+
{
|
|
2399
|
+
PersistSignalAdapter.clear();
|
|
2400
|
+
PersistRiskAdapter.clear();
|
|
2401
|
+
PersistScheduleAdapter.clear();
|
|
2402
|
+
PersistPartialAdapter.clear();
|
|
2403
|
+
PersistBreakevenAdapter.clear();
|
|
2404
|
+
PersistCandleAdapter.clear();
|
|
2405
|
+
PersistStorageAdapter.clear();
|
|
2406
|
+
PersistNotificationAdapter.clear();
|
|
2407
|
+
PersistLogAdapter.clear();
|
|
2408
|
+
PersistMeasureAdapter.clear();
|
|
2409
|
+
PersistMemoryAdapter.clear();
|
|
2410
|
+
}
|
|
2411
|
+
{
|
|
2412
|
+
Dump.clear();
|
|
2413
|
+
Log.clear();
|
|
2414
|
+
Markdown.clear();
|
|
2415
|
+
Memory.clear();
|
|
2416
|
+
Report.clear();
|
|
2417
|
+
}
|
|
2418
|
+
{
|
|
2419
|
+
StorageLive.clear();
|
|
2420
|
+
StorageBacktest.clear();
|
|
2421
|
+
}
|
|
2422
|
+
{
|
|
2423
|
+
NotificationLive.clear();
|
|
2424
|
+
NotificationBacktest.clear();
|
|
2425
|
+
}
|
|
2426
|
+
};
|
|
2427
|
+
}
|
|
2428
|
+
}
|
|
2429
|
+
const Setup = new SetupUtils();
|
|
2430
|
+
|
|
2431
|
+
Setup.enable();
|
|
2432
|
+
setConfig({
|
|
2433
|
+
CC_MAX_NOTIFICATIONS: 5000,
|
|
2434
|
+
CC_MAX_SIGNALS: 750,
|
|
2435
|
+
});
|
|
2436
|
+
setConfig({
|
|
2437
|
+
CC_ENABLE_DCA_EVERYWHERE: true,
|
|
2438
|
+
CC_ENABLE_PPPL_EVERYWHERE: true,
|
|
2439
|
+
CC_ENABLE_TRAILING_EVERYWHERE: true,
|
|
2440
|
+
});
|
|
2441
|
+
setConfig({
|
|
2442
|
+
CC_MAX_SIGNAL_GENERATION_SECONDS: 15 * 60,
|
|
2443
|
+
});
|
|
2444
|
+
setConfig({
|
|
2445
|
+
CC_MAX_BACKTEST_MARKDOWN_ROWS: 1000,
|
|
2446
|
+
CC_MAX_BREAKEVEN_MARKDOWN_ROWS: 1000,
|
|
2447
|
+
CC_MAX_HEATMAP_MARKDOWN_ROWS: 1000,
|
|
2448
|
+
CC_MAX_HIGHEST_PROFIT_MARKDOWN_ROWS: 1000,
|
|
2449
|
+
CC_MAX_LIVE_MARKDOWN_ROWS: 1000,
|
|
2450
|
+
CC_MAX_PARTIAL_MARKDOWN_ROWS: 1000,
|
|
2451
|
+
CC_MAX_RISK_MARKDOWN_ROWS: 1000,
|
|
2452
|
+
CC_MAX_SCHEDULE_MARKDOWN_ROWS: 1000,
|
|
2453
|
+
CC_MAX_STRATEGY_MARKDOWN_ROWS: 1000,
|
|
2454
|
+
CC_MAX_SYNC_MARKDOWN_ROWS: 1000,
|
|
2455
|
+
CC_MAX_PERFORMANCE_MARKDOWN_ROWS: 1000,
|
|
2456
|
+
});
|
|
2457
|
+
setConfig({
|
|
2458
|
+
CC_MAX_SIGNAL_LIFETIME_MINUTES: Infinity,
|
|
2459
|
+
});
|
|
2460
|
+
setConfig({
|
|
2461
|
+
CC_WALKER_MARKDOWN_TOP_N: 10,
|
|
2462
|
+
});
|
|
2463
|
+
|
|
2415
2464
|
const MODES = ["backtest", "walker", "paper", "live", "pine", "dump", "init", "help", "version"];
|
|
2416
2465
|
const ENTRY_PATH$1 = "./node_modules/@backtest-kit/cli/build/index.mjs";
|
|
2417
2466
|
const HELP_TEXT$1 = `
|
|
@@ -2427,7 +2476,7 @@ const main$b = async () => {
|
|
|
2427
2476
|
if (MODES.some((mode) => values[mode])) {
|
|
2428
2477
|
return;
|
|
2429
2478
|
}
|
|
2430
|
-
process.stdout.write(`@backtest-kit/cli ${"6.
|
|
2479
|
+
process.stdout.write(`@backtest-kit/cli ${"6.3.0"}\n`);
|
|
2431
2480
|
process.stdout.write("\n");
|
|
2432
2481
|
process.stdout.write(`Run with --help to see available commands.\n`);
|
|
2433
2482
|
process.stdout.write("\n");
|
|
@@ -2995,7 +3044,7 @@ const main$1 = async () => {
|
|
|
2995
3044
|
if (!values.help) {
|
|
2996
3045
|
return;
|
|
2997
3046
|
}
|
|
2998
|
-
process.stdout.write(`@backtest-kit/cli ${"6.
|
|
3047
|
+
process.stdout.write(`@backtest-kit/cli ${"6.3.0"}\n\n`);
|
|
2999
3048
|
process.stdout.write(HELP_TEXT);
|
|
3000
3049
|
process.exit(0);
|
|
3001
3050
|
};
|
|
@@ -3009,7 +3058,7 @@ const main = async () => {
|
|
|
3009
3058
|
if (!values.version) {
|
|
3010
3059
|
return;
|
|
3011
3060
|
}
|
|
3012
|
-
process.stdout.write(`@backtest-kit/cli ${"6.
|
|
3061
|
+
process.stdout.write(`@backtest-kit/cli ${"6.3.0"}\n`);
|
|
3013
3062
|
process.exit(0);
|
|
3014
3063
|
};
|
|
3015
3064
|
main();
|
|
@@ -3047,4 +3096,4 @@ async function run(mode, args) {
|
|
|
3047
3096
|
throw new Error(`Invalid mode: ${mode}`);
|
|
3048
3097
|
}
|
|
3049
3098
|
|
|
3050
|
-
export { cli, run, setLogger };
|
|
3099
|
+
export { Setup, cli, run, setLogger };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@backtest-kit/cli",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.4.0",
|
|
4
4
|
"description": "Zero-boilerplate CLI runner for backtest-kit strategies. Run backtests, paper trading, and live bots with candle cache warming, web dashboard, and Telegram notifications — no setup code required.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Petr Tripolsky",
|
|
@@ -61,11 +61,11 @@
|
|
|
61
61
|
"devDependencies": {
|
|
62
62
|
"@babel/plugin-transform-modules-umd": "7.27.1",
|
|
63
63
|
"@babel/standalone": "7.29.1",
|
|
64
|
-
"@backtest-kit/ui": "6.
|
|
65
|
-
"@backtest-kit/graph": "6.
|
|
66
|
-
"@backtest-kit/ollama": "6.
|
|
67
|
-
"@backtest-kit/pinets": "6.
|
|
68
|
-
"@backtest-kit/signals": "6.
|
|
64
|
+
"@backtest-kit/ui": "6.4.0",
|
|
65
|
+
"@backtest-kit/graph": "6.4.0",
|
|
66
|
+
"@backtest-kit/ollama": "6.4.0",
|
|
67
|
+
"@backtest-kit/pinets": "6.4.0",
|
|
68
|
+
"@backtest-kit/signals": "6.4.0",
|
|
69
69
|
"@rollup/plugin-replace": "6.0.3",
|
|
70
70
|
"@rollup/plugin-typescript": "11.1.6",
|
|
71
71
|
"@types/image-size": "0.7.0",
|
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
"@types/mustache": "4.2.6",
|
|
74
74
|
"@types/node": "22.9.0",
|
|
75
75
|
"@types/stack-trace": "0.0.33",
|
|
76
|
-
"backtest-kit": "6.
|
|
76
|
+
"backtest-kit": "6.4.0",
|
|
77
77
|
"glob": "11.0.1",
|
|
78
78
|
"markdown-it": "14.1.1",
|
|
79
79
|
"rimraf": "6.0.1",
|
|
@@ -88,12 +88,12 @@
|
|
|
88
88
|
"peerDependencies": {
|
|
89
89
|
"@babel/plugin-transform-modules-umd": "^7.27.1",
|
|
90
90
|
"@babel/standalone": "^7.29.1",
|
|
91
|
-
"@backtest-kit/ui": "^6.
|
|
92
|
-
"@backtest-kit/graph": "^6.
|
|
93
|
-
"@backtest-kit/ollama": "^6.
|
|
94
|
-
"@backtest-kit/pinets": "^6.
|
|
95
|
-
"@backtest-kit/signals": "^6.
|
|
96
|
-
"backtest-kit": "^6.
|
|
91
|
+
"@backtest-kit/ui": "^6.4.0",
|
|
92
|
+
"@backtest-kit/graph": "^6.4.0",
|
|
93
|
+
"@backtest-kit/ollama": "^6.4.0",
|
|
94
|
+
"@backtest-kit/pinets": "^6.4.0",
|
|
95
|
+
"@backtest-kit/signals": "^6.4.0",
|
|
96
|
+
"backtest-kit": "^6.4.0",
|
|
97
97
|
"markdown-it": "^14.1.1",
|
|
98
98
|
"typescript": "^5.0.0"
|
|
99
99
|
},
|
package/types.d.ts
CHANGED
|
@@ -1,291 +1,297 @@
|
|
|
1
|
-
import * as functools_kit from 'functools-kit';
|
|
2
|
-
import { CandleInterval, TrailingTakeCommit, TrailingStopCommit, BreakevenCommit, PartialProfitCommit, PartialLossCommit, IStrategyTickResultScheduled, IStrategyTickResultCancelled, IStrategyTickResultOpened, IStrategyTickResultClosed, RiskContract, AverageBuyCommit, SignalOpenContract, SignalCloseContract, CancelScheduledCommit, ClosePendingCommit } from 'backtest-kit';
|
|
3
|
-
import { Input } from 'telegraf';
|
|
4
|
-
|
|
5
|
-
interface ILogger {
|
|
6
|
-
log(topic: string, ...args: any[]): void;
|
|
7
|
-
debug(topic: string, ...args: any[]): void;
|
|
8
|
-
info(topic: string, ...args: any[]): void;
|
|
9
|
-
warn(topic: string, ...args: any[]): void;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
declare class LoggerService implements ILogger {
|
|
13
|
-
private _commonLogger;
|
|
14
|
-
log: (topic: string, ...args: any[]) => Promise<void>;
|
|
15
|
-
debug: (topic: string, ...args: any[]) => Promise<void>;
|
|
16
|
-
info: (topic: string, ...args: any[]) => Promise<void>;
|
|
17
|
-
warn: (topic: string, ...args: any[]) => Promise<void>;
|
|
18
|
-
setLogger: (logger: ILogger) => void;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
declare class PaperMainService {
|
|
22
|
-
private loggerService;
|
|
23
|
-
private resolveService;
|
|
24
|
-
private exchangeSchemaService;
|
|
25
|
-
private symbolSchemaService;
|
|
26
|
-
private frontendProviderService;
|
|
27
|
-
private telegramProviderService;
|
|
28
|
-
private moduleConnectionService;
|
|
29
|
-
run: ((payload: {
|
|
30
|
-
entryPoint: string;
|
|
31
|
-
symbol: string;
|
|
32
|
-
strategy: string;
|
|
33
|
-
exchange: string;
|
|
34
|
-
verbose: boolean;
|
|
35
|
-
}) => Promise<void>) & functools_kit.ISingleshotClearable;
|
|
36
|
-
connect: (() => Promise<void>) & functools_kit.ISingleshotClearable;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
declare class LiveMainService {
|
|
40
|
-
private loggerService;
|
|
41
|
-
private resolveService;
|
|
42
|
-
private exchangeSchemaService;
|
|
43
|
-
private symbolSchemaService;
|
|
44
|
-
private frontendProviderService;
|
|
45
|
-
private telegramProviderService;
|
|
46
|
-
private moduleConnectionService;
|
|
47
|
-
run: ((payload: {
|
|
48
|
-
entryPoint: string;
|
|
49
|
-
symbol: string;
|
|
50
|
-
strategy: string;
|
|
51
|
-
exchange: string;
|
|
52
|
-
verbose: boolean;
|
|
53
|
-
}) => Promise<void>) & functools_kit.ISingleshotClearable;
|
|
54
|
-
connect: (() => Promise<void>) & functools_kit.ISingleshotClearable;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
declare class BacktestMainService {
|
|
58
|
-
private loggerService;
|
|
59
|
-
private resolveService;
|
|
60
|
-
private exchangeSchemaService;
|
|
61
|
-
private frameSchemaService;
|
|
62
|
-
private symbolSchemaService;
|
|
63
|
-
private cacheLogicService;
|
|
64
|
-
private frontendProviderService;
|
|
65
|
-
private telegramProviderService;
|
|
66
|
-
private moduleConnectionService;
|
|
67
|
-
run: ((payload: {
|
|
68
|
-
entryPoint: string;
|
|
69
|
-
symbol: string;
|
|
70
|
-
strategy: string;
|
|
71
|
-
exchange: string;
|
|
72
|
-
frame: string;
|
|
73
|
-
cacheInterval: string[];
|
|
74
|
-
verbose: boolean;
|
|
75
|
-
noCache: boolean;
|
|
76
|
-
}) => Promise<void>) & functools_kit.ISingleshotClearable;
|
|
77
|
-
connect: (() => Promise<void>) & functools_kit.ISingleshotClearable;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
declare class WalkerMainService {
|
|
81
|
-
private loggerService;
|
|
82
|
-
private resolveService;
|
|
83
|
-
private exchangeSchemaService;
|
|
84
|
-
private symbolSchemaService;
|
|
85
|
-
private cacheLogicService;
|
|
86
|
-
private moduleConnectionService;
|
|
87
|
-
run: ((payload: {
|
|
88
|
-
entryPoints: string[];
|
|
89
|
-
symbol: string;
|
|
90
|
-
output: string;
|
|
91
|
-
cacheInterval: CandleInterval[];
|
|
92
|
-
json: boolean;
|
|
93
|
-
markdown: boolean;
|
|
94
|
-
verbose: boolean;
|
|
95
|
-
noCache: boolean;
|
|
96
|
-
}) => Promise<void>) & functools_kit.ISingleshotClearable;
|
|
97
|
-
connect: (() => Promise<void>) & functools_kit.ISingleshotClearable;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
declare class ExchangeSchemaService {
|
|
101
|
-
readonly loggerService: LoggerService;
|
|
102
|
-
addSchema: (() => Promise<void>) & functools_kit.ISingleshotClearable;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
declare class FrameSchemaService {
|
|
106
|
-
readonly loggerService: LoggerService;
|
|
107
|
-
addSchema: (() => Promise<void>) & functools_kit.ISingleshotClearable;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
declare class LoaderService {
|
|
111
|
-
private readonly babelService;
|
|
112
|
-
private readonly loggerService;
|
|
113
|
-
private getInstance;
|
|
114
|
-
import: (filePath: string, basePath?: string) => any;
|
|
115
|
-
check: (filePath: string, basePath?: string) => Promise<boolean>;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
declare class ResolveService {
|
|
119
|
-
readonly loggerService: LoggerService;
|
|
120
|
-
readonly loaderService: LoaderService;
|
|
121
|
-
readonly DEFAULT_TEMPLATE_DIR: string;
|
|
122
|
-
readonly DEFAULT_MODULES_DIR: string;
|
|
123
|
-
readonly OVERRIDE_TEMPLATE_DIR: string;
|
|
124
|
-
readonly OVERRIDE_MODULES_DIR: string;
|
|
125
|
-
getIsLaunched: () => boolean;
|
|
126
|
-
attachPine: (pinePath: string) => Promise<string>;
|
|
127
|
-
attachStrategy: (jsPath: string) => Promise<void>;
|
|
128
|
-
attachJavascript: (jsPath: string) => Promise<void>;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
declare class ErrorService {
|
|
132
|
-
handleGlobalError: (error: Error) => Promise<void>;
|
|
133
|
-
private _listenForError;
|
|
134
|
-
protected init: (() => void) & functools_kit.ISingleshotClearable;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
declare class SymbolSchemaService {
|
|
138
|
-
readonly loggerService: LoggerService;
|
|
139
|
-
addSchema: (() => Promise<void>) & functools_kit.ISingleshotClearable;
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
declare class FrontendProviderService {
|
|
143
|
-
private readonly loggerService;
|
|
144
|
-
enable: (() => () => void) & functools_kit.ISingleshotClearable;
|
|
145
|
-
disable: () => void;
|
|
146
|
-
connect: (() => Promise<() => void>) & functools_kit.ISingleshotClearable;
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
declare class TelegramProviderService {
|
|
150
|
-
private readonly loggerService;
|
|
151
|
-
private readonly telegramLogicService;
|
|
152
|
-
enable: (() => () => void) & functools_kit.ISingleshotClearable;
|
|
153
|
-
disable: () => void;
|
|
154
|
-
connect: (() => Promise<() => void>) & functools_kit.ISingleshotClearable;
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
declare class CacheLogicService {
|
|
158
|
-
private readonly loggerService;
|
|
159
|
-
execute: (intervalList: CandleInterval[], dto: {
|
|
160
|
-
symbol: string;
|
|
161
|
-
frameName: string;
|
|
162
|
-
exchangeName: string;
|
|
163
|
-
}) => Promise<void>;
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
type InputFile = ReturnType<typeof Input.fromReadableStream>;
|
|
167
|
-
type Image = string | InputFile;
|
|
168
|
-
declare class TelegramApiService {
|
|
169
|
-
publish: (channel: string, msg: string, images?: Image[]) => Promise<"Message scheduled for publication" | "Message published successfully">;
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
declare class QuickchartApiService {
|
|
173
|
-
readonly loggerService: LoggerService;
|
|
174
|
-
getChart: (symbol: string, interval: string) => Promise<Buffer<ArrayBufferLike>>;
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
declare class TelegramWebService {
|
|
178
|
-
private readonly loggerService;
|
|
179
|
-
private readonly telegramApiService;
|
|
180
|
-
private readonly quickchartApiService;
|
|
181
|
-
publishNotify: (dto: {
|
|
182
|
-
symbol: string;
|
|
183
|
-
markdown: string;
|
|
184
|
-
}) => Promise<void>;
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
declare class TelegramLogicService {
|
|
188
|
-
private readonly loggerService;
|
|
189
|
-
private readonly telegramTemplateService;
|
|
190
|
-
private readonly telegramWebService;
|
|
191
|
-
private notifyTrailingTake;
|
|
192
|
-
private notifyTrailingStop;
|
|
193
|
-
private notifyBreakeven;
|
|
194
|
-
private notifyPartialProfit;
|
|
195
|
-
private notifyPartialLoss;
|
|
196
|
-
private notifyScheduled;
|
|
197
|
-
private notifyCancelled;
|
|
198
|
-
private notifyOpened;
|
|
199
|
-
private notifyClosed;
|
|
200
|
-
private notifyRisk;
|
|
201
|
-
private notifyAverageBuy;
|
|
202
|
-
private notifySignalOpen;
|
|
203
|
-
private notifySignalClose;
|
|
204
|
-
private notifyCancelScheduled;
|
|
205
|
-
private notifyClosePending;
|
|
206
|
-
connect: (() => () => void) & functools_kit.ISingleshotClearable;
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
declare class TelegramTemplateService {
|
|
210
|
-
readonly loggerService: LoggerService;
|
|
211
|
-
readonly resolveService: ResolveService;
|
|
212
|
-
getTrailingTakeMarkdown: (event: TrailingTakeCommit) => Promise<string>;
|
|
213
|
-
getTrailingStopMarkdown: (event: TrailingStopCommit) => Promise<string>;
|
|
214
|
-
getBreakevenMarkdown: (event: BreakevenCommit) => Promise<string>;
|
|
215
|
-
getPartialProfitMarkdown: (event: PartialProfitCommit) => Promise<string>;
|
|
216
|
-
getPartialLossMarkdown: (event: PartialLossCommit) => Promise<string>;
|
|
217
|
-
getScheduledMarkdown: (event: IStrategyTickResultScheduled) => Promise<string>;
|
|
218
|
-
getCancelledMarkdown: (event: IStrategyTickResultCancelled) => Promise<string>;
|
|
219
|
-
getOpenedMarkdown: (event: IStrategyTickResultOpened) => Promise<string>;
|
|
220
|
-
getClosedMarkdown: (event: IStrategyTickResultClosed) => Promise<string>;
|
|
221
|
-
getRiskMarkdown: (event: RiskContract) => Promise<string>;
|
|
222
|
-
getAverageBuyMarkdown: (event: AverageBuyCommit) => Promise<string>;
|
|
223
|
-
getSignalOpenMarkdown: (event: SignalOpenContract) => Promise<string>;
|
|
224
|
-
getSignalCloseMarkdown: (event: SignalCloseContract) => Promise<string>;
|
|
225
|
-
getCancelScheduledMarkdown: (event: CancelScheduledCommit) => Promise<string>;
|
|
226
|
-
getClosePendingMarkdown: (event: ClosePendingCommit) => Promise<string>;
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
declare class ModuleConnectionService {
|
|
230
|
-
readonly loggerService: LoggerService;
|
|
231
|
-
readonly resolveService: ResolveService;
|
|
232
|
-
readonly loaderService: LoaderService;
|
|
233
|
-
loadModule: (fileName: string) => Promise<boolean>;
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
interface IBabel {
|
|
237
|
-
transpile(code: string): string;
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
declare class BabelService implements IBabel {
|
|
241
|
-
readonly loggerService: LoggerService;
|
|
242
|
-
transpile: (code: string) => any;
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
declare const cli: {
|
|
246
|
-
telegramTemplateService: TelegramTemplateService;
|
|
247
|
-
telegramWebService: TelegramWebService;
|
|
248
|
-
frontendProviderService: FrontendProviderService;
|
|
249
|
-
telegramProviderService: TelegramProviderService;
|
|
250
|
-
exchangeSchemaService: ExchangeSchemaService;
|
|
251
|
-
symbolSchemaService: SymbolSchemaService;
|
|
252
|
-
frameSchemaService: FrameSchemaService;
|
|
253
|
-
cacheLogicService: CacheLogicService;
|
|
254
|
-
telegramLogicService: TelegramLogicService;
|
|
255
|
-
backtestMainService: BacktestMainService;
|
|
256
|
-
walkerMainService: WalkerMainService;
|
|
257
|
-
paperMainService: PaperMainService;
|
|
258
|
-
liveMainService: LiveMainService;
|
|
259
|
-
moduleConnectionService: ModuleConnectionService;
|
|
260
|
-
errorService: ErrorService;
|
|
261
|
-
loggerService: LoggerService;
|
|
262
|
-
resolveService: ResolveService;
|
|
263
|
-
loaderService: LoaderService;
|
|
264
|
-
babelService: BabelService;
|
|
265
|
-
telegramApiService: TelegramApiService;
|
|
266
|
-
quickchartApiService: QuickchartApiService;
|
|
267
|
-
};
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
1
|
+
import * as functools_kit from 'functools-kit';
|
|
2
|
+
import { CandleInterval, TrailingTakeCommit, TrailingStopCommit, BreakevenCommit, PartialProfitCommit, PartialLossCommit, IStrategyTickResultScheduled, IStrategyTickResultCancelled, IStrategyTickResultOpened, IStrategyTickResultClosed, RiskContract, AverageBuyCommit, SignalOpenContract, SignalCloseContract, CancelScheduledCommit, ClosePendingCommit } from 'backtest-kit';
|
|
3
|
+
import { Input } from 'telegraf';
|
|
4
|
+
|
|
5
|
+
interface ILogger {
|
|
6
|
+
log(topic: string, ...args: any[]): void;
|
|
7
|
+
debug(topic: string, ...args: any[]): void;
|
|
8
|
+
info(topic: string, ...args: any[]): void;
|
|
9
|
+
warn(topic: string, ...args: any[]): void;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
declare class LoggerService implements ILogger {
|
|
13
|
+
private _commonLogger;
|
|
14
|
+
log: (topic: string, ...args: any[]) => Promise<void>;
|
|
15
|
+
debug: (topic: string, ...args: any[]) => Promise<void>;
|
|
16
|
+
info: (topic: string, ...args: any[]) => Promise<void>;
|
|
17
|
+
warn: (topic: string, ...args: any[]) => Promise<void>;
|
|
18
|
+
setLogger: (logger: ILogger) => void;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
declare class PaperMainService {
|
|
22
|
+
private loggerService;
|
|
23
|
+
private resolveService;
|
|
24
|
+
private exchangeSchemaService;
|
|
25
|
+
private symbolSchemaService;
|
|
26
|
+
private frontendProviderService;
|
|
27
|
+
private telegramProviderService;
|
|
28
|
+
private moduleConnectionService;
|
|
29
|
+
run: ((payload: {
|
|
30
|
+
entryPoint: string;
|
|
31
|
+
symbol: string;
|
|
32
|
+
strategy: string;
|
|
33
|
+
exchange: string;
|
|
34
|
+
verbose: boolean;
|
|
35
|
+
}) => Promise<void>) & functools_kit.ISingleshotClearable;
|
|
36
|
+
connect: (() => Promise<void>) & functools_kit.ISingleshotClearable;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
declare class LiveMainService {
|
|
40
|
+
private loggerService;
|
|
41
|
+
private resolveService;
|
|
42
|
+
private exchangeSchemaService;
|
|
43
|
+
private symbolSchemaService;
|
|
44
|
+
private frontendProviderService;
|
|
45
|
+
private telegramProviderService;
|
|
46
|
+
private moduleConnectionService;
|
|
47
|
+
run: ((payload: {
|
|
48
|
+
entryPoint: string;
|
|
49
|
+
symbol: string;
|
|
50
|
+
strategy: string;
|
|
51
|
+
exchange: string;
|
|
52
|
+
verbose: boolean;
|
|
53
|
+
}) => Promise<void>) & functools_kit.ISingleshotClearable;
|
|
54
|
+
connect: (() => Promise<void>) & functools_kit.ISingleshotClearable;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
declare class BacktestMainService {
|
|
58
|
+
private loggerService;
|
|
59
|
+
private resolveService;
|
|
60
|
+
private exchangeSchemaService;
|
|
61
|
+
private frameSchemaService;
|
|
62
|
+
private symbolSchemaService;
|
|
63
|
+
private cacheLogicService;
|
|
64
|
+
private frontendProviderService;
|
|
65
|
+
private telegramProviderService;
|
|
66
|
+
private moduleConnectionService;
|
|
67
|
+
run: ((payload: {
|
|
68
|
+
entryPoint: string;
|
|
69
|
+
symbol: string;
|
|
70
|
+
strategy: string;
|
|
71
|
+
exchange: string;
|
|
72
|
+
frame: string;
|
|
73
|
+
cacheInterval: string[];
|
|
74
|
+
verbose: boolean;
|
|
75
|
+
noCache: boolean;
|
|
76
|
+
}) => Promise<void>) & functools_kit.ISingleshotClearable;
|
|
77
|
+
connect: (() => Promise<void>) & functools_kit.ISingleshotClearable;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
declare class WalkerMainService {
|
|
81
|
+
private loggerService;
|
|
82
|
+
private resolveService;
|
|
83
|
+
private exchangeSchemaService;
|
|
84
|
+
private symbolSchemaService;
|
|
85
|
+
private cacheLogicService;
|
|
86
|
+
private moduleConnectionService;
|
|
87
|
+
run: ((payload: {
|
|
88
|
+
entryPoints: string[];
|
|
89
|
+
symbol: string;
|
|
90
|
+
output: string;
|
|
91
|
+
cacheInterval: CandleInterval[];
|
|
92
|
+
json: boolean;
|
|
93
|
+
markdown: boolean;
|
|
94
|
+
verbose: boolean;
|
|
95
|
+
noCache: boolean;
|
|
96
|
+
}) => Promise<void>) & functools_kit.ISingleshotClearable;
|
|
97
|
+
connect: (() => Promise<void>) & functools_kit.ISingleshotClearable;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
declare class ExchangeSchemaService {
|
|
101
|
+
readonly loggerService: LoggerService;
|
|
102
|
+
addSchema: (() => Promise<void>) & functools_kit.ISingleshotClearable;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
declare class FrameSchemaService {
|
|
106
|
+
readonly loggerService: LoggerService;
|
|
107
|
+
addSchema: (() => Promise<void>) & functools_kit.ISingleshotClearable;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
declare class LoaderService {
|
|
111
|
+
private readonly babelService;
|
|
112
|
+
private readonly loggerService;
|
|
113
|
+
private getInstance;
|
|
114
|
+
import: (filePath: string, basePath?: string) => any;
|
|
115
|
+
check: (filePath: string, basePath?: string) => Promise<boolean>;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
declare class ResolveService {
|
|
119
|
+
readonly loggerService: LoggerService;
|
|
120
|
+
readonly loaderService: LoaderService;
|
|
121
|
+
readonly DEFAULT_TEMPLATE_DIR: string;
|
|
122
|
+
readonly DEFAULT_MODULES_DIR: string;
|
|
123
|
+
readonly OVERRIDE_TEMPLATE_DIR: string;
|
|
124
|
+
readonly OVERRIDE_MODULES_DIR: string;
|
|
125
|
+
getIsLaunched: () => boolean;
|
|
126
|
+
attachPine: (pinePath: string) => Promise<string>;
|
|
127
|
+
attachStrategy: (jsPath: string) => Promise<void>;
|
|
128
|
+
attachJavascript: (jsPath: string) => Promise<void>;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
declare class ErrorService {
|
|
132
|
+
handleGlobalError: (error: Error) => Promise<void>;
|
|
133
|
+
private _listenForError;
|
|
134
|
+
protected init: (() => void) & functools_kit.ISingleshotClearable;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
declare class SymbolSchemaService {
|
|
138
|
+
readonly loggerService: LoggerService;
|
|
139
|
+
addSchema: (() => Promise<void>) & functools_kit.ISingleshotClearable;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
declare class FrontendProviderService {
|
|
143
|
+
private readonly loggerService;
|
|
144
|
+
enable: (() => () => void) & functools_kit.ISingleshotClearable;
|
|
145
|
+
disable: () => void;
|
|
146
|
+
connect: (() => Promise<() => void>) & functools_kit.ISingleshotClearable;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
declare class TelegramProviderService {
|
|
150
|
+
private readonly loggerService;
|
|
151
|
+
private readonly telegramLogicService;
|
|
152
|
+
enable: (() => () => void) & functools_kit.ISingleshotClearable;
|
|
153
|
+
disable: () => void;
|
|
154
|
+
connect: (() => Promise<() => void>) & functools_kit.ISingleshotClearable;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
declare class CacheLogicService {
|
|
158
|
+
private readonly loggerService;
|
|
159
|
+
execute: (intervalList: CandleInterval[], dto: {
|
|
160
|
+
symbol: string;
|
|
161
|
+
frameName: string;
|
|
162
|
+
exchangeName: string;
|
|
163
|
+
}) => Promise<void>;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
type InputFile = ReturnType<typeof Input.fromReadableStream>;
|
|
167
|
+
type Image = string | InputFile;
|
|
168
|
+
declare class TelegramApiService {
|
|
169
|
+
publish: (channel: string, msg: string, images?: Image[]) => Promise<"Message scheduled for publication" | "Message published successfully">;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
declare class QuickchartApiService {
|
|
173
|
+
readonly loggerService: LoggerService;
|
|
174
|
+
getChart: (symbol: string, interval: string) => Promise<Buffer<ArrayBufferLike>>;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
declare class TelegramWebService {
|
|
178
|
+
private readonly loggerService;
|
|
179
|
+
private readonly telegramApiService;
|
|
180
|
+
private readonly quickchartApiService;
|
|
181
|
+
publishNotify: (dto: {
|
|
182
|
+
symbol: string;
|
|
183
|
+
markdown: string;
|
|
184
|
+
}) => Promise<void>;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
declare class TelegramLogicService {
|
|
188
|
+
private readonly loggerService;
|
|
189
|
+
private readonly telegramTemplateService;
|
|
190
|
+
private readonly telegramWebService;
|
|
191
|
+
private notifyTrailingTake;
|
|
192
|
+
private notifyTrailingStop;
|
|
193
|
+
private notifyBreakeven;
|
|
194
|
+
private notifyPartialProfit;
|
|
195
|
+
private notifyPartialLoss;
|
|
196
|
+
private notifyScheduled;
|
|
197
|
+
private notifyCancelled;
|
|
198
|
+
private notifyOpened;
|
|
199
|
+
private notifyClosed;
|
|
200
|
+
private notifyRisk;
|
|
201
|
+
private notifyAverageBuy;
|
|
202
|
+
private notifySignalOpen;
|
|
203
|
+
private notifySignalClose;
|
|
204
|
+
private notifyCancelScheduled;
|
|
205
|
+
private notifyClosePending;
|
|
206
|
+
connect: (() => () => void) & functools_kit.ISingleshotClearable;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
declare class TelegramTemplateService {
|
|
210
|
+
readonly loggerService: LoggerService;
|
|
211
|
+
readonly resolveService: ResolveService;
|
|
212
|
+
getTrailingTakeMarkdown: (event: TrailingTakeCommit) => Promise<string>;
|
|
213
|
+
getTrailingStopMarkdown: (event: TrailingStopCommit) => Promise<string>;
|
|
214
|
+
getBreakevenMarkdown: (event: BreakevenCommit) => Promise<string>;
|
|
215
|
+
getPartialProfitMarkdown: (event: PartialProfitCommit) => Promise<string>;
|
|
216
|
+
getPartialLossMarkdown: (event: PartialLossCommit) => Promise<string>;
|
|
217
|
+
getScheduledMarkdown: (event: IStrategyTickResultScheduled) => Promise<string>;
|
|
218
|
+
getCancelledMarkdown: (event: IStrategyTickResultCancelled) => Promise<string>;
|
|
219
|
+
getOpenedMarkdown: (event: IStrategyTickResultOpened) => Promise<string>;
|
|
220
|
+
getClosedMarkdown: (event: IStrategyTickResultClosed) => Promise<string>;
|
|
221
|
+
getRiskMarkdown: (event: RiskContract) => Promise<string>;
|
|
222
|
+
getAverageBuyMarkdown: (event: AverageBuyCommit) => Promise<string>;
|
|
223
|
+
getSignalOpenMarkdown: (event: SignalOpenContract) => Promise<string>;
|
|
224
|
+
getSignalCloseMarkdown: (event: SignalCloseContract) => Promise<string>;
|
|
225
|
+
getCancelScheduledMarkdown: (event: CancelScheduledCommit) => Promise<string>;
|
|
226
|
+
getClosePendingMarkdown: (event: ClosePendingCommit) => Promise<string>;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
declare class ModuleConnectionService {
|
|
230
|
+
readonly loggerService: LoggerService;
|
|
231
|
+
readonly resolveService: ResolveService;
|
|
232
|
+
readonly loaderService: LoaderService;
|
|
233
|
+
loadModule: (fileName: string) => Promise<boolean>;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
interface IBabel {
|
|
237
|
+
transpile(code: string): string;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
declare class BabelService implements IBabel {
|
|
241
|
+
readonly loggerService: LoggerService;
|
|
242
|
+
transpile: (code: string) => any;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
declare const cli: {
|
|
246
|
+
telegramTemplateService: TelegramTemplateService;
|
|
247
|
+
telegramWebService: TelegramWebService;
|
|
248
|
+
frontendProviderService: FrontendProviderService;
|
|
249
|
+
telegramProviderService: TelegramProviderService;
|
|
250
|
+
exchangeSchemaService: ExchangeSchemaService;
|
|
251
|
+
symbolSchemaService: SymbolSchemaService;
|
|
252
|
+
frameSchemaService: FrameSchemaService;
|
|
253
|
+
cacheLogicService: CacheLogicService;
|
|
254
|
+
telegramLogicService: TelegramLogicService;
|
|
255
|
+
backtestMainService: BacktestMainService;
|
|
256
|
+
walkerMainService: WalkerMainService;
|
|
257
|
+
paperMainService: PaperMainService;
|
|
258
|
+
liveMainService: LiveMainService;
|
|
259
|
+
moduleConnectionService: ModuleConnectionService;
|
|
260
|
+
errorService: ErrorService;
|
|
261
|
+
loggerService: LoggerService;
|
|
262
|
+
resolveService: ResolveService;
|
|
263
|
+
loaderService: LoaderService;
|
|
264
|
+
babelService: BabelService;
|
|
265
|
+
telegramApiService: TelegramApiService;
|
|
266
|
+
quickchartApiService: QuickchartApiService;
|
|
267
|
+
};
|
|
268
|
+
|
|
269
|
+
declare class SetupUtils {
|
|
270
|
+
enable: (() => void) & functools_kit.ISingleshotClearable;
|
|
271
|
+
clear: () => void;
|
|
272
|
+
}
|
|
273
|
+
declare const Setup: SetupUtils;
|
|
274
|
+
|
|
275
|
+
interface ILoader {
|
|
276
|
+
import(filePath: string): any;
|
|
277
|
+
check(filePath: string): boolean;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
declare enum ExchangeName {
|
|
281
|
+
DefaultExchange = "default_exchange"
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
declare enum FrameName {
|
|
285
|
+
DefaultFrame = "default_frame"
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
declare function setLogger(logger: ILogger): void;
|
|
289
|
+
|
|
290
|
+
type PayloadBacktest = Parameters<typeof cli.backtestMainService.run>[0];
|
|
291
|
+
type PayloadPaper = Parameters<typeof cli.paperMainService.run>[0];
|
|
292
|
+
type PayloadLive = Parameters<typeof cli.liveMainService.run>[0];
|
|
293
|
+
type Mode = "backtest" | "live" | "paper";
|
|
294
|
+
type Args = Partial<PayloadBacktest> | Partial<PayloadPaper> | Partial<PayloadLive>;
|
|
295
|
+
declare function run(mode: Mode, args: Args): Promise<void>;
|
|
296
|
+
|
|
297
|
+
export { ExchangeName, FrameName, type IBabel, type ILoader, type ILogger, Setup, cli, run, setLogger };
|