@quantform/core 0.3.257 → 0.3.263

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.
Files changed (55) hide show
  1. package/dist/adapter/adapter-aggregate.d.ts +4 -5
  2. package/dist/adapter/adapter-aggregate.js +50 -21
  3. package/dist/adapter/adapter-aggregate.js.map +1 -1
  4. package/dist/adapter/adapter.d.ts +30 -7
  5. package/dist/adapter/adapter.js +29 -2
  6. package/dist/adapter/adapter.js.map +1 -1
  7. package/dist/adapter/backtester/backtester-adapter.d.ts +13 -8
  8. package/dist/adapter/backtester/backtester-adapter.js +25 -32
  9. package/dist/adapter/backtester/backtester-adapter.js.map +1 -1
  10. package/dist/adapter/index.d.ts +0 -1
  11. package/dist/adapter/index.js +0 -1
  12. package/dist/adapter/index.js.map +1 -1
  13. package/dist/adapter/paper/paper-adapter.d.ts +10 -7
  14. package/dist/adapter/paper/paper-adapter.js +24 -42
  15. package/dist/adapter/paper/paper-adapter.js.map +1 -1
  16. package/dist/adapter/paper/paper-adapter.spec.js +25 -7
  17. package/dist/adapter/paper/paper-adapter.spec.js.map +1 -1
  18. package/dist/bootstrap.js +1 -1
  19. package/dist/bootstrap.js.map +1 -1
  20. package/dist/ipc.js +11 -5
  21. package/dist/ipc.js.map +1 -1
  22. package/dist/ipc.spec.js +4 -57
  23. package/dist/ipc.spec.js.map +1 -1
  24. package/dist/session/session.d.ts +4 -7
  25. package/dist/session/session.js +9 -19
  26. package/dist/session/session.js.map +1 -1
  27. package/dist/store/event/store-order.event.js +11 -32
  28. package/dist/store/event/store-order.event.js.map +1 -1
  29. package/dist/store/event/store-order.event.spec.js +2 -2
  30. package/dist/store/event/store-order.event.spec.js.map +1 -1
  31. package/dist/store/store.state.d.ts +1 -6
  32. package/dist/store/store.state.js +1 -6
  33. package/dist/store/store.state.js.map +1 -1
  34. package/dist/tests/backtester-adapter.spec.js +7 -24
  35. package/dist/tests/backtester-adapter.spec.js.map +1 -1
  36. package/dist/tsconfig.tsbuildinfo +1 -1
  37. package/package.json +1 -1
  38. package/src/adapter/adapter-aggregate.ts +55 -75
  39. package/src/adapter/adapter.ts +83 -5
  40. package/src/adapter/backtester/backtester-adapter.ts +39 -19
  41. package/src/adapter/index.ts +0 -1
  42. package/src/adapter/paper/paper-adapter.spec.ts +42 -7
  43. package/src/adapter/paper/paper-adapter.ts +31 -23
  44. package/src/bootstrap.ts +1 -1
  45. package/src/ipc.spec.ts +7 -45
  46. package/src/ipc.ts +6 -6
  47. package/src/session/session.ts +30 -45
  48. package/src/store/event/store-order.event.spec.ts +2 -2
  49. package/src/store/event/store-order.event.ts +11 -38
  50. package/src/store/store.state.ts +1 -12
  51. package/src/tests/backtester-adapter.spec.ts +6 -12
  52. package/dist/adapter/adapter.event.d.ts +0 -43
  53. package/dist/adapter/adapter.event.js +0 -104
  54. package/dist/adapter/adapter.event.js.map +0 -1
  55. package/src/adapter/adapter.event.ts +0 -64
@@ -1,7 +1,6 @@
1
1
  import { Store } from '../store';
2
- import { Adapter } from '.';
2
+ import { Adapter, FeedQuery, HistoryQuery } from '.';
3
3
  import { InstrumentSelector, Order, Candle } from '../domain';
4
- import { Feed } from './../storage';
5
4
  export declare class AdapterAggregate {
6
5
  private readonly store;
7
6
  private readonly adapter;
@@ -12,7 +11,7 @@ export declare class AdapterAggregate {
12
11
  subscribe(selectors: InstrumentSelector[]): Promise<void>;
13
12
  open(order: Order): Promise<void>;
14
13
  cancel(order: Order): Promise<void>;
15
- history(selector: InstrumentSelector, timeframe: number, length: number): Promise<Candle[]>;
16
- feed(selector: InstrumentSelector, from: number, to: number, destination: Feed, callback: (timestamp: number) => void): Promise<void>;
17
- private dispatch;
14
+ history(query: HistoryQuery): Promise<Candle[]>;
15
+ feed(query: FeedQuery): Promise<void>;
16
+ private createContext;
18
17
  }
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AdapterAggregate = void 0;
4
4
  const _1 = require(".");
5
5
  const shared_1 = require("../shared");
6
- const adapter_event_1 = require("./adapter.event");
7
6
  class AdapterAggregate {
8
7
  constructor(adapters, store) {
9
8
  this.store = store;
@@ -11,17 +10,31 @@ class AdapterAggregate {
11
10
  adapters.forEach(it => (this.adapter[it.name] = it));
12
11
  }
13
12
  get(adapterName) {
14
- return this.adapter[adapterName];
13
+ const adapter = this.adapter[adapterName];
14
+ if (!adapter) {
15
+ throw new Error(`Unknown adapter: ${adapterName}. You should provide adapter in session descriptor.`);
16
+ }
17
+ return adapter;
15
18
  }
16
19
  async awake() {
17
- for (const adapter in this.adapter) {
18
- await this.dispatch(adapter, new adapter_event_1.AdapterAwakeCommand());
19
- await this.dispatch(adapter, new adapter_event_1.AdapterAccountCommand());
20
+ for (const adapter of Object.values(this.adapter)) {
21
+ try {
22
+ await adapter.awake(this.createContext(adapter));
23
+ await adapter.account();
24
+ }
25
+ catch (e) {
26
+ shared_1.Logger.error(e);
27
+ }
20
28
  }
21
29
  }
22
30
  async dispose() {
23
- for (const adapter in this.adapter) {
24
- await this.dispatch(adapter, new adapter_event_1.AdapterDisposeCommand());
31
+ for (const adapter of Object.values(this.adapter)) {
32
+ try {
33
+ await adapter.dispose();
34
+ }
35
+ catch (e) {
36
+ shared_1.Logger.error(e);
37
+ }
25
38
  }
26
39
  }
27
40
  async subscribe(selectors) {
@@ -38,33 +51,49 @@ class AdapterAggregate {
38
51
  return aggregate;
39
52
  }, {});
40
53
  for (const adapterName in grouped) {
41
- await this.dispatch(adapterName, new adapter_event_1.AdapterSubscribeCommand(grouped[adapterName]));
54
+ try {
55
+ await this.get(adapterName).subscribe(grouped[adapterName]);
56
+ }
57
+ catch (e) {
58
+ shared_1.Logger.error(e);
59
+ }
42
60
  }
43
61
  }
44
62
  open(order) {
45
- return this.dispatch(order.instrument.base.adapter, new adapter_event_1.AdapterOrderOpenCommand(order));
63
+ try {
64
+ return this.get(order.instrument.base.adapter).open(order);
65
+ }
66
+ catch (e) {
67
+ shared_1.Logger.error(e);
68
+ }
46
69
  }
47
70
  cancel(order) {
48
- return this.dispatch(order.instrument.base.adapter, new adapter_event_1.AdapterOrderCancelCommand(order));
49
- }
50
- history(selector, timeframe, length) {
51
- return this.dispatch(selector.base.adapter, new adapter_event_1.AdapterHistoryQuery(selector, timeframe, length));
52
- }
53
- feed(selector, from, to, destination, callback) {
54
- return this.dispatch(selector.base.adapter, new adapter_event_1.AdapterFeedCommand(selector, from, to, destination, callback));
71
+ try {
72
+ return this.get(order.instrument.base.adapter).cancel(order);
73
+ }
74
+ catch (e) {
75
+ shared_1.Logger.error(e);
76
+ }
55
77
  }
56
- dispatch(adapterName, command) {
57
- const adapter = this.get(adapterName);
58
- if (!adapter) {
59
- throw new Error(`Unknown adapter: ${adapterName}. You should provide adapter in session descriptor.`);
78
+ history(query) {
79
+ try {
80
+ return this.get(query.instrument.base.adapter).history(query);
60
81
  }
82
+ catch (e) {
83
+ shared_1.Logger.error(e);
84
+ }
85
+ }
86
+ feed(query) {
61
87
  try {
62
- return adapter.dispatch(command, new _1.AdapterContext(adapter, this.store));
88
+ return this.get(query.instrument.base.adapter).feed(query);
63
89
  }
64
90
  catch (e) {
65
91
  shared_1.Logger.error(e);
66
92
  }
67
93
  }
94
+ createContext(adapter) {
95
+ return new _1.AdapterContext(adapter, this.store);
96
+ }
68
97
  }
69
98
  exports.AdapterAggregate = AdapterAggregate;
70
99
  //# sourceMappingURL=adapter-aggregate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapter-aggregate.js","sourceRoot":"","sources":["../../src/adapter/adapter-aggregate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapter-aggregate.js","sourceRoot":"","sources":["../../src/adapter/adapter-aggregate.ts"],"names":[],"mappings":";;;AACA,wBAAqE;AAGrE,sCAAmC;AAMnC,MAAa,gBAAgB;IAG3B,YAAY,QAAmB,EAAmB,KAAY;QAAZ,UAAK,GAAL,KAAK,CAAO;QAF7C,YAAO,GAA4B,EAAE,CAAC;QAGrD,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACvD,CAAC;IAOD,GAAG,CAAC,WAAmB;QACrB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAE1C,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,IAAI,KAAK,CACb,oBAAoB,WAAW,qDAAqD,CACrF,CAAC;SACH;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAKD,KAAK,CAAC,KAAK;QACT,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YACjD,IAAI;gBACF,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;gBACjD,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;aACzB;YAAC,OAAO,CAAC,EAAE;gBACV,eAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;aACjB;SACF;IACH,CAAC;IAKD,KAAK,CAAC,OAAO;QACX,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YACjD,IAAI;gBACF,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;aACzB;YAAC,OAAO,CAAC,EAAE;gBACV,eAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;aACjB;SACF;IACH,CAAC;IAMD,KAAK,CAAC,SAAS,CAAC,SAA+B;QAC7C,MAAM,OAAO,GAAG,SAAS;aACtB,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,IAAI,CAAC;aACxB,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE;YACxB,MAAM,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;YAEhC,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE;gBACtB,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aAC7B;iBAAM;gBACL,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;aAC3B;YAED,OAAO,SAAS,CAAC;QACnB,CAAC,EAAE,EAAE,CAAC,CAAC;QAET,KAAK,MAAM,WAAW,IAAI,OAAO,EAAE;YACjC,IAAI;gBACF,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;aAC7D;YAAC,OAAO,CAAC,EAAE;gBACV,eAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;aACjB;SACF;IACH,CAAC;IAMD,IAAI,CAAC,KAAY;QACf,IAAI;YACF,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC5D;QAAC,OAAO,CAAC,EAAE;YACV,eAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACjB;IACH,CAAC;IAKD,MAAM,CAAC,KAAY;QACjB,IAAI;YACF,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAC9D;QAAC,OAAO,CAAC,EAAE;YACV,eAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACjB;IACH,CAAC;IAMD,OAAO,CAAC,KAAmB;QACzB,IAAI;YACF,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SAC/D;QAAC,OAAO,CAAC,EAAE;YACV,eAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACjB;IACH,CAAC;IAMD,IAAI,CAAC,KAAgB;QACnB,IAAI;YACF,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC5D;QAAC,OAAO,CAAC,EAAE;YACV,eAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACjB;IACH,CAAC;IAOO,aAAa,CAAC,OAAgB;QACpC,OAAO,IAAI,iBAAc,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC;CACF;AAtID,4CAsIC"}
@@ -1,18 +1,41 @@
1
1
  import { timestamp } from '../shared';
2
2
  import { PaperExecutor } from './paper/executor/paper-executor';
3
3
  import { PaperAdapter } from './paper';
4
- import { Topic } from '../shared/topic';
5
- import { Store } from '../store';
4
+ import { State, Store } from '../store';
5
+ import { InstrumentSelector, Order, Candle } from '../domain';
6
+ import { Feed } from '../storage';
7
+ import { StoreEvent } from '../store/event';
6
8
  export declare class AdapterContext {
7
9
  private readonly adapter;
8
- readonly store: Store;
10
+ private readonly store;
9
11
  get timestamp(): timestamp;
12
+ get snapshot(): State;
10
13
  constructor(adapter: Adapter, store: Store);
14
+ dispatch(...events: StoreEvent[]): void;
11
15
  }
12
- export declare abstract class Adapter extends Topic<{
13
- type: string;
14
- }, AdapterContext> {
16
+ export declare type HistoryQuery = {
17
+ instrument: InstrumentSelector;
18
+ timeframe: number;
19
+ length: number;
20
+ };
21
+ export declare type FeedQuery = {
22
+ instrument: InstrumentSelector;
23
+ from: timestamp;
24
+ to: timestamp;
25
+ destination: Feed;
26
+ callback: (timestamp: number) => void;
27
+ };
28
+ export declare abstract class Adapter {
29
+ context: AdapterContext;
15
30
  abstract name: string;
16
- abstract createPaperExecutor(adapter: PaperAdapter): PaperExecutor;
17
31
  timestamp(): timestamp;
32
+ awake(context: AdapterContext): Promise<void>;
33
+ dispose(): Promise<void>;
34
+ subscribe(instruments: InstrumentSelector[]): Promise<void>;
35
+ account(): Promise<void>;
36
+ open(order: Order): Promise<void>;
37
+ cancel(order: Order): Promise<void>;
38
+ history(query: HistoryQuery): Promise<Candle[]>;
39
+ feed(query: FeedQuery): Promise<void>;
40
+ abstract createPaperExecutor(adapter: PaperAdapter): PaperExecutor;
18
41
  }
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Adapter = exports.AdapterContext = void 0;
4
4
  const shared_1 = require("../shared");
5
- const topic_1 = require("../shared/topic");
6
5
  class AdapterContext {
7
6
  constructor(adapter, store) {
8
7
  this.adapter = adapter;
@@ -11,12 +10,40 @@ class AdapterContext {
11
10
  get timestamp() {
12
11
  return this.adapter.timestamp();
13
12
  }
13
+ get snapshot() {
14
+ return this.store.snapshot;
15
+ }
16
+ dispatch(...events) {
17
+ return this.store.dispatch(...events);
18
+ }
14
19
  }
15
20
  exports.AdapterContext = AdapterContext;
16
- class Adapter extends topic_1.Topic {
21
+ class Adapter {
17
22
  timestamp() {
18
23
  return (0, shared_1.now)();
19
24
  }
25
+ async awake(context) {
26
+ this.context = context;
27
+ }
28
+ async dispose() { }
29
+ subscribe(instruments) {
30
+ throw new Error('method not implemented');
31
+ }
32
+ account() {
33
+ throw new Error('method not implemented');
34
+ }
35
+ open(order) {
36
+ throw new Error('method not implemented');
37
+ }
38
+ cancel(order) {
39
+ throw new Error('method not implemented');
40
+ }
41
+ history(query) {
42
+ throw new Error('method not implemented');
43
+ }
44
+ feed(query) {
45
+ throw new Error('method not implemented');
46
+ }
20
47
  }
21
48
  exports.Adapter = Adapter;
22
49
  //# sourceMappingURL=adapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/adapter/adapter.ts"],"names":[],"mappings":";;;AAAA,sCAA2C;AAG3C,2CAAwC;AAMxC,MAAa,cAAc;IAQzB,YAA6B,OAAgB,EAAW,KAAY;QAAvC,YAAO,GAAP,OAAO,CAAS;QAAW,UAAK,GAAL,KAAK,CAAO;IAAG,CAAC;IAJxE,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;IAClC,CAAC;CAGF;AATD,wCASC;AAMD,MAAsB,OAAQ,SAAQ,aAAuC;IAI3E,SAAS;QACP,OAAO,IAAA,YAAG,GAAE,CAAC;IACf,CAAC;CACF;AAPD,0BAOC"}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/adapter/adapter.ts"],"names":[],"mappings":";;;AAAA,sCAA2C;AAW3C,MAAa,cAAc;IAYzB,YAA6B,OAAgB,EAAmB,KAAY;QAA/C,YAAO,GAAP,OAAO,CAAS;QAAmB,UAAK,GAAL,KAAK,CAAO;IAAG,CAAC;IARhF,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;IAClC,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC7B,CAAC;IAID,QAAQ,CAAC,GAAG,MAAoB;QAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,CAAC;IACxC,CAAC;CACF;AAjBD,wCAiBC;AAoBD,MAAsB,OAAO;IAK3B,SAAS;QACP,OAAO,IAAA,YAAG,GAAE,CAAC;IACf,CAAC;IAMD,KAAK,CAAC,KAAK,CAAC,OAAuB;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAKD,KAAK,CAAC,OAAO,KAAmB,CAAC;IAMjC,SAAS,CAAC,WAAiC;QACzC,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IAKD,OAAO;QACL,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IAMD,IAAI,CAAC,KAAY;QACf,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IAKD,MAAM,CAAC,KAAY;QACjB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,CAAC,KAAmB;QACzB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,CAAC,KAAgB;QACnB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;CAGF;AA7DD,0BA6DC"}
@@ -2,7 +2,9 @@ import { Adapter, AdapterContext } from '..';
2
2
  import { BacktesterStreamer } from './backtester-streamer';
3
3
  import { PaperAdapter, PaperOptions } from '../paper';
4
4
  import { timestamp } from '../../shared';
5
- import { AdapterSubscribeCommand, AdapterHistoryQuery } from '../adapter.event';
5
+ import { InstrumentSelector, Order, Candle } from '../../domain';
6
+ import { PaperExecutor } from '../paper/executor/paper-executor';
7
+ import { FeedQuery, HistoryQuery } from '../adapter';
6
8
  export declare class BacktesterOptions extends PaperOptions {
7
9
  from: timestamp;
8
10
  to: timestamp;
@@ -11,12 +13,15 @@ export declare class BacktesterAdapter extends Adapter {
11
13
  readonly decoratedAdapter: Adapter;
12
14
  readonly streamer: BacktesterStreamer;
13
15
  readonly name: string;
14
- constructor(decoratedAdapter: Adapter, streamer: BacktesterStreamer);
15
16
  timestamp(): number;
16
- createPaperExecutor(adapter: PaperAdapter): import("../paper/executor/paper-executor").PaperExecutor;
17
- onUnknownEvent(event: {
18
- type: string;
19
- }, context: AdapterContext): any;
20
- onSubscribe(command: AdapterSubscribeCommand, context: AdapterContext): void;
21
- onHistory(event: AdapterHistoryQuery, context: AdapterContext): Promise<any>;
17
+ constructor(decoratedAdapter: Adapter, streamer: BacktesterStreamer);
18
+ awake(context: AdapterContext): Promise<void>;
19
+ dispose(): Promise<void>;
20
+ subscribe(instruments: InstrumentSelector[]): Promise<void>;
21
+ account(): Promise<void>;
22
+ open(order: Order): Promise<void>;
23
+ cancel(order: Order): Promise<void>;
24
+ history(query: HistoryQuery): Promise<Candle[]>;
25
+ feed(query: FeedQuery): Promise<void>;
26
+ createPaperExecutor(adapter: PaperAdapter): PaperExecutor;
22
27
  }
@@ -1,19 +1,8 @@
1
1
  "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
2
  Object.defineProperty(exports, "__esModule", { value: true });
12
3
  exports.BacktesterAdapter = exports.BacktesterOptions = void 0;
13
4
  const __1 = require("..");
14
5
  const paper_1 = require("../paper");
15
- const topic_1 = require("../../shared/topic");
16
- const adapter_event_1 = require("../adapter.event");
17
6
  const event_1 = require("../../store/event");
18
7
  class BacktesterOptions extends paper_1.PaperOptions {
19
8
  }
@@ -28,36 +17,40 @@ class BacktesterAdapter extends __1.Adapter {
28
17
  timestamp() {
29
18
  return this.streamer.timestamp;
30
19
  }
31
- createPaperExecutor(adapter) {
32
- return this.decoratedAdapter.createPaperExecutor(adapter);
20
+ async awake(context) {
21
+ await super.awake(context);
22
+ await this.decoratedAdapter.awake(context);
33
23
  }
34
- onUnknownEvent(event, context) {
35
- return this.decoratedAdapter.dispatch(event, context);
24
+ dispose() {
25
+ return this.decoratedAdapter.dispose();
36
26
  }
37
- onSubscribe(command, context) {
38
- command.instrument.forEach(it => {
27
+ async subscribe(instruments) {
28
+ instruments.forEach(it => {
39
29
  this.streamer.subscribe(it);
40
30
  });
41
- context.store.dispatch(...command.instrument.map(it => new event_1.InstrumentSubscriptionEvent(context.timestamp, it, true)));
31
+ this.context.dispatch(...instruments.map(it => new event_1.InstrumentSubscriptionEvent(this.context.timestamp, it, true)));
32
+ }
33
+ account() {
34
+ return this.decoratedAdapter.account();
35
+ }
36
+ open(order) {
37
+ return this.decoratedAdapter.open(order);
38
+ }
39
+ cancel(order) {
40
+ return this.decoratedAdapter.cancel(order);
42
41
  }
43
- async onHistory(event, context) {
42
+ async history(query) {
44
43
  this.streamer.stop();
45
- const response = await this.decoratedAdapter.dispatch(event, context);
44
+ const response = await this.decoratedAdapter.history(query);
46
45
  this.streamer.tryContinue();
47
46
  return response;
48
47
  }
48
+ feed(query) {
49
+ return this.decoratedAdapter.feed(query);
50
+ }
51
+ createPaperExecutor(adapter) {
52
+ return this.decoratedAdapter.createPaperExecutor(adapter);
53
+ }
49
54
  }
50
- __decorate([
51
- (0, topic_1.handler)(adapter_event_1.AdapterSubscribeCommand),
52
- __metadata("design:type", Function),
53
- __metadata("design:paramtypes", [adapter_event_1.AdapterSubscribeCommand, __1.AdapterContext]),
54
- __metadata("design:returntype", void 0)
55
- ], BacktesterAdapter.prototype, "onSubscribe", null);
56
- __decorate([
57
- (0, topic_1.handler)(adapter_event_1.AdapterHistoryQuery),
58
- __metadata("design:type", Function),
59
- __metadata("design:paramtypes", [adapter_event_1.AdapterHistoryQuery, __1.AdapterContext]),
60
- __metadata("design:returntype", Promise)
61
- ], BacktesterAdapter.prototype, "onHistory", null);
62
55
  exports.BacktesterAdapter = BacktesterAdapter;
63
56
  //# sourceMappingURL=backtester-adapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"backtester-adapter.js","sourceRoot":"","sources":["../../../src/adapter/backtester/backtester-adapter.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,0BAA6C;AAE7C,oCAAsD;AACtD,8CAA6C;AAE7C,oDAAgF;AAChF,6CAAgE;AAEhE,MAAa,iBAAkB,SAAQ,oBAAY;CAGlD;AAHD,8CAGC;AAED,MAAa,iBAAkB,SAAQ,WAAO;IAG5C,YAAqB,gBAAyB,EAAW,QAA4B;QACnF,KAAK,EAAE,CAAC;QADW,qBAAgB,GAAhB,gBAAgB,CAAS;QAAW,aAAQ,GAAR,QAAQ,CAAoB;QAF5E,SAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;IAI3C,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;IACjC,CAAC;IAED,mBAAmB,CAAC,OAAqB;QACvC,OAAO,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED,cAAc,CAAC,KAAuB,EAAE,OAAuB;QAC7D,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IAGD,WAAW,CAAC,OAAgC,EAAE,OAAuB;QACnE,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;YAC9B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,KAAK,CAAC,QAAQ,CACpB,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CACvB,EAAE,CAAC,EAAE,CAAC,IAAI,mCAA2B,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,EAAE,IAAI,CAAC,CACnE,CACF,CAAC;IACJ,CAAC;IAGD,KAAK,CAAC,SAAS,CAAC,KAA0B,EAAE,OAAuB;QACjE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAErB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAEtE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;QAE5B,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AAtBC;IADC,IAAA,eAAO,EAAC,uCAAuB,CAAC;;qCACZ,uCAAuB,EAAW,kBAAc;;oDAUpE;AAGD;IADC,IAAA,eAAO,EAAC,mCAAmB,CAAC;;qCACN,mCAAmB,EAAW,kBAAc;;kDAQlE;AAzCH,8CA0CC"}
1
+ {"version":3,"file":"backtester-adapter.js","sourceRoot":"","sources":["../../../src/adapter/backtester/backtester-adapter.ts"],"names":[],"mappings":";;;AAAA,0BAA6C;AAE7C,oCAAsD;AAEtD,6CAAgE;AAKhE,MAAa,iBAAkB,SAAQ,oBAAY;CAGlD;AAHD,8CAGC;AAED,MAAa,iBAAkB,SAAQ,WAAO;IAO5C,YAAqB,gBAAyB,EAAW,QAA4B;QACnF,KAAK,EAAE,CAAC;QADW,qBAAgB,GAAhB,gBAAgB,CAAS;QAAW,aAAQ,GAAR,QAAQ,CAAoB;QAN5E,SAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;IAQ3C,CAAC;IAND,SAAS;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;IACjC,CAAC;IAMD,KAAK,CAAC,KAAK,CAAC,OAAuB;QACjC,MAAM,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3B,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,WAAiC;QAC/C,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;YACvB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,QAAQ,CACnB,GAAG,WAAW,CAAC,GAAG,CAChB,EAAE,CAAC,EAAE,CAAC,IAAI,mCAA2B,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,EAAE,IAAI,CAAC,CACxE,CACF,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;IACzC,CAAC;IAED,IAAI,CAAC,KAAY;QACf,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,CAAC,KAAY;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAmB;QAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAErB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAE5D,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;QAE5B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,KAAgB;QACnB,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,mBAAmB,CAAC,OAAqB;QACvC,OAAO,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC5D,CAAC;CACF;AA7DD,8CA6DC"}
@@ -1,3 +1,2 @@
1
1
  export * from './adapter';
2
2
  export * from './adapter-aggregate';
3
- export * from './adapter.event';
@@ -12,5 +12,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
13
  __exportStar(require("./adapter"), exports);
14
14
  __exportStar(require("./adapter-aggregate"), exports);
15
- __exportStar(require("./adapter.event"), exports);
16
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapter/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,4CAA0B;AAC1B,sDAAoC;AACpC,kDAAgC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapter/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,4CAA0B;AAC1B,sDAAoC"}
@@ -1,7 +1,8 @@
1
1
  import { Adapter, AdapterContext } from '..';
2
2
  import { Store } from '../../store';
3
3
  import { PaperExecutor } from './executor/paper-executor';
4
- import { AdapterAccountCommand, AdapterOrderOpenCommand, AdapterOrderCancelCommand } from '../adapter.event';
4
+ import { Candle, InstrumentSelector, Order } from '../../domain';
5
+ import { FeedQuery, HistoryQuery } from '../adapter';
5
6
  export declare class PaperOptions {
6
7
  balance: {
7
8
  [key: string]: number;
@@ -15,11 +16,13 @@ export declare class PaperAdapter extends Adapter {
15
16
  readonly executor: PaperExecutor;
16
17
  constructor(decoratedAdapter: Adapter, store: Store, options: PaperOptions);
17
18
  timestamp(): number;
19
+ awake(context: AdapterContext): Promise<void>;
20
+ dispose(): Promise<void>;
21
+ subscribe(instruments: InstrumentSelector[]): Promise<void>;
22
+ account(): Promise<void>;
23
+ open(order: Order): Promise<void>;
24
+ cancel(order: Order): Promise<void>;
25
+ history(query: HistoryQuery): Promise<Candle[]>;
26
+ feed(query: FeedQuery): Promise<void>;
18
27
  createPaperExecutor(adapter: PaperAdapter): PaperExecutor;
19
- onUnknownEvent(event: {
20
- type: string;
21
- }, context: AdapterContext): any;
22
- onAccount(event: AdapterAccountCommand, context: AdapterContext): void;
23
- onOrderOpen(event: AdapterOrderOpenCommand, context: AdapterContext): Promise<void>;
24
- onOrderCancel(event: AdapterOrderCancelCommand, context: AdapterContext): Promise<void>;
25
28
  }
@@ -1,20 +1,9 @@
1
1
  "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
2
  Object.defineProperty(exports, "__esModule", { value: true });
12
3
  exports.PaperAdapter = exports.PaperOptions = void 0;
13
4
  const __1 = require("..");
14
- const topic_1 = require("../../shared/topic");
15
5
  const domain_1 = require("../../domain");
16
6
  const event_1 = require("../../store/event");
17
- const adapter_event_1 = require("../adapter.event");
18
7
  class PaperOptions {
19
8
  }
20
9
  exports.PaperOptions = PaperOptions;
@@ -30,13 +19,17 @@ class PaperAdapter extends __1.Adapter {
30
19
  timestamp() {
31
20
  return this.decoratedAdapter.timestamp();
32
21
  }
33
- createPaperExecutor(adapter) {
34
- return this.decoratedAdapter.createPaperExecutor(adapter);
22
+ async awake(context) {
23
+ await super.awake(context);
24
+ await this.decoratedAdapter.awake(context);
35
25
  }
36
- onUnknownEvent(event, context) {
37
- return this.decoratedAdapter.dispatch(event, context);
26
+ dispose() {
27
+ return this.decoratedAdapter.dispose();
38
28
  }
39
- onAccount(event, context) {
29
+ subscribe(instruments) {
30
+ return this.decoratedAdapter.subscribe(instruments);
31
+ }
32
+ async account() {
40
33
  let subscribed = Object.values(this.store.snapshot.subscription.asset).filter(it => it.adapter == this.name);
41
34
  for (const balance in this.options.balance) {
42
35
  const asset = (0, domain_1.assetOf)(balance);
@@ -45,38 +38,27 @@ class PaperAdapter extends __1.Adapter {
45
38
  }
46
39
  const free = this.options.balance[balance];
47
40
  subscribed = subscribed.filter(it => it.toString() != asset.toString());
48
- this.store.dispatch(new event_1.BalancePatchEvent(asset, free, 0, context.timestamp));
41
+ this.store.dispatch(new event_1.BalancePatchEvent(asset, free, 0, this.context.timestamp));
49
42
  }
50
43
  for (const missingAsset of subscribed) {
51
- this.store.dispatch(new event_1.BalancePatchEvent(missingAsset, 0, 0, context.timestamp));
44
+ this.store.dispatch(new event_1.BalancePatchEvent(missingAsset, 0, 0, this.context.timestamp));
52
45
  }
53
46
  }
54
- onOrderOpen(event, context) {
55
- this.executor.open(event.order);
56
- return Promise.resolve();
47
+ async open(order) {
48
+ this.executor.open(order);
49
+ }
50
+ async cancel(order) {
51
+ this.executor.cancel(order);
57
52
  }
58
- onOrderCancel(event, context) {
59
- this.executor.cancel(event.order);
60
- return Promise.resolve();
53
+ history(query) {
54
+ return this.decoratedAdapter.history(query);
55
+ }
56
+ feed(query) {
57
+ return this.decoratedAdapter.feed(query);
58
+ }
59
+ createPaperExecutor(adapter) {
60
+ return this.decoratedAdapter.createPaperExecutor(adapter);
61
61
  }
62
62
  }
63
- __decorate([
64
- (0, topic_1.handler)(adapter_event_1.AdapterAccountCommand),
65
- __metadata("design:type", Function),
66
- __metadata("design:paramtypes", [adapter_event_1.AdapterAccountCommand, __1.AdapterContext]),
67
- __metadata("design:returntype", void 0)
68
- ], PaperAdapter.prototype, "onAccount", null);
69
- __decorate([
70
- (0, topic_1.handler)(adapter_event_1.AdapterOrderOpenCommand),
71
- __metadata("design:type", Function),
72
- __metadata("design:paramtypes", [adapter_event_1.AdapterOrderOpenCommand, __1.AdapterContext]),
73
- __metadata("design:returntype", void 0)
74
- ], PaperAdapter.prototype, "onOrderOpen", null);
75
- __decorate([
76
- (0, topic_1.handler)(adapter_event_1.AdapterOrderCancelCommand),
77
- __metadata("design:type", Function),
78
- __metadata("design:paramtypes", [adapter_event_1.AdapterOrderCancelCommand, __1.AdapterContext]),
79
- __metadata("design:returntype", void 0)
80
- ], PaperAdapter.prototype, "onOrderCancel", null);
81
63
  exports.PaperAdapter = PaperAdapter;
82
64
  //# sourceMappingURL=paper-adapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"paper-adapter.js","sourceRoot":"","sources":["../../../src/adapter/paper/paper-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"paper-adapter.js","sourceRoot":"","sources":["../../../src/adapter/paper/paper-adapter.ts"],"names":[],"mappings":";;;AAAA,0BAA6C;AAG7C,yCAA0E;AAC1E,6CAAsD;AAItD,MAAa,YAAY;CAExB;AAFD,oCAEC;AAED,MAAa,YAAa,SAAQ,WAAO;IAIvC,YACW,gBAAyB,EACzB,KAAY,EACZ,OAAqB;QAE9B,KAAK,EAAE,CAAC;QAJC,qBAAgB,GAAhB,gBAAgB,CAAS;QACzB,UAAK,GAAL,KAAK,CAAO;QACZ,YAAO,GAAP,OAAO,CAAc;QANvB,SAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;QAUzC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAAuB;QACjC,MAAM,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3B,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;IACzC,CAAC;IAED,SAAS,CAAC,WAAiC;QACzC,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,MAAM,CAC3E,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAC9B,CAAC;QAEF,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YAC1C,MAAM,KAAK,GAAG,IAAA,gBAAO,EAAC,OAAO,CAAC,CAAC;YAE/B,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE;gBAC9B,SAAS;aACV;YAED,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAE3C,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;YAExE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,yBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;SACpF;QAED,KAAK,MAAM,YAAY,IAAI,UAAU,EAAE;YACrC,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,IAAI,yBAAiB,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAClE,CAAC;SACH;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAY;QACrB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAY;QACvB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,CAAC,KAAmB;QACzB,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,CAAC,KAAgB;QACnB,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,mBAAmB,CAAC,OAAqB;QACvC,OAAO,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC5D,CAAC;CACF;AA5ED,oCA4EC"}
@@ -1,9 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const _1 = require(".");
4
+ const __1 = require("..");
4
5
  const store_1 = require("../../store");
5
6
  const adapter_1 = require("../adapter");
6
7
  const paper_adapter_1 = require("./paper-adapter");
8
+ const domain_1 = require("./../../domain");
9
+ const instrument_1 = require("./../../domain/instrument");
10
+ const event_1 = require("../../store/event");
7
11
  class DefaultAdapter extends adapter_1.Adapter {
8
12
  constructor() {
9
13
  super(...arguments);
@@ -12,22 +16,36 @@ class DefaultAdapter extends adapter_1.Adapter {
12
16
  timestamp() {
13
17
  return 123;
14
18
  }
19
+ async awake(context) {
20
+ super.awake(context);
21
+ context.dispatch(new event_1.InstrumentPatchEvent(context.timestamp, new domain_1.Asset('a', this.name, 8), new domain_1.Asset('b', this.name, 4), new domain_1.Commission(0.1, 0.1), 'a-b'));
22
+ }
15
23
  createPaperExecutor(adapter) {
16
24
  return new _1.PaperSpotExecutor(adapter);
17
25
  }
18
26
  }
19
27
  describe('paper adapter tests', () => {
28
+ const options = {
29
+ balance: {
30
+ ['default:a']: 1000,
31
+ ['default:b']: 200
32
+ }
33
+ };
20
34
  test('should return wrapped adapter name and timestamp', () => {
21
- const adapter = new DefaultAdapter();
22
35
  const store = new store_1.Store();
23
- const options = {
24
- balance: {
25
- ['binance:usdt']: 1000
26
- }
27
- };
28
- const sut = new paper_adapter_1.PaperAdapter(adapter, store, options);
36
+ const sut = new paper_adapter_1.PaperAdapter(new DefaultAdapter(), store, options);
29
37
  expect(sut.name).toEqual('default');
30
38
  expect(sut.timestamp()).toEqual(123);
31
39
  });
40
+ test('', async () => {
41
+ const store = new store_1.Store();
42
+ const adapter = new DefaultAdapter();
43
+ const sut = new paper_adapter_1.PaperAdapter(adapter, store, options);
44
+ await sut.awake(new __1.AdapterContext(sut, store));
45
+ await sut.account();
46
+ const order = domain_1.Order.buyMarket((0, instrument_1.instrumentOf)('default:a-b'), 1.0);
47
+ await sut.open(order);
48
+ expect(store.snapshot.order[order.id]).toEqual(order);
49
+ });
32
50
  });
33
51
  //# sourceMappingURL=paper-adapter.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"paper-adapter.spec.js","sourceRoot":"","sources":["../../../src/adapter/paper/paper-adapter.spec.ts"],"names":[],"mappings":";;AAAA,wBAAsC;AACtC,uCAAoC;AACpC,wCAAqC;AAErC,mDAA+C;AAE/C,MAAM,cAAe,SAAQ,iBAAO;IAApC;;QACE,SAAI,GAAG,SAAS,CAAC;IASnB,CAAC;IAPC,SAAS;QACP,OAAO,GAAG,CAAC;IACb,CAAC;IAED,mBAAmB,CAAC,OAAqB;QACvC,OAAO,IAAI,oBAAiB,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;CACF;AAED,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,IAAI,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC5D,MAAM,OAAO,GAAG,IAAI,cAAc,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,IAAI,aAAK,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG;YACd,OAAO,EAAE;gBACP,CAAC,cAAc,CAAC,EAAE,IAAI;aACvB;SACF,CAAC;QAEF,MAAM,GAAG,GAAG,IAAI,4BAAY,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAEtD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACpC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"paper-adapter.spec.js","sourceRoot":"","sources":["../../../src/adapter/paper/paper-adapter.spec.ts"],"names":[],"mappings":";;AAAA,wBAAsC;AACtC,0BAAoC;AACpC,uCAAoC;AACpC,wCAAqC;AAErC,mDAA+C;AAC/C,2CAAmE;AACnE,0DAAyD;AACzD,6CAA4E;AAE5E,MAAM,cAAe,SAAQ,iBAAO;IAApC;;QACE,SAAI,GAAG,SAAS,CAAC;IAuBnB,CAAC;IArBC,SAAS;QACP,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAAuB;QACjC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAErB,OAAO,CAAC,QAAQ,CACd,IAAI,4BAAoB,CACtB,OAAO,CAAC,SAAS,EACjB,IAAI,cAAK,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,EAC5B,IAAI,cAAK,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,EAC5B,IAAI,mBAAU,CAAC,GAAG,EAAE,GAAG,CAAC,EACxB,KAAK,CACN,CACF,CAAC;IACJ,CAAC;IAED,mBAAmB,CAAC,OAAqB;QACvC,OAAO,IAAI,oBAAiB,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;CACF;AAED,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,MAAM,OAAO,GAAG;QACd,OAAO,EAAE;YACP,CAAC,WAAW,CAAC,EAAE,IAAI;YACnB,CAAC,WAAW,CAAC,EAAE,GAAG;SACnB;KACF,CAAC;IAEF,IAAI,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC5D,MAAM,KAAK,GAAG,IAAI,aAAK,EAAE,CAAC;QAE1B,MAAM,GAAG,GAAG,IAAI,4BAAY,CAAC,IAAI,cAAc,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAEnE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACpC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,EAAE,EAAE,KAAK,IAAI,EAAE;QAClB,MAAM,KAAK,GAAG,IAAI,aAAK,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,IAAI,cAAc,EAAE,CAAC;QAErC,MAAM,GAAG,GAAG,IAAI,4BAAY,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAEtD,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,kBAAc,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;QAChD,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;QAEpB,MAAM,KAAK,GAAG,cAAK,CAAC,SAAS,CAAC,IAAA,yBAAY,EAAC,aAAa,CAAC,EAAE,GAAG,CAAC,CAAC;QAEhE,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEtB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/dist/bootstrap.js CHANGED
@@ -30,7 +30,7 @@ class Bootstrap {
30
30
  const { feed } = this.descriptor;
31
31
  const { backtester } = this.descriptor.options;
32
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);
33
+ const aggregate = new adapter_1.AdapterAggregate(this.descriptor.adapter.map(it => new backtester_1.BacktesterAdapter(new paper_1.PaperAdapter(it, store, backtester), streamer)), store);
34
34
  const session = new session_1.Session(store, aggregate, this.descriptor);
35
35
  return [session, streamer];
36
36
  }