rxjs-trading-signals
Version:
The user - defined operator helps users quickly output index values. base trading-signals library
40 lines • 1.47 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.AC = void 0;
const big_js_1 = __importDefault(require("big.js"));
const rxjs_1 = require("rxjs");
const AO_1 = require("../AO/AO");
const SMA_1 = require("../SMA/SMA");
const MOM_1 = require("../MOM/MOM");
const AC = (shortAO, longAO, signalInterval) => {
return (observable) => new rxjs_1.Observable((subscriber) => {
let aoResult = new big_js_1.default(0);
let result = new big_js_1.default(0);
const subscription = observable
.pipe((0, AO_1.AO)(shortAO, longAO), (0, rxjs_1.tap)(x => (aoResult = x)), (0, SMA_1.SMA)(signalInterval), (0, rxjs_1.concatMap)(signalResult => {
result = aoResult.minus(signalResult);
return (0, rxjs_1.of)(result);
}), (0, MOM_1.MOM)(1), (0, rxjs_1.map)(momentum => ({ momentum, result })))
.subscribe({
next(x) {
subscriber.next(x);
},
error(err) {
subscriber.error(err);
},
complete() {
subscriber.complete();
},
});
return () => {
subscription.unsubscribe();
aoResult = null;
result = null;
};
});
};
exports.AC = AC;
//# sourceMappingURL=AC.js.map