diff --git a/Projects/ProjectsSchema.json b/Projects/ProjectsSchema.json index 73fa66419..b8a398593 100644 --- a/Projects/ProjectsSchema.json +++ b/Projects/ProjectsSchema.json @@ -325,7 +325,14 @@ ] }, "TS": { - "globals": [], + "globals": [ + { + "name": "Time Frames", + "propertyName": "timeFrames", + "functionName": "newSuperalgosGlobalsTimeFrames", + "fileName": "TimeFrames.js" + } + ], "functionLibraries": [], "utilities": [], "botClasses": [] diff --git a/Projects/Superalgos/TS/Globals/TimeFrames.js b/Projects/Superalgos/TS/Globals/TimeFrames.js new file mode 100644 index 000000000..28c0639ce --- /dev/null +++ b/Projects/Superalgos/TS/Globals/TimeFrames.js @@ -0,0 +1,44 @@ +exports.newSuperalgosGlobalsTimeFrames = function () { + + let thisObject = { + marketFilesPeriods: marketFilesPeriods, + dailyFilePeriods: dailyFilePeriods + } + + return thisObject; + + function marketFilesPeriods() { + + let marketFilesPeriods = + '[' + + '[' + 24 * 60 * 60 * 1000 + ',' + '"24-hs"' + ']' + ',' + + '[' + 12 * 60 * 60 * 1000 + ',' + '"12-hs"' + ']' + ',' + + '[' + 8 * 60 * 60 * 1000 + ',' + '"08-hs"' + ']' + ',' + + '[' + 6 * 60 * 60 * 1000 + ',' + '"06-hs"' + ']' + ',' + + '[' + 4 * 60 * 60 * 1000 + ',' + '"04-hs"' + ']' + ',' + + '[' + 3 * 60 * 60 * 1000 + ',' + '"03-hs"' + ']' + ',' + + '[' + 2 * 60 * 60 * 1000 + ',' + '"02-hs"' + ']' + ',' + + '[' + 1 * 60 * 60 * 1000 + ',' + '"01-hs"' + ']' + ']' + + return JSON.parse(marketFilesPeriods); + } + + function dailyFilePeriods() { + + let dailyFilePeriods = + '[' + + '[' + 45 * 60 * 1000 + ',' + '"45-min"' + ']' + ',' + + '[' + 40 * 60 * 1000 + ',' + '"40-min"' + ']' + ',' + + '[' + 30 * 60 * 1000 + ',' + '"30-min"' + ']' + ',' + + '[' + 20 * 60 * 1000 + ',' + '"20-min"' + ']' + ',' + + '[' + 15 * 60 * 1000 + ',' + '"15-min"' + ']' + ',' + + '[' + 10 * 60 * 1000 + ',' + '"10-min"' + ']' + ',' + + '[' + 05 * 60 * 1000 + ',' + '"05-min"' + ']' + ',' + + '[' + 04 * 60 * 1000 + ',' + '"04-min"' + ']' + ',' + + '[' + 03 * 60 * 1000 + ',' + '"03-min"' + ']' + ',' + + '[' + 02 * 60 * 1000 + ',' + '"02-min"' + ']' + ',' + + '[' + 01 * 60 * 1000 + ',' + '"01-min"' + ']' + ']' + + return JSON.parse(dailyFilePeriods); + } +} \ No newline at end of file diff --git a/TaskServer/Task.js b/TaskServer/Task.js index 3ed5043ac..32d50a761 100644 --- a/TaskServer/Task.js +++ b/TaskServer/Task.js @@ -88,51 +88,63 @@ function setupUpTS() { Here we will setup the TS object, with all the projects and modules that will have inside. */ - global.TS = { + TS = { projects: [] } for (let i = 0; i < PROJECTS_SCHEMA.length; i++) { let projectDefinition = PROJECTS_SCHEMA[i] - global.TS.projects[projectDefinition.propertyName] = {} - let projectInstance = global.TS.projects[projectDefinition.propertyName] + TS.projects[projectDefinition.propertyName] = {} + let projectInstance = TS.projects[projectDefinition.propertyName] projectInstance.utilities = {} projectInstance.globals = {} projectInstance.functionLibraries = {} /* Set up Utilities of this Project */ - if (projectDefinition.global.TS.utilities !== undefined) { - for (let j = 0; j < projectDefinition.global.TS.utilities.length; j++) { - let utilityDefinition = projectDefinition.global.TS.utilities[j] + if (projectDefinition.TS.utilities !== undefined) { + for (let j = 0; j < projectDefinition.TS.utilities.length; j++) { + let utilityDefinition = projectDefinition.TS.utilities[j] + let path = process.env.PROJECTS_PATH + '/' + projectDefinition.name + '/' + 'TS' + '/' + 'Utilities' + '/' + utilityDefinition.fileName - projectInstance.utilities[utilityDefinition.propertyName] = eval(utilityDefinition.functionName + '()') + let requiredObject = require(path) + let requiredFunction = requiredObject[utilityDefinition.functionName] + projectInstance.utilities[utilityDefinition.propertyName] = requiredFunction.call() } } /* Set up Globals of this Project */ - if (projectDefinition.global.TS.globals !== undefined) { - for (let j = 0; j < projectDefinition.global.TS.globals.length; j++) { - let globalDefinition = projectDefinition.global.TS.globals[j] + if (projectDefinition.TS.globals !== undefined) { + for (let j = 0; j < projectDefinition.TS.globals.length; j++) { + let globalDefinition = projectDefinition.TS.globals[j] + let path = process.env.PROJECTS_PATH + '/' + projectDefinition.name + '/' + 'TS' + '/' + 'Globals' + '/' + globalDefinition.fileName - projectInstance.globals[globalDefinition.propertyName] = eval(globalDefinition.functionName + '()') + let requiredObject = require(path) + let requiredFunction = requiredObject[globalDefinition.functionName] + projectInstance.globals[globalDefinition.propertyName] = requiredFunction.call() } } /* Set up Function Libraries of this Project */ - if (projectDefinition.global.TS.functionLibraries !== undefined) { - for (let j = 0; j < projectDefinition.global.TS.functionLibraries.length; j++) { - let functionLibraryDefinition = projectDefinition.global.TS.functionLibraries[j] + if (projectDefinition.TS.functionLibraries !== undefined) { + for (let j = 0; j < projectDefinition.TS.functionLibraries.length; j++) { + let functionLibraryDefinition = projectDefinition.TS.functionLibraries[j] + let path = process.env.PROJECTS_PATH + '/' + projectDefinition.name + '/' + 'TS' + '/' + 'Function-Libraries' + '/' + functionLibraryDefinition.fileName - projectInstance.functionLibraries[functionLibraryDefinition.propertyName] = eval(functionLibraryDefinition.functionName + '()') + let requiredObject = require(path) + let requiredFunction = requiredObject[functionLibraryDefinition.functionName] + projectInstance.functionLibraries[functionLibraryDefinition.propertyName] = requiredFunction.call() } } /* Set up Bot Classes of this Project */ - if (projectDefinition.global.TS.botClasses !== undefined) { - for (let j = 0; j < projectDefinition.global.TS.botClasses.length; j++) { - let botClassDefinition = projectDefinition.global.TS.botClasses[j] + if (projectDefinition.TS.botClasses !== undefined) { + for (let j = 0; j < projectDefinition.TS.botClasses.length; j++) { + let botClassDefinition = projectDefinition.TS.botClasses[j] + let path = process.env.PROJECTS_PATH + '/' + projectDefinition.name + '/' + 'TS' + '/' + 'Bot-Classes' + '/' + botClassDefinition.fileName - projectInstance.botClasses[botClassDefinition.propertyName] = eval(botClassDefinition.functionName + '()') + let requiredObject = require(path) + let requiredFunction = requiredObject[botClassDefinition.functionName] + projectInstance.botClasses[botClassDefinition.propertyName] = requiredFunction.call() } } } @@ -140,6 +152,8 @@ function setupUpTS() { function bootLoader() { + setupUpTS() + /* Heartbeat sent to the UI */ let key = global.TASK_NODE.name + '-' + global.TASK_NODE.type + '-' + global.TASK_NODE.id @@ -150,7 +164,7 @@ function bootLoader() { function taskHearBeat() { - /* The heartbeat event is raised at the event handler of the instance of this task, created at the global.TS. */ + /* The heartbeat event is raised at the event handler of the instance of this task, created at the TS. */ let event = { seconds: (new Date()).getSeconds() }