Dependency Filter Upgraded

This commit is contained in:
Luis Fernando Molina committed 2021-02-01 10:57:46 +01:00
1 parent 240d549fc7
commit b526ee8d2f
2 files changed
+28 -10

No files matched your search

@@ -16,7 +16,7 @@ exports.newSuperalgosUtilitiesDateTimeFunctions = function () {
function getPercentage(fromDate, currentDate, lastDate) {
let fromDays = Math.trunc(fromDate.valueOf() / TS.projects.superalgos.globals.timeConstants.ONE_DAY_IN_MILISECONDS)
let currentDays = Math.trunc(currentDate.valueOf() / TS.projects.superalgos.globals.timeConstants.ONE_DAY_IN_MILISECONDS)
let lastDays = Math.trunc(lastDate.valueOf() / TS.projects.superalgos.globals.timeConstants.ONE_DAY_IN_MILISECONDS)
let lastDays = Math.trunc((lastDate.valueOf() - TS.projects.superalgos.globals.timeConstants.ONE_DAY_IN_MILISECONDS) / TS.projects.superalgos.globals.timeConstants.ONE_DAY_IN_MILISECONDS)
let percentage = (currentDays - fromDays) * 100 / (lastDays - fromDays)
if ((lastDays - fromDays) === 0) {
percentage = 100
@@ -3,7 +3,7 @@ function newSuperalgosFunctionLibraryDependenciesFilter() {
A Dependency Filter is list of Indicators a Strategy depends
on, that is later used to filter out all the other indicators
the Trading Bot depends on.
The function will scen a node branch, most likely a Trading System,
looking into the code property of each node. It will analyze it's
content and try to make a list of all indicators mentioned at the code
@@ -64,20 +64,38 @@ function newSuperalgosFunctionLibraryDependenciesFilter() {
function filter(code) {
if (code === undefined) { return }
/*
We will clean the code from symbols that we do not need during our dependency analysis.
*/
code = code.replaceAll(',', '')
code = code.replaceAll('(', '')
code = code.replaceAll(')', '')
code = code.replaceAll('{', '')
code = code.replaceAll('}', '')
code = code.replaceAll('!', '')
code = code.replaceAll('|', '')
code = code.replaceAll('<', '')
code = code.replaceAll('>', '')
code = code.replaceAll('=', '')
code = code.replaceAll('\n', '')
/*
We will analyze each instruction of the code.
*/
let instructionsArray = code.split(' ')
for (let i = 0; i < instructionsArray.length; i++) {
let instruction = instructionsArray[i]
if (instruction.indexOf('chart') >= 0) {
/*
The first kind of instruction we will handle are the ones
related to the chart structure. For that we need the
instruction to start with the keyword 'chart'.
*/
if (instruction.indexOf('chart') === 0) { // Example: chart.at01hs.popularSMA.sma200 - chart.at01hs.popularSMA.sma100 < 10
let parts = instruction.split('.')
let timeFrame = parts[1]
let product = parts[2]
let productParts = product.split(',')
product = productParts[0]
productParts = product.split(')')
product = productParts[0]
// Example: chart.at01hs.popularSMA.sma200 - chart.at01hs.popularSMA.sma100 < 10
/*
From the instruction syntax we will get the timeFrame
*/
if (timeFrame !== 'atAnyTimeFrame') {
timeFrame = timeFrame.substring(2, 4) + '-' + timeFrame.substring(4, 7)
}