From 4d363e3683689f9f4199acfe77ca9b7598bbd46c Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Mon, 29 Jun 2020 19:09:08 +0200 Subject: [PATCH] Performance Optimization --- LowFrequencyTrading/TradingProcess.js | 30 ++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/LowFrequencyTrading/TradingProcess.js b/LowFrequencyTrading/TradingProcess.js index 63535929b..5e790d354 100644 --- a/LowFrequencyTrading/TradingProcess.js +++ b/LowFrequencyTrading/TradingProcess.js @@ -317,7 +317,8 @@ } let dataFile = JSON.parse(text); - dataFiles.set(dependency.id, dataFile); + let trimmedDataFile = trimDataFile(dataFile, datasetModule.node.parentNode.record) + dataFiles.set(dependency.id, trimmedDataFile); dependencyControlLoop(); } @@ -723,6 +724,33 @@ logger.newInternalLoop(bot.codeName, bot.process, bot.tradingProcessDate); thisReport.save(callBack); } + + function trimDataFile(dataFile, recordDefinition) { + /* + Here we will discard all the records in a file that are outside of the current time range. + */ + let beginIndex + let endIndex + let result = [] + for (let i = 0; i < recordDefinition.properties.length; i++) { + let property = recordDefinition.properties[i] + if (property.config.codeName === 'begin') { + beginIndex = i + } + if (property.config.codeName === 'end') { + endIndex = i + } + } + for (let i = 0; i < dataFile.length; i++) { + let dataRecord = dataFile[i] + let begin = dataRecord[beginIndex] + let end = dataRecord[endIndex] + if (end < bot.SESSION.parameters.timeRange.config.initialDatetime) { continue } + if (begin > bot.SESSION.parameters.timeRange.config.finalDatetime) { continue } + result.push(dataRecord) + } + return result + } } catch (err) { logger.write(MODULE_NAME, "[ERROR] start -> err = " + err.stack);