UNPKG

sql-synergy

Version:

Synergy Wave TA

138 lines (136 loc) 5.41 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.WaveReader = void 0; /* * Name=A Dir=Up LowIndex=1 HighIndex=3 Lowest=1 Highest=5 Minimum=4 Maximum=6 */ const IConstants_1 = require("./IConstants"); const WaveSequence_1 = require("./WaveSequence"); const Wave_1 = require("./Wave"); const fs = require('fs'); const lineReader = require('line-reader'); class WaveReader { constructor(oMSQuotes, sStockLevel) { this.oWS = new WaveSequence_1.WaveSequence(); this.oMSQuotes = oMSQuotes; let sSymbol = oMSQuotes.oTickerQuotes.getSymbol(); let sDataDir = oMSQuotes.oTickerQuotes.getSymbol(); //string sDataDir = oMSQuotes.getDataDir ( ) ; let sWaveDir = "/tmp/Waves/"; let sDir = sDataDir; let sWaveDirName = sWaveDir + sStockLevel; sWaveDirName = sWaveDir + sDir + "/" + sStockLevel; let sWaveFileName = "/" + sSymbol + "_" + sStockLevel + ".waves"; let sFileName = sWaveDirName + sWaveFileName; console.log(sFileName); fs.mkdir(sWaveDirName, { recursive: true }, (err) => { if (err) throw err; }); console.log(">> Info Loading Waves from " + sFileName); this.parseWaves(sFileName); this.oWS.print(); } getWaveSequence() { return this.oWS; } parseWaves(sFileName) { let oPC = null; let bNameFound = false; let oWave = null; let me = this; lineReader.eachLine(sFileName, function (sLine) { sLine = sLine.trim(); if (sLine.length == 0) return; if (sLine.startsWith("Chart")) { let sChartType = sLine.substring("Chart".length + 1); if (sChartType.charAt(0) == 'Y') oPC = me.oMSQuotes.getData(IConstants_1.IConstants.YEARLY); else if (sChartType.charAt(0) == 'Q') oPC = me.oMSQuotes.getData(IConstants_1.IConstants.QUARTERLY); else if (sChartType.charAt(0) == 'M') oPC = me.oMSQuotes.getData(IConstants_1.IConstants.MONTHLY); else if (sChartType.charAt(0) == 'D') oPC = me.oMSQuotes.getData(IConstants_1.IConstants.DAILY); else if (sChartType.charAt(0) == 'H') oPC = me.oMSQuotes.getData(IConstants_1.IConstants.HOURLY); me.oWS.setPriceChart(oPC); return; } if (sLine.startsWith("Name")) { bNameFound = true; if (oWave != null) { me.oWS.add(oWave); let oTWave = Wave_1.Wave.copy(oWave); oTWave.setDirection(oWave.isUp() ? Wave_1.Wave.DN : Wave_1.Wave.UP); if (oTWave.isDown()) { oTWave.fMinimum = oWave.getLength() / 2; oTWave.fMaximum = oWave.getLow(); } oWave = oTWave; } else oWave = new Wave_1.Wave(); oWave.setName(sLine.substring("Name".length + 1)); oWave.bManual = true; return; } if (oWave == null) throw Error("FATAL oWave is null"); if (sLine.startsWith("Dir")) { oWave.setDirection("Up" == sLine.substring("Dir".length + 1) ? Wave_1.Wave.UP : Wave_1.Wave.DN); return; } if (sLine.startsWith("LowDate")) { let sDate = sLine.substring("LowDate".length + 1).trim(); let iIndex = oPC.getChartDate(parseInt(sDate)); oWave?.setLowest(iIndex, oPC.getLow()[iIndex]); return; } if (sLine.startsWith("HighDate")) { let sDate = sLine.substring("HighDate".length + 1).trim(); let iIndex = oPC.getChartDate(parseInt(sDate)); oWave.setHighest(iIndex, oPC.getHigh()[iIndex]); return; } if (sLine.startsWith("LowIndex")) { let iIndex = parseInt(sLine.substring("LowIndex".length + 1).trim()); oWave.setLowest(iIndex, oPC.getLow()[iIndex]); return; } if (sLine.startsWith("HighIndex")) { let iIndex = parseInt(sLine.substring("HighIndex".length + 1).trim()); oWave.setHighest(iIndex, oPC.getHigh()[iIndex]); return; } if (sLine.startsWith("Lowest")) { oWave.fLowest = parseFloat(sLine.substring("Lowest".length + 1).trim()); return; } if (sLine.startsWith("Highest")) { oWave.fHighest = parseFloat(sLine.substring("Highest".length + 1).trim()); return; } if (sLine.startsWith("Minimum")) { oWave.fMinimum = parseFloat(sLine.substring("Minimum".length + 1).trim()); return; } if (sLine.startsWith("Maximum")) { oWave.fMaximum = parseFloat(sLine.substring("Maximum".length + 1).trim()); return; } }); if (oWave != null) me.oWS.add(oWave); } } exports.WaveReader = WaveReader;