@quantform/core 0.3.251 → 0.3.255
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/dist/adapter/backtester/backtester-cursor.spec.js.map +1 -1
- package/dist/adapter/backtester/backtester-streamer.js +3 -0
- package/dist/adapter/backtester/backtester-streamer.js.map +1 -1
- package/dist/bootstrap.d.ts +11 -0
- package/dist/bootstrap.js +58 -0
- package/dist/bootstrap.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/ipc.js +21 -37
- package/dist/ipc.js.map +1 -1
- package/dist/session/session.spec.js +2 -2
- package/dist/session/session.spec.js.map +1 -1
- package/dist/store/event/store-balance.event.d.ts +5 -6
- package/dist/store/event/store-balance.event.js +8 -8
- package/dist/store/event/store-balance.event.js.map +1 -1
- package/dist/store/event/store-candle.event.d.ts +2 -1
- package/dist/store/event/store-candle.event.js +25 -19
- package/dist/store/event/store-candle.event.js.map +1 -1
- package/dist/store/event/store-candle.event.spec.js +7 -8
- package/dist/store/event/store-candle.event.spec.js.map +1 -1
- package/dist/store/event/store-instrument.event.d.ts +6 -6
- package/dist/store/event/store-instrument.event.js +7 -7
- package/dist/store/event/store-instrument.event.js.map +1 -1
- package/dist/store/event/store-order.event.d.ts +9 -9
- package/dist/store/event/store-order.event.js +16 -16
- package/dist/store/event/store-order.event.js.map +1 -1
- package/dist/store/event/store-order.event.spec.js +7 -7
- package/dist/store/event/store-order.event.spec.js.map +1 -1
- package/dist/store/event/store-orderbook.event.d.ts +2 -3
- package/dist/store/event/store-orderbook.event.js +2 -2
- package/dist/store/event/store-orderbook.event.js.map +1 -1
- package/dist/store/event/store-position.event.d.ts +3 -3
- package/dist/store/event/store-position.event.js +6 -5
- package/dist/store/event/store-position.event.js.map +1 -1
- package/dist/store/event/store-trade.event.d.ts +2 -3
- package/dist/store/event/store-trade.event.js +2 -2
- package/dist/store/event/store-trade.event.js.map +1 -1
- package/dist/store/event/store-trade.event.spec.js +16 -17
- package/dist/store/event/store-trade.event.spec.js.map +1 -1
- package/dist/store/store.d.ts +23 -20
- package/dist/store/store.js +29 -28
- package/dist/store/store.js.map +1 -1
- package/dist/store/store.state.d.ts +5 -1
- package/dist/store/store.state.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/adapter/backtester/backtester-cursor.spec.ts +2 -2
- package/src/adapter/backtester/backtester-streamer.ts +5 -1
- package/src/bootstrap.ts +103 -0
- package/src/index.ts +1 -1
- package/src/ipc.ts +22 -40
- package/src/session/session.spec.ts +2 -4
- package/src/store/event/store-balance.event.ts +25 -9
- package/src/store/event/store-candle.event.spec.ts +8 -10
- package/src/store/event/store-candle.event.ts +44 -30
- package/src/store/event/store-instrument.event.ts +12 -7
- package/src/store/event/store-order.event.spec.ts +8 -8
- package/src/store/event/store-order.event.ts +46 -17
- package/src/store/event/store-orderbook.event.ts +7 -3
- package/src/store/event/store-position.event.ts +15 -7
- package/src/store/event/store-trade.event.spec.ts +18 -20
- package/src/store/event/store-trade.event.ts +7 -3
- package/src/store/store.state.ts +8 -2
- package/src/store/store.ts +33 -31
- package/dist/bin.d.ts +0 -5
- package/dist/bin.js +0 -28
- package/dist/bin.js.map +0 -1
- package/src/bin.ts +0 -71
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backtester-cursor.spec.js","sourceRoot":"","sources":["../../../src/adapter/backtester/backtester-cursor.spec.ts"],"names":[],"mappings":";;AAAA,
|
|
1
|
+
{"version":3,"file":"backtester-cursor.spec.js","sourceRoot":"","sources":["../../../src/adapter/backtester/backtester-cursor.spec.ts"],"names":[],"mappings":";;AAAA,yCAA4C;AAC5C,2CAAsD;AACtD,6CAAoD;AACpD,2DAAuD;AAEvD,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,IAAI,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,UAAU,GAAG,IAAA,qBAAY,EAAC,kBAAkB,CAAC,CAAC;QACpD,MAAM,IAAI,GAAG,IAAI,cAAI,CAAC,IAAI,yBAAe,EAAE,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,IAAI,oCAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAEtD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,IAAI,uBAAe,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACxC,IAAI,uBAAe,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACxC,IAAI,uBAAe,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACxC,IAAI,uBAAe,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACxC,IAAI,uBAAe,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACxC,IAAI,uBAAe,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACxC,IAAI,uBAAe,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACxC,IAAI,uBAAe,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;SACzC,CAAC,CAAC;QAEH,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEjC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAEzC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEjC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAEzC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAElC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -12,6 +12,9 @@ class BacktesterStreamer {
|
|
|
12
12
|
this.cursor = {};
|
|
13
13
|
this.stopAcquire = 1;
|
|
14
14
|
this.sequence = 0;
|
|
15
|
+
if (options.from == undefined || options.to == undefined) {
|
|
16
|
+
throw new Error('invalid backtest options, please provide from and to period.');
|
|
17
|
+
}
|
|
15
18
|
this.timestamp = this.options.from;
|
|
16
19
|
}
|
|
17
20
|
subscribe(instrument) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backtester-streamer.js","sourceRoot":"","sources":["../../../src/adapter/backtester/backtester-streamer.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"backtester-streamer.js","sourceRoot":"","sources":["../../../src/adapter/backtester/backtester-streamer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { BacktesterListener, BacktesterStreamer } from './adapter/backtester';
|
|
2
|
+
import { Session, SessionDescriptor } from './session';
|
|
3
|
+
export declare class Bootstrap {
|
|
4
|
+
readonly descriptor: SessionDescriptor;
|
|
5
|
+
constructor(descriptor: SessionDescriptor);
|
|
6
|
+
useSessionId(id?: number): Bootstrap;
|
|
7
|
+
useBacktestPeriod(from?: number, to?: number): Bootstrap;
|
|
8
|
+
backtest(listener?: BacktesterListener): [Session, BacktesterStreamer];
|
|
9
|
+
paper(): Session;
|
|
10
|
+
live(): Session;
|
|
11
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Bootstrap = void 0;
|
|
4
|
+
const backtester_1 = require("./adapter/backtester");
|
|
5
|
+
const adapter_1 = require("./adapter");
|
|
6
|
+
const paper_1 = require("./adapter/paper");
|
|
7
|
+
const session_1 = require("./session");
|
|
8
|
+
const store_1 = require("./store");
|
|
9
|
+
class Bootstrap {
|
|
10
|
+
constructor(descriptor) {
|
|
11
|
+
this.descriptor = descriptor;
|
|
12
|
+
}
|
|
13
|
+
useSessionId(id) {
|
|
14
|
+
if (id) {
|
|
15
|
+
this.descriptor.id = id;
|
|
16
|
+
}
|
|
17
|
+
return this;
|
|
18
|
+
}
|
|
19
|
+
useBacktestPeriod(from, to) {
|
|
20
|
+
if (from) {
|
|
21
|
+
this.descriptor.options.backtester.from = from;
|
|
22
|
+
}
|
|
23
|
+
if (to) {
|
|
24
|
+
this.descriptor.options.backtester.to = to;
|
|
25
|
+
}
|
|
26
|
+
return this;
|
|
27
|
+
}
|
|
28
|
+
backtest(listener) {
|
|
29
|
+
const store = new store_1.Store();
|
|
30
|
+
const { feed } = this.descriptor;
|
|
31
|
+
const { backtester } = this.descriptor.options;
|
|
32
|
+
const streamer = new backtester_1.BacktesterStreamer(store, feed, backtester, listener);
|
|
33
|
+
const aggregate = new adapter_1.AdapterAggregate(this.descriptor.adapter.map(it => new paper_1.PaperAdapter(new backtester_1.BacktesterAdapter(it, streamer), store, backtester)), store);
|
|
34
|
+
const session = new session_1.Session(store, aggregate, this.descriptor);
|
|
35
|
+
return [session, streamer];
|
|
36
|
+
}
|
|
37
|
+
paper() {
|
|
38
|
+
if (!this.descriptor.options) {
|
|
39
|
+
this.descriptor.options = {};
|
|
40
|
+
}
|
|
41
|
+
if (!this.descriptor.options.paper) {
|
|
42
|
+
this.descriptor.options.paper = {
|
|
43
|
+
balance: {}
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
const store = new store_1.Store();
|
|
47
|
+
const { paper } = this.descriptor.options;
|
|
48
|
+
const aggregate = new adapter_1.AdapterAggregate(this.descriptor.adapter.map(it => new paper_1.PaperAdapter(it, store, paper)), store);
|
|
49
|
+
return new session_1.Session(store, aggregate, this.descriptor);
|
|
50
|
+
}
|
|
51
|
+
live() {
|
|
52
|
+
const store = new store_1.Store();
|
|
53
|
+
const aggregate = new adapter_1.AdapterAggregate(this.descriptor.adapter, store);
|
|
54
|
+
return new session_1.Session(store, aggregate, this.descriptor);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
exports.Bootstrap = Bootstrap;
|
|
58
|
+
//# sourceMappingURL=bootstrap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":";;;AAAA,qDAI8B;AAC9B,uCAA6C;AAC7C,2CAA+C;AAC/C,uCAAuD;AACvD,mCAAgC;AAEhC,MAAa,SAAS;IACpB,YAAqB,UAA6B;QAA7B,eAAU,GAAV,UAAU,CAAmB;IAAG,CAAC;IAMtD,YAAY,CAAC,EAAW;QACtB,IAAI,EAAE,EAAE;YACN,IAAI,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;SACzB;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAOD,iBAAiB,CAAC,IAAa,EAAE,EAAW;QAC1C,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC;SAChD;QAED,IAAI,EAAE,EAAE;YACN,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;SAC5C;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAOD,QAAQ,CAAC,QAA6B;QACpC,MAAM,KAAK,GAAG,IAAI,aAAK,EAAE,CAAC;QAC1B,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;QACjC,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAE/C,MAAM,QAAQ,GAAG,IAAI,+BAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QAE3E,MAAM,SAAS,GAAG,IAAI,0BAAgB,CACpC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CACzB,EAAE,CAAC,EAAE,CAAC,IAAI,oBAAY,CAAC,IAAI,8BAAiB,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,CAC/E,EACD,KAAK,CACN,CAAC;QAEF,MAAM,OAAO,GAAG,IAAI,iBAAO,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAE/D,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC7B,CAAC;IAMD,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;YAC5B,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,EAAE,CAAC;SAC9B;QAED,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE;YAClC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,GAAG;gBAC9B,OAAO,EAAE,EAAE;aACZ,CAAC;SACH;QAED,MAAM,KAAK,GAAG,IAAI,aAAK,EAAE,CAAC;QAC1B,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAE1C,MAAM,SAAS,GAAG,IAAI,0BAAgB,CACpC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,oBAAY,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,EACrE,KAAK,CACN,CAAC;QAEF,OAAO,IAAI,iBAAO,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACxD,CAAC;IAMD,IAAI;QACF,MAAM,KAAK,GAAG,IAAI,aAAK,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,IAAI,0BAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAEvE,OAAO,IAAI,iBAAO,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACxD,CAAC;CACF;AA5FD,8BA4FC"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -20,6 +20,6 @@ __exportStar(require("./session"), exports);
|
|
|
20
20
|
__exportStar(require("./storage"), exports);
|
|
21
21
|
__exportStar(require("./store"), exports);
|
|
22
22
|
__exportStar(require("./store/event"), exports);
|
|
23
|
-
__exportStar(require("./
|
|
23
|
+
__exportStar(require("./bootstrap"), exports);
|
|
24
24
|
__exportStar(require("./ipc"), exports);
|
|
25
25
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAyB;AACzB,2CAAyB;AACzB,4CAA0B;AAC1B,uDAAqC;AACrC,kDAAgC;AAChC,8CAA4B;AAC5B,4CAA0B;AAC1B,4CAA0B;AAC1B,0CAAwB;AACxB,gDAA8B;AAC9B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAyB;AACzB,2CAAyB;AACzB,4CAA0B;AAC1B,uDAAqC;AACrC,kDAAgC;AAChC,8CAA4B;AAC5B,4CAA0B;AAC1B,4CAA0B;AAC1B,0CAAwB;AACxB,gDAA8B;AAC9B,8CAA4B;AAC5B,wCAAsB"}
|
package/dist/ipc.js
CHANGED
|
@@ -13,7 +13,7 @@ exports.run = exports.IpcTaskCommand = exports.IpcFeedCommand = exports.IpcBackt
|
|
|
13
13
|
const domain_1 = require("./domain");
|
|
14
14
|
const topic_1 = require("./shared/topic");
|
|
15
15
|
const shared_1 = require("./shared");
|
|
16
|
-
const
|
|
16
|
+
const bootstrap_1 = require("./bootstrap");
|
|
17
17
|
const path_1 = require("path");
|
|
18
18
|
const minimist = require("minimist");
|
|
19
19
|
const dotenv = require("dotenv");
|
|
@@ -66,16 +66,14 @@ exports.IpcTaskCommand = IpcTaskCommand;
|
|
|
66
66
|
class IpcSessionAccessor {
|
|
67
67
|
}
|
|
68
68
|
class IpcHandler extends topic_1.Topic {
|
|
69
|
-
constructor(
|
|
69
|
+
constructor(bootstrap, ipcSub) {
|
|
70
70
|
super();
|
|
71
|
-
this.
|
|
71
|
+
this.bootstrap = bootstrap;
|
|
72
|
+
this.ipcSub = ipcSub;
|
|
72
73
|
}
|
|
73
74
|
async onLiveMode(command, accessor) {
|
|
74
75
|
var _a;
|
|
75
|
-
|
|
76
|
-
this.descriptor.id = command.id;
|
|
77
|
-
}
|
|
78
|
-
accessor.session = (0, bin_1.live)(this.descriptor);
|
|
76
|
+
accessor.session = this.bootstrap.useSessionId(command.id).live();
|
|
79
77
|
this.emit({
|
|
80
78
|
type: 'live:started',
|
|
81
79
|
session: (_a = accessor.session.descriptor) === null || _a === void 0 ? void 0 : _a.id
|
|
@@ -84,10 +82,7 @@ class IpcHandler extends topic_1.Topic {
|
|
|
84
82
|
}
|
|
85
83
|
async onPaperMode(command, accessor) {
|
|
86
84
|
var _a;
|
|
87
|
-
|
|
88
|
-
this.descriptor.id = command.id;
|
|
89
|
-
}
|
|
90
|
-
accessor.session = (0, bin_1.paper)(this.descriptor);
|
|
85
|
+
accessor.session = this.bootstrap.useSessionId(command.id).paper();
|
|
91
86
|
this.emit({
|
|
92
87
|
type: 'paper:started',
|
|
93
88
|
session: (_a = accessor.session.descriptor) === null || _a === void 0 ? void 0 : _a.id
|
|
@@ -95,22 +90,18 @@ class IpcHandler extends topic_1.Topic {
|
|
|
95
90
|
await accessor.session.awake(this.describe());
|
|
96
91
|
}
|
|
97
92
|
onBacktestMode(command, accessor) {
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
}
|
|
101
|
-
if (command.to) {
|
|
102
|
-
this.descriptor.options.backtester.to = command.to;
|
|
103
|
-
}
|
|
93
|
+
this.bootstrap.useBacktestPeriod(command.from, command.to).backtest();
|
|
94
|
+
const { from, to } = this.bootstrap.descriptor.options.backtester;
|
|
104
95
|
return new Promise(async (resolve) => {
|
|
105
|
-
const [session, streamer] =
|
|
96
|
+
const [session, streamer] = this.bootstrap.backtest({
|
|
106
97
|
onBacktestStarted: (streamer) => {
|
|
107
98
|
var _a;
|
|
108
99
|
this.emit({
|
|
109
100
|
type: 'backtest:started',
|
|
110
101
|
session: (_a = session.descriptor) === null || _a === void 0 ? void 0 : _a.id,
|
|
111
102
|
timestamp: streamer.timestamp,
|
|
112
|
-
from
|
|
113
|
-
to
|
|
103
|
+
from,
|
|
104
|
+
to
|
|
114
105
|
});
|
|
115
106
|
},
|
|
116
107
|
onBacktestUpdated: (streamer) => {
|
|
@@ -119,8 +110,8 @@ class IpcHandler extends topic_1.Topic {
|
|
|
119
110
|
type: 'backtest:updated',
|
|
120
111
|
session: (_a = session.descriptor) === null || _a === void 0 ? void 0 : _a.id,
|
|
121
112
|
timestamp: streamer.timestamp,
|
|
122
|
-
from
|
|
123
|
-
to
|
|
113
|
+
from,
|
|
114
|
+
to
|
|
124
115
|
});
|
|
125
116
|
},
|
|
126
117
|
onBacktestCompleted: async (streamer) => {
|
|
@@ -130,8 +121,8 @@ class IpcHandler extends topic_1.Topic {
|
|
|
130
121
|
type: 'backtest:completed',
|
|
131
122
|
session: (_a = session.descriptor) === null || _a === void 0 ? void 0 : _a.id,
|
|
132
123
|
timestamp: streamer.timestamp,
|
|
133
|
-
from
|
|
134
|
-
to
|
|
124
|
+
from,
|
|
125
|
+
to
|
|
135
126
|
});
|
|
136
127
|
resolve();
|
|
137
128
|
}
|
|
@@ -143,19 +134,12 @@ class IpcHandler extends topic_1.Topic {
|
|
|
143
134
|
}
|
|
144
135
|
async onFeed(command, accessor) {
|
|
145
136
|
var _a;
|
|
146
|
-
|
|
147
|
-
this.descriptor.options = {};
|
|
148
|
-
}
|
|
149
|
-
if (!this.descriptor.options.paper) {
|
|
150
|
-
this.descriptor.options.paper = {
|
|
151
|
-
balance: {}
|
|
152
|
-
};
|
|
153
|
-
}
|
|
154
|
-
accessor.session = (_a = accessor.session) !== null && _a !== void 0 ? _a : (0, bin_1.paper)(this.descriptor);
|
|
137
|
+
accessor.session = (_a = accessor.session) !== null && _a !== void 0 ? _a : this.bootstrap.paper();
|
|
155
138
|
const instrument = (0, domain_1.instrumentOf)(command.instrument);
|
|
139
|
+
const { feed } = accessor.session.descriptor;
|
|
156
140
|
await accessor.session.awake(undefined);
|
|
157
141
|
this.emit({ type: 'feed:started' });
|
|
158
|
-
await accessor.session.aggregate.feed(instrument, command.from, command.to,
|
|
142
|
+
await accessor.session.aggregate.feed(instrument, command.from, command.to, feed, timestamp => this.emit({
|
|
159
143
|
type: 'feed:updated',
|
|
160
144
|
timestamp,
|
|
161
145
|
from: command.from,
|
|
@@ -166,7 +150,7 @@ class IpcHandler extends topic_1.Topic {
|
|
|
166
150
|
}
|
|
167
151
|
async onTask(query, accessor) {
|
|
168
152
|
var _a;
|
|
169
|
-
accessor.session = (_a = accessor.session) !== null && _a !== void 0 ? _a :
|
|
153
|
+
accessor.session = (_a = accessor.session) !== null && _a !== void 0 ? _a : this.bootstrap.live();
|
|
170
154
|
await accessor.session.awake(undefined);
|
|
171
155
|
this.emit({ type: 'task:started', taskName: query.taskName });
|
|
172
156
|
let result = undefined;
|
|
@@ -193,7 +177,7 @@ class IpcHandler extends topic_1.Topic {
|
|
|
193
177
|
if (process.send) {
|
|
194
178
|
process.send(message);
|
|
195
179
|
}
|
|
196
|
-
(_a = this.
|
|
180
|
+
(_a = this.ipcSub) === null || _a === void 0 ? void 0 : _a.emit('message', message);
|
|
197
181
|
}
|
|
198
182
|
}
|
|
199
183
|
__decorate([
|
|
@@ -227,7 +211,7 @@ __decorate([
|
|
|
227
211
|
__metadata("design:returntype", Promise)
|
|
228
212
|
], IpcHandler.prototype, "onTask", null);
|
|
229
213
|
async function run(descriptor, ...commands) {
|
|
230
|
-
const handler = new IpcHandler(descriptor);
|
|
214
|
+
const handler = new IpcHandler(new bootstrap_1.Bootstrap(descriptor), descriptor.ipcSub);
|
|
231
215
|
const accessor = new IpcSessionAccessor();
|
|
232
216
|
const argv = minimist(process.argv.slice(2));
|
|
233
217
|
if (argv.command) {
|
package/dist/ipc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ipc.js","sourceRoot":"","sources":["../src/ipc.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,qCAAwC;AACxC,0CAAuD;AACvD,qCAA2C;AAC3C
|
|
1
|
+
{"version":3,"file":"ipc.js","sourceRoot":"","sources":["../src/ipc.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,14 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const event_1 = require("../store/event");
|
|
4
4
|
const domain_1 = require("../domain");
|
|
5
5
|
const shared_1 = require("../shared");
|
|
6
|
-
const
|
|
6
|
+
const bootstrap_1 = require("../bootstrap");
|
|
7
7
|
describe('session tests', () => {
|
|
8
8
|
const descriptor = {
|
|
9
9
|
id: (0, shared_1.now)(),
|
|
10
10
|
adapter: []
|
|
11
11
|
};
|
|
12
12
|
test('should trigger once', done => {
|
|
13
|
-
const session =
|
|
13
|
+
const session = new bootstrap_1.Bootstrap(descriptor).paper();
|
|
14
14
|
session.instruments().subscribe({
|
|
15
15
|
next: it => {
|
|
16
16
|
expect(it.length).toEqual(2);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.spec.js","sourceRoot":"","sources":["../../src/session/session.spec.ts"],"names":[],"mappings":";;AAAA,0CAAsD;AACtD,sCAA8C;AAC9C,sCAAgC;AAEhC,
|
|
1
|
+
{"version":3,"file":"session.spec.js","sourceRoot":"","sources":["../../src/session/session.spec.ts"],"names":[],"mappings":";;AAAA,0CAAsD;AACtD,sCAA8C;AAC9C,sCAAgC;AAEhC,4CAAyC;AAEzC,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,MAAM,UAAU,GAAsB;QACpC,EAAE,EAAE,IAAA,YAAG,GAAE;QACT,OAAO,EAAE,EAAE;KACZ,CAAC;IAEF,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,EAAE;QACjC,MAAM,OAAO,GAAG,IAAI,qBAAS,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,CAAC;QAElD,OAAO,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC;YAC9B,IAAI,EAAE,EAAE,CAAC,EAAE;gBACT,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC/B,CAAC;YACD,QAAQ,EAAE,IAAI,EAAE;SACjB,CAAC,CAAC;QAEH,OAAO,CAAC,KAAK,CAAC,QAAQ,CACpB,IAAI,4BAAoB,CACtB,IAAA,YAAG,GAAE,EACL,IAAI,cAAK,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,EAC3B,IAAI,cAAK,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EAC1B,IAAI,mBAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EACpB,EAAE,CACH,EACD,IAAI,4BAAoB,CACtB,IAAA,YAAG,GAAE,EACL,IAAI,cAAK,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,EAC5B,IAAI,cAAK,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EAC1B,IAAI,mBAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EACpB,EAAE,CACH,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { timestamp } from '../../shared';
|
|
2
2
|
import { AssetSelector } from '../../domain/asset';
|
|
3
|
-
import {
|
|
4
|
-
import { State } from '../store.state';
|
|
3
|
+
import { State, StateChangeTracker } from '../store.state';
|
|
5
4
|
import { StoreEvent } from './store.event';
|
|
6
5
|
export declare class BalancePatchEvent implements StoreEvent {
|
|
7
6
|
readonly asset: AssetSelector;
|
|
@@ -11,7 +10,7 @@ export declare class BalancePatchEvent implements StoreEvent {
|
|
|
11
10
|
type: string;
|
|
12
11
|
constructor(asset: AssetSelector, free: number, freezed: number, timestamp: timestamp);
|
|
13
12
|
}
|
|
14
|
-
export declare function BalancePatchEventHandler(event: BalancePatchEvent, state: State):
|
|
13
|
+
export declare function BalancePatchEventHandler(event: BalancePatchEvent, state: State, changes: StateChangeTracker): void;
|
|
15
14
|
export declare class BalanceTransactEvent implements StoreEvent {
|
|
16
15
|
readonly asset: AssetSelector;
|
|
17
16
|
readonly amount: number;
|
|
@@ -19,7 +18,7 @@ export declare class BalanceTransactEvent implements StoreEvent {
|
|
|
19
18
|
type: string;
|
|
20
19
|
constructor(asset: AssetSelector, amount: number, timestamp: timestamp);
|
|
21
20
|
}
|
|
22
|
-
export declare function BalanceTransactEventHandler(event: BalanceTransactEvent, state: State):
|
|
21
|
+
export declare function BalanceTransactEventHandler(event: BalanceTransactEvent, state: State, changes: StateChangeTracker): void;
|
|
23
22
|
export declare class BalanceFreezEvent implements StoreEvent {
|
|
24
23
|
readonly asset: AssetSelector;
|
|
25
24
|
readonly amount: number;
|
|
@@ -27,7 +26,7 @@ export declare class BalanceFreezEvent implements StoreEvent {
|
|
|
27
26
|
type: string;
|
|
28
27
|
constructor(asset: AssetSelector, amount: number, timestamp: timestamp);
|
|
29
28
|
}
|
|
30
|
-
export declare function BalanceFreezEventHandler(event: BalanceFreezEvent, state: State):
|
|
29
|
+
export declare function BalanceFreezEventHandler(event: BalanceFreezEvent, state: State, changes: StateChangeTracker): void;
|
|
31
30
|
export declare class BalanceUnfreezEvent implements StoreEvent {
|
|
32
31
|
readonly asset: AssetSelector;
|
|
33
32
|
readonly amount: number;
|
|
@@ -35,4 +34,4 @@ export declare class BalanceUnfreezEvent implements StoreEvent {
|
|
|
35
34
|
type: string;
|
|
36
35
|
constructor(asset: AssetSelector, amount: number, timestamp: timestamp);
|
|
37
36
|
}
|
|
38
|
-
export declare function BalanceUnfreezEventHandler(event: BalanceUnfreezEvent, state: State):
|
|
37
|
+
export declare function BalanceUnfreezEventHandler(event: BalanceUnfreezEvent, state: State, changes: StateChangeTracker): void;
|
|
@@ -27,7 +27,7 @@ BalancePatchEvent = __decorate([
|
|
|
27
27
|
__metadata("design:paramtypes", [asset_1.AssetSelector, Number, Number, Number])
|
|
28
28
|
], BalancePatchEvent);
|
|
29
29
|
exports.BalancePatchEvent = BalancePatchEvent;
|
|
30
|
-
function BalancePatchEventHandler(event, state) {
|
|
30
|
+
function BalancePatchEventHandler(event, state, changes) {
|
|
31
31
|
let balance = state.balance[event.asset.toString()];
|
|
32
32
|
if (!balance) {
|
|
33
33
|
const asset = state.universe.asset[event.asset.toString()];
|
|
@@ -39,7 +39,7 @@ function BalancePatchEventHandler(event, state) {
|
|
|
39
39
|
balance.timestamp = event.timestamp;
|
|
40
40
|
balance.set(event.free, event.freezed);
|
|
41
41
|
state.timestamp = event.timestamp;
|
|
42
|
-
|
|
42
|
+
changes.commit(balance);
|
|
43
43
|
}
|
|
44
44
|
exports.BalancePatchEventHandler = BalancePatchEventHandler;
|
|
45
45
|
let BalanceTransactEvent = class BalanceTransactEvent {
|
|
@@ -55,7 +55,7 @@ BalanceTransactEvent = __decorate([
|
|
|
55
55
|
__metadata("design:paramtypes", [asset_1.AssetSelector, Number, Number])
|
|
56
56
|
], BalanceTransactEvent);
|
|
57
57
|
exports.BalanceTransactEvent = BalanceTransactEvent;
|
|
58
|
-
function BalanceTransactEventHandler(event, state) {
|
|
58
|
+
function BalanceTransactEventHandler(event, state, changes) {
|
|
59
59
|
let balance = state.balance[event.asset.toString()];
|
|
60
60
|
if (!balance) {
|
|
61
61
|
const asset = state.universe.asset[event.asset.toString()];
|
|
@@ -65,7 +65,7 @@ function BalanceTransactEventHandler(event, state) {
|
|
|
65
65
|
balance.timestamp = event.timestamp;
|
|
66
66
|
balance.transact(event.amount);
|
|
67
67
|
state.timestamp = event.timestamp;
|
|
68
|
-
|
|
68
|
+
changes.commit(balance);
|
|
69
69
|
}
|
|
70
70
|
exports.BalanceTransactEventHandler = BalanceTransactEventHandler;
|
|
71
71
|
let BalanceFreezEvent = class BalanceFreezEvent {
|
|
@@ -81,7 +81,7 @@ BalanceFreezEvent = __decorate([
|
|
|
81
81
|
__metadata("design:paramtypes", [asset_1.AssetSelector, Number, Number])
|
|
82
82
|
], BalanceFreezEvent);
|
|
83
83
|
exports.BalanceFreezEvent = BalanceFreezEvent;
|
|
84
|
-
function BalanceFreezEventHandler(event, state) {
|
|
84
|
+
function BalanceFreezEventHandler(event, state, changes) {
|
|
85
85
|
const balance = state.balance[event.asset.toString()];
|
|
86
86
|
if (!balance) {
|
|
87
87
|
throw new Error('invalid balance');
|
|
@@ -89,7 +89,7 @@ function BalanceFreezEventHandler(event, state) {
|
|
|
89
89
|
balance.timestamp = event.timestamp;
|
|
90
90
|
balance.freez(event.amount);
|
|
91
91
|
state.timestamp = event.timestamp;
|
|
92
|
-
|
|
92
|
+
changes.commit(balance);
|
|
93
93
|
}
|
|
94
94
|
exports.BalanceFreezEventHandler = BalanceFreezEventHandler;
|
|
95
95
|
let BalanceUnfreezEvent = class BalanceUnfreezEvent {
|
|
@@ -105,7 +105,7 @@ BalanceUnfreezEvent = __decorate([
|
|
|
105
105
|
__metadata("design:paramtypes", [asset_1.AssetSelector, Number, Number])
|
|
106
106
|
], BalanceUnfreezEvent);
|
|
107
107
|
exports.BalanceUnfreezEvent = BalanceUnfreezEvent;
|
|
108
|
-
function BalanceUnfreezEventHandler(event, state) {
|
|
108
|
+
function BalanceUnfreezEventHandler(event, state, changes) {
|
|
109
109
|
const balance = state.balance[event.asset.toString()];
|
|
110
110
|
if (!balance) {
|
|
111
111
|
throw new Error('invalid balance');
|
|
@@ -113,7 +113,7 @@ function BalanceUnfreezEventHandler(event, state) {
|
|
|
113
113
|
balance.timestamp = event.timestamp;
|
|
114
114
|
balance.unfreez(event.amount);
|
|
115
115
|
state.timestamp = event.timestamp;
|
|
116
|
-
|
|
116
|
+
changes.commit(balance);
|
|
117
117
|
}
|
|
118
118
|
exports.BalanceUnfreezEventHandler = BalanceUnfreezEventHandler;
|
|
119
119
|
//# sourceMappingURL=store-balance.event.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store-balance.event.js","sourceRoot":"","sources":["../../../src/store/event/store-balance.event.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAA2C;AAE3C,8CAAmD;AACnD,kDAA+C;AAQ/C,IAAa,iBAAiB,GAA9B,MAAa,iBAAiB;IAG5B,YACW,KAAoB,EACpB,IAAY,EACZ,OAAe,EACf,SAAoB;QAHpB,UAAK,GAAL,KAAK,CAAe;QACpB,SAAI,GAAJ,IAAI,CAAQ;QACZ,YAAO,GAAP,OAAO,CAAQ;QACf,cAAS,GAAT,SAAS,CAAW;QAN/B,SAAI,GAAG,eAAe,CAAC;IAOpB,CAAC;CACL,CAAA;AATY,iBAAiB;IAD7B,aAAK;qCAKc,qBAAa;GAJpB,iBAAiB,CAS7B;AATY,8CAAiB;AAc9B,SAAgB,wBAAwB,
|
|
1
|
+
{"version":3,"file":"store-balance.event.js","sourceRoot":"","sources":["../../../src/store/event/store-balance.event.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import { timestamp } from '../../shared/datetime';
|
|
|
2
2
|
import { InstrumentSelector } from '../../domain';
|
|
3
3
|
import { State } from '../store.state';
|
|
4
4
|
import { StoreEvent } from './store.event';
|
|
5
|
+
import { StateChangeTracker } from '..';
|
|
5
6
|
export declare class CandleEvent implements StoreEvent {
|
|
6
7
|
readonly instrument: InstrumentSelector;
|
|
7
8
|
readonly timeframe: number;
|
|
@@ -14,4 +15,4 @@ export declare class CandleEvent implements StoreEvent {
|
|
|
14
15
|
type: string;
|
|
15
16
|
constructor(instrument: InstrumentSelector, timeframe: number, open: number, high: number, low: number, close: number, volume: number, timestamp: timestamp);
|
|
16
17
|
}
|
|
17
|
-
export declare function CandleEventHandler(event: CandleEvent, state: State
|
|
18
|
+
export declare function CandleEventHandler(event: CandleEvent, state: State, changes: StateChangeTracker): void;
|
|
@@ -32,26 +32,32 @@ CandleEvent = __decorate([
|
|
|
32
32
|
__metadata("design:paramtypes", [domain_1.InstrumentSelector, Number, Number, Number, Number, Number, Number, Number])
|
|
33
33
|
], CandleEvent);
|
|
34
34
|
exports.CandleEvent = CandleEvent;
|
|
35
|
-
function CandleEventHandler(event, state) {
|
|
35
|
+
function CandleEventHandler(event, state, changes) {
|
|
36
36
|
const instrument = state.universe.instrument[event.instrument.toString()];
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
37
|
+
const patch = (timestamp, rate) => {
|
|
38
|
+
(0, store_trade_event_1.TradePatchEventHandler)({
|
|
39
|
+
type: 'trade-patch',
|
|
40
|
+
instrument: event.instrument,
|
|
41
|
+
quantity: event.volume,
|
|
42
|
+
rate,
|
|
43
|
+
timestamp
|
|
44
|
+
}, state, changes);
|
|
45
|
+
(0, store_orderbook_event_1.OrderbookPatchEventHandler)({
|
|
46
|
+
type: 'orderbook-patch',
|
|
47
|
+
instrument: event.instrument,
|
|
48
|
+
bestAskQuantity: instrument.base.fixed(event.volume * 0.5),
|
|
49
|
+
bestAskRate: rate,
|
|
50
|
+
bestBidQuantity: instrument.base.fixed(event.volume * 0.5),
|
|
51
|
+
bestBidRate: rate,
|
|
52
|
+
timestamp
|
|
53
|
+
}, state, changes);
|
|
54
|
+
state.timestamp = event.timestamp;
|
|
55
|
+
changes.commitPendingChanges();
|
|
56
|
+
};
|
|
57
|
+
patch(event.timestamp, instrument.quote.fixed(event.open));
|
|
58
|
+
patch(event.timestamp, instrument.quote.fixed(event.high));
|
|
59
|
+
patch(event.timestamp, instrument.quote.fixed(event.low));
|
|
60
|
+
patch(event.timestamp, instrument.quote.fixed(event.close));
|
|
55
61
|
}
|
|
56
62
|
exports.CandleEventHandler = CandleEventHandler;
|
|
57
63
|
//# sourceMappingURL=store-candle.event.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store-candle.event.js","sourceRoot":"","sources":["../../../src/store/event/store-candle.event.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2DAA6D;AAC7D,mEAAqE;AAErE,yCAAkD;AAGlD,8CAA2C;
|
|
1
|
+
{"version":3,"file":"store-candle.event.js","sourceRoot":"","sources":["../../../src/store/event/store-candle.event.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2DAA6D;AAC7D,mEAAqE;AAErE,yCAAkD;AAGlD,8CAA2C;AAI3C,IAAa,WAAW,GAAxB,MAAa,WAAW;IAGtB,YACW,UAA8B,EAC9B,SAAiB,EACjB,IAAY,EACZ,IAAY,EACZ,GAAW,EACX,KAAa,EACb,MAAc,EACd,SAAoB;QAPpB,eAAU,GAAV,UAAU,CAAoB;QAC9B,cAAS,GAAT,SAAS,CAAQ;QACjB,SAAI,GAAJ,IAAI,CAAQ;QACZ,SAAI,GAAJ,IAAI,CAAQ;QACZ,QAAG,GAAH,GAAG,CAAQ;QACX,UAAK,GAAL,KAAK,CAAQ;QACb,WAAM,GAAN,MAAM,CAAQ;QACd,cAAS,GAAT,SAAS,CAAW;QAV/B,SAAI,GAAG,QAAQ,CAAC;IAWb,CAAC;CACL,CAAA;AAbY,WAAW;IADvB,aAAK;qCAKmB,2BAAkB;GAJ9B,WAAW,CAavB;AAbY,kCAAW;AAexB,SAAgB,kBAAkB,CAChC,KAAkB,EAClB,KAAY,EACZ,OAA2B;IAE3B,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;IAE1E,MAAM,KAAK,GAAG,CAAC,SAAiB,EAAE,IAAY,EAAE,EAAE;QAEhD,IAAA,0CAAsB,EACpB;YACE,IAAI,EAAE,aAAa;YACnB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,QAAQ,EAAE,KAAK,CAAC,MAAM;YACtB,IAAI;YACJ,SAAS;SACV,EACD,KAAK,EACL,OAAO,CACR,CAAC;QAGF,IAAA,kDAA0B,EACxB;YACE,IAAI,EAAE,iBAAiB;YACvB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,eAAe,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;YAC1D,WAAW,EAAE,IAAI;YACjB,eAAe,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;YAC1D,WAAW,EAAE,IAAI;YACjB,SAAS;SACV,EACD,KAAK,EACL,OAAO,CACR,CAAC;QAEF,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QAElC,OAAO,CAAC,oBAAoB,EAAE,CAAC;IACjC,CAAC,CAAC;IAEF,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3D,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3D,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9D,CAAC;AA7CD,gDA6CC"}
|
|
@@ -2,23 +2,22 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const domain_1 = require("../../domain");
|
|
4
4
|
const _1 = require(".");
|
|
5
|
-
const store_state_1 = require("../store.state");
|
|
6
5
|
const shared_1 = require("../../shared");
|
|
6
|
+
const store_1 = require("../store");
|
|
7
7
|
const instrument = new domain_1.Instrument(new domain_1.Asset('btc', 'binance', 8), new domain_1.Asset('usdt', 'binance', 2), 'binance:btc-usdt');
|
|
8
8
|
describe('candle patch event tests', () => {
|
|
9
9
|
test('should patch trade object', () => {
|
|
10
10
|
const timestamp = (0, shared_1.now)();
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const trade = state.trade[instrument.toString()];
|
|
11
|
+
const store = new store_1.Store();
|
|
12
|
+
store.snapshot.universe.instrument[instrument.toString()] = instrument;
|
|
13
|
+
store.snapshot.subscription.instrument[instrument.toString()] = instrument;
|
|
14
|
+
store.dispatch(new _1.CandleEvent(instrument, 1, 1, 1, 1, 1, 1, timestamp));
|
|
15
|
+
const trade = store.snapshot.trade[instrument.toString()];
|
|
17
16
|
expect(trade.timestamp).toEqual(timestamp);
|
|
18
17
|
expect(trade.instrument.toString()).toEqual(instrument.toString());
|
|
19
18
|
expect(trade.rate).toEqual(1);
|
|
20
19
|
expect(trade.quantity).toEqual(1);
|
|
21
|
-
expect(
|
|
20
|
+
expect(store.snapshot.timestamp).toEqual(timestamp);
|
|
22
21
|
});
|
|
23
22
|
});
|
|
24
23
|
//# sourceMappingURL=store-candle.event.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store-candle.event.spec.js","sourceRoot":"","sources":["../../../src/store/event/store-candle.event.spec.ts"],"names":[],"mappings":";;AAAA,yCAAiD;AACjD,
|
|
1
|
+
{"version":3,"file":"store-candle.event.spec.js","sourceRoot":"","sources":["../../../src/store/event/store-candle.event.spec.ts"],"names":[],"mappings":";;AAAA,yCAAiD;AACjD,wBAAgC;AAChC,yCAAmC;AACnC,oCAAiC;AAEjC,MAAM,UAAU,GAAG,IAAI,mBAAU,CAC/B,IAAI,cAAK,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,EAC9B,IAAI,cAAK,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,EAC/B,kBAAkB,CACnB,CAAC;AAEF,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,IAAI,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACrC,MAAM,SAAS,GAAG,IAAA,YAAG,GAAE,CAAC;QACxB,MAAM,KAAK,GAAG,IAAI,aAAK,EAAE,CAAC;QAE1B,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,GAAG,UAAU,CAAC;QACvE,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,GAAG,UAAU,CAAC;QAE3E,KAAK,CAAC,QAAQ,CAAC,IAAI,cAAW,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;QAEzE,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;QAE1D,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|