@quantform/core 0.3.263 → 0.3.271
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 +2 -2
- package/dist/adapter/adapter-aggregate.js.map +1 -1
- package/dist/adapter/adapter.d.ts +5 -6
- package/dist/adapter/adapter.js.map +1 -1
- package/dist/adapter/backtester/backtester-adapter.d.ts +6 -6
- package/dist/adapter/backtester/backtester-adapter.js +5 -9
- package/dist/adapter/backtester/backtester-adapter.js.map +1 -1
- package/dist/adapter/backtester/backtester-cursor.d.ts +2 -2
- package/dist/adapter/backtester/backtester-cursor.spec.js +9 -9
- package/dist/adapter/backtester/backtester-cursor.spec.js.map +1 -1
- package/dist/adapter/backtester/backtester-streamer.d.ts +6 -4
- package/dist/adapter/backtester/backtester-streamer.js +5 -5
- package/dist/adapter/backtester/backtester-streamer.js.map +1 -1
- package/dist/adapter/backtester/backtester-streamer.spec.js +9 -11
- package/dist/adapter/backtester/backtester-streamer.spec.js.map +1 -1
- package/dist/adapter/index.d.ts +2 -0
- package/dist/adapter/index.js +2 -0
- package/dist/adapter/index.js.map +1 -1
- package/dist/adapter/paper/index.d.ts +2 -2
- package/dist/adapter/paper/index.js +2 -2
- package/dist/adapter/paper/index.js.map +1 -1
- package/dist/adapter/paper/paper-adapter.d.ts +5 -5
- package/dist/adapter/paper/paper-adapter.js +9 -12
- package/dist/adapter/paper/paper-adapter.js.map +1 -1
- package/dist/adapter/paper/paper-adapter.spec.js +5 -7
- package/dist/adapter/paper/paper-adapter.spec.js.map +1 -1
- package/dist/adapter/paper/{executor/paper-margin-executor.d.ts → simulator/paper-margin-simulator.d.ts} +3 -3
- package/dist/adapter/paper/{executor/paper-margin-executor.js → simulator/paper-margin-simulator.js} +11 -11
- package/dist/adapter/paper/simulator/paper-margin-simulator.js.map +1 -0
- package/dist/adapter/paper/{executor/paper-executor.d.ts → simulator/paper-simulator.d.ts} +2 -2
- package/dist/adapter/paper/{executor/paper-executor.js → simulator/paper-simulator.js} +7 -7
- package/dist/adapter/paper/simulator/paper-simulator.js.map +1 -0
- package/dist/adapter/paper/{executor/paper-spot-executor.d.ts → simulator/paper-spot-simulator.d.ts} +3 -3
- package/dist/adapter/paper/{executor/paper-spot-executor.js → simulator/paper-spot-simulator.js} +17 -17
- package/dist/adapter/paper/simulator/paper-spot-simulator.js.map +1 -0
- package/dist/{session/session-optimizer.spec.d.ts → adapter/paper/simulator/paper-spot-simulator.spec.d.ts} +0 -0
- package/dist/adapter/paper/simulator/paper-spot-simulator.spec.js +49 -0
- package/dist/adapter/paper/simulator/paper-spot-simulator.spec.js.map +1 -0
- package/dist/bootstrap.d.ts +2 -2
- package/dist/bootstrap.js +7 -9
- package/dist/bootstrap.js.map +1 -1
- package/dist/domain/balance.d.ts +1 -1
- package/dist/domain/candle.d.ts +14 -0
- package/dist/domain/candle.js +65 -1
- package/dist/domain/candle.js.map +1 -1
- package/dist/domain/candle.spec.js +11 -13
- package/dist/domain/candle.spec.js.map +1 -1
- package/dist/domain/index.d.ts +7 -6
- package/dist/domain/index.js +7 -6
- package/dist/domain/index.js.map +1 -1
- package/dist/domain/order.d.ts +1 -1
- package/dist/domain/order.js.map +1 -1
- package/dist/domain/orderbook.d.ts +1 -1
- package/dist/domain/position.d.ts +2 -2
- package/dist/domain/position.js +3 -3
- package/dist/domain/position.js.map +1 -1
- package/dist/{session → domain}/session.d.ts +14 -3
- package/dist/{session → domain}/session.js +17 -18
- package/dist/domain/session.js.map +1 -0
- package/dist/{session → domain}/session.spec.d.ts +0 -0
- package/dist/{session → domain}/session.spec.js +3 -3
- package/dist/domain/session.spec.js.map +1 -0
- package/dist/{session/session-statement.d.ts → domain/statement.d.ts} +2 -3
- package/dist/{session/session-statement.js → domain/statement.js} +1 -1
- package/dist/domain/statement.js.map +1 -0
- package/dist/domain/trade.d.ts +1 -1
- package/dist/index.d.ts +4 -8
- package/dist/index.js +4 -8
- package/dist/index.js.map +1 -1
- package/dist/indicator/atr.js +3 -3
- package/dist/indicator/atr.js.map +1 -1
- package/dist/indicator/cross.js +3 -3
- package/dist/indicator/cross.js.map +1 -1
- package/dist/indicator/donchian.js +3 -4
- package/dist/indicator/donchian.js.map +1 -1
- package/dist/indicator/drawdown.js +3 -3
- package/dist/indicator/drawdown.js.map +1 -1
- package/dist/indicator/ema.js +3 -3
- package/dist/indicator/ema.js.map +1 -1
- package/dist/indicator/envelope.js +3 -3
- package/dist/indicator/envelope.js.map +1 -1
- package/dist/indicator/index.d.ts +3 -3
- package/dist/indicator/index.js +3 -3
- package/dist/indicator/index.js.map +1 -1
- package/dist/indicator/macd.js +2 -3
- package/dist/indicator/macd.js.map +1 -1
- package/dist/indicator/min-max.js +3 -3
- package/dist/indicator/min-max.js.map +1 -1
- package/dist/indicator/rma.js +3 -3
- package/dist/indicator/rma.js.map +1 -1
- package/dist/indicator/sma.js +2 -3
- package/dist/indicator/sma.js.map +1 -1
- package/dist/indicator/swma.js +3 -3
- package/dist/indicator/swma.js.map +1 -1
- package/dist/indicator/tma.js +3 -3
- package/dist/indicator/tma.js.map +1 -1
- package/dist/indicator/trailing.js +3 -3
- package/dist/indicator/trailing.js.map +1 -1
- package/dist/indicator/truerange.js +3 -3
- package/dist/indicator/truerange.js.map +1 -1
- package/dist/indicator/truerange.spec.js +2 -2
- package/dist/indicator/truerange.spec.js.map +1 -1
- package/dist/indicator/wma.js +3 -3
- package/dist/indicator/wma.js.map +1 -1
- package/dist/ipc.d.ts +1 -1
- package/dist/ipc.js +3 -3
- package/dist/ipc.js.map +1 -1
- package/dist/ipc.spec.js +4 -5
- package/dist/ipc.spec.js.map +1 -1
- package/dist/shared/index.d.ts +4 -4
- package/dist/shared/index.js +4 -4
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/policy.js +1 -1
- package/dist/shared/policy.js.map +1 -1
- package/dist/shared/task.d.ts +1 -1
- package/dist/storage/feed.d.ts +1 -1
- package/dist/storage/feed.js.map +1 -1
- package/dist/storage/index.d.ts +1 -1
- package/dist/storage/index.js +1 -1
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/measurement.js.map +1 -1
- package/dist/storage/storage.js.map +1 -1
- package/dist/store/event/index.d.ts +4 -4
- package/dist/store/event/index.js +4 -4
- package/dist/store/event/index.js.map +1 -1
- package/dist/store/event/store-balance.event.d.ts +1 -1
- package/dist/store/event/store-balance.event.js +1 -1
- package/dist/store/event/store-balance.event.js.map +1 -1
- package/dist/store/event/store-balance.event.spec.js +3 -3
- package/dist/store/event/store-balance.event.spec.js.map +1 -1
- package/dist/store/event/store-candle.event.d.ts +2 -2
- package/dist/store/event/store-candle.event.js +2 -2
- package/dist/store/event/store-candle.event.js.map +1 -1
- package/dist/store/event/store-candle.event.spec.js +1 -1
- package/dist/store/event/store-candle.event.spec.js.map +1 -1
- package/dist/store/event/store-instrument.event.d.ts +1 -1
- package/dist/store/event/store-instrument.event.js +1 -1
- package/dist/store/event/store-instrument.event.js.map +1 -1
- package/dist/store/event/store-instrument.event.spec.js +1 -1
- package/dist/store/event/store-instrument.event.spec.js.map +1 -1
- package/dist/store/event/store-order.event.d.ts +1 -1
- package/dist/store/event/store-order.event.js +6 -6
- 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/event/store-orderbook.event.d.ts +1 -1
- package/dist/store/event/store-orderbook.event.js +1 -1
- package/dist/store/event/store-orderbook.event.js.map +1 -1
- package/dist/store/event/store-position.event.d.ts +1 -1
- package/dist/store/event/store-position.event.js +1 -1
- package/dist/store/event/store-position.event.js.map +1 -1
- package/dist/store/event/store-trade.event.d.ts +1 -1
- package/dist/store/event/store-trade.event.js +1 -1
- package/dist/store/event/store-trade.event.js.map +1 -1
- package/dist/store/event/store-trade.event.spec.js +2 -2
- package/dist/store/event/store-trade.event.spec.js.map +1 -1
- package/dist/store/index.d.ts +1 -0
- package/dist/store/index.js +1 -0
- package/dist/store/index.js.map +1 -1
- package/dist/store/store.d.ts +2 -5
- package/dist/store/store.js +4 -8
- package/dist/store/store.js.map +1 -1
- package/dist/store/store.state.d.ts +1 -1
- package/dist/tests/backtester-adapter.spec.js +8 -15
- package/dist/tests/backtester-adapter.spec.js.map +1 -1
- package/dist/tests/session.spec.d.ts +0 -1
- package/dist/tests/session.spec.js +0 -2
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/adapter/adapter-aggregate.ts +2 -3
- package/src/adapter/adapter.ts +5 -6
- package/src/adapter/backtester/backtester-adapter.ts +8 -8
- package/src/adapter/backtester/backtester-cursor.spec.ts +1 -1
- package/src/adapter/backtester/backtester-cursor.ts +2 -2
- package/src/adapter/backtester/backtester-streamer.spec.ts +1 -3
- package/src/adapter/backtester/backtester-streamer.ts +7 -8
- package/src/adapter/index.ts +2 -0
- package/src/adapter/paper/index.ts +2 -2
- package/src/adapter/paper/paper-adapter.spec.ts +6 -8
- package/src/adapter/paper/paper-adapter.ts +9 -11
- package/src/adapter/paper/{executor/paper-margin-executor.ts → simulator/paper-margin-simulator.ts} +5 -5
- package/src/adapter/paper/{executor/paper-executor.ts → simulator/paper-simulator.ts} +4 -4
- package/src/adapter/paper/simulator/paper-spot-simulator.spec.ts +87 -0
- package/src/adapter/paper/{executor/paper-spot-executor.ts → simulator/paper-spot-simulator.ts} +6 -6
- package/src/bootstrap.ts +5 -5
- package/src/domain/balance.ts +1 -1
- package/src/domain/candle.spec.ts +3 -5
- package/src/domain/candle.ts +103 -0
- package/src/domain/index.ts +7 -6
- package/src/domain/order.ts +2 -2
- package/src/domain/orderbook.ts +1 -1
- package/src/domain/position.ts +2 -3
- package/src/{session → domain}/session.spec.ts +3 -3
- package/src/{session → domain}/session.ts +61 -8
- package/src/{session/session-statement.ts → domain/statement.ts} +1 -2
- package/src/domain/trade.ts +1 -1
- package/src/index.ts +4 -8
- package/src/indicator/atr.ts +1 -2
- package/src/indicator/cross.ts +3 -4
- package/src/indicator/donchian.ts +2 -3
- package/src/indicator/drawdown.ts +2 -3
- package/src/indicator/ema.ts +1 -2
- package/src/indicator/envelope.ts +1 -2
- package/src/indicator/index.ts +3 -3
- package/src/indicator/macd.ts +1 -2
- package/src/indicator/min-max.ts +1 -2
- package/src/indicator/rma.ts +1 -2
- package/src/indicator/sma.ts +1 -2
- package/src/indicator/swma.ts +1 -2
- package/src/indicator/tma.ts +1 -2
- package/src/indicator/trailing.ts +3 -4
- package/src/indicator/truerange.spec.ts +2 -2
- package/src/indicator/truerange.ts +1 -2
- package/src/indicator/window.ts +1 -1
- package/src/indicator/wma.ts +1 -2
- package/src/ipc.spec.ts +6 -7
- package/src/ipc.ts +6 -7
- package/src/shared/index.ts +4 -4
- package/src/shared/policy.ts +1 -1
- package/src/shared/task.ts +1 -1
- package/src/shared/topic.spec.ts +1 -1
- package/src/storage/feed.ts +20 -1
- package/src/storage/index.ts +1 -1
- package/src/storage/measurement.ts +19 -0
- package/src/storage/storage.ts +37 -0
- package/src/store/event/index.ts +4 -4
- package/src/store/event/store-balance.event.spec.ts +3 -3
- package/src/store/event/store-balance.event.ts +2 -2
- package/src/store/event/store-candle.event.spec.ts +1 -1
- package/src/store/event/store-candle.event.ts +5 -5
- package/src/store/event/store-instrument.event.spec.ts +1 -1
- package/src/store/event/store-instrument.event.ts +2 -2
- package/src/store/event/store-order.event.spec.ts +2 -2
- package/src/store/event/store-order.event.ts +7 -7
- package/src/store/event/store-orderbook.event.ts +2 -2
- package/src/store/event/store-position.event.ts +2 -2
- package/src/store/event/store-trade.event.spec.ts +2 -2
- package/src/store/event/store-trade.event.ts +2 -2
- package/src/store/index.ts +1 -0
- package/src/store/store.state.ts +7 -7
- package/src/store/store.ts +6 -9
- package/src/tests/backtester-adapter.spec.ts +8 -15
- package/src/tests/session.spec.ts +0 -3
- package/dist/adapter/paper/executor/paper-executor.js.map +0 -1
- package/dist/adapter/paper/executor/paper-margin-executor.js.map +0 -1
- package/dist/adapter/paper/executor/paper-spot-executor.js.map +0 -1
- package/dist/domain/candle-builder.d.ts +0 -16
- package/dist/domain/candle-builder.js +0 -70
- package/dist/domain/candle-builder.js.map +0 -1
- package/dist/session/index.d.ts +0 -4
- package/dist/session/index.js +0 -17
- package/dist/session/index.js.map +0 -1
- package/dist/session/session-descriptor.d.ts +0 -15
- package/dist/session/session-descriptor.js +0 -3
- package/dist/session/session-descriptor.js.map +0 -1
- package/dist/session/session-optimizer.d.ts +0 -10
- package/dist/session/session-optimizer.js +0 -62
- package/dist/session/session-optimizer.js.map +0 -1
- package/dist/session/session-optimizer.spec.js +0 -103
- package/dist/session/session-optimizer.spec.js.map +0 -1
- package/dist/session/session-statement.js.map +0 -1
- package/dist/session/session.js.map +0 -1
- package/dist/session/session.spec.js.map +0 -1
- package/src/domain/candle-builder.ts +0 -104
- package/src/session/index.ts +0 -4
- package/src/session/session-descriptor.ts +0 -53
- package/src/session/session-optimizer.spec.ts +0 -86
- package/src/session/session-optimizer.ts +0 -81
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import { Timeframe } from '../domain';
|
|
2
|
-
import { SessionOptimizer, fit, SessionOptimizerGenerator } from './session-optimizer';
|
|
3
|
-
|
|
4
|
-
describe('session optimizer tests', () => {
|
|
5
|
-
test('should ignore not provided value for property', () => {
|
|
6
|
-
class Target {
|
|
7
|
-
@fit('timeframe')
|
|
8
|
-
timeframe = Timeframe.H1;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
const sut = new Target();
|
|
12
|
-
|
|
13
|
-
expect(sut.timeframe).toBe(Timeframe.H1);
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
test('should ignore not provided descendant value for property', () => {
|
|
17
|
-
class Target {
|
|
18
|
-
@fit('timeframe.daily')
|
|
19
|
-
timeframe = Timeframe.H1;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
const sut = new Target();
|
|
23
|
-
|
|
24
|
-
expect(sut.timeframe).toBe(Timeframe.H1);
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
test('should set provided value for property', () => {
|
|
28
|
-
class Target {
|
|
29
|
-
@fit('timeframe')
|
|
30
|
-
timeframe = Timeframe.H1;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
SessionOptimizer.source = {
|
|
34
|
-
timeframe: Timeframe.D1
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
const sut = new Target();
|
|
38
|
-
|
|
39
|
-
expect(sut.timeframe).toBe(Timeframe.D1);
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
test('should set provided descendant value for property', () => {
|
|
43
|
-
class Target {
|
|
44
|
-
@fit('timeframe.daily')
|
|
45
|
-
timeframe = Timeframe.H1;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
SessionOptimizer.source = {
|
|
49
|
-
timeframe: {
|
|
50
|
-
daily: Timeframe.D1
|
|
51
|
-
}
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
const sut = new Target();
|
|
55
|
-
|
|
56
|
-
expect(sut.timeframe).toBe(Timeframe.D1);
|
|
57
|
-
});
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
describe('optimizer generator tests', () => {
|
|
61
|
-
test('should generate optimized input', () => {
|
|
62
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
63
|
-
class Target {
|
|
64
|
-
@fit('target.timeframe', [Timeframe.D1, Timeframe.H1])
|
|
65
|
-
timeframe;
|
|
66
|
-
@fit('target.length', [7, 14, 21])
|
|
67
|
-
length;
|
|
68
|
-
@fit('target.size', [0.1, 0.2, 0.3, 0.4])
|
|
69
|
-
size;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
expect(SessionOptimizerGenerator.count).toBe(24);
|
|
73
|
-
|
|
74
|
-
const product = SessionOptimizerGenerator.product();
|
|
75
|
-
|
|
76
|
-
expect(product.length).toBe(24);
|
|
77
|
-
|
|
78
|
-
expect(product[0].target.timeframe).toBe(Timeframe.D1);
|
|
79
|
-
expect(product[0].target.length).toBe(7);
|
|
80
|
-
expect(product[0].target.size).toBe(0.1);
|
|
81
|
-
|
|
82
|
-
expect(product[23].target.timeframe).toBe(Timeframe.H1);
|
|
83
|
-
expect(product[23].target.length).toBe(21);
|
|
84
|
-
expect(product[23].target.size).toBe(0.4);
|
|
85
|
-
});
|
|
86
|
-
});
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
export function fit(key: string, generator?: any[]) {
|
|
2
|
-
return function (target: any, propertyKey: string) {
|
|
3
|
-
let defaultSetterValue;
|
|
4
|
-
|
|
5
|
-
if (generator) {
|
|
6
|
-
SessionOptimizerGenerator.values[key] = generator;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
Object.defineProperty(target, propertyKey, {
|
|
10
|
-
get: () => SessionOptimizer.provide(key) ?? defaultSetterValue,
|
|
11
|
-
set: (newValue: any) => {
|
|
12
|
-
if (!defaultSetterValue) {
|
|
13
|
-
defaultSetterValue = newValue;
|
|
14
|
-
return;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
if (defaultSetterValue == newValue) {
|
|
18
|
-
return;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
throw new Error('can not set a value of optimized property.');
|
|
22
|
-
}
|
|
23
|
-
});
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export class SessionOptimizer {
|
|
28
|
-
static source: any = {};
|
|
29
|
-
|
|
30
|
-
static provide(key: string): any {
|
|
31
|
-
return key
|
|
32
|
-
.split('.')
|
|
33
|
-
.reduce(
|
|
34
|
-
(aggregate, propertyName) => (aggregate ? aggregate[propertyName] : null),
|
|
35
|
-
this.source
|
|
36
|
-
);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
export class SessionOptimizerGenerator {
|
|
41
|
-
static values: Record<string, any[]> = {};
|
|
42
|
-
|
|
43
|
-
static get count(): number {
|
|
44
|
-
return Object.values(this.values).reduce(
|
|
45
|
-
(aggregate, value) => (aggregate *= value.length),
|
|
46
|
-
1
|
|
47
|
-
);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
static product(): any[] {
|
|
51
|
-
const matrix = [];
|
|
52
|
-
const keys = Object.keys(this.values);
|
|
53
|
-
const values = Object.values(this.values).reduce(
|
|
54
|
-
(a, b) => a.map(x => b.map(y => x.concat(y))).reduce((a, b) => a.concat(b), []),
|
|
55
|
-
[[]]
|
|
56
|
-
);
|
|
57
|
-
|
|
58
|
-
for (const value of values) {
|
|
59
|
-
const result = {};
|
|
60
|
-
|
|
61
|
-
for (let i = 0; i < keys.length; i++) {
|
|
62
|
-
const path = keys[i];
|
|
63
|
-
const parts = path.split('.');
|
|
64
|
-
|
|
65
|
-
let it = result;
|
|
66
|
-
|
|
67
|
-
while (parts.length > 1) {
|
|
68
|
-
const part = parts.shift();
|
|
69
|
-
|
|
70
|
-
it = it[part] = it[part] || {};
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
it[parts[0]] = value[i];
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
matrix.push(result);
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
return matrix;
|
|
80
|
-
}
|
|
81
|
-
}
|