@quantform/core 0.3.256 → 0.3.262
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/adapter-aggregate.d.ts +4 -5
- package/dist/adapter/adapter-aggregate.js +50 -21
- package/dist/adapter/adapter-aggregate.js.map +1 -1
- package/dist/adapter/adapter.d.ts +30 -7
- package/dist/adapter/adapter.js +29 -2
- package/dist/adapter/adapter.js.map +1 -1
- package/dist/adapter/backtester/backtester-adapter.d.ts +13 -8
- package/dist/adapter/backtester/backtester-adapter.js +25 -32
- package/dist/adapter/backtester/backtester-adapter.js.map +1 -1
- package/dist/adapter/index.d.ts +0 -1
- package/dist/adapter/index.js +0 -1
- package/dist/adapter/index.js.map +1 -1
- package/dist/adapter/paper/paper-adapter.d.ts +10 -7
- package/dist/adapter/paper/paper-adapter.js +24 -42
- package/dist/adapter/paper/paper-adapter.js.map +1 -1
- package/dist/adapter/paper/paper-adapter.spec.js +25 -7
- package/dist/adapter/paper/paper-adapter.spec.js.map +1 -1
- package/dist/bootstrap.js +1 -1
- package/dist/bootstrap.js.map +1 -1
- package/dist/ipc.js +11 -5
- package/dist/ipc.js.map +1 -1
- package/dist/ipc.spec.js +4 -57
- package/dist/ipc.spec.js.map +1 -1
- package/dist/session/session.d.ts +8 -11
- package/dist/session/session.js +14 -28
- package/dist/session/session.js.map +1 -1
- package/dist/store/event/store-order.event.js +11 -32
- package/dist/store/event/store-order.event.js.map +1 -1
- package/dist/store/event/store-order.event.spec.js +2 -2
- package/dist/store/event/store-order.event.spec.js.map +1 -1
- package/dist/store/store.state.d.ts +1 -6
- package/dist/store/store.state.js +1 -6
- package/dist/store/store.state.js.map +1 -1
- package/dist/tests/backtester-adapter.spec.js +7 -24
- package/dist/tests/backtester-adapter.spec.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/adapter/adapter-aggregate.ts +55 -75
- package/src/adapter/adapter.ts +83 -5
- package/src/adapter/backtester/backtester-adapter.ts +39 -19
- package/src/adapter/index.ts +0 -1
- package/src/adapter/paper/paper-adapter.spec.ts +42 -7
- package/src/adapter/paper/paper-adapter.ts +31 -23
- package/src/bootstrap.ts +1 -1
- package/src/ipc.spec.ts +7 -45
- package/src/ipc.ts +6 -6
- package/src/session/session.ts +39 -62
- package/src/store/event/store-order.event.spec.ts +2 -2
- package/src/store/event/store-order.event.ts +11 -38
- package/src/store/store.state.ts +1 -12
- package/src/tests/backtester-adapter.spec.ts +6 -12
- package/dist/adapter/adapter.event.d.ts +0 -43
- package/dist/adapter/adapter.event.js +0 -104
- package/dist/adapter/adapter.event.js.map +0 -1
- package/src/adapter/adapter.event.ts +0 -64
package/src/session/session.ts
CHANGED
|
@@ -146,19 +146,29 @@ export class Session {
|
|
|
146
146
|
}
|
|
147
147
|
|
|
148
148
|
/**
|
|
149
|
-
* Opens
|
|
149
|
+
* Opens a new order.
|
|
150
150
|
* Example:
|
|
151
151
|
* session.open(Order.buyMarket(instrument, 100));
|
|
152
152
|
*/
|
|
153
|
-
|
|
154
|
-
|
|
153
|
+
open(order: Order): Observable<Order> {
|
|
154
|
+
return from(this.aggregate.open(order)).pipe(
|
|
155
|
+
switchMap(it =>
|
|
156
|
+
this.store.changes$.pipe(filter(it => it instanceof Order && it.id == it.id))
|
|
157
|
+
),
|
|
158
|
+
map(it => it as Order)
|
|
159
|
+
);
|
|
155
160
|
}
|
|
156
161
|
|
|
157
162
|
/**
|
|
158
163
|
* Cancels specific order.
|
|
159
164
|
*/
|
|
160
|
-
cancel(order: Order):
|
|
161
|
-
return this.aggregate.cancel(order)
|
|
165
|
+
cancel(order: Order): Observable<Order> {
|
|
166
|
+
return from(this.aggregate.cancel(order)).pipe(
|
|
167
|
+
switchMap(it =>
|
|
168
|
+
this.store.changes$.pipe(filter(it => it instanceof Order && it.id == it.id))
|
|
169
|
+
),
|
|
170
|
+
map(it => it as Order)
|
|
171
|
+
);
|
|
162
172
|
}
|
|
163
173
|
|
|
164
174
|
/**
|
|
@@ -191,14 +201,12 @@ export class Session {
|
|
|
191
201
|
/**
|
|
192
202
|
* Subscribes to trade/ticker changes.
|
|
193
203
|
*/
|
|
194
|
-
trade(selector
|
|
204
|
+
trade(selector: InstrumentSelector): Observable<Trade> {
|
|
195
205
|
this.subscribe([selector]);
|
|
196
206
|
|
|
197
207
|
return this.store.changes$.pipe(
|
|
198
208
|
filter(
|
|
199
|
-
it =>
|
|
200
|
-
it instanceof Trade &&
|
|
201
|
-
(!selector || it.instrument.toString() == selector.toString())
|
|
209
|
+
it => it instanceof Trade && it.instrument.toString() == selector.toString()
|
|
202
210
|
),
|
|
203
211
|
map(it => it as Trade)
|
|
204
212
|
);
|
|
@@ -208,14 +216,12 @@ export class Session {
|
|
|
208
216
|
* Subscribes to orderbook changes.
|
|
209
217
|
* Right now you can access only best bid and best ask.
|
|
210
218
|
*/
|
|
211
|
-
orderbook(selector
|
|
219
|
+
orderbook(selector: InstrumentSelector): Observable<Orderbook> {
|
|
212
220
|
this.subscribe([selector]);
|
|
213
221
|
|
|
214
222
|
return this.store.changes$.pipe(
|
|
215
223
|
filter(
|
|
216
|
-
it =>
|
|
217
|
-
it instanceof Orderbook &&
|
|
218
|
-
(!selector || it.instrument.toString() == selector.toString())
|
|
224
|
+
it => it instanceof Orderbook && it.instrument.toString() == selector.toString()
|
|
219
225
|
),
|
|
220
226
|
map(it => it as Orderbook)
|
|
221
227
|
);
|
|
@@ -224,14 +230,12 @@ export class Session {
|
|
|
224
230
|
/**
|
|
225
231
|
* Subscribes to position on leveraged market.
|
|
226
232
|
*/
|
|
227
|
-
position(selector
|
|
233
|
+
position(selector: InstrumentSelector): Observable<Position> {
|
|
228
234
|
this.subscribe([selector]);
|
|
229
235
|
|
|
230
236
|
return this.store.changes$.pipe(
|
|
231
237
|
filter(
|
|
232
|
-
it =>
|
|
233
|
-
it instanceof Position &&
|
|
234
|
-
(!selector || it.instrument.toString() == selector.toString())
|
|
238
|
+
it => it instanceof Position && it.instrument.toString() == selector.toString()
|
|
235
239
|
),
|
|
236
240
|
map(it => it as Position)
|
|
237
241
|
);
|
|
@@ -256,73 +260,44 @@ export class Session {
|
|
|
256
260
|
);
|
|
257
261
|
}
|
|
258
262
|
|
|
259
|
-
order(selector
|
|
263
|
+
order(selector: InstrumentSelector): Observable<Order> {
|
|
260
264
|
this.subscribe([selector]);
|
|
261
265
|
|
|
262
266
|
return this.store.changes$.pipe(
|
|
263
267
|
filter(
|
|
264
|
-
it =>
|
|
265
|
-
it instanceof Order &&
|
|
266
|
-
(!selector || it.instrument.toString() == selector.toString())
|
|
268
|
+
it => it instanceof Order && it.instrument.toString() == selector.toString()
|
|
267
269
|
),
|
|
268
270
|
map(it => it as Order)
|
|
269
271
|
);
|
|
270
272
|
}
|
|
271
273
|
|
|
272
|
-
|
|
273
|
-
orders: Order[],
|
|
274
|
-
states: OrderState[],
|
|
275
|
-
selector?: InstrumentSelector
|
|
276
|
-
): Observable<Order[]> {
|
|
274
|
+
orders(selector: InstrumentSelector, states?: OrderState[]): Observable<Order[]> {
|
|
277
275
|
this.subscribe([selector]);
|
|
278
276
|
|
|
279
277
|
return this.store.changes$.pipe(
|
|
280
278
|
filter(
|
|
281
279
|
it =>
|
|
282
280
|
it instanceof Order &&
|
|
283
|
-
|
|
284
|
-
(states.
|
|
285
|
-
),
|
|
286
|
-
map(() =>
|
|
287
|
-
Object.values(orders)
|
|
288
|
-
.filter(it => !selector || it.instrument.toString() == selector.toString())
|
|
289
|
-
.sort((lhs, rhs) => rhs.createdAt - lhs.createdAt)
|
|
281
|
+
it.instrument.toString() == selector.toString() &&
|
|
282
|
+
(!states || states.includes(it.state))
|
|
290
283
|
),
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
284
|
+
map(() => this.store.snapshot.order),
|
|
285
|
+
startWith(this.store.snapshot.order),
|
|
286
|
+
map(it =>
|
|
287
|
+
Object.values(it)
|
|
288
|
+
.filter(
|
|
289
|
+
it =>
|
|
290
|
+
it.instrument.toString() == selector.toString() &&
|
|
291
|
+
(states ? states.includes(it.state) : true)
|
|
292
|
+
)
|
|
294
293
|
.sort((lhs, rhs) => rhs.createdAt - lhs.createdAt)
|
|
295
294
|
)
|
|
296
295
|
);
|
|
297
296
|
}
|
|
298
297
|
|
|
299
|
-
pending(selector?: InstrumentSelector): Observable<Order[]> {
|
|
300
|
-
return this.ordersOf(
|
|
301
|
-
Object.values(this.store.snapshot.order.pending),
|
|
302
|
-
['PENDING', 'NEW'],
|
|
303
|
-
selector
|
|
304
|
-
);
|
|
305
|
-
}
|
|
306
|
-
|
|
307
|
-
filled(selector?: InstrumentSelector): Observable<Order[]> {
|
|
308
|
-
return this.ordersOf(
|
|
309
|
-
Object.values(this.store.snapshot.order.filled),
|
|
310
|
-
['FILLED'],
|
|
311
|
-
selector
|
|
312
|
-
);
|
|
313
|
-
}
|
|
314
|
-
|
|
315
|
-
canceled(selector?: InstrumentSelector): Observable<Order[]> {
|
|
316
|
-
return this.ordersOf(
|
|
317
|
-
Object.values(this.store.snapshot.order.canceled),
|
|
318
|
-
['CANCELING', 'CANCELED'],
|
|
319
|
-
selector
|
|
320
|
-
);
|
|
321
|
-
}
|
|
322
|
-
|
|
323
298
|
balance(selector: AssetSelector): Observable<Balance> {
|
|
324
299
|
return this.store.changes$.pipe(
|
|
325
|
-
startWith(
|
|
300
|
+
startWith(this.store.snapshot.balance[selector.toString()]),
|
|
326
301
|
filter(
|
|
327
302
|
it =>
|
|
328
303
|
it instanceof Balance &&
|
|
@@ -340,7 +315,9 @@ export class Session {
|
|
|
340
315
|
return this.store.changes$.pipe(
|
|
341
316
|
startWith(this.store.snapshot.universe.instrument[selector.toString()]),
|
|
342
317
|
filter(it => it instanceof Instrument && it.toString() == selector.toString()),
|
|
343
|
-
switchMap(() =>
|
|
318
|
+
switchMap(() =>
|
|
319
|
+
from(this.aggregate.history({ instrument: selector, timeframe, length }))
|
|
320
|
+
),
|
|
344
321
|
take(1),
|
|
345
322
|
shareReplay(),
|
|
346
323
|
mergeMap(it => it)
|
|
@@ -22,7 +22,7 @@ describe('order load event tests', () => {
|
|
|
22
22
|
|
|
23
23
|
store.dispatch(new OrderLoadEvent(order, timestamp));
|
|
24
24
|
|
|
25
|
-
expect(Object.keys(store.snapshot.order
|
|
26
|
-
expect(store.snapshot.order
|
|
25
|
+
expect(Object.keys(store.snapshot.order).length).toEqual(1);
|
|
26
|
+
expect(store.snapshot.order[order.id]).toEqual(order);
|
|
27
27
|
});
|
|
28
28
|
});
|
|
@@ -18,22 +18,7 @@ export function OrderLoadEventHandler(
|
|
|
18
18
|
) {
|
|
19
19
|
event.order.timestamp = event.timestamp;
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
case 'NEW':
|
|
23
|
-
case 'PENDING':
|
|
24
|
-
state.order.pending[event.order.id] = event.order;
|
|
25
|
-
break;
|
|
26
|
-
case 'FILLED':
|
|
27
|
-
state.order.filled[event.order.id] = event.order;
|
|
28
|
-
break;
|
|
29
|
-
case 'CANCELING':
|
|
30
|
-
case 'CANCELED':
|
|
31
|
-
state.order.canceled[event.order.id] = event.order;
|
|
32
|
-
break;
|
|
33
|
-
case 'REJECTED':
|
|
34
|
-
state.order.rejected[event.order.id] = event.order;
|
|
35
|
-
break;
|
|
36
|
-
}
|
|
21
|
+
state.order[event.order.id] = event.order;
|
|
37
22
|
|
|
38
23
|
changes.commit(event.order);
|
|
39
24
|
}
|
|
@@ -57,7 +42,7 @@ export function OrderNewEventHandler(
|
|
|
57
42
|
event.order.createdAt = event.timestamp;
|
|
58
43
|
event.order.timestamp = event.timestamp;
|
|
59
44
|
|
|
60
|
-
state.order
|
|
45
|
+
state.order[event.order.id] = event.order;
|
|
61
46
|
|
|
62
47
|
changes.commit(event.order);
|
|
63
48
|
}
|
|
@@ -74,11 +59,11 @@ export function OrderPendingEventHandler(
|
|
|
74
59
|
state: State,
|
|
75
60
|
changes: StateChangeTracker
|
|
76
61
|
) {
|
|
77
|
-
if (!(event.id in state.order
|
|
62
|
+
if (!(event.id in state.order)) {
|
|
78
63
|
throw new Error(`Trying to patch unknown order: ${event.id}`);
|
|
79
64
|
}
|
|
80
65
|
|
|
81
|
-
const order = state.order
|
|
66
|
+
const order = state.order[event.id];
|
|
82
67
|
|
|
83
68
|
if (order.state != 'NEW') {
|
|
84
69
|
throw new Error(`Order is not new`);
|
|
@@ -106,11 +91,11 @@ export function OrderFilledEventHandler(
|
|
|
106
91
|
state: State,
|
|
107
92
|
changes: StateChangeTracker
|
|
108
93
|
) {
|
|
109
|
-
if (!(event.id in state.order
|
|
94
|
+
if (!(event.id in state.order)) {
|
|
110
95
|
throw new Error(`Trying to patch unknown order: ${event.id}`);
|
|
111
96
|
}
|
|
112
97
|
|
|
113
|
-
const order = state.order
|
|
98
|
+
const order = state.order[event.id];
|
|
114
99
|
|
|
115
100
|
if (order.state != 'PENDING' && order.state != 'CANCELING') {
|
|
116
101
|
throw new Error('Order is not pending');
|
|
@@ -121,10 +106,6 @@ export function OrderFilledEventHandler(
|
|
|
121
106
|
order.quantityExecuted = order.quantity;
|
|
122
107
|
order.averageExecutionRate = event.averageExecutionRate;
|
|
123
108
|
|
|
124
|
-
delete state.order.pending[event.id];
|
|
125
|
-
|
|
126
|
-
state.order.filled[event.id] = order;
|
|
127
|
-
|
|
128
109
|
changes.commit(order);
|
|
129
110
|
}
|
|
130
111
|
|
|
@@ -140,11 +121,11 @@ export function OrderCancelingEventHandler(
|
|
|
140
121
|
state: State,
|
|
141
122
|
changes: StateChangeTracker
|
|
142
123
|
) {
|
|
143
|
-
if (!(event.id in state.order
|
|
124
|
+
if (!(event.id in state.order)) {
|
|
144
125
|
throw new Error(`Trying to patch unknown order: ${event.id}`);
|
|
145
126
|
}
|
|
146
127
|
|
|
147
|
-
const order = state.order
|
|
128
|
+
const order = state.order[event.id];
|
|
148
129
|
|
|
149
130
|
if (order.state == 'CANCELING' || order.state == 'CANCELED') {
|
|
150
131
|
return;
|
|
@@ -172,7 +153,7 @@ export function OrderCanceledEventHandler(
|
|
|
172
153
|
state: State,
|
|
173
154
|
changes: StateChangeTracker
|
|
174
155
|
) {
|
|
175
|
-
const order = state.order
|
|
156
|
+
const order = state.order[event.id];
|
|
176
157
|
|
|
177
158
|
if (order.state == 'CANCELED') {
|
|
178
159
|
return;
|
|
@@ -185,10 +166,6 @@ export function OrderCanceledEventHandler(
|
|
|
185
166
|
order.state = 'CANCELED';
|
|
186
167
|
order.timestamp = event.timestamp;
|
|
187
168
|
|
|
188
|
-
delete state.order.pending[event.id];
|
|
189
|
-
|
|
190
|
-
state.order.canceled[event.id] = order;
|
|
191
|
-
|
|
192
169
|
changes.commit(order);
|
|
193
170
|
}
|
|
194
171
|
|
|
@@ -204,7 +181,7 @@ export function OrderCancelFailedEventHandler(
|
|
|
204
181
|
state: State,
|
|
205
182
|
changes: StateChangeTracker
|
|
206
183
|
) {
|
|
207
|
-
const order = state.order
|
|
184
|
+
const order = state.order[event.id];
|
|
208
185
|
|
|
209
186
|
if (order.state != 'CANCELING') {
|
|
210
187
|
return;
|
|
@@ -228,7 +205,7 @@ export function OrderRejectedEventHandler(
|
|
|
228
205
|
state: State,
|
|
229
206
|
changes: StateChangeTracker
|
|
230
207
|
) {
|
|
231
|
-
const order = state.order
|
|
208
|
+
const order = state.order[event.id];
|
|
232
209
|
|
|
233
210
|
if (order.state != 'NEW') {
|
|
234
211
|
throw new Error('Order is not new.');
|
|
@@ -237,9 +214,5 @@ export function OrderRejectedEventHandler(
|
|
|
237
214
|
order.state = 'REJECTED';
|
|
238
215
|
order.timestamp = event.timestamp;
|
|
239
216
|
|
|
240
|
-
delete state.order.pending[event.id];
|
|
241
|
-
|
|
242
|
-
state.order.rejected[event.id] = order;
|
|
243
|
-
|
|
244
217
|
changes.commit(order);
|
|
245
218
|
}
|
package/src/store/store.state.ts
CHANGED
|
@@ -39,16 +39,5 @@ export class State {
|
|
|
39
39
|
trade: Record<string, Trade> = {};
|
|
40
40
|
orderbook: Record<string, Orderbook> = {};
|
|
41
41
|
balance: Record<string, Balance> = {};
|
|
42
|
-
|
|
43
|
-
order: {
|
|
44
|
-
pending: Record<string, Order>;
|
|
45
|
-
filled: Record<string, Order>;
|
|
46
|
-
canceled: Record<string, Order>;
|
|
47
|
-
rejected: Record<string, Order>;
|
|
48
|
-
} = {
|
|
49
|
-
pending: {},
|
|
50
|
-
filled: {},
|
|
51
|
-
canceled: {},
|
|
52
|
-
rejected: {}
|
|
53
|
-
};
|
|
42
|
+
order: Record<string, Order> = {};
|
|
54
43
|
}
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import { AdapterAwakeCommand } from '../adapter';
|
|
2
|
-
import { AdapterSubscribeCommand } from '../adapter';
|
|
3
1
|
import { Asset, Commission, instrumentOf } from '../domain';
|
|
4
2
|
import { InMemoryStorage, Feed } from '../storage';
|
|
5
3
|
import { Store } from '../store';
|
|
@@ -10,7 +8,6 @@ import { PaperExecutor } from '../adapter/paper/executor/paper-executor';
|
|
|
10
8
|
import { PaperAdapter } from '../adapter/paper/paper-adapter';
|
|
11
9
|
import { BacktesterAdapter } from '../adapter/backtester/backtester-adapter';
|
|
12
10
|
import { BacktesterStreamer } from '../adapter/backtester/backtester-streamer';
|
|
13
|
-
import { handler } from '../shared';
|
|
14
11
|
|
|
15
12
|
const base = new Asset('btc', 'binance', 8);
|
|
16
13
|
const quote = new Asset('usdt', 'binance', 4);
|
|
@@ -26,9 +23,10 @@ class DefaultAdapter extends Adapter {
|
|
|
26
23
|
return new PaperSpotExecutor(adapter);
|
|
27
24
|
}
|
|
28
25
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
26
|
+
async awake(context: AdapterContext): Promise<void> {
|
|
27
|
+
await super.awake(context);
|
|
28
|
+
|
|
29
|
+
context.dispatch(
|
|
32
30
|
new InstrumentPatchEvent(
|
|
33
31
|
context.timestamp,
|
|
34
32
|
base,
|
|
@@ -88,12 +86,8 @@ describe('backtester adapter tests', () => {
|
|
|
88
86
|
|
|
89
87
|
const sut = new BacktesterAdapter(adapter, streamer);
|
|
90
88
|
|
|
91
|
-
sut.
|
|
92
|
-
|
|
93
|
-
sut.dispatch(
|
|
94
|
-
new AdapterSubscribeCommand([instrument]),
|
|
95
|
-
new AdapterContext(sut, store)
|
|
96
|
-
);
|
|
89
|
+
sut.awake(new AdapterContext(sut, store));
|
|
90
|
+
sut.subscribe([instrument]);
|
|
97
91
|
|
|
98
92
|
expect(sut.name).toEqual('default');
|
|
99
93
|
});
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { Feed } from '../storage';
|
|
2
|
-
import { timestamp } from '../shared';
|
|
3
|
-
import { InstrumentSelector, Order } from '../domain';
|
|
4
|
-
export declare class AdapterAwakeCommand {
|
|
5
|
-
type: string;
|
|
6
|
-
}
|
|
7
|
-
export declare class AdapterDisposeCommand {
|
|
8
|
-
type: string;
|
|
9
|
-
}
|
|
10
|
-
export declare class AdapterAccountCommand {
|
|
11
|
-
type: string;
|
|
12
|
-
}
|
|
13
|
-
export declare class AdapterSubscribeCommand {
|
|
14
|
-
readonly instrument: Array<InstrumentSelector>;
|
|
15
|
-
type: string;
|
|
16
|
-
constructor(instrument: Array<InstrumentSelector>);
|
|
17
|
-
}
|
|
18
|
-
export declare class AdapterOrderOpenCommand {
|
|
19
|
-
readonly order: Order;
|
|
20
|
-
type: string;
|
|
21
|
-
constructor(order: Order);
|
|
22
|
-
}
|
|
23
|
-
export declare class AdapterOrderCancelCommand {
|
|
24
|
-
readonly order: Order;
|
|
25
|
-
type: string;
|
|
26
|
-
constructor(order: Order);
|
|
27
|
-
}
|
|
28
|
-
export declare class AdapterHistoryQuery {
|
|
29
|
-
readonly instrument: InstrumentSelector;
|
|
30
|
-
readonly timeframe: number;
|
|
31
|
-
readonly length: number;
|
|
32
|
-
type: string;
|
|
33
|
-
constructor(instrument: InstrumentSelector, timeframe: number, length: number);
|
|
34
|
-
}
|
|
35
|
-
export declare class AdapterFeedCommand {
|
|
36
|
-
readonly instrument: InstrumentSelector;
|
|
37
|
-
readonly from: timestamp;
|
|
38
|
-
readonly to: timestamp;
|
|
39
|
-
readonly feed: Feed;
|
|
40
|
-
readonly progress: (timestamp: number) => void;
|
|
41
|
-
type: string;
|
|
42
|
-
constructor(instrument: InstrumentSelector, from: timestamp, to: timestamp, feed: Feed, progress: (timestamp: number) => void);
|
|
43
|
-
}
|
|
@@ -1,104 +0,0 @@
|
|
|
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
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.AdapterFeedCommand = exports.AdapterHistoryQuery = exports.AdapterOrderCancelCommand = exports.AdapterOrderOpenCommand = exports.AdapterSubscribeCommand = exports.AdapterAccountCommand = exports.AdapterDisposeCommand = exports.AdapterAwakeCommand = void 0;
|
|
13
|
-
const storage_1 = require("../storage");
|
|
14
|
-
const domain_1 = require("../domain");
|
|
15
|
-
const topic_1 = require("../shared/topic");
|
|
16
|
-
let AdapterAwakeCommand = class AdapterAwakeCommand {
|
|
17
|
-
constructor() {
|
|
18
|
-
this.type = 'awake';
|
|
19
|
-
}
|
|
20
|
-
};
|
|
21
|
-
AdapterAwakeCommand = __decorate([
|
|
22
|
-
topic_1.event
|
|
23
|
-
], AdapterAwakeCommand);
|
|
24
|
-
exports.AdapterAwakeCommand = AdapterAwakeCommand;
|
|
25
|
-
let AdapterDisposeCommand = class AdapterDisposeCommand {
|
|
26
|
-
constructor() {
|
|
27
|
-
this.type = 'dispose';
|
|
28
|
-
}
|
|
29
|
-
};
|
|
30
|
-
AdapterDisposeCommand = __decorate([
|
|
31
|
-
topic_1.event
|
|
32
|
-
], AdapterDisposeCommand);
|
|
33
|
-
exports.AdapterDisposeCommand = AdapterDisposeCommand;
|
|
34
|
-
let AdapterAccountCommand = class AdapterAccountCommand {
|
|
35
|
-
constructor() {
|
|
36
|
-
this.type = 'account';
|
|
37
|
-
}
|
|
38
|
-
};
|
|
39
|
-
AdapterAccountCommand = __decorate([
|
|
40
|
-
topic_1.event
|
|
41
|
-
], AdapterAccountCommand);
|
|
42
|
-
exports.AdapterAccountCommand = AdapterAccountCommand;
|
|
43
|
-
let AdapterSubscribeCommand = class AdapterSubscribeCommand {
|
|
44
|
-
constructor(instrument) {
|
|
45
|
-
this.instrument = instrument;
|
|
46
|
-
this.type = 'subscribe';
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
AdapterSubscribeCommand = __decorate([
|
|
50
|
-
topic_1.event,
|
|
51
|
-
__metadata("design:paramtypes", [Array])
|
|
52
|
-
], AdapterSubscribeCommand);
|
|
53
|
-
exports.AdapterSubscribeCommand = AdapterSubscribeCommand;
|
|
54
|
-
let AdapterOrderOpenCommand = class AdapterOrderOpenCommand {
|
|
55
|
-
constructor(order) {
|
|
56
|
-
this.order = order;
|
|
57
|
-
this.type = 'order-open';
|
|
58
|
-
}
|
|
59
|
-
};
|
|
60
|
-
AdapterOrderOpenCommand = __decorate([
|
|
61
|
-
topic_1.event,
|
|
62
|
-
__metadata("design:paramtypes", [domain_1.Order])
|
|
63
|
-
], AdapterOrderOpenCommand);
|
|
64
|
-
exports.AdapterOrderOpenCommand = AdapterOrderOpenCommand;
|
|
65
|
-
let AdapterOrderCancelCommand = class AdapterOrderCancelCommand {
|
|
66
|
-
constructor(order) {
|
|
67
|
-
this.order = order;
|
|
68
|
-
this.type = 'order-cancel';
|
|
69
|
-
}
|
|
70
|
-
};
|
|
71
|
-
AdapterOrderCancelCommand = __decorate([
|
|
72
|
-
topic_1.event,
|
|
73
|
-
__metadata("design:paramtypes", [domain_1.Order])
|
|
74
|
-
], AdapterOrderCancelCommand);
|
|
75
|
-
exports.AdapterOrderCancelCommand = AdapterOrderCancelCommand;
|
|
76
|
-
let AdapterHistoryQuery = class AdapterHistoryQuery {
|
|
77
|
-
constructor(instrument, timeframe, length) {
|
|
78
|
-
this.instrument = instrument;
|
|
79
|
-
this.timeframe = timeframe;
|
|
80
|
-
this.length = length;
|
|
81
|
-
this.type = 'history';
|
|
82
|
-
}
|
|
83
|
-
};
|
|
84
|
-
AdapterHistoryQuery = __decorate([
|
|
85
|
-
topic_1.event,
|
|
86
|
-
__metadata("design:paramtypes", [domain_1.InstrumentSelector, Number, Number])
|
|
87
|
-
], AdapterHistoryQuery);
|
|
88
|
-
exports.AdapterHistoryQuery = AdapterHistoryQuery;
|
|
89
|
-
let AdapterFeedCommand = class AdapterFeedCommand {
|
|
90
|
-
constructor(instrument, from, to, feed, progress) {
|
|
91
|
-
this.instrument = instrument;
|
|
92
|
-
this.from = from;
|
|
93
|
-
this.to = to;
|
|
94
|
-
this.feed = feed;
|
|
95
|
-
this.progress = progress;
|
|
96
|
-
this.type = 'feed';
|
|
97
|
-
}
|
|
98
|
-
};
|
|
99
|
-
AdapterFeedCommand = __decorate([
|
|
100
|
-
topic_1.event,
|
|
101
|
-
__metadata("design:paramtypes", [domain_1.InstrumentSelector, Number, Number, storage_1.Feed, Function])
|
|
102
|
-
], AdapterFeedCommand);
|
|
103
|
-
exports.AdapterFeedCommand = AdapterFeedCommand;
|
|
104
|
-
//# sourceMappingURL=adapter.event.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.event.js","sourceRoot":"","sources":["../../src/adapter/adapter.event.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,wCAAkC;AAElC,sCAAsD;AACtD,2CAAwC;AAGxC,IAAa,mBAAmB,GAAhC,MAAa,mBAAmB;IAAhC;QACE,SAAI,GAAG,OAAO,CAAC;IACjB,CAAC;CAAA,CAAA;AAFY,mBAAmB;IAD/B,aAAK;GACO,mBAAmB,CAE/B;AAFY,kDAAmB;AAKhC,IAAa,qBAAqB,GAAlC,MAAa,qBAAqB;IAAlC;QACE,SAAI,GAAG,SAAS,CAAC;IACnB,CAAC;CAAA,CAAA;AAFY,qBAAqB;IADjC,aAAK;GACO,qBAAqB,CAEjC;AAFY,sDAAqB;AAKlC,IAAa,qBAAqB,GAAlC,MAAa,qBAAqB;IAAlC;QACE,SAAI,GAAG,SAAS,CAAC;IACnB,CAAC;CAAA,CAAA;AAFY,qBAAqB;IADjC,aAAK;GACO,qBAAqB,CAEjC;AAFY,sDAAqB;AAKlC,IAAa,uBAAuB,GAApC,MAAa,uBAAuB;IAGlC,YAAqB,UAAqC;QAArC,eAAU,GAAV,UAAU,CAA2B;QAF1D,SAAI,GAAG,WAAW,CAAC;IAE0C,CAAC;CAC/D,CAAA;AAJY,uBAAuB;IADnC,aAAK;qCAI6B,KAAK;GAH3B,uBAAuB,CAInC;AAJY,0DAAuB;AAOpC,IAAa,uBAAuB,GAApC,MAAa,uBAAuB;IAGlC,YAAqB,KAAY;QAAZ,UAAK,GAAL,KAAK,CAAO;QAFjC,SAAI,GAAG,YAAY,CAAC;IAEgB,CAAC;CACtC,CAAA;AAJY,uBAAuB;IADnC,aAAK;qCAIwB,cAAK;GAHtB,uBAAuB,CAInC;AAJY,0DAAuB;AAOpC,IAAa,yBAAyB,GAAtC,MAAa,yBAAyB;IAGpC,YAAqB,KAAY;QAAZ,UAAK,GAAL,KAAK,CAAO;QAFjC,SAAI,GAAG,cAAc,CAAC;IAEc,CAAC;CACtC,CAAA;AAJY,yBAAyB;IADrC,aAAK;qCAIwB,cAAK;GAHtB,yBAAyB,CAIrC;AAJY,8DAAyB;AAOtC,IAAa,mBAAmB,GAAhC,MAAa,mBAAmB;IAG9B,YACW,UAA8B,EAC9B,SAAiB,EACjB,MAAc;QAFd,eAAU,GAAV,UAAU,CAAoB;QAC9B,cAAS,GAAT,SAAS,CAAQ;QACjB,WAAM,GAAN,MAAM,CAAQ;QALzB,SAAI,GAAG,SAAS,CAAC;IAMd,CAAC;CACL,CAAA;AARY,mBAAmB;IAD/B,aAAK;qCAKmB,2BAAkB;GAJ9B,mBAAmB,CAQ/B;AARY,kDAAmB;AAWhC,IAAa,kBAAkB,GAA/B,MAAa,kBAAkB;IAG7B,YACW,UAA8B,EAC9B,IAAe,EACf,EAAa,EACb,IAAU,EACV,QAAqC;QAJrC,eAAU,GAAV,UAAU,CAAoB;QAC9B,SAAI,GAAJ,IAAI,CAAW;QACf,OAAE,GAAF,EAAE,CAAW;QACb,SAAI,GAAJ,IAAI,CAAM;QACV,aAAQ,GAAR,QAAQ,CAA6B;QAPhD,SAAI,GAAG,MAAM,CAAC;IAQX,CAAC;CACL,CAAA;AAVY,kBAAkB;IAD9B,aAAK;qCAKmB,2BAAkB,kBAGxB,cAAI;GAPV,kBAAkB,CAU9B;AAVY,gDAAkB"}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { Feed } from '../storage';
|
|
2
|
-
import { timestamp } from '../shared';
|
|
3
|
-
import { InstrumentSelector, Order } from '../domain';
|
|
4
|
-
import { event } from '../shared/topic';
|
|
5
|
-
|
|
6
|
-
@event
|
|
7
|
-
export class AdapterAwakeCommand {
|
|
8
|
-
type = 'awake';
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
@event
|
|
12
|
-
export class AdapterDisposeCommand {
|
|
13
|
-
type = 'dispose';
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
@event
|
|
17
|
-
export class AdapterAccountCommand {
|
|
18
|
-
type = 'account';
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
@event
|
|
22
|
-
export class AdapterSubscribeCommand {
|
|
23
|
-
type = 'subscribe';
|
|
24
|
-
|
|
25
|
-
constructor(readonly instrument: Array<InstrumentSelector>) {}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
@event
|
|
29
|
-
export class AdapterOrderOpenCommand {
|
|
30
|
-
type = 'order-open';
|
|
31
|
-
|
|
32
|
-
constructor(readonly order: Order) {}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
@event
|
|
36
|
-
export class AdapterOrderCancelCommand {
|
|
37
|
-
type = 'order-cancel';
|
|
38
|
-
|
|
39
|
-
constructor(readonly order: Order) {}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
@event
|
|
43
|
-
export class AdapterHistoryQuery {
|
|
44
|
-
type = 'history';
|
|
45
|
-
|
|
46
|
-
constructor(
|
|
47
|
-
readonly instrument: InstrumentSelector,
|
|
48
|
-
readonly timeframe: number,
|
|
49
|
-
readonly length: number
|
|
50
|
-
) {}
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
@event
|
|
54
|
-
export class AdapterFeedCommand {
|
|
55
|
-
type = 'feed';
|
|
56
|
-
|
|
57
|
-
constructor(
|
|
58
|
-
readonly instrument: InstrumentSelector,
|
|
59
|
-
readonly from: timestamp,
|
|
60
|
-
readonly to: timestamp,
|
|
61
|
-
readonly feed: Feed,
|
|
62
|
-
readonly progress: (timestamp: number) => void
|
|
63
|
-
) {}
|
|
64
|
-
}
|