sql-synergy
Version:
Synergy Wave TA
239 lines (238 loc) • 9.45 kB
JavaScript
"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;