UNPKG

sql-synergy

Version:

Synergy Wave TA

143 lines (142 loc) 4.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.generateReport = void 0; //const StreamArray = require('stream-json/streamers/StreamArray'); const IConstants_1 = require("./IConstants"); const Step2_1 = require("./Step2"); const Step3_1 = require("./Step3"); const Step4_1 = require("./Step4"); const Step5_1 = require("./Step5"); const Step6_1 = require("./Step6"); const Step1D1_1 = require("./Step1D1"); const LoadData_1 = require("./LoadData"); const AbstractWaves_1 = require("./AbstractWaves"); const fs = require('fs'); class generateReport { constructor(sSymbol, iPeriod, df = undefined) { this.oSignals = { S: 'NOTSET', PRICE: 0 // Price , D: 'NotSet', P: 'NOTSET', I: 'NOTSET', BCHCL: 0, CHCL: 0, TCR: 0, RSI: 0, MACD: 0, STOCH: 0 }; var oLoadData = new LoadData_1.LoadData(sSymbol, iPeriod); this.oSignals.S = sSymbol; this.oSignals.P = IConstants_1.IConstants.sChart[iPeriod]; this.oQ = oLoadData.getData(df); let o = this.oQ; let n = this.oQ.oTickerQuotes.getSize(); if (n > 0) this.oSignals.PRICE = o.fC[n - 1]; this.generateTCR(o); this.generateCHCL(o); this.generateRSI(o); this.generateStochastic(o); this.generateMACD(o); } // sSymbol:string = "UnSetSymbol"; // iPeriod:number = -1; delay(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } getMSQuote() { return this.oQ; } generateTCR(o) { var iRefCS = 1; var iOldCS = iRefCS; let oStep2 = new Step2_1.Step2(o); var n = o.oTickerQuotes.getSize(); var d = new Date(o.fD[n - 1] * 1000); this.oSignals.D = d.toLocaleDateString("se-SE") + " " + d.toLocaleTimeString("en-GB"); this.oSignals.D = this.oSignals.D.substr(5, 10); for (var i = 1; i < n; i++) { // console.log(iRefCS, i) ; iRefCS = oStep2.isTCR(iRefCS, i); if (iRefCS != iOldCS && iRefCS / iOldCS < 0) { iOldCS = iRefCS; } } this.oSignals.TCR = (iRefCS > 0) ? o.fD[Math.abs(iRefCS)] : -o.fD[Math.abs(iRefCS)]; } generateCHCL(o) { let oStep3 = new Step3_1.Step3(o); let oBStep3 = oStep3; if (o.getPeriod() < IConstants_1.IConstants.MONTHLY) oBStep3 = new Step3_1.Step3(o.getData(o.oTickerQuotes.getPeriod() + 1)); var n = this.oQ.oTickerQuotes.getSize(); let iCHCL = 0; let iDir = 0; if (oStep3.hasBuySignal(n - 1)) { iDir = 1; iCHCL = oStep3.iSignalDay; } else if (oStep3.hasSellSignal(n - 1)) { iDir = -1; iCHCL = oStep3.iSignalDay; } let iBCHCL = 0; let iBDir = 0; if (o.getPeriod() < IConstants_1.IConstants.MONTHLY) { if (oBStep3.hasBuySignal(AbstractWaves_1.AbstractWaves.getBigChartIndex(o, n - 1, oBStep3.oPC))) { iBDir = 1; iBCHCL = oBStep3.iSignalDay; } else if (oBStep3.hasSellSignal(AbstractWaves_1.AbstractWaves.getBigChartIndex(o, n - 1, oBStep3.oPC))) { iBDir = -1; iBCHCL = oBStep3.iSignalDay; } } this.oSignals.CHCL = (iDir > 0) ? o.fD[iCHCL] : ((iDir < 0) ? -o.fD[iCHCL] : 0); this.oSignals.BCHCL = (iBDir > 0) ? o.fD[iBCHCL] : ((iBDir < 0) ? -o.fD[iBCHCL] : 0); } generateRSI(o) { let oStep4 = new Step4_1.Step4(o); var n = this.oQ.oTickerQuotes.getSize(); let d = 0; if (oStep4.hasBuySignal(n - 1)) { d = o.fD[oStep4.iSignalDay]; } else if (oStep4.hasSellSignal(n - 1)) { d = -o.fD[oStep4.iSignalDay]; } this.oSignals.RSI = d; } generateStochastic(o) { let oStep5 = new Step5_1.Step5(o); if (o.getPeriod() == IConstants_1.IConstants.HOURLY) oStep5 = new Step1D1_1.Step1D1(o); var n = this.oQ.oTickerQuotes.getSize(); let d = 0; if (oStep5.hasBuySignal(n - 1)) { d = o.fD[oStep5.iSignalDay]; } else if (oStep5.hasSellSignal(n - 1)) { d = -o.fD[oStep5.iSignalDay]; } this.oSignals.STOCH = d; } generateMACD(o) { let oStep6 = new Step6_1.Step6(o); var n = this.oQ.oTickerQuotes.getSize(); let d = 0; if (oStep6.hasBuySignal(n - 1)) { d = o.fD[oStep6.iSignalDay]; } else if (oStep6.hasSellSignal(n - 1)) { d = -o.fD[oStep6.iSignalDay]; } this.oSignals.MACD = d; } } exports.generateReport = generateReport;