@quantform/core 0.5.15 → 0.5.23
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 +5 -4
- package/dist/adapter/adapter-aggregate.js +4 -4
- package/dist/adapter/adapter-aggregate.js.map +1 -1
- package/dist/adapter/adapter.d.ts +4 -15
- package/dist/adapter/adapter.js.map +1 -1
- package/dist/adapter/backtester/backtester-adapter.d.ts +3 -3
- package/dist/adapter/backtester/backtester-adapter.js +4 -4
- package/dist/adapter/backtester/backtester-adapter.js.map +1 -1
- package/dist/adapter/backtester/backtester-adapter.spec.js +7 -6
- package/dist/adapter/backtester/backtester-adapter.spec.js.map +1 -1
- package/dist/adapter/backtester/backtester-cursor.d.ts +4 -4
- package/dist/adapter/backtester/backtester-cursor.js.map +1 -1
- package/dist/adapter/backtester/backtester-cursor.spec.js +19 -17
- package/dist/adapter/backtester/backtester-cursor.spec.js.map +1 -1
- package/dist/adapter/backtester/backtester-streamer.d.ts +0 -1
- package/dist/adapter/backtester/backtester-streamer.js +4 -14
- package/dist/adapter/backtester/backtester-streamer.js.map +1 -1
- package/dist/adapter/backtester/backtester-streamer.spec.js +12 -11
- package/dist/adapter/backtester/backtester-streamer.spec.js.map +1 -1
- package/dist/adapter/paper/engine/paper-engine.js +20 -19
- package/dist/adapter/paper/engine/paper-engine.js.map +1 -1
- package/dist/adapter/paper/engine/paper-engine.spec.js +19 -19
- package/dist/adapter/paper/engine/paper-engine.spec.js.map +1 -1
- package/dist/adapter/paper/paper-adapter.d.ts +4 -3
- package/dist/adapter/paper/paper-adapter.js +8 -7
- package/dist/adapter/paper/paper-adapter.js.map +1 -1
- package/dist/adapter/paper/paper-adapter.spec.js +5 -4
- package/dist/adapter/paper/paper-adapter.spec.js.map +1 -1
- package/dist/cli/pull.js +5 -10
- package/dist/cli/pull.js.map +1 -1
- package/dist/domain/asset.d.ts +4 -4
- package/dist/domain/asset.js +4 -7
- package/dist/domain/asset.js.map +1 -1
- package/dist/domain/asset.spec.js +4 -4
- package/dist/domain/asset.spec.js.map +1 -1
- package/dist/domain/balance.d.ts +9 -9
- package/dist/domain/balance.js +16 -15
- package/dist/domain/balance.js.map +1 -1
- package/dist/domain/balance.spec.js +37 -36
- package/dist/domain/balance.spec.js.map +1 -1
- package/dist/domain/candle.d.ts +8 -8
- package/dist/domain/candle.js +3 -2
- package/dist/domain/candle.js.map +1 -1
- package/dist/domain/candle.operator.d.ts +3 -2
- package/dist/domain/candle.operator.js.map +1 -1
- package/dist/domain/candle.operator.spec.js +43 -42
- package/dist/domain/candle.operator.spec.js.map +1 -1
- package/dist/domain/candle.spec.js +11 -11
- package/dist/domain/candle.spec.js.map +1 -1
- package/dist/domain/commission.d.ts +10 -9
- package/dist/domain/commission.js +5 -5
- package/dist/domain/commission.js.map +1 -1
- package/dist/domain/commission.spec.js +13 -12
- package/dist/domain/commission.spec.js.map +1 -1
- package/dist/domain/error.d.ts +2 -1
- package/dist/domain/error.js +1 -1
- package/dist/domain/error.js.map +1 -1
- package/dist/domain/order.d.ts +13 -13
- package/dist/domain/order.js +10 -9
- package/dist/domain/order.js.map +1 -1
- package/dist/domain/order.operator.spec.js +6 -5
- package/dist/domain/order.operator.spec.js.map +1 -1
- package/dist/domain/order.spec.js +11 -10
- package/dist/domain/order.spec.js.map +1 -1
- package/dist/domain/orderbook.d.ts +18 -6
- package/dist/domain/orderbook.js +5 -4
- package/dist/domain/orderbook.js.map +1 -1
- package/dist/domain/position.d.ts +7 -7
- package/dist/domain/position.js +2 -2
- package/dist/domain/position.js.map +1 -1
- package/dist/domain/position.operator.d.ts +3 -2
- package/dist/domain/position.operator.js +3 -3
- package/dist/domain/position.operator.js.map +1 -1
- package/dist/domain/position.operator.spec.js +4 -3
- package/dist/domain/position.operator.spec.js.map +1 -1
- package/dist/domain/position.spec.js +10 -9
- package/dist/domain/position.spec.js.map +1 -1
- package/dist/domain/session.js +1 -1
- package/dist/domain/session.js.map +1 -1
- package/dist/domain/session.spec.js +1 -1
- package/dist/domain/session.spec.js.map +1 -1
- package/dist/domain/trade.d.ts +3 -3
- package/dist/indicator/atr.d.ts +2 -1
- package/dist/indicator/atr.js +3 -3
- package/dist/indicator/atr.js.map +1 -1
- package/dist/indicator/cross.d.ts +3 -2
- package/dist/indicator/cross.js +13 -13
- package/dist/indicator/cross.js.map +1 -1
- package/dist/indicator/cross.spec.js +22 -21
- package/dist/indicator/cross.spec.js.map +1 -1
- package/dist/indicator/donchian.d.ts +3 -2
- package/dist/indicator/donchian.js.map +1 -1
- package/dist/indicator/drawdown.d.ts +2 -1
- package/dist/indicator/drawdown.js +3 -2
- package/dist/indicator/drawdown.js.map +1 -1
- package/dist/indicator/ema.d.ts +2 -1
- package/dist/indicator/ema.js +3 -2
- package/dist/indicator/ema.js.map +1 -1
- package/dist/indicator/ema.spec.js +3 -2
- package/dist/indicator/ema.spec.js.map +1 -1
- package/dist/indicator/envelope.d.ts +4 -3
- package/dist/indicator/envelope.js +4 -4
- package/dist/indicator/envelope.js.map +1 -1
- package/dist/indicator/index.d.ts +1 -1
- package/dist/indicator/index.js +1 -1
- package/dist/indicator/index.js.map +1 -1
- package/dist/indicator/macd.d.ts +2 -1
- package/dist/indicator/macd.js +1 -1
- package/dist/indicator/macd.js.map +1 -1
- package/dist/indicator/min-max.d.ts +4 -3
- package/dist/indicator/min-max.js +5 -4
- package/dist/indicator/min-max.js.map +1 -1
- package/dist/indicator/rma.d.ts +2 -1
- package/dist/indicator/rma.js +3 -2
- package/dist/indicator/rma.js.map +1 -1
- package/dist/indicator/sma.d.ts +2 -1
- package/dist/indicator/sma.js +4 -6
- package/dist/indicator/sma.js.map +1 -1
- package/dist/indicator/sma.spec.js +3 -2
- package/dist/indicator/sma.spec.js.map +1 -1
- package/dist/indicator/swma.d.ts +2 -1
- package/dist/indicator/swma.js +5 -1
- package/dist/indicator/swma.js.map +1 -1
- package/dist/indicator/tma.d.ts +2 -1
- package/dist/indicator/tma.js.map +1 -1
- package/dist/indicator/tma.spec.js +3 -2
- package/dist/indicator/tma.spec.js.map +1 -1
- package/dist/indicator/trailing.d.ts +8 -7
- package/dist/indicator/trailing.js +12 -11
- package/dist/indicator/trailing.js.map +1 -1
- package/dist/indicator/trailing.spec.js +15 -14
- package/dist/indicator/trailing.spec.js.map +1 -1
- package/dist/indicator/true-range.d.ts +4 -0
- package/dist/indicator/true-range.js +20 -0
- package/dist/indicator/true-range.js.map +1 -0
- package/dist/indicator/{truerange.spec.d.ts → true-range.spec.d.ts} +0 -0
- package/dist/indicator/true-range.spec.js +28 -0
- package/dist/indicator/true-range.spec.js.map +1 -0
- package/dist/indicator/window.d.ts +1 -1
- package/dist/indicator/window.js +1 -1
- package/dist/indicator/window.js.map +1 -1
- package/dist/indicator/wma.d.ts +2 -1
- package/dist/indicator/wma.js +6 -5
- package/dist/indicator/wma.js.map +1 -1
- package/dist/indicator/wma.spec.js +3 -2
- package/dist/indicator/wma.spec.js.map +1 -1
- package/dist/shared/collections.d.ts +16 -0
- package/dist/shared/collections.js +83 -1
- package/dist/shared/collections.js.map +1 -1
- package/dist/shared/collections.spec.d.ts +1 -0
- package/dist/shared/collections.spec.js +28 -0
- package/dist/shared/collections.spec.js.map +1 -0
- package/dist/shared/decimals.d.ts +15 -6
- package/dist/shared/decimals.js +21 -34
- package/dist/shared/decimals.js.map +1 -1
- package/dist/shared/decimals.spec.js +17 -22
- package/dist/shared/decimals.spec.js.map +1 -1
- package/dist/shared/index.d.ts +1 -0
- package/dist/shared/index.js +1 -0
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/pipe.d.ts +4 -0
- package/dist/shared/pipe.js +9 -0
- package/dist/shared/pipe.js.map +1 -0
- package/dist/storage/feed.d.ts +8 -4
- package/dist/storage/feed.js +55 -18
- package/dist/storage/feed.js.map +1 -1
- package/dist/store/store-balance.event.d.ts +6 -6
- package/dist/store/store-balance.event.js +2 -2
- package/dist/store/store-balance.event.js.map +1 -1
- package/dist/store/store-balance.event.spec.js +4 -4
- package/dist/store/store-balance.event.spec.js.map +1 -1
- package/dist/store/store-instrument.event.js.map +1 -1
- package/dist/store/store-instrument.event.spec.js +1 -1
- package/dist/store/store-instrument.event.spec.js.map +1 -1
- package/dist/store/store-order.event.d.ts +3 -3
- package/dist/store/store-order.event.js.map +1 -1
- package/dist/store/store-order.event.spec.js +1 -1
- package/dist/store/store-order.event.spec.js.map +1 -1
- package/dist/store/store-orderbook.event.d.ts +4 -6
- package/dist/store/store-orderbook.event.js +13 -13
- package/dist/store/store-orderbook.event.js.map +1 -1
- package/dist/store/store-orderbook.event.spec.d.ts +1 -0
- package/dist/store/store-orderbook.event.spec.js +28 -0
- package/dist/store/store-orderbook.event.spec.js.map +1 -0
- package/dist/store/store-position.event.d.ts +4 -4
- package/dist/store/store-position.event.js +23 -11
- package/dist/store/store-position.event.js.map +1 -1
- package/dist/store/store-trade.event.d.ts +4 -4
- package/dist/store/store-trade.event.js +2 -2
- package/dist/store/store-trade.event.js.map +1 -1
- package/dist/store/store-trade.event.spec.js +8 -8
- package/dist/store/store-trade.event.spec.js.map +1 -1
- package/dist/store/store.spec.js +15 -15
- package/dist/store/store.spec.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/jestconfig.json +1 -0
- package/package.json +3 -1
- package/src/adapter/adapter-aggregate.ts +16 -7
- package/src/adapter/adapter.ts +15 -18
- package/src/adapter/backtester/backtester-adapter.spec.ts +18 -9
- package/src/adapter/backtester/backtester-adapter.ts +14 -5
- package/src/adapter/backtester/backtester-cursor.spec.ts +20 -18
- package/src/adapter/backtester/backtester-cursor.ts +5 -5
- package/src/adapter/backtester/backtester-streamer.spec.ts +14 -13
- package/src/adapter/backtester/backtester-streamer.ts +5 -22
- package/src/adapter/paper/engine/paper-engine.spec.ts +30 -23
- package/src/adapter/paper/engine/paper-engine.ts +28 -21
- package/src/adapter/paper/paper-adapter.spec.ts +15 -6
- package/src/adapter/paper/paper-adapter.ts +20 -8
- package/src/cli/pull.ts +6 -5
- package/src/domain/asset.spec.ts +4 -4
- package/src/domain/asset.ts +7 -14
- package/src/domain/balance.spec.ts +37 -36
- package/src/domain/balance.ts +29 -29
- package/src/domain/candle.operator.spec.ts +43 -42
- package/src/domain/candle.operator.ts +4 -3
- package/src/domain/candle.spec.ts +13 -12
- package/src/domain/candle.ts +9 -9
- package/src/domain/commission.spec.ts +13 -12
- package/src/domain/commission.ts +13 -11
- package/src/domain/error.ts +5 -3
- package/src/domain/order.operator.spec.ts +6 -5
- package/src/domain/order.spec.ts +11 -10
- package/src/domain/order.ts +25 -22
- package/src/domain/orderbook.ts +14 -8
- package/src/domain/position.operator.spec.ts +5 -4
- package/src/domain/position.operator.ts +8 -5
- package/src/domain/position.spec.ts +10 -9
- package/src/domain/position.ts +8 -8
- package/src/domain/session.spec.ts +3 -3
- package/src/domain/session.ts +1 -3
- package/src/domain/trade.ts +3 -3
- package/src/indicator/atr.ts +6 -5
- package/src/indicator/cross.spec.ts +32 -47
- package/src/indicator/cross.ts +18 -10
- package/src/indicator/donchian.ts +5 -4
- package/src/indicator/drawdown.ts +7 -5
- package/src/indicator/ema.spec.ts +4 -3
- package/src/indicator/ema.ts +7 -6
- package/src/indicator/envelope.ts +11 -6
- package/src/indicator/index.ts +1 -1
- package/src/indicator/macd.ts +5 -4
- package/src/indicator/min-max.ts +10 -7
- package/src/indicator/rma.ts +7 -6
- package/src/indicator/sma.spec.ts +4 -3
- package/src/indicator/sma.ts +9 -8
- package/src/indicator/swma.ts +8 -4
- package/src/indicator/tma.spec.ts +4 -3
- package/src/indicator/tma.ts +4 -3
- package/src/indicator/trailing.spec.ts +29 -16
- package/src/indicator/trailing.ts +22 -16
- package/src/indicator/true-range.spec.ts +32 -0
- package/src/indicator/true-range.ts +32 -0
- package/src/indicator/window.ts +3 -3
- package/src/indicator/wma.spec.ts +4 -3
- package/src/indicator/wma.ts +8 -7
- package/src/shared/collections.spec.ts +30 -0
- package/src/shared/collections.ts +106 -0
- package/src/shared/decimals.spec.ts +18 -24
- package/src/shared/decimals.ts +22 -55
- package/src/shared/index.ts +1 -0
- package/src/shared/pipe.ts +12 -0
- package/src/storage/feed.ts +89 -34
- package/src/store/store-balance.event.spec.ts +5 -5
- package/src/store/store-balance.event.ts +6 -6
- package/src/store/store-instrument.event.spec.ts +2 -2
- package/src/store/store-instrument.event.ts +2 -2
- package/src/store/store-order.event.spec.ts +2 -2
- package/src/store/store-order.event.ts +2 -2
- package/src/store/store-orderbook.event.spec.ts +37 -0
- package/src/store/store-orderbook.event.ts +13 -13
- package/src/store/store-position.event.ts +27 -15
- package/src/store/store-trade.event.spec.ts +9 -9
- package/src/store/store-trade.event.ts +5 -5
- package/src/store/store.spec.ts +16 -16
- package/dist/indicator/truerange.d.ts +0 -3
- package/dist/indicator/truerange.js +0 -19
- package/dist/indicator/truerange.js.map +0 -1
- package/dist/indicator/truerange.spec.js +0 -28
- package/dist/indicator/truerange.spec.js.map +0 -1
- package/src/indicator/truerange.spec.ts +0 -32
- package/src/indicator/truerange.ts +0 -31
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.truerange = void 0;
|
|
4
|
-
const rxjs_1 = require("rxjs");
|
|
5
|
-
function truerange(fn) {
|
|
6
|
-
return function (source) {
|
|
7
|
-
let previous;
|
|
8
|
-
return source.pipe((0, rxjs_1.map)(it => {
|
|
9
|
-
const current = fn(it);
|
|
10
|
-
const value = previous == null
|
|
11
|
-
? current.high - current.low
|
|
12
|
-
: Math.max(Math.max(current.high - current.low, Math.abs(current.high - previous.close)), Math.abs(current.low - previous.close));
|
|
13
|
-
const tuple = [it, value];
|
|
14
|
-
return tuple;
|
|
15
|
-
}), (0, rxjs_1.share)());
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
exports.truerange = truerange;
|
|
19
|
-
//# sourceMappingURL=truerange.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"truerange.js","sourceRoot":"","sources":["../../src/indicator/truerange.ts"],"names":[],"mappings":";;;AAAA,+BAA8C;AAI9C,SAAgB,SAAS,CAAI,EAAqB;IAChD,OAAO,UAAU,MAAqB;QACpC,IAAI,QAAQ,CAAC;QAEb,OAAO,MAAM,CAAC,IAAI,CAChB,IAAA,UAAG,EAAC,EAAE,CAAC,EAAE;YACP,MAAM,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YAEvB,MAAM,KAAK,GACT,QAAQ,IAAI,IAAI;gBACd,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG;gBAC5B,CAAC,CAAC,IAAI,CAAC,GAAG,CACN,IAAI,CAAC,GAAG,CACN,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,EAC1B,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CACxC,EACD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CACvC,CAAC;YAER,MAAM,KAAK,GAAgB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAEvC,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,EACF,IAAA,YAAK,GAAE,CACR,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AA1BD,8BA0BC"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const rxjs_1 = require("rxjs");
|
|
4
|
-
const domain_1 = require("../domain");
|
|
5
|
-
const shared_1 = require("../shared");
|
|
6
|
-
const sma_1 = require("./sma");
|
|
7
|
-
const truerange_1 = require("./truerange");
|
|
8
|
-
describe('truerange', () => {
|
|
9
|
-
test('should return expected value', done => {
|
|
10
|
-
let value;
|
|
11
|
-
(0, rxjs_1.from)([
|
|
12
|
-
new domain_1.Candle((0, shared_1.now)(), 18127.81, 18149.75, 18100.0, 18136.17),
|
|
13
|
-
new domain_1.Candle((0, shared_1.now)(), 18136.17, 18136.18, 18089.75, 18092.15),
|
|
14
|
-
new domain_1.Candle((0, shared_1.now)(), 18092.15, 18120.03, 18081.0, 18082.39),
|
|
15
|
-
new domain_1.Candle((0, shared_1.now)(), 18082.39, 18087.04, 18041.0, 18065.4),
|
|
16
|
-
new domain_1.Candle((0, shared_1.now)(), 18066.11, 18079.15, 18041.0, 18046.47)
|
|
17
|
-
])
|
|
18
|
-
.pipe((0, truerange_1.truerange)(it => it), (0, sma_1.sma)(4, ([, it]) => it))
|
|
19
|
-
.subscribe({
|
|
20
|
-
next: ([, it]) => (value = it),
|
|
21
|
-
complete: () => {
|
|
22
|
-
expect(parseFloat(value.toFixed(2))).toBe(42.41);
|
|
23
|
-
done();
|
|
24
|
-
}
|
|
25
|
-
});
|
|
26
|
-
});
|
|
27
|
-
});
|
|
28
|
-
//# sourceMappingURL=truerange.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"truerange.spec.js","sourceRoot":"","sources":["../../src/indicator/truerange.spec.ts"],"names":[],"mappings":";;AAAA,+BAA4B;AAE5B,sCAAmC;AACnC,sCAAgC;AAChC,+BAA4B;AAC5B,2CAAwC;AAExC,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,IAAI,CAAC,8BAA8B,EAAE,IAAI,CAAC,EAAE;QAC1C,IAAI,KAAK,CAAC;QAGV,IAAA,WAAI,EAAC;YACH,IAAI,eAAM,CAAC,IAAA,YAAG,GAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC;YACxD,IAAI,eAAM,CAAC,IAAA,YAAG,GAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;YACzD,IAAI,eAAM,CAAC,IAAA,YAAG,GAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC;YACxD,IAAI,eAAM,CAAC,IAAA,YAAG,GAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC;YACvD,IAAI,eAAM,CAAC,IAAA,YAAG,GAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC;SACzD,CAAC;aACC,IAAI,CACH,IAAA,qBAAS,EAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EACnB,IAAA,SAAG,EAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CACvB;aACA,SAAS,CAAC;YACT,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YAC9B,QAAQ,EAAE,GAAG,EAAE;gBACb,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACjD,IAAI,EAAE,CAAC;YACT,CAAC;SACF,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { from } from 'rxjs';
|
|
2
|
-
|
|
3
|
-
import { Candle } from '../domain';
|
|
4
|
-
import { now } from '../shared';
|
|
5
|
-
import { sma } from './sma';
|
|
6
|
-
import { truerange } from './truerange';
|
|
7
|
-
|
|
8
|
-
describe('truerange', () => {
|
|
9
|
-
test('should return expected value', done => {
|
|
10
|
-
let value;
|
|
11
|
-
|
|
12
|
-
//12 Dec 2020 00:00
|
|
13
|
-
from([
|
|
14
|
-
new Candle(now(), 18127.81, 18149.75, 18100.0, 18136.17),
|
|
15
|
-
new Candle(now(), 18136.17, 18136.18, 18089.75, 18092.15),
|
|
16
|
-
new Candle(now(), 18092.15, 18120.03, 18081.0, 18082.39),
|
|
17
|
-
new Candle(now(), 18082.39, 18087.04, 18041.0, 18065.4),
|
|
18
|
-
new Candle(now(), 18066.11, 18079.15, 18041.0, 18046.47)
|
|
19
|
-
])
|
|
20
|
-
.pipe(
|
|
21
|
-
truerange(it => it),
|
|
22
|
-
sma(4, ([, it]) => it)
|
|
23
|
-
)
|
|
24
|
-
.subscribe({
|
|
25
|
-
next: ([, it]) => (value = it),
|
|
26
|
-
complete: () => {
|
|
27
|
-
expect(parseFloat(value.toFixed(2))).toBe(42.41);
|
|
28
|
-
done();
|
|
29
|
-
}
|
|
30
|
-
});
|
|
31
|
-
});
|
|
32
|
-
});
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { map, Observable, share } from 'rxjs';
|
|
2
|
-
|
|
3
|
-
import { Candle } from '../domain';
|
|
4
|
-
|
|
5
|
-
export function truerange<T>(fn: (it: T) => Candle) {
|
|
6
|
-
return function (source: Observable<T>): Observable<[T, number]> {
|
|
7
|
-
let previous;
|
|
8
|
-
|
|
9
|
-
return source.pipe(
|
|
10
|
-
map(it => {
|
|
11
|
-
const current = fn(it);
|
|
12
|
-
|
|
13
|
-
const value =
|
|
14
|
-
previous == null
|
|
15
|
-
? current.high - current.low
|
|
16
|
-
: Math.max(
|
|
17
|
-
Math.max(
|
|
18
|
-
current.high - current.low,
|
|
19
|
-
Math.abs(current.high - previous.close)
|
|
20
|
-
),
|
|
21
|
-
Math.abs(current.low - previous.close)
|
|
22
|
-
);
|
|
23
|
-
|
|
24
|
-
const tuple: [T, number] = [it, value];
|
|
25
|
-
|
|
26
|
-
return tuple;
|
|
27
|
-
}),
|
|
28
|
-
share()
|
|
29
|
-
);
|
|
30
|
-
};
|
|
31
|
-
}
|