rxjs-trading-signals
Version:
The user - defined operator helps users quickly output index values. base trading-signals library
43 lines • 1.55 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.TR = void 0;
const big_js_1 = __importDefault(require("big.js"));
const rxjs_1 = require("rxjs");
const TR = () => {
return (observable) => new rxjs_1.Observable((subscriber) => {
let prevCandle = null;
const subscription = observable
.pipe((0, rxjs_1.concatMap)(candle => {
const high = new big_js_1.default(candle.high);
const highLow = high.minus(candle.low);
if (!prevCandle) {
prevCandle = candle;
return (0, rxjs_1.of)(highLow);
}
const highClose = high.minus(prevCandle.close).abs();
const lowClose = new big_js_1.default(candle.low).minus(prevCandle.close).abs();
prevCandle = candle;
return (0, rxjs_1.from)([highLow, highClose, lowClose]).pipe((0, rxjs_1.max)((a, b) => (new big_js_1.default(a).lt(b) ? -1 : 1)));
}))
.subscribe({
next(x) {
subscriber.next(x);
},
error(err) {
subscriber.error(err);
},
complete() {
subscriber.complete();
},
});
return () => {
subscription.unsubscribe();
prevCandle = null;
};
});
};
exports.TR = TR;
//# sourceMappingURL=TR.js.map