backtest-kit 5.6.7 → 5.6.8
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 +88 -11
- package/build/index.mjs +88 -11
- package/package.json +1 -1
package/build/index.cjs
CHANGED
|
@@ -11702,9 +11702,17 @@ const CALL_SIGNAL_BACKTEST_FN = functoolsKit.trycatch(async (event, self) => {
|
|
|
11702
11702
|
* Wrapper to call breakevenAvailable method with error capture.
|
|
11703
11703
|
*/
|
|
11704
11704
|
const CALL_BREAKEVEN_AVAILABLE_FN = functoolsKit.trycatch(async (event, self) => {
|
|
11705
|
-
if (self._target.breakevenAvailable) {
|
|
11706
|
-
return
|
|
11705
|
+
if (!self._target.breakevenAvailable) {
|
|
11706
|
+
return;
|
|
11707
11707
|
}
|
|
11708
|
+
if (await functoolsKit.not(bt.strategyCoreService.hasPendingSignal(event.backtest, event.symbol, {
|
|
11709
|
+
strategyName: event.strategyName,
|
|
11710
|
+
exchangeName: event.exchangeName,
|
|
11711
|
+
frameName: event.frameName,
|
|
11712
|
+
}))) {
|
|
11713
|
+
return;
|
|
11714
|
+
}
|
|
11715
|
+
return await self._target.breakevenAvailable(event);
|
|
11708
11716
|
}, {
|
|
11709
11717
|
fallback: (error) => {
|
|
11710
11718
|
const message = "ActionProxy.breakevenAvailable thrown";
|
|
@@ -11722,9 +11730,17 @@ const CALL_BREAKEVEN_AVAILABLE_FN = functoolsKit.trycatch(async (event, self) =>
|
|
|
11722
11730
|
* Wrapper to call partialProfitAvailable method with error capture.
|
|
11723
11731
|
*/
|
|
11724
11732
|
const CALL_PARTIAL_PROFIT_AVAILABLE_FN = functoolsKit.trycatch(async (event, self) => {
|
|
11725
|
-
if (self._target.partialProfitAvailable) {
|
|
11726
|
-
return
|
|
11733
|
+
if (!self._target.partialProfitAvailable) {
|
|
11734
|
+
return;
|
|
11727
11735
|
}
|
|
11736
|
+
if (await functoolsKit.not(bt.strategyCoreService.hasPendingSignal(event.backtest, event.symbol, {
|
|
11737
|
+
strategyName: event.strategyName,
|
|
11738
|
+
exchangeName: event.exchangeName,
|
|
11739
|
+
frameName: event.frameName,
|
|
11740
|
+
}))) {
|
|
11741
|
+
return;
|
|
11742
|
+
}
|
|
11743
|
+
return await self._target.partialProfitAvailable(event);
|
|
11728
11744
|
}, {
|
|
11729
11745
|
fallback: (error) => {
|
|
11730
11746
|
const message = "ActionProxy.partialProfitAvailable thrown";
|
|
@@ -11742,9 +11758,17 @@ const CALL_PARTIAL_PROFIT_AVAILABLE_FN = functoolsKit.trycatch(async (event, sel
|
|
|
11742
11758
|
* Wrapper to call partialLossAvailable method with error capture.
|
|
11743
11759
|
*/
|
|
11744
11760
|
const CALL_PARTIAL_LOSS_AVAILABLE_FN = functoolsKit.trycatch(async (event, self) => {
|
|
11745
|
-
if (self._target.partialLossAvailable) {
|
|
11746
|
-
return
|
|
11761
|
+
if (!self._target.partialLossAvailable) {
|
|
11762
|
+
return;
|
|
11763
|
+
}
|
|
11764
|
+
if (await functoolsKit.not(bt.strategyCoreService.hasPendingSignal(event.backtest, event.symbol, {
|
|
11765
|
+
strategyName: event.strategyName,
|
|
11766
|
+
exchangeName: event.exchangeName,
|
|
11767
|
+
frameName: event.frameName,
|
|
11768
|
+
}))) {
|
|
11769
|
+
return;
|
|
11747
11770
|
}
|
|
11771
|
+
return await self._target.partialLossAvailable(event);
|
|
11748
11772
|
}, {
|
|
11749
11773
|
fallback: (error) => {
|
|
11750
11774
|
const message = "ActionProxy.partialLossAvailable thrown";
|
|
@@ -35753,7 +35777,16 @@ function listenValidation(fn) {
|
|
|
35753
35777
|
*/
|
|
35754
35778
|
function listenPartialProfitAvailable(fn) {
|
|
35755
35779
|
bt.loggerService.log(LISTEN_PARTIAL_PROFIT_METHOD_NAME);
|
|
35756
|
-
|
|
35780
|
+
const wrappedFn = async (event) => {
|
|
35781
|
+
if (await bt.strategyCoreService.hasPendingSignal(event.backtest, event.symbol, {
|
|
35782
|
+
strategyName: event.strategyName,
|
|
35783
|
+
exchangeName: event.exchangeName,
|
|
35784
|
+
frameName: event.frameName,
|
|
35785
|
+
})) {
|
|
35786
|
+
await fn(event);
|
|
35787
|
+
}
|
|
35788
|
+
};
|
|
35789
|
+
return partialProfitSubject.subscribe(functoolsKit.queued(wrappedFn));
|
|
35757
35790
|
}
|
|
35758
35791
|
/**
|
|
35759
35792
|
* Subscribes to filtered partial profit level events with one-time execution.
|
|
@@ -35822,7 +35855,16 @@ function listenPartialProfitAvailableOnce(filterFn, fn) {
|
|
|
35822
35855
|
*/
|
|
35823
35856
|
function listenPartialLossAvailable(fn) {
|
|
35824
35857
|
bt.loggerService.log(LISTEN_PARTIAL_LOSS_METHOD_NAME);
|
|
35825
|
-
|
|
35858
|
+
const wrappedFn = async (event) => {
|
|
35859
|
+
if (await bt.strategyCoreService.hasPendingSignal(event.backtest, event.symbol, {
|
|
35860
|
+
strategyName: event.strategyName,
|
|
35861
|
+
exchangeName: event.exchangeName,
|
|
35862
|
+
frameName: event.frameName,
|
|
35863
|
+
})) {
|
|
35864
|
+
await fn(event);
|
|
35865
|
+
}
|
|
35866
|
+
};
|
|
35867
|
+
return partialLossSubject.subscribe(functoolsKit.queued(wrappedFn));
|
|
35826
35868
|
}
|
|
35827
35869
|
/**
|
|
35828
35870
|
* Subscribes to filtered partial loss level events with one-time execution.
|
|
@@ -35893,7 +35935,16 @@ function listenPartialLossAvailableOnce(filterFn, fn) {
|
|
|
35893
35935
|
*/
|
|
35894
35936
|
function listenBreakevenAvailable(fn) {
|
|
35895
35937
|
bt.loggerService.log(LISTEN_BREAKEVEN_METHOD_NAME);
|
|
35896
|
-
|
|
35938
|
+
const wrappedFn = async (event) => {
|
|
35939
|
+
if (await bt.strategyCoreService.hasPendingSignal(event.backtest, event.symbol, {
|
|
35940
|
+
strategyName: event.strategyName,
|
|
35941
|
+
exchangeName: event.exchangeName,
|
|
35942
|
+
frameName: event.frameName,
|
|
35943
|
+
})) {
|
|
35944
|
+
await fn(event);
|
|
35945
|
+
}
|
|
35946
|
+
};
|
|
35947
|
+
return breakevenSubject.subscribe(functoolsKit.queued(wrappedFn));
|
|
35897
35948
|
}
|
|
35898
35949
|
/**
|
|
35899
35950
|
* Subscribes to filtered breakeven protection events with one-time execution.
|
|
@@ -36206,7 +36257,24 @@ function listenActivePingOnce(filterFn, fn) {
|
|
|
36206
36257
|
*/
|
|
36207
36258
|
function listenStrategyCommit(fn) {
|
|
36208
36259
|
bt.loggerService.log(LISTEN_STRATEGY_COMMIT_METHOD_NAME);
|
|
36209
|
-
|
|
36260
|
+
const wrappedFn = async (event) => {
|
|
36261
|
+
if (event.action === "cancel-scheduled") {
|
|
36262
|
+
await fn(event);
|
|
36263
|
+
return;
|
|
36264
|
+
}
|
|
36265
|
+
if (event.action === "close-pending") {
|
|
36266
|
+
await fn(event);
|
|
36267
|
+
return;
|
|
36268
|
+
}
|
|
36269
|
+
if (await bt.strategyCoreService.hasPendingSignal(event.backtest, event.symbol, {
|
|
36270
|
+
strategyName: event.strategyName,
|
|
36271
|
+
exchangeName: event.exchangeName,
|
|
36272
|
+
frameName: event.frameName,
|
|
36273
|
+
})) {
|
|
36274
|
+
await fn(event);
|
|
36275
|
+
}
|
|
36276
|
+
};
|
|
36277
|
+
return strategyCommitSubject.subscribe(functoolsKit.queued(wrappedFn));
|
|
36210
36278
|
}
|
|
36211
36279
|
/**
|
|
36212
36280
|
* Subscribes to filtered strategy management events with one-time execution.
|
|
@@ -36307,7 +36375,16 @@ function listenSyncOnce(filterFn, fn) {
|
|
|
36307
36375
|
*/
|
|
36308
36376
|
function listenHighestProfit(fn) {
|
|
36309
36377
|
bt.loggerService.log(LISTEN_HIGHEST_PROFIT_METHOD_NAME);
|
|
36310
|
-
|
|
36378
|
+
const wrappedFn = async (event) => {
|
|
36379
|
+
if (await bt.strategyCoreService.hasPendingSignal(event.backtest, event.symbol, {
|
|
36380
|
+
strategyName: event.strategyName,
|
|
36381
|
+
exchangeName: event.exchangeName,
|
|
36382
|
+
frameName: event.frameName,
|
|
36383
|
+
})) {
|
|
36384
|
+
await fn(event);
|
|
36385
|
+
}
|
|
36386
|
+
};
|
|
36387
|
+
return highestProfitSubject.subscribe(functoolsKit.queued(wrappedFn));
|
|
36311
36388
|
}
|
|
36312
36389
|
/**
|
|
36313
36390
|
* Subscribes to filtered highest profit events with one-time execution.
|
package/build/index.mjs
CHANGED
|
@@ -11682,9 +11682,17 @@ const CALL_SIGNAL_BACKTEST_FN = trycatch(async (event, self) => {
|
|
|
11682
11682
|
* Wrapper to call breakevenAvailable method with error capture.
|
|
11683
11683
|
*/
|
|
11684
11684
|
const CALL_BREAKEVEN_AVAILABLE_FN = trycatch(async (event, self) => {
|
|
11685
|
-
if (self._target.breakevenAvailable) {
|
|
11686
|
-
return
|
|
11685
|
+
if (!self._target.breakevenAvailable) {
|
|
11686
|
+
return;
|
|
11687
11687
|
}
|
|
11688
|
+
if (await not(bt.strategyCoreService.hasPendingSignal(event.backtest, event.symbol, {
|
|
11689
|
+
strategyName: event.strategyName,
|
|
11690
|
+
exchangeName: event.exchangeName,
|
|
11691
|
+
frameName: event.frameName,
|
|
11692
|
+
}))) {
|
|
11693
|
+
return;
|
|
11694
|
+
}
|
|
11695
|
+
return await self._target.breakevenAvailable(event);
|
|
11688
11696
|
}, {
|
|
11689
11697
|
fallback: (error) => {
|
|
11690
11698
|
const message = "ActionProxy.breakevenAvailable thrown";
|
|
@@ -11702,9 +11710,17 @@ const CALL_BREAKEVEN_AVAILABLE_FN = trycatch(async (event, self) => {
|
|
|
11702
11710
|
* Wrapper to call partialProfitAvailable method with error capture.
|
|
11703
11711
|
*/
|
|
11704
11712
|
const CALL_PARTIAL_PROFIT_AVAILABLE_FN = trycatch(async (event, self) => {
|
|
11705
|
-
if (self._target.partialProfitAvailable) {
|
|
11706
|
-
return
|
|
11713
|
+
if (!self._target.partialProfitAvailable) {
|
|
11714
|
+
return;
|
|
11707
11715
|
}
|
|
11716
|
+
if (await not(bt.strategyCoreService.hasPendingSignal(event.backtest, event.symbol, {
|
|
11717
|
+
strategyName: event.strategyName,
|
|
11718
|
+
exchangeName: event.exchangeName,
|
|
11719
|
+
frameName: event.frameName,
|
|
11720
|
+
}))) {
|
|
11721
|
+
return;
|
|
11722
|
+
}
|
|
11723
|
+
return await self._target.partialProfitAvailable(event);
|
|
11708
11724
|
}, {
|
|
11709
11725
|
fallback: (error) => {
|
|
11710
11726
|
const message = "ActionProxy.partialProfitAvailable thrown";
|
|
@@ -11722,9 +11738,17 @@ const CALL_PARTIAL_PROFIT_AVAILABLE_FN = trycatch(async (event, self) => {
|
|
|
11722
11738
|
* Wrapper to call partialLossAvailable method with error capture.
|
|
11723
11739
|
*/
|
|
11724
11740
|
const CALL_PARTIAL_LOSS_AVAILABLE_FN = trycatch(async (event, self) => {
|
|
11725
|
-
if (self._target.partialLossAvailable) {
|
|
11726
|
-
return
|
|
11741
|
+
if (!self._target.partialLossAvailable) {
|
|
11742
|
+
return;
|
|
11743
|
+
}
|
|
11744
|
+
if (await not(bt.strategyCoreService.hasPendingSignal(event.backtest, event.symbol, {
|
|
11745
|
+
strategyName: event.strategyName,
|
|
11746
|
+
exchangeName: event.exchangeName,
|
|
11747
|
+
frameName: event.frameName,
|
|
11748
|
+
}))) {
|
|
11749
|
+
return;
|
|
11727
11750
|
}
|
|
11751
|
+
return await self._target.partialLossAvailable(event);
|
|
11728
11752
|
}, {
|
|
11729
11753
|
fallback: (error) => {
|
|
11730
11754
|
const message = "ActionProxy.partialLossAvailable thrown";
|
|
@@ -35733,7 +35757,16 @@ function listenValidation(fn) {
|
|
|
35733
35757
|
*/
|
|
35734
35758
|
function listenPartialProfitAvailable(fn) {
|
|
35735
35759
|
bt.loggerService.log(LISTEN_PARTIAL_PROFIT_METHOD_NAME);
|
|
35736
|
-
|
|
35760
|
+
const wrappedFn = async (event) => {
|
|
35761
|
+
if (await bt.strategyCoreService.hasPendingSignal(event.backtest, event.symbol, {
|
|
35762
|
+
strategyName: event.strategyName,
|
|
35763
|
+
exchangeName: event.exchangeName,
|
|
35764
|
+
frameName: event.frameName,
|
|
35765
|
+
})) {
|
|
35766
|
+
await fn(event);
|
|
35767
|
+
}
|
|
35768
|
+
};
|
|
35769
|
+
return partialProfitSubject.subscribe(queued(wrappedFn));
|
|
35737
35770
|
}
|
|
35738
35771
|
/**
|
|
35739
35772
|
* Subscribes to filtered partial profit level events with one-time execution.
|
|
@@ -35802,7 +35835,16 @@ function listenPartialProfitAvailableOnce(filterFn, fn) {
|
|
|
35802
35835
|
*/
|
|
35803
35836
|
function listenPartialLossAvailable(fn) {
|
|
35804
35837
|
bt.loggerService.log(LISTEN_PARTIAL_LOSS_METHOD_NAME);
|
|
35805
|
-
|
|
35838
|
+
const wrappedFn = async (event) => {
|
|
35839
|
+
if (await bt.strategyCoreService.hasPendingSignal(event.backtest, event.symbol, {
|
|
35840
|
+
strategyName: event.strategyName,
|
|
35841
|
+
exchangeName: event.exchangeName,
|
|
35842
|
+
frameName: event.frameName,
|
|
35843
|
+
})) {
|
|
35844
|
+
await fn(event);
|
|
35845
|
+
}
|
|
35846
|
+
};
|
|
35847
|
+
return partialLossSubject.subscribe(queued(wrappedFn));
|
|
35806
35848
|
}
|
|
35807
35849
|
/**
|
|
35808
35850
|
* Subscribes to filtered partial loss level events with one-time execution.
|
|
@@ -35873,7 +35915,16 @@ function listenPartialLossAvailableOnce(filterFn, fn) {
|
|
|
35873
35915
|
*/
|
|
35874
35916
|
function listenBreakevenAvailable(fn) {
|
|
35875
35917
|
bt.loggerService.log(LISTEN_BREAKEVEN_METHOD_NAME);
|
|
35876
|
-
|
|
35918
|
+
const wrappedFn = async (event) => {
|
|
35919
|
+
if (await bt.strategyCoreService.hasPendingSignal(event.backtest, event.symbol, {
|
|
35920
|
+
strategyName: event.strategyName,
|
|
35921
|
+
exchangeName: event.exchangeName,
|
|
35922
|
+
frameName: event.frameName,
|
|
35923
|
+
})) {
|
|
35924
|
+
await fn(event);
|
|
35925
|
+
}
|
|
35926
|
+
};
|
|
35927
|
+
return breakevenSubject.subscribe(queued(wrappedFn));
|
|
35877
35928
|
}
|
|
35878
35929
|
/**
|
|
35879
35930
|
* Subscribes to filtered breakeven protection events with one-time execution.
|
|
@@ -36186,7 +36237,24 @@ function listenActivePingOnce(filterFn, fn) {
|
|
|
36186
36237
|
*/
|
|
36187
36238
|
function listenStrategyCommit(fn) {
|
|
36188
36239
|
bt.loggerService.log(LISTEN_STRATEGY_COMMIT_METHOD_NAME);
|
|
36189
|
-
|
|
36240
|
+
const wrappedFn = async (event) => {
|
|
36241
|
+
if (event.action === "cancel-scheduled") {
|
|
36242
|
+
await fn(event);
|
|
36243
|
+
return;
|
|
36244
|
+
}
|
|
36245
|
+
if (event.action === "close-pending") {
|
|
36246
|
+
await fn(event);
|
|
36247
|
+
return;
|
|
36248
|
+
}
|
|
36249
|
+
if (await bt.strategyCoreService.hasPendingSignal(event.backtest, event.symbol, {
|
|
36250
|
+
strategyName: event.strategyName,
|
|
36251
|
+
exchangeName: event.exchangeName,
|
|
36252
|
+
frameName: event.frameName,
|
|
36253
|
+
})) {
|
|
36254
|
+
await fn(event);
|
|
36255
|
+
}
|
|
36256
|
+
};
|
|
36257
|
+
return strategyCommitSubject.subscribe(queued(wrappedFn));
|
|
36190
36258
|
}
|
|
36191
36259
|
/**
|
|
36192
36260
|
* Subscribes to filtered strategy management events with one-time execution.
|
|
@@ -36287,7 +36355,16 @@ function listenSyncOnce(filterFn, fn) {
|
|
|
36287
36355
|
*/
|
|
36288
36356
|
function listenHighestProfit(fn) {
|
|
36289
36357
|
bt.loggerService.log(LISTEN_HIGHEST_PROFIT_METHOD_NAME);
|
|
36290
|
-
|
|
36358
|
+
const wrappedFn = async (event) => {
|
|
36359
|
+
if (await bt.strategyCoreService.hasPendingSignal(event.backtest, event.symbol, {
|
|
36360
|
+
strategyName: event.strategyName,
|
|
36361
|
+
exchangeName: event.exchangeName,
|
|
36362
|
+
frameName: event.frameName,
|
|
36363
|
+
})) {
|
|
36364
|
+
await fn(event);
|
|
36365
|
+
}
|
|
36366
|
+
};
|
|
36367
|
+
return highestProfitSubject.subscribe(queued(wrappedFn));
|
|
36291
36368
|
}
|
|
36292
36369
|
/**
|
|
36293
36370
|
* Subscribes to filtered highest profit events with one-time execution.
|