rxjs-trading-signals
Version:
The user - defined operator helps users quickly output index values. base trading-signals library
50 lines • 1.62 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.tradeRx = void 0;
const big_js_1 = __importDefault(require("big.js"));
const rxjs_1 = require("rxjs");
const tradeRx = (upper, lower) => {
return (observable) => new rxjs_1.Observable((subscriber) => {
let prev = 0;
const subscription = observable.pipe((0, rxjs_1.map)(x => new big_js_1.default(x))).subscribe({
next(r) {
if (r.gt(upper)) {
if (prev !== 0 && prev !== 1) {
subscriber.next(1);
}
prev = 1;
}
else if (r.gt(lower)) {
if (prev === 1) {
subscriber.next(2);
}
else if (prev === 3) {
subscriber.next(3);
}
prev = 2;
}
else {
if (prev !== 0 && prev !== 3) {
subscriber.next(4);
}
prev = 3;
}
},
error(err) {
subscriber.error(err);
},
complete() {
subscriber.complete();
},
});
return () => {
subscription.unsubscribe();
prev = null;
};
});
};
exports.tradeRx = tradeRx;
//# sourceMappingURL=trade.js.map