sql-synergy
Version:
Synergy Wave TA
143 lines (142 loc) • 4.9 kB
JavaScript
;
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;