UNPKG

sql-synergy

Version:

Synergy Wave TA

239 lines (238 loc) 9.45 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createTCR = 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 createTCR { 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); // if ( o.getPeriod() == IConstants.WEEKLY ) // { // let oSS = new SynergySystem ( o ) ; // // console.log("isLevelI => ", oSS.isLevelI() ) ; // // console.log("isLevelII => ", oSS.isLevelI() ) ; // } } // 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 = this.oQ.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); var oPW = fs.createWriteStream("./data/" + o.oTickerQuotes.getSymbol() + "/" + IConstants_1.IConstants.sChartPeriods[o.getPeriod()] + ".TCR"); oPW.write("["); var s = ""; for (var i = 1; i < n; i++) { // console.log(iRefCS, i) ; iRefCS = oStep2.isTCR(iRefCS, i); if (iRefCS != iOldCS && iRefCS / iOldCS < 0) { iOldCS = iRefCS; oPW.write(s + "[" + o.fD[Math.abs(iRefCS)] + ",\"" + ((iRefCS > 0) ? "BRF" : "TRF") + "\"]"); s = ","; } } oPW.write("]"); oPW.close(); 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(); var oPW = fs.createWriteStream("./data/" + o.oTickerQuotes.getSymbol() + "/" + IConstants_1.IConstants.sChartPeriods[o.getPeriod()] + ".CHANNEL"); oPW.write("["); var s = ""; for (var i = 1; i < n; i++) { var iBigger = 0; if (oStep3.hasBuySignal4Day(i)) { if (o.getPeriod() < IConstants_1.IConstants.MONTHLY) iBigger = (oBStep3.hasBuySignal(AbstractWaves_1.AbstractWaves.getBigChartIndex(o, i, oBStep3.oPC)) ? 1 : -1); oPW.write(s + "[" + o.fD[i] + ',"CH",' + oStep3.fCH[i] + ',' + oStep3.oPC.fC[i] + ',' + iBigger + ']'); s = ","; continue; } if (oStep3.hasSellSignal4Day(i)) //&& oBStep3.hasSellSignal(AbstractWaves.getBigChartIndex(o,i,oBStep3.oPC)) ) { if (o.getPeriod() < IConstants_1.IConstants.MONTHLY) iBigger = (oBStep3.hasSellSignal(AbstractWaves_1.AbstractWaves.getBigChartIndex(o, i, oBStep3.oPC)) ? 1 : -1); oPW.write(s + "[" + o.fD[i] + ',"CL",' + oStep3.fCL[i] + ',' + oStep3.oPC.fC[i] + ',' + iBigger + ']'); s = ","; } } oPW.write("]"); oPW.close(); 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(); var oPW = fs.createWriteStream("./data/" + o.getSymbol() + "/" + IConstants_1.IConstants.sChartPeriods[o.getPeriod()] + ".RSI"); oPW.write("["); var s = ""; for (var i = 1; i < n; i++) { if (oStep4.hasBuySignal4Day(i)) { oPW.write(s + "[" + o.fD[i] + ',"4B"]'); s = ","; this.oSignals.RSI = o.fD[i]; continue; } if (oStep4.hasSellSignal4Day(i)) { oPW.write(s + "[" + o.fD[i] + ',"4S"]'); s = ","; this.oSignals.RSI = -o.fD[i]; } } oPW.write("]"); oPW.close(); } generateStochastic4Hourly(o) { var oPW = fs.createWriteStream("./data/" + o.getSymbol() + "/" + IConstants_1.IConstants.sChartPeriods[o.getPeriod()] + ".STOCHASTIC"); oPW.write("["); let oStep1D1 = new Step1D1_1.Step1D1(o); // let oStep3 = new Step3(o.getData(o.getPeriod() + 1)) ; var s = ""; var n = this.oQ.oTickerQuotes.getSize(); let iDir = IConstants_1.IConstants.NONE; for (var i = 1; i < n; i++) { if (iDir != IConstants_1.IConstants.UP && oStep1D1.hasBuySignal(i) //&& oStep3.hasBuySignal(AbstractWaves.getBigChartIndex(o,i,oStep3.oPC)) ) { oPW.write(s + "[" + o.fD[i] + ',"5B"]'); s = ","; iDir = IConstants_1.IConstants.UP; this.oSignals.STOCH = o.fD[i]; continue; } if (iDir != IConstants_1.IConstants.DN && oStep1D1.hasSellSignal(i) //&& oStep3.hasSellSignal(AbstractWaves.getBigChartIndex(o,i,oStep3.oPC)) ) { oPW.write(s + "[" + o.fD[i] + ',"5S"]'); s = ","; iDir = IConstants_1.IConstants.DN; this.oSignals.STOCH = -o.fD[i]; } } oPW.write("]"); oPW.close(); } generateStochastic(o) { var iIC = o.getPeriod(); // if ( iIC == IConstants.HOURLY || iIC == IConstants.DAILY) // return this.generateStochastic4Hourly(o) ; let oStep5 = new Step5_1.Step5(o); var n = this.oQ.oTickerQuotes.getSize(); var oPW = fs.createWriteStream("./data/" + o.getSymbol() + "/" + IConstants_1.IConstants.sChartPeriods[o.getPeriod()] + ".STOCHASTIC"); oPW.write("["); var s = ""; for (var i = 1; i < n; i++) { if (oStep5.hasBuySignal4Day(i)) { oPW.write(s + "[" + o.fD[i] + ',"5B"]'); s = ","; this.oSignals.STOCH = o.fD[i]; continue; } if (oStep5.hasSellSignal4Day(i)) { oPW.write(s + "[" + o.fD[i] + ',"5S"]'); s = ","; this.oSignals.STOCH = -o.fD[i]; } } oPW.write("]"); oPW.close(); } generateMACD(o) { var oPW = fs.createWriteStream("./data/" + o.getSymbol() + "/" + IConstants_1.IConstants.sChartPeriods[o.getPeriod()] + ".MACD"); oPW.write("["); let oStep6 = new Step6_1.Step6(o); var n = this.oQ.oTickerQuotes.getSize(); var s = ""; for (var i = 1; i < n; i++) { if (oStep6.hasBuySignal4Day(i)) { oPW.write(s + "[" + o.fD[i] + ',"6B"' + ']'); s = ","; this.oSignals.MACD = o.fD[i]; continue; } if (oStep6.hasSellSignal4Day(i)) { oPW.write(s + "[" + o.fD[i] + ',"6S"' + ']'); s = ","; this.oSignals.MACD = -o.fD[i]; } } oPW.write("]"); oPW.close(); } } exports.createTCR = createTCR;